summaryrefslogtreecommitdiff
path: root/src/lib/libssl
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl')
-rw-r--r--src/lib/libssl/LICENSE127
-rw-r--r--src/lib/libssl/Makefile13
-rw-r--r--src/lib/libssl/bio_ssl.c598
-rw-r--r--src/lib/libssl/cert.pem2821
-rw-r--r--src/lib/libssl/crypto/Makefile327
-rw-r--r--src/lib/libssl/crypto/arch/alpha/opensslconf.h180
-rw-r--r--src/lib/libssl/crypto/arch/amd64/opensslconf.h180
-rw-r--r--src/lib/libssl/crypto/arch/arm/opensslconf.h180
-rw-r--r--src/lib/libssl/crypto/arch/hppa/opensslconf.h (renamed from src/lib/libssl/src/crypto/opensslconf.h)10
-rw-r--r--src/lib/libssl/crypto/arch/i386/opensslconf.h180
-rw-r--r--src/lib/libssl/crypto/arch/m68k/opensslconf.h180
-rw-r--r--src/lib/libssl/crypto/arch/m88k/opensslconf.h180
-rw-r--r--src/lib/libssl/crypto/arch/mips64/opensslconf.h180
-rw-r--r--src/lib/libssl/crypto/arch/powerpc/opensslconf.h180
-rw-r--r--src/lib/libssl/crypto/arch/sparc/opensslconf.h180
-rw-r--r--src/lib/libssl/crypto/arch/sparc64/opensslconf.h180
-rw-r--r--src/lib/libssl/crypto/arch/vax/bn_asm_vax.S436
-rw-r--r--src/lib/libssl/crypto/arch/vax/opensslconf.h180
-rw-r--r--src/lib/libssl/crypto/shlib_version2
-rw-r--r--src/lib/libssl/doc/openssl.cnf313
-rw-r--r--src/lib/libssl/doc/openssl.txt1235
-rw-r--r--src/lib/libssl/doc/standards.txt261
-rw-r--r--src/lib/libssl/man/Makefile799
-rw-r--r--src/lib/libssl/openssl.cnf65
-rw-r--r--src/lib/libssl/s23_clnt.c509
-rw-r--r--src/lib/libssl/s23_lib.c236
-rw-r--r--src/lib/libssl/s23_pkt.c117
-rw-r--r--src/lib/libssl/s23_srvr.c603
-rw-r--r--src/lib/libssl/s3_both.c635
-rw-r--r--src/lib/libssl/s3_clnt.c1985
-rw-r--r--src/lib/libssl/s3_lib.c1799
-rw-r--r--src/lib/libssl/s3_pkt.c1310
-rw-r--r--src/lib/libssl/s3_srvr.c2082
-rw-r--r--src/lib/libssl/shlib_version2
-rw-r--r--src/lib/libssl/src/CHANGES114
-rw-r--r--src/lib/libssl/src/Configure147
-rw-r--r--src/lib/libssl/src/FAQ6
-rw-r--r--src/lib/libssl/src/LICENSE2
-rw-r--r--src/lib/libssl/src/Makefile.org144
-rw-r--r--src/lib/libssl/src/NEWS14
-rw-r--r--src/lib/libssl/src/PROBLEMS164
-rw-r--r--src/lib/libssl/src/README27
-rw-r--r--src/lib/libssl/src/apps/CA.pl183
-rw-r--r--src/lib/libssl/src/apps/CA.pl.in15
-rw-r--r--src/lib/libssl/src/apps/CA.sh8
-rw-r--r--src/lib/libssl/src/apps/Makefile.ssl1146
-rw-r--r--src/lib/libssl/src/apps/apps.c24
-rw-r--r--src/lib/libssl/src/apps/asn1pars.c2
-rw-r--r--src/lib/libssl/src/apps/ca.c5
-rw-r--r--src/lib/libssl/src/apps/der_chop.in305
-rw-r--r--src/lib/libssl/src/apps/dhparam.c2
-rw-r--r--src/lib/libssl/src/apps/engine.c4
-rw-r--r--src/lib/libssl/src/apps/genrsa.c27
-rw-r--r--src/lib/libssl/src/apps/makeapps.com2
-rw-r--r--src/lib/libssl/src/apps/openssl.c11
-rw-r--r--src/lib/libssl/src/apps/passwd.c6
-rw-r--r--src/lib/libssl/src/apps/rand.c21
-rw-r--r--src/lib/libssl/src/apps/rsautl.c3
-rw-r--r--src/lib/libssl/src/apps/s_apps.h4
-rw-r--r--src/lib/libssl/src/apps/s_client.c18
-rw-r--r--src/lib/libssl/src/apps/s_socket.c123
-rw-r--r--src/lib/libssl/src/apps/speed.c4
-rw-r--r--src/lib/libssl/src/certs/ICE-CA.pem59
-rw-r--r--src/lib/libssl/src/certs/ICE-root.pem48
-rw-r--r--src/lib/libssl/src/certs/ICE-user.pem63
-rw-r--r--src/lib/libssl/src/certs/ICE.crl9
-rw-r--r--src/lib/libssl/src/certs/RegTP-4R.pem19
-rw-r--r--src/lib/libssl/src/certs/ca-cert.pem33
-rw-r--r--src/lib/libssl/src/certs/dsa-ca.pem43
-rw-r--r--src/lib/libssl/src/certs/dsa-pca.pem49
-rw-r--r--src/lib/libssl/src/certs/factory.pem15
-rw-r--r--src/lib/libssl/src/certs/nortelCA.pem16
-rw-r--r--src/lib/libssl/src/certs/pca-cert.pem33
-rw-r--r--src/lib/libssl/src/certs/rsa-cca.pem19
-rw-r--r--src/lib/libssl/src/certs/timCA.pem16
-rw-r--r--src/lib/libssl/src/certs/tjhCA.pem15
-rw-r--r--src/lib/libssl/src/certs/vsign2.pem18
-rw-r--r--src/lib/libssl/src/certs/vsigntca.pem18
-rw-r--r--src/lib/libssl/src/config22
-rw-r--r--src/lib/libssl/src/crypto/Makefile.ssl (renamed from src/lib/libssl/src/crypto/Makefile)26
-rw-r--r--src/lib/libssl/src/crypto/acss/acss.h47
-rw-r--r--src/lib/libssl/src/crypto/acss/acss_enc.c177
-rw-r--r--src/lib/libssl/src/crypto/acss/acss_skey.c86
-rw-r--r--src/lib/libssl/src/crypto/aes/Makefile.ssl103
-rw-r--r--src/lib/libssl/src/crypto/aes/aes_cbc.c2
-rw-r--r--src/lib/libssl/src/crypto/aes/asm/aes-586.pl1541
-rw-r--r--src/lib/libssl/src/crypto/asn1/Makefile.ssl1152
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_bytes.c2
-rw-r--r--src/lib/libssl/src/crypto/asn1/asn1.h2
-rw-r--r--src/lib/libssl/src/crypto/asn1/asn1_err.c324
-rw-r--r--src/lib/libssl/src/crypto/asn1/f.c80
-rw-r--r--src/lib/libssl/src/crypto/asn1/t_x509.c2
-rw-r--r--src/lib/libssl/src/crypto/asn1/tasn_dec.c78
-rw-r--r--src/lib/libssl/src/crypto/asn1/tasn_enc.c9
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_cinf.c201
-rw-r--r--src/lib/libssl/src/crypto/bf/Makefile.ssl115
-rw-r--r--src/lib/libssl/src/crypto/bf/asm/bf-586.pl2
-rw-r--r--src/lib/libssl/src/crypto/bf/bf_skey.c1
-rw-r--r--src/lib/libssl/src/crypto/bio/Makefile.ssl216
-rw-r--r--src/lib/libssl/src/crypto/bio/b_print.c13
-rw-r--r--src/lib/libssl/src/crypto/bio/bio_err.c130
-rw-r--r--src/lib/libssl/src/crypto/bio/bss_conn.c2
-rw-r--r--src/lib/libssl/src/crypto/bn/Makefile.ssl326
-rw-r--r--src/lib/libssl/src/crypto/bn/asm/sparcv8plus.S16
-rw-r--r--src/lib/libssl/src/crypto/bn/bn.h34
-rw-r--r--src/lib/libssl/src/crypto/bn/bn_asm.c2
-rw-r--r--src/lib/libssl/src/crypto/bn/bn_err.c92
-rw-r--r--src/lib/libssl/src/crypto/bn/bn_exp.c244
-rw-r--r--src/lib/libssl/src/crypto/bn/bn_lcl.h39
-rw-r--r--src/lib/libssl/src/crypto/bn/bn_mont.c20
-rw-r--r--src/lib/libssl/src/crypto/bn/bn_prime.c4
-rw-r--r--src/lib/libssl/src/crypto/bn/bn_print.c6
-rw-r--r--src/lib/libssl/src/crypto/bn/bn_word.c6
-rw-r--r--src/lib/libssl/src/crypto/bn/bn_x931p.c282
-rw-r--r--src/lib/libssl/src/crypto/bn/bntest.c60
-rw-r--r--src/lib/libssl/src/crypto/bn/expspeed.c2
-rw-r--r--src/lib/libssl/src/crypto/bn/exptest.c18
-rw-r--r--src/lib/libssl/src/crypto/buffer/Makefile.ssl94
-rw-r--r--src/lib/libssl/src/crypto/buffer/buf_err.c16
-rw-r--r--src/lib/libssl/src/crypto/cast/Makefile.ssl120
-rw-r--r--src/lib/libssl/src/crypto/cast/asm/cast-586.pl2
-rw-r--r--src/lib/libssl/src/crypto/cast/c_enc.c2
-rw-r--r--src/lib/libssl/src/crypto/cast/c_skey.c1
-rw-r--r--src/lib/libssl/src/crypto/cast/cast_lcl.h21
-rw-r--r--src/lib/libssl/src/crypto/comp/Makefile.ssl114
-rw-r--r--src/lib/libssl/src/crypto/comp/c_zlib.c88
-rw-r--r--src/lib/libssl/src/crypto/conf/Makefile.ssl183
-rw-r--r--src/lib/libssl/src/crypto/conf/conf_def.c13
-rw-r--r--src/lib/libssl/src/crypto/conf/conf_err.c78
-rw-r--r--src/lib/libssl/src/crypto/cpt_err.c30
-rw-r--r--src/lib/libssl/src/crypto/cryptlib.c218
-rw-r--r--src/lib/libssl/src/crypto/cryptlib.h4
-rw-r--r--src/lib/libssl/src/crypto/crypto-lib.com23
-rw-r--r--src/lib/libssl/src/crypto/crypto.h5
-rw-r--r--src/lib/libssl/src/crypto/des/Makefile.ssl316
-rw-r--r--src/lib/libssl/src/crypto/des/asm/des-586.pl12
-rw-r--r--src/lib/libssl/src/crypto/des/des.h6
-rw-r--r--src/lib/libssl/src/crypto/des/des_enc.c2
-rw-r--r--src/lib/libssl/src/crypto/des/des_locl.h2
-rw-r--r--src/lib/libssl/src/crypto/des/des_old.h6
-rw-r--r--src/lib/libssl/src/crypto/des/times/usparc.cc2
-rw-r--r--src/lib/libssl/src/crypto/dh/Makefile.ssl133
-rw-r--r--src/lib/libssl/src/crypto/dh/dh.h17
-rw-r--r--src/lib/libssl/src/crypto/dh/dh_check.c22
-rw-r--r--src/lib/libssl/src/crypto/dh/dh_err.c27
-rw-r--r--src/lib/libssl/src/crypto/dh/dh_key.c70
-rw-r--r--src/lib/libssl/src/crypto/dh/dhtest.c4
-rw-r--r--src/lib/libssl/src/crypto/dsa/Makefile.ssl171
-rw-r--r--src/lib/libssl/src/crypto/dsa/dsa.h14
-rw-r--r--src/lib/libssl/src/crypto/dsa/dsa_err.c42
-rw-r--r--src/lib/libssl/src/crypto/dsa/dsa_key.c16
-rw-r--r--src/lib/libssl/src/crypto/dsa/dsa_ossl.c55
-rw-r--r--src/lib/libssl/src/crypto/dsa/dsa_sign.c6
-rw-r--r--src/lib/libssl/src/crypto/dsa/dsa_vrf.c3
-rw-r--r--src/lib/libssl/src/crypto/dsa/dsatest.c9
-rw-r--r--src/lib/libssl/src/crypto/dso/Makefile.ssl142
-rw-r--r--src/lib/libssl/src/crypto/dso/dso_dl.c35
-rw-r--r--src/lib/libssl/src/crypto/dso/dso_dlfcn.c42
-rw-r--r--src/lib/libssl/src/crypto/dso/dso_err.c96
-rw-r--r--src/lib/libssl/src/crypto/dso/dso_win32.c21
-rw-r--r--src/lib/libssl/src/crypto/ec/Makefile.ssl128
-rw-r--r--src/lib/libssl/src/crypto/ec/ec_err.c124
-rw-r--r--src/lib/libssl/src/crypto/ec/ectest.c2
-rw-r--r--src/lib/libssl/src/crypto/engine/Makefile.ssl538
-rw-r--r--src/lib/libssl/src/crypto/engine/eng_cnf.c2
-rw-r--r--src/lib/libssl/src/crypto/engine/eng_err.c158
-rw-r--r--src/lib/libssl/src/crypto/engine/hw_aep.c1
-rw-r--r--src/lib/libssl/src/crypto/engine/hw_atalla.c1
-rw-r--r--src/lib/libssl/src/crypto/engine/hw_cryptodev.c343
-rw-r--r--src/lib/libssl/src/crypto/engine/hw_cswift.c204
-rw-r--r--src/lib/libssl/src/crypto/engine/hw_ubsec.c1
-rw-r--r--src/lib/libssl/src/crypto/engine/tb_dsa.c2
-rw-r--r--src/lib/libssl/src/crypto/err/Makefile.ssl119
-rw-r--r--src/lib/libssl/src/crypto/err/err.c6
-rw-r--r--src/lib/libssl/src/crypto/err/openssl.ec2
-rw-r--r--src/lib/libssl/src/crypto/evp/Makefile.ssl1059
-rw-r--r--src/lib/libssl/src/crypto/evp/bio_enc.c2
-rw-r--r--src/lib/libssl/src/crypto/evp/c_alld.c10
-rw-r--r--src/lib/libssl/src/crypto/evp/e_acss.c85
-rw-r--r--src/lib/libssl/src/crypto/evp/e_aes.c6
-rw-r--r--src/lib/libssl/src/crypto/evp/encode.c2
-rw-r--r--src/lib/libssl/src/crypto/evp/evp.h78
-rw-r--r--src/lib/libssl/src/crypto/evp/evp_err.c158
-rw-r--r--src/lib/libssl/src/crypto/evp/evp_key.c3
-rw-r--r--src/lib/libssl/src/crypto/evp/m_dss1.c9
-rw-r--r--src/lib/libssl/src/crypto/evp/m_sha.c3
-rw-r--r--src/lib/libssl/src/crypto/evp/m_sha1.c119
-rw-r--r--src/lib/libssl/src/crypto/evp/p5_crpt2.c11
-rw-r--r--src/lib/libssl/src/crypto/hmac/Makefile.ssl101
-rw-r--r--src/lib/libssl/src/crypto/hmac/hmac.c12
-rw-r--r--src/lib/libssl/src/crypto/hmac/hmac.h4
-rw-r--r--src/lib/libssl/src/crypto/idea/Makefile.ssl91
-rw-r--r--src/lib/libssl/src/crypto/krb5/Makefile.ssl90
-rw-r--r--src/lib/libssl/src/crypto/lhash/Makefile.ssl93
-rw-r--r--src/lib/libssl/src/crypto/md2/Makefile.ssl93
-rw-r--r--src/lib/libssl/src/crypto/md2/md2_one.c3
-rw-r--r--src/lib/libssl/src/crypto/md4/Makefile.ssl91
-rw-r--r--src/lib/libssl/src/crypto/md4/md4_one.c3
-rw-r--r--src/lib/libssl/src/crypto/md5/Makefile.ssl127
-rw-r--r--src/lib/libssl/src/crypto/md5/md5_one.c3
-rw-r--r--src/lib/libssl/src/crypto/mdc2/Makefile2
-rw-r--r--src/lib/libssl/src/crypto/mdc2/Makefile.ssl98
-rw-r--r--src/lib/libssl/src/crypto/objects/Makefile.ssl123
-rw-r--r--src/lib/libssl/src/crypto/objects/obj_dat.h3762
-rw-r--r--src/lib/libssl/src/crypto/objects/obj_err.c28
-rw-r--r--src/lib/libssl/src/crypto/objects/obj_mac.h2987
-rw-r--r--src/lib/libssl/src/crypto/objects/obj_mac.num16
-rw-r--r--src/lib/libssl/src/crypto/objects/objects.pl13
-rw-r--r--src/lib/libssl/src/crypto/objects/objects.txt20
-rw-r--r--src/lib/libssl/src/crypto/ocsp/Makefile.ssl293
-rw-r--r--src/lib/libssl/src/crypto/ocsp/ocsp_err.c104
-rw-r--r--src/lib/libssl/src/crypto/opensslv.h6
-rw-r--r--src/lib/libssl/src/crypto/pem/Makefile.ssl336
-rw-r--r--src/lib/libssl/src/crypto/pem/pem_err.c88
-rw-r--r--src/lib/libssl/src/crypto/perlasm/x86asm.pl10
-rw-r--r--src/lib/libssl/src/crypto/perlasm/x86nasm.pl10
-rw-r--r--src/lib/libssl/src/crypto/perlasm/x86unix.pl45
-rw-r--r--src/lib/libssl/src/crypto/pkcs12/Makefile.ssl417
-rw-r--r--src/lib/libssl/src/crypto/pkcs12/p12_add.c11
-rw-r--r--src/lib/libssl/src/crypto/pkcs12/p12_crt.c10
-rw-r--r--src/lib/libssl/src/crypto/pkcs12/p12_mutl.c6
-rw-r--r--src/lib/libssl/src/crypto/pkcs12/pk12err.c107
-rw-r--r--src/lib/libssl/src/crypto/pkcs12/pkcs12.h3
-rw-r--r--src/lib/libssl/src/crypto/pkcs7/Makefile.ssl243
-rw-r--r--src/lib/libssl/src/crypto/pkcs7/pk7_mime.c24
-rw-r--r--src/lib/libssl/src/crypto/pkcs7/pk7_smime.c6
-rw-r--r--src/lib/libssl/src/crypto/pkcs7/pkcs7err.c146
-rw-r--r--src/lib/libssl/src/crypto/rand/Makefile.ssl196
-rw-r--r--src/lib/libssl/src/crypto/rand/rand_err.c28
-rw-r--r--src/lib/libssl/src/crypto/rand/rand_lib.c26
-rw-r--r--src/lib/libssl/src/crypto/rand/randfile.c6
-rw-r--r--src/lib/libssl/src/crypto/rc2/Makefile.ssl91
-rw-r--r--src/lib/libssl/src/crypto/rc2/rc2_skey.c1
-rw-r--r--src/lib/libssl/src/crypto/rc2/rc2speed.c6
-rw-r--r--src/lib/libssl/src/crypto/rc4/Makefile.ssl110
-rwxr-xr-xsrc/lib/libssl/src/crypto/rc4/asm/rc4-amd64.pl227
-rwxr-xr-xsrc/lib/libssl/src/crypto/rc4/asm/rc4-x86_64.pl150
-rw-r--r--src/lib/libssl/src/crypto/rc4/rc4.h4
-rw-r--r--src/lib/libssl/src/crypto/rc4/rc4_enc.c4
-rw-r--r--src/lib/libssl/src/crypto/rc4/rc4_skey.c5
-rw-r--r--src/lib/libssl/src/crypto/rc5/Makefile.ssl108
-rw-r--r--src/lib/libssl/src/crypto/ripemd/Makefile.ssl108
-rw-r--r--src/lib/libssl/src/crypto/ripemd/README2
-rw-r--r--src/lib/libssl/src/crypto/ripemd/rmd_dgst.c4
-rw-r--r--src/lib/libssl/src/crypto/ripemd/rmd_one.c3
-rw-r--r--src/lib/libssl/src/crypto/rsa/Makefile.ssl241
-rw-r--r--src/lib/libssl/src/crypto/rsa/rsa.h67
-rw-r--r--src/lib/libssl/src/crypto/rsa/rsa_eay.c247
-rw-r--r--src/lib/libssl/src/crypto/rsa/rsa_err.c135
-rw-r--r--src/lib/libssl/src/crypto/rsa/rsa_gen.c3
-rw-r--r--src/lib/libssl/src/crypto/rsa/rsa_oaep.c32
-rw-r--r--src/lib/libssl/src/crypto/rsa/rsa_pss.c261
-rw-r--r--src/lib/libssl/src/crypto/rsa/rsa_test.c5
-rw-r--r--src/lib/libssl/src/crypto/rsa/rsa_x931.c177
-rw-r--r--src/lib/libssl/src/crypto/sha/Makefile.ssl116
-rw-r--r--src/lib/libssl/src/crypto/sha/sha1_one.c5
-rw-r--r--src/lib/libssl/src/crypto/sha/sha_one.c3
-rw-r--r--src/lib/libssl/src/crypto/stack/Makefile.ssl88
-rw-r--r--src/lib/libssl/src/crypto/stack/safestack.h53
-rw-r--r--src/lib/libssl/src/crypto/txt_db/Makefile.ssl88
-rw-r--r--src/lib/libssl/src/crypto/ui/Makefile.ssl117
-rw-r--r--src/lib/libssl/src/crypto/ui/ui_err.c48
-rw-r--r--src/lib/libssl/src/crypto/x509/Makefile.ssl594
-rw-r--r--src/lib/libssl/src/crypto/x509/by_dir.c15
-rw-r--r--src/lib/libssl/src/crypto/x509/x509_err.c138
-rw-r--r--src/lib/libssl/src/crypto/x509/x509_vfy.c2
-rw-r--r--src/lib/libssl/src/crypto/x509v3/Makefile.ssl603
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_cpols.c9
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_utl.c2
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3err.c210
-rw-r--r--src/lib/libssl/src/demos/easy_tls/Makefile2
-rw-r--r--src/lib/libssl/src/demos/easy_tls/cacerts.pem2
-rw-r--r--src/lib/libssl/src/demos/easy_tls/cert.pem2
-rw-r--r--src/lib/libssl/src/demos/easy_tls/easy-tls.c4
-rw-r--r--src/lib/libssl/src/demos/easy_tls/easy-tls.h2
-rw-r--r--src/lib/libssl/src/demos/easy_tls/test.c2
-rw-r--r--src/lib/libssl/src/demos/easy_tls/test.h2
-rw-r--r--src/lib/libssl/src/doc/apps/CA.pl.pod2
-rw-r--r--src/lib/libssl/src/doc/apps/ca.pod6
-rw-r--r--src/lib/libssl/src/doc/apps/enc.pod16
-rw-r--r--src/lib/libssl/src/doc/crypto/EVP_DigestInit.pod6
-rw-r--r--src/lib/libssl/src/doc/crypto/EVP_EncryptInit.pod6
-rw-r--r--src/lib/libssl/src/doc/crypto/EVP_SignInit.pod8
-rw-r--r--src/lib/libssl/src/doc/crypto/acss.pod66
-rw-r--r--src/lib/libssl/src/doc/crypto/des_modes.pod5
-rw-r--r--src/lib/libssl/src/doc/crypto/dsa.pod3
-rw-r--r--src/lib/libssl/src/doc/crypto/hmac.pod4
-rw-r--r--src/lib/libssl/src/doc/crypto/mdc2.pod2
-rw-r--r--src/lib/libssl/src/doc/crypto/ripemd.pod2
-rw-r--r--src/lib/libssl/src/doc/crypto/sha.pod2
-rw-r--r--src/lib/libssl/src/doc/crypto/threads.pod25
-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_set_options.pod2
-rw-r--r--src/lib/libssl/src/doc/ssl/SSL_CTX_set_verify.pod2
-rw-r--r--src/lib/libssl/src/doc/ssl/SSL_SESSION_free.pod2
-rw-r--r--src/lib/libssl/src/doc/ssl/SSL_free.pod2
-rw-r--r--src/lib/libssl/src/doc/ssl/ssl.pod2
-rw-r--r--src/lib/libssl/src/doc/ssleay.txt4
-rw-r--r--src/lib/libssl/src/e_os.h2
-rw-r--r--src/lib/libssl/src/e_os2.h4
-rw-r--r--src/lib/libssl/src/fips/aes/fingerprint.sha13
-rw-r--r--src/lib/libssl/src/fips/aes/fips_aes_core.c1263
-rw-r--r--src/lib/libssl/src/fips/aes/fips_aes_locl.h85
-rw-r--r--src/lib/libssl/src/fips/des/asm/fips-dx86-elf.s2697
-rw-r--r--src/lib/libssl/src/fips/des/fingerprint.sha15
-rw-r--r--src/lib/libssl/src/fips/des/fips_des_enc.c310
-rw-r--r--src/lib/libssl/src/fips/des/fips_des_locl.h428
-rw-r--r--src/lib/libssl/src/fips/des/fips_set_key.c417
-rw-r--r--src/lib/libssl/src/fips/dh/fingerprint.sha13
-rw-r--r--src/lib/libssl/src/fips/dsa/fingerprint.sha13
-rw-r--r--src/lib/libssl/src/fips/fingerprint.sha14
-rwxr-xr-xsrc/lib/libssl/src/fips/fips_check_sha18
-rw-r--r--src/lib/libssl/src/fips/fips_err.h118
-rw-r--r--src/lib/libssl/src/fips/fips_err_wrapper.c7
-rwxr-xr-xsrc/lib/libssl/src/fips/fips_make_sha130
-rw-r--r--src/lib/libssl/src/fips/rand/fingerprint.sha12
-rw-r--r--src/lib/libssl/src/fips/rsa/fingerprint.sha13
-rw-r--r--src/lib/libssl/src/fips/sha1/Makefile157
-rw-r--r--src/lib/libssl/src/fips/sha1/asm/sx86-elf.s1568
-rw-r--r--src/lib/libssl/src/fips/sha1/fingerprint.sha15
-rw-r--r--src/lib/libssl/src/fips/sha1/fips_md32_common.h623
-rw-r--r--src/lib/libssl/src/fips/sha1/fips_sha1_selftest.c97
-rw-r--r--src/lib/libssl/src/fips/sha1/fips_sha1dgst.c80
-rw-r--r--src/lib/libssl/src/fips/sha1/fips_sha1test.c151
-rw-r--r--src/lib/libssl/src/fips/sha1/fips_sha_locl.h479
-rw-r--r--src/lib/libssl/src/fips/sha1/fips_standalone_sha1.c156
-rw-r--r--src/lib/libssl/src/fips/sha1/sha1hashes.txt342
-rw-r--r--src/lib/libssl/src/fips/sha1/sha1vectors.txt2293
-rw-r--r--src/lib/libssl/src/fips/sha1/standalone.sha16
-rw-r--r--src/lib/libssl/src/makevms.com16
-rw-r--r--src/lib/libssl/src/ms/.rndbin1024 -> 0 bytes
-rw-r--r--src/lib/libssl/src/ms/do_masm.bat3
-rw-r--r--src/lib/libssl/src/ms/do_ms.bat2
-rw-r--r--src/lib/libssl/src/openssl.spec7
-rw-r--r--src/lib/libssl/src/ssl/Makefile.ssl1019
-rw-r--r--src/lib/libssl/src/ssl/kssl.c6
-rw-r--r--src/lib/libssl/src/ssl/s23_clnt.c225
-rw-r--r--src/lib/libssl/src/ssl/s23_srvr.c5
-rw-r--r--src/lib/libssl/src/ssl/s2_clnt.c4
-rw-r--r--src/lib/libssl/src/ssl/s2_srvr.c4
-rw-r--r--src/lib/libssl/src/ssl/s3_clnt.c8
-rw-r--r--src/lib/libssl/src/ssl/s3_lib.c12
-rw-r--r--src/lib/libssl/src/ssl/s3_srvr.c4
-rw-r--r--src/lib/libssl/src/ssl/ssl-lib.com2
-rw-r--r--src/lib/libssl/src/ssl/ssl.h57
-rw-r--r--src/lib/libssl/src/ssl/ssl_asn1.c2
-rw-r--r--src/lib/libssl/src/ssl/ssl_cert.c16
-rw-r--r--src/lib/libssl/src/ssl/ssl_ciph.c70
-rw-r--r--src/lib/libssl/src/ssl/ssl_err.c745
-rw-r--r--src/lib/libssl/src/ssl/ssl_lib.c38
-rw-r--r--src/lib/libssl/src/ssl/ssl_locl.h5
-rw-r--r--src/lib/libssl/src/ssl/ssl_sess.c4
-rw-r--r--src/lib/libssl/src/ssl/ssltest.c21
-rw-r--r--src/lib/libssl/src/test/Makefile.ssl796
-rw-r--r--src/lib/libssl/src/test/enginetest.c274
-rw-r--r--src/lib/libssl/src/test/maketests.com2
-rw-r--r--src/lib/libssl/src/test/md4test.c134
-rw-r--r--src/lib/libssl/src/test/rsa_test.c318
-rw-r--r--src/lib/libssl/src/test/sha1hashes.txt342
-rw-r--r--src/lib/libssl/src/test/sha1vectors.txt2293
-rw-r--r--src/lib/libssl/src/test/times2
-rw-r--r--src/lib/libssl/src/test/tverify.com14
-rw-r--r--src/lib/libssl/src/tools/Makefile.ssl64
-rw-r--r--src/lib/libssl/src/tools/c_rehash160
-rw-r--r--src/lib/libssl/src/util/libeay.num42
-rw-r--r--src/lib/libssl/src/util/mk1mf.pl337
-rw-r--r--src/lib/libssl/src/util/mkdef.pl11
-rw-r--r--src/lib/libssl/src/util/mkerr.pl37
-rw-r--r--src/lib/libssl/src/util/mkfiles.pl17
-rw-r--r--src/lib/libssl/src/util/mklink.pl7
-rw-r--r--src/lib/libssl/src/util/pl/BC-32.pl14
-rw-r--r--src/lib/libssl/src/util/pl/OS2-EMX.pl1
-rw-r--r--src/lib/libssl/src/util/pl/VC-32.pl99
-rw-r--r--src/lib/libssl/src/util/pod2man.pl1
-rw-r--r--src/lib/libssl/src/util/selftest.pl26
-rw-r--r--src/lib/libssl/ssl.h1858
-rw-r--r--src/lib/libssl/ssl/Makefile52
-rw-r--r--src/lib/libssl/ssl/shlib_version2
-rw-r--r--src/lib/libssl/ssl2.h268
-rw-r--r--src/lib/libssl/ssl23.h83
-rw-r--r--src/lib/libssl/ssl3.h526
-rw-r--r--src/lib/libssl/ssl_algs.c111
-rw-r--r--src/lib/libssl/ssl_asn1.c398
-rw-r--r--src/lib/libssl/ssl_cert.c888
-rw-r--r--src/lib/libssl/ssl_ciph.c1157
-rw-r--r--src/lib/libssl/ssl_err.c463
-rw-r--r--src/lib/libssl/ssl_err2.c70
-rw-r--r--src/lib/libssl/ssl_lib.c2336
-rw-r--r--src/lib/libssl/ssl_locl.h622
-rw-r--r--src/lib/libssl/ssl_rsa.c817
-rw-r--r--src/lib/libssl/ssl_sess.c755
-rw-r--r--src/lib/libssl/ssl_stat.c502
-rw-r--r--src/lib/libssl/ssl_txt.c186
-rw-r--r--src/lib/libssl/ssleay.cnf65
-rw-r--r--src/lib/libssl/t1_clnt.c97
-rw-r--r--src/lib/libssl/t1_enc.c816
-rw-r--r--src/lib/libssl/t1_lib.c149
-rw-r--r--src/lib/libssl/t1_meth.c96
-rw-r--r--src/lib/libssl/t1_srvr.c98
-rw-r--r--src/lib/libssl/test/CAss.cnf33
-rw-r--r--src/lib/libssl/test/CAssdh.cnf24
-rw-r--r--src/lib/libssl/test/CAssdsa.cnf23
-rw-r--r--src/lib/libssl/test/CAssrsa.cnf24
-rw-r--r--src/lib/libssl/test/Makefile.ssl796
-rw-r--r--src/lib/libssl/test/P1ss.cnf37
-rw-r--r--src/lib/libssl/test/P2ss.cnf45
-rw-r--r--src/lib/libssl/test/Sssdsa.cnf27
-rw-r--r--src/lib/libssl/test/Sssrsa.cnf26
-rw-r--r--src/lib/libssl/test/Uss.cnf36
-rw-r--r--src/lib/libssl/test/VMSca-response.11
-rw-r--r--src/lib/libssl/test/VMSca-response.22
-rw-r--r--src/lib/libssl/test/bctest111
-rw-r--r--src/lib/libssl/test/enginetest.c274
-rw-r--r--src/lib/libssl/test/maketests.com2
-rw-r--r--src/lib/libssl/test/md4test.c134
-rw-r--r--src/lib/libssl/test/methtest.c105
-rw-r--r--src/lib/libssl/test/pkcs7-1.pem15
-rw-r--r--src/lib/libssl/test/pkcs7.pem54
-rw-r--r--src/lib/libssl/test/r160test.c57
-rw-r--r--src/lib/libssl/test/rsa_test.c318
-rw-r--r--src/lib/libssl/test/sha1hashes.txt342
-rw-r--r--src/lib/libssl/test/sha1vectors.txt2293
-rw-r--r--src/lib/libssl/test/tcrl85
-rw-r--r--src/lib/libssl/test/test.cnf88
-rw-r--r--src/lib/libssl/test/testca51
-rw-r--r--src/lib/libssl/test/testcrl.pem16
-rw-r--r--src/lib/libssl/test/testenc54
-rw-r--r--src/lib/libssl/test/testgen44
-rw-r--r--src/lib/libssl/test/testp7.pem46
-rw-r--r--src/lib/libssl/test/testreq2.pem7
-rw-r--r--src/lib/libssl/test/testrsa.pem9
-rw-r--r--src/lib/libssl/test/testsid.pem12
-rw-r--r--src/lib/libssl/test/testss163
-rw-r--r--src/lib/libssl/test/testssl145
-rw-r--r--src/lib/libssl/test/testsslproxy10
-rw-r--r--src/lib/libssl/test/testx509.pem10
-rw-r--r--src/lib/libssl/test/times113
-rw-r--r--src/lib/libssl/test/tpkcs755
-rw-r--r--src/lib/libssl/test/tpkcs7d48
-rw-r--r--src/lib/libssl/test/treq90
-rw-r--r--src/lib/libssl/test/trsa90
-rw-r--r--src/lib/libssl/test/tsid85
-rw-r--r--src/lib/libssl/test/tverify.com14
-rw-r--r--src/lib/libssl/test/tx50985
-rw-r--r--src/lib/libssl/test/v3-cert1.pem16
-rw-r--r--src/lib/libssl/test/v3-cert2.pem16
-rw-r--r--src/lib/libssl/tls1.h195
-rw-r--r--src/lib/libssl/x509v3.cnf26
448 files changed, 71655 insertions, 12087 deletions
diff --git a/src/lib/libssl/LICENSE b/src/lib/libssl/LICENSE
new file mode 100644
index 0000000000..40277883a5
--- /dev/null
+++ b/src/lib/libssl/LICENSE
@@ -0,0 +1,127 @@
1
2 LICENSE ISSUES
3 ==============
4
5 The OpenSSL toolkit stays under a dual license, i.e. both the conditions of
6 the OpenSSL License and the original SSLeay license apply to the toolkit.
7 See below for the actual license texts. Actually both licenses are BSD-style
8 Open Source licenses. In case of any license issues related to OpenSSL
9 please contact openssl-core@openssl.org.
10
11 OpenSSL License
12 ---------------
13
14/* ====================================================================
15 * Copyright (c) 1998-2004 The OpenSSL Project. All rights reserved.
16 *
17 * Redistribution and use in source and binary forms, with or without
18 * modification, are permitted provided that the following conditions
19 * are met:
20 *
21 * 1. Redistributions of source code must retain the above copyright
22 * notice, this list of conditions and the following disclaimer.
23 *
24 * 2. Redistributions in binary form must reproduce the above copyright
25 * notice, this list of conditions and the following disclaimer in
26 * the documentation and/or other materials provided with the
27 * distribution.
28 *
29 * 3. All advertising materials mentioning features or use of this
30 * software must display the following acknowledgment:
31 * "This product includes software developed by the OpenSSL Project
32 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
33 *
34 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
35 * endorse or promote products derived from this software without
36 * prior written permission. For written permission, please contact
37 * openssl-core@openssl.org.
38 *
39 * 5. Products derived from this software may not be called "OpenSSL"
40 * nor may "OpenSSL" appear in their names without prior written
41 * permission of the OpenSSL Project.
42 *
43 * 6. Redistributions of any form whatsoever must retain the following
44 * acknowledgment:
45 * "This product includes software developed by the OpenSSL Project
46 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
47 *
48 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
49 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
50 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
51 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
52 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
53 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
54 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
55 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
56 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
57 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
58 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
59 * OF THE POSSIBILITY OF SUCH DAMAGE.
60 * ====================================================================
61 *
62 * This product includes cryptographic software written by Eric Young
63 * (eay@cryptsoft.com). This product includes software written by Tim
64 * Hudson (tjh@cryptsoft.com).
65 *
66 */
67
68 Original SSLeay License
69 -----------------------
70
71/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
72 * All rights reserved.
73 *
74 * This package is an SSL implementation written
75 * by Eric Young (eay@cryptsoft.com).
76 * The implementation was written so as to conform with Netscapes SSL.
77 *
78 * This library is free for commercial and non-commercial use as long as
79 * the following conditions are aheared to. The following conditions
80 * apply to all code found in this distribution, be it the RC4, RSA,
81 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
82 * included with this distribution is covered by the same copyright terms
83 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
84 *
85 * Copyright remains Eric Young's, and as such any Copyright notices in
86 * the code are not to be removed.
87 * If this package is used in a product, Eric Young should be given attribution
88 * as the author of the parts of the library used.
89 * This can be in the form of a textual message at program startup or
90 * in documentation (online or textual) provided with the package.
91 *
92 * Redistribution and use in source and binary forms, with or without
93 * modification, are permitted provided that the following conditions
94 * are met:
95 * 1. Redistributions of source code must retain the copyright
96 * notice, this list of conditions and the following disclaimer.
97 * 2. Redistributions in binary form must reproduce the above copyright
98 * notice, this list of conditions and the following disclaimer in the
99 * documentation and/or other materials provided with the distribution.
100 * 3. All advertising materials mentioning features or use of this software
101 * must display the following acknowledgement:
102 * "This product includes cryptographic software written by
103 * Eric Young (eay@cryptsoft.com)"
104 * The word 'cryptographic' can be left out if the rouines from the library
105 * being used are not cryptographic related :-).
106 * 4. If you include any Windows specific code (or a derivative thereof) from
107 * the apps directory (application code) you must include an acknowledgement:
108 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
109 *
110 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
111 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
112 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
113 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
114 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
115 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
116 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
117 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
118 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
119 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
120 * SUCH DAMAGE.
121 *
122 * The licence and distribution terms for any publically available version or
123 * derivative of this code cannot be changed. i.e. this code cannot simply be
124 * copied and put under another distribution licence
125 * [including the GNU Public Licence.]
126 */
127
diff --git a/src/lib/libssl/Makefile b/src/lib/libssl/Makefile
new file mode 100644
index 0000000000..f356472977
--- /dev/null
+++ b/src/lib/libssl/Makefile
@@ -0,0 +1,13 @@
1# $OpenBSD: Makefile,v 1.14 2005/04/01 05:31:40 beck Exp $
2
3SUBDIR=crypto ssl man
4
5distribution:
6 ${INSTALL} ${INSTALL_COPY} -g ${BINGRP} -m 444 \
7 ${.CURDIR}/openssl.cnf ${DESTDIR}/etc/ssl/openssl.cnf && \
8 ${INSTALL} ${INSTALL_COPY} -g ${BINGRP} -m 444 \
9 ${.CURDIR}/cert.pem ${DESTDIR}/etc/ssl/cert.pem && \
10 ${INSTALL} ${INSTALL_COPY} -g ${BINGRP} -m 444 \
11 ${.CURDIR}/x509v3.cnf ${DESTDIR}/etc/ssl/x509v3.cnf
12
13.include <bsd.subdir.mk>
diff --git a/src/lib/libssl/bio_ssl.c b/src/lib/libssl/bio_ssl.c
new file mode 100644
index 0000000000..d683ee43e1
--- /dev/null
+++ b/src/lib/libssl/bio_ssl.c
@@ -0,0 +1,598 @@
1/* ssl/bio_ssl.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include <stdlib.h>
61#include <string.h>
62#include <errno.h>
63#include <openssl/crypto.h>
64#include <openssl/bio.h>
65#include <openssl/err.h>
66#include <openssl/ssl.h>
67
68static int ssl_write(BIO *h, const char *buf, int num);
69static int ssl_read(BIO *h, char *buf, int size);
70static int ssl_puts(BIO *h, const char *str);
71static long ssl_ctrl(BIO *h, int cmd, long arg1, void *arg2);
72static int ssl_new(BIO *h);
73static int ssl_free(BIO *data);
74static long ssl_callback_ctrl(BIO *h, int cmd, bio_info_cb *fp);
75typedef struct bio_ssl_st
76 {
77 SSL *ssl; /* The ssl handle :-) */
78 /* re-negotiate every time the total number of bytes is this size */
79 int num_renegotiates;
80 unsigned long renegotiate_count;
81 unsigned long byte_count;
82 unsigned long renegotiate_timeout;
83 unsigned long last_time;
84 } BIO_SSL;
85
86static BIO_METHOD methods_sslp=
87 {
88 BIO_TYPE_SSL,"ssl",
89 ssl_write,
90 ssl_read,
91 ssl_puts,
92 NULL, /* ssl_gets, */
93 ssl_ctrl,
94 ssl_new,
95 ssl_free,
96 ssl_callback_ctrl,
97 };
98
99BIO_METHOD *BIO_f_ssl(void)
100 {
101 return(&methods_sslp);
102 }
103
104static int ssl_new(BIO *bi)
105 {
106 BIO_SSL *bs;
107
108 bs=(BIO_SSL *)OPENSSL_malloc(sizeof(BIO_SSL));
109 if (bs == NULL)
110 {
111 BIOerr(BIO_F_SSL_NEW,ERR_R_MALLOC_FAILURE);
112 return(0);
113 }
114 memset(bs,0,sizeof(BIO_SSL));
115 bi->init=0;
116 bi->ptr=(char *)bs;
117 bi->flags=0;
118 return(1);
119 }
120
121static int ssl_free(BIO *a)
122 {
123 BIO_SSL *bs;
124
125 if (a == NULL) return(0);
126 bs=(BIO_SSL *)a->ptr;
127 if (bs->ssl != NULL) SSL_shutdown(bs->ssl);
128 if (a->shutdown)
129 {
130 if (a->init && (bs->ssl != NULL))
131 SSL_free(bs->ssl);
132 a->init=0;
133 a->flags=0;
134 }
135 if (a->ptr != NULL)
136 OPENSSL_free(a->ptr);
137 return(1);
138 }
139
140static int ssl_read(BIO *b, char *out, int outl)
141 {
142 int ret=1;
143 BIO_SSL *sb;
144 SSL *ssl;
145 int retry_reason=0;
146 int r=0;
147
148 if (out == NULL) return(0);
149 sb=(BIO_SSL *)b->ptr;
150 ssl=sb->ssl;
151
152 BIO_clear_retry_flags(b);
153
154#if 0
155 if (!SSL_is_init_finished(ssl))
156 {
157/* ret=SSL_do_handshake(ssl); */
158 if (ret > 0)
159 {
160
161 outflags=(BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY);
162 ret= -1;
163 goto end;
164 }
165 }
166#endif
167/* if (ret > 0) */
168 ret=SSL_read(ssl,out,outl);
169
170 switch (SSL_get_error(ssl,ret))
171 {
172 case SSL_ERROR_NONE:
173 if (ret <= 0) break;
174 if (sb->renegotiate_count > 0)
175 {
176 sb->byte_count+=ret;
177 if (sb->byte_count > sb->renegotiate_count)
178 {
179 sb->byte_count=0;
180 sb->num_renegotiates++;
181 SSL_renegotiate(ssl);
182 r=1;
183 }
184 }
185 if ((sb->renegotiate_timeout > 0) && (!r))
186 {
187 unsigned long tm;
188
189 tm=(unsigned long)time(NULL);
190 if (tm > sb->last_time+sb->renegotiate_timeout)
191 {
192 sb->last_time=tm;
193 sb->num_renegotiates++;
194 SSL_renegotiate(ssl);
195 }
196 }
197
198 break;
199 case SSL_ERROR_WANT_READ:
200 BIO_set_retry_read(b);
201 break;
202 case SSL_ERROR_WANT_WRITE:
203 BIO_set_retry_write(b);
204 break;
205 case SSL_ERROR_WANT_X509_LOOKUP:
206 BIO_set_retry_special(b);
207 retry_reason=BIO_RR_SSL_X509_LOOKUP;
208 break;
209 case SSL_ERROR_WANT_ACCEPT:
210 BIO_set_retry_special(b);
211 retry_reason=BIO_RR_ACCEPT;
212 break;
213 case SSL_ERROR_WANT_CONNECT:
214 BIO_set_retry_special(b);
215 retry_reason=BIO_RR_CONNECT;
216 break;
217 case SSL_ERROR_SYSCALL:
218 case SSL_ERROR_SSL:
219 case SSL_ERROR_ZERO_RETURN:
220 default:
221 break;
222 }
223
224 b->retry_reason=retry_reason;
225 return(ret);
226 }
227
228static int ssl_write(BIO *b, const char *out, int outl)
229 {
230 int ret,r=0;
231 int retry_reason=0;
232 SSL *ssl;
233 BIO_SSL *bs;
234
235 if (out == NULL) return(0);
236 bs=(BIO_SSL *)b->ptr;
237 ssl=bs->ssl;
238
239 BIO_clear_retry_flags(b);
240
241/* ret=SSL_do_handshake(ssl);
242 if (ret > 0) */
243 ret=SSL_write(ssl,out,outl);
244
245 switch (SSL_get_error(ssl,ret))
246 {
247 case SSL_ERROR_NONE:
248 if (ret <= 0) break;
249 if (bs->renegotiate_count > 0)
250 {
251 bs->byte_count+=ret;
252 if (bs->byte_count > bs->renegotiate_count)
253 {
254 bs->byte_count=0;
255 bs->num_renegotiates++;
256 SSL_renegotiate(ssl);
257 r=1;
258 }
259 }
260 if ((bs->renegotiate_timeout > 0) && (!r))
261 {
262 unsigned long tm;
263
264 tm=(unsigned long)time(NULL);
265 if (tm > bs->last_time+bs->renegotiate_timeout)
266 {
267 bs->last_time=tm;
268 bs->num_renegotiates++;
269 SSL_renegotiate(ssl);
270 }
271 }
272 break;
273 case SSL_ERROR_WANT_WRITE:
274 BIO_set_retry_write(b);
275 break;
276 case SSL_ERROR_WANT_READ:
277 BIO_set_retry_read(b);
278 break;
279 case SSL_ERROR_WANT_X509_LOOKUP:
280 BIO_set_retry_special(b);
281 retry_reason=BIO_RR_SSL_X509_LOOKUP;
282 break;
283 case SSL_ERROR_WANT_CONNECT:
284 BIO_set_retry_special(b);
285 retry_reason=BIO_RR_CONNECT;
286 case SSL_ERROR_SYSCALL:
287 case SSL_ERROR_SSL:
288 default:
289 break;
290 }
291
292 b->retry_reason=retry_reason;
293 return(ret);
294 }
295
296static long ssl_ctrl(BIO *b, int cmd, long num, void *ptr)
297 {
298 SSL **sslp,*ssl;
299 BIO_SSL *bs;
300 BIO *dbio,*bio;
301 long ret=1;
302
303 bs=(BIO_SSL *)b->ptr;
304 ssl=bs->ssl;
305 if ((ssl == NULL) && (cmd != BIO_C_SET_SSL))
306 return(0);
307 switch (cmd)
308 {
309 case BIO_CTRL_RESET:
310 SSL_shutdown(ssl);
311
312 if (ssl->handshake_func == ssl->method->ssl_connect)
313 SSL_set_connect_state(ssl);
314 else if (ssl->handshake_func == ssl->method->ssl_accept)
315 SSL_set_accept_state(ssl);
316
317 SSL_clear(ssl);
318
319 if (b->next_bio != NULL)
320 ret=BIO_ctrl(b->next_bio,cmd,num,ptr);
321 else if (ssl->rbio != NULL)
322 ret=BIO_ctrl(ssl->rbio,cmd,num,ptr);
323 else
324 ret=1;
325 break;
326 case BIO_CTRL_INFO:
327 ret=0;
328 break;
329 case BIO_C_SSL_MODE:
330 if (num) /* client mode */
331 SSL_set_connect_state(ssl);
332 else
333 SSL_set_accept_state(ssl);
334 break;
335 case BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT:
336 ret=bs->renegotiate_timeout;
337 if (num < 60) num=5;
338 bs->renegotiate_timeout=(unsigned long)num;
339 bs->last_time=(unsigned long)time(NULL);
340 break;
341 case BIO_C_SET_SSL_RENEGOTIATE_BYTES:
342 ret=bs->renegotiate_count;
343 if ((long)num >=512)
344 bs->renegotiate_count=(unsigned long)num;
345 break;
346 case BIO_C_GET_SSL_NUM_RENEGOTIATES:
347 ret=bs->num_renegotiates;
348 break;
349 case BIO_C_SET_SSL:
350 if (ssl != NULL)
351 ssl_free(b);
352 b->shutdown=(int)num;
353 ssl=(SSL *)ptr;
354 ((BIO_SSL *)b->ptr)->ssl=ssl;
355 bio=SSL_get_rbio(ssl);
356 if (bio != NULL)
357 {
358 if (b->next_bio != NULL)
359 BIO_push(bio,b->next_bio);
360 b->next_bio=bio;
361 CRYPTO_add(&bio->references,1,CRYPTO_LOCK_BIO);
362 }
363 b->init=1;
364 break;
365 case BIO_C_GET_SSL:
366 if (ptr != NULL)
367 {
368 sslp=(SSL **)ptr;
369 *sslp=ssl;
370 }
371 else
372 ret=0;
373 break;
374 case BIO_CTRL_GET_CLOSE:
375 ret=b->shutdown;
376 break;
377 case BIO_CTRL_SET_CLOSE:
378 b->shutdown=(int)num;
379 break;
380 case BIO_CTRL_WPENDING:
381 ret=BIO_ctrl(ssl->wbio,cmd,num,ptr);
382 break;
383 case BIO_CTRL_PENDING:
384 ret=SSL_pending(ssl);
385 if (ret == 0)
386 ret=BIO_pending(ssl->rbio);
387 break;
388 case BIO_CTRL_FLUSH:
389 BIO_clear_retry_flags(b);
390 ret=BIO_ctrl(ssl->wbio,cmd,num,ptr);
391 BIO_copy_next_retry(b);
392 break;
393 case BIO_CTRL_PUSH:
394 if ((b->next_bio != NULL) && (b->next_bio != ssl->rbio))
395 {
396 SSL_set_bio(ssl,b->next_bio,b->next_bio);
397 CRYPTO_add(&b->next_bio->references,1,CRYPTO_LOCK_BIO);
398 }
399 break;
400 case BIO_CTRL_POP:
401 /* ugly bit of a hack */
402 if (ssl->rbio != ssl->wbio) /* we are in trouble :-( */
403 {
404 BIO_free_all(ssl->wbio);
405 }
406 if (b->next_bio != NULL)
407 {
408 CRYPTO_add(&b->next_bio->references,1,CRYPTO_LOCK_BIO);
409 }
410 ssl->wbio=NULL;
411 ssl->rbio=NULL;
412 break;
413 case BIO_C_DO_STATE_MACHINE:
414 BIO_clear_retry_flags(b);
415
416 b->retry_reason=0;
417 ret=(int)SSL_do_handshake(ssl);
418
419 switch (SSL_get_error(ssl,(int)ret))
420 {
421 case SSL_ERROR_WANT_READ:
422 BIO_set_flags(b,
423 BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY);
424 break;
425 case SSL_ERROR_WANT_WRITE:
426 BIO_set_flags(b,
427 BIO_FLAGS_WRITE|BIO_FLAGS_SHOULD_RETRY);
428 break;
429 case SSL_ERROR_WANT_CONNECT:
430 BIO_set_flags(b,
431 BIO_FLAGS_IO_SPECIAL|BIO_FLAGS_SHOULD_RETRY);
432 b->retry_reason=b->next_bio->retry_reason;
433 break;
434 default:
435 break;
436 }
437 break;
438 case BIO_CTRL_DUP:
439 dbio=(BIO *)ptr;
440 if (((BIO_SSL *)dbio->ptr)->ssl != NULL)
441 SSL_free(((BIO_SSL *)dbio->ptr)->ssl);
442 ((BIO_SSL *)dbio->ptr)->ssl=SSL_dup(ssl);
443 ((BIO_SSL *)dbio->ptr)->renegotiate_count=
444 ((BIO_SSL *)b->ptr)->renegotiate_count;
445 ((BIO_SSL *)dbio->ptr)->byte_count=
446 ((BIO_SSL *)b->ptr)->byte_count;
447 ((BIO_SSL *)dbio->ptr)->renegotiate_timeout=
448 ((BIO_SSL *)b->ptr)->renegotiate_timeout;
449 ((BIO_SSL *)dbio->ptr)->last_time=
450 ((BIO_SSL *)b->ptr)->last_time;
451 ret=(((BIO_SSL *)dbio->ptr)->ssl != NULL);
452 break;
453 case BIO_C_GET_FD:
454 ret=BIO_ctrl(ssl->rbio,cmd,num,ptr);
455 break;
456 case BIO_CTRL_SET_CALLBACK:
457 {
458#if 0 /* FIXME: Should this be used? -- Richard Levitte */
459 BIOerr(SSL_F_SSL_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
460 ret = -1;
461#else
462 ret=0;
463#endif
464 }
465 break;
466 case BIO_CTRL_GET_CALLBACK:
467 {
468 void (**fptr)();
469
470 fptr=(void (**)())ptr;
471 *fptr=SSL_get_info_callback(ssl);
472 }
473 break;
474 default:
475 ret=BIO_ctrl(ssl->rbio,cmd,num,ptr);
476 break;
477 }
478 return(ret);
479 }
480
481static long ssl_callback_ctrl(BIO *b, int cmd, bio_info_cb *fp)
482 {
483 SSL *ssl;
484 BIO_SSL *bs;
485 long ret=1;
486
487 bs=(BIO_SSL *)b->ptr;
488 ssl=bs->ssl;
489 switch (cmd)
490 {
491 case BIO_CTRL_SET_CALLBACK:
492 {
493 /* FIXME: setting this via a completely different prototype
494 seems like a crap idea */
495 SSL_set_info_callback(ssl,(void (*)(const SSL *,int,int))fp);
496 }
497 break;
498 default:
499 ret=BIO_callback_ctrl(ssl->rbio,cmd,fp);
500 break;
501 }
502 return(ret);
503 }
504
505static int ssl_puts(BIO *bp, const char *str)
506 {
507 int n,ret;
508
509 n=strlen(str);
510 ret=BIO_write(bp,str,n);
511 return(ret);
512 }
513
514BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx)
515 {
516#ifndef OPENSSL_NO_SOCK
517 BIO *ret=NULL,*buf=NULL,*ssl=NULL;
518
519 if ((buf=BIO_new(BIO_f_buffer())) == NULL)
520 return(NULL);
521 if ((ssl=BIO_new_ssl_connect(ctx)) == NULL)
522 goto err;
523 if ((ret=BIO_push(buf,ssl)) == NULL)
524 goto err;
525 return(ret);
526err:
527 if (buf != NULL) BIO_free(buf);
528 if (ssl != NULL) BIO_free(ssl);
529#endif
530 return(NULL);
531 }
532
533BIO *BIO_new_ssl_connect(SSL_CTX *ctx)
534 {
535 BIO *ret=NULL,*con=NULL,*ssl=NULL;
536
537 if ((con=BIO_new(BIO_s_connect())) == NULL)
538 return(NULL);
539 if ((ssl=BIO_new_ssl(ctx,1)) == NULL)
540 goto err;
541 if ((ret=BIO_push(ssl,con)) == NULL)
542 goto err;
543 return(ret);
544err:
545 if (con != NULL) BIO_free(con);
546 if (ret != NULL) BIO_free(ret);
547 return(NULL);
548 }
549
550BIO *BIO_new_ssl(SSL_CTX *ctx, int client)
551 {
552 BIO *ret;
553 SSL *ssl;
554
555 if ((ret=BIO_new(BIO_f_ssl())) == NULL)
556 return(NULL);
557 if ((ssl=SSL_new(ctx)) == NULL)
558 {
559 BIO_free(ret);
560 return(NULL);
561 }
562 if (client)
563 SSL_set_connect_state(ssl);
564 else
565 SSL_set_accept_state(ssl);
566
567 BIO_set_ssl(ret,ssl,BIO_CLOSE);
568 return(ret);
569 }
570
571int BIO_ssl_copy_session_id(BIO *t, BIO *f)
572 {
573 t=BIO_find_type(t,BIO_TYPE_SSL);
574 f=BIO_find_type(f,BIO_TYPE_SSL);
575 if ((t == NULL) || (f == NULL))
576 return(0);
577 if ( (((BIO_SSL *)t->ptr)->ssl == NULL) ||
578 (((BIO_SSL *)f->ptr)->ssl == NULL))
579 return(0);
580 SSL_copy_session_id(((BIO_SSL *)t->ptr)->ssl,((BIO_SSL *)f->ptr)->ssl);
581 return(1);
582 }
583
584void BIO_ssl_shutdown(BIO *b)
585 {
586 SSL *s;
587
588 while (b != NULL)
589 {
590 if (b->method->type == BIO_TYPE_SSL)
591 {
592 s=((BIO_SSL *)b->ptr)->ssl;
593 SSL_shutdown(s);
594 break;
595 }
596 b=b->next_bio;
597 }
598 }
diff --git a/src/lib/libssl/cert.pem b/src/lib/libssl/cert.pem
new file mode 100644
index 0000000000..3f54d30cdd
--- /dev/null
+++ b/src/lib/libssl/cert.pem
@@ -0,0 +1,2821 @@
1Certificate:
2 Data:
3 Version: 3 (0x2)
4 Serial Number:
5 02:00:00:00:00:00:d6:78:b9:d1:af
6 Signature Algorithm: md5WithRSAEncryption
7 Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA
8 Validity
9 Not Before: Jan 28 12:00:00 1999 GMT
10 Not After : Jan 28 12:00:00 2009 GMT
11 Subject: C=BE, O=GlobalSign nv-sa, OU=Partners CA, CN=GlobalSign Partners CA
12 Subject Public Key Info:
13 Public Key Algorithm: rsaEncryption
14 RSA Public Key: (2048 bit)
15 Modulus (2048 bit):
16 00:d2:2c:f8:32:ac:4a:12:7a:37:c8:29:91:a5:ae:
17 8c:6e:1e:0e:c0:34:33:88:e5:33:71:16:1c:78:84:
18 68:c3:18:34:50:2e:16:3e:b1:94:82:4f:b1:9a:9f:
19 00:f8:c6:11:35:c6:69:7b:98:02:ad:00:06:88:6c:
20 e7:4c:33:28:00:88:27:46:1f:87:b3:71:75:63:bc:
21 32:bb:88:de:66:18:0e:50:06:93:b4:f6:bc:14:37:
22 30:3d:22:df:3d:ff:75:7e:d9:0a:1a:c5:9f:b3:fc:
23 d0:ac:b3:08:7a:89:d3:01:e8:00:5c:e7:4a:0b:3d:
24 4d:7b:26:a2:b7:62:06:8b:da:46:dd:93:17:3f:3f:
25 5b:02:4b:0b:b6:88:20:11:92:00:ad:bb:c7:2e:d4:
26 e3:45:ae:f5:89:5a:7c:8d:a4:ad:85:64:32:c0:27:
27 8c:c6:f2:8a:80:92:86:24:56:59:8d:74:68:a2:83:
28 42:b3:9e:3d:50:41:86:6f:20:6e:f6:fd:ce:d3:19:
29 e3:32:cc:8f:ed:9a:5e:6d:1f:28:f5:52:ac:6e:18:
30 5e:f8:3d:d1:92:e5:ba:6c:01:88:4b:0a:f2:2d:de:
31 65:33:05:42:a0:4c:aa:31:76:be:fd:bf:81:78:f9:
32 71:1c:46:5e:2d:15:95:2d:30:59:8e:4c:41:d1:62:
33 ab:3d
34 Exponent: 65537 (0x10001)
35 X509v3 extensions:
36 X509v3 Key Usage: critical
37 Certificate Sign, CRL Sign
38 X509v3 Subject Key Identifier:
39 43:24:8D:70:15:08:62:55:9C:4F:0C:40:17:5D:86:5E:0F:A2:4C:FB
40 X509v3 Authority Key Identifier:
41 keyid:60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B
42
43 X509v3 Basic Constraints: critical
44 CA:TRUE
45 Signature Algorithm: md5WithRSAEncryption
46 66:ed:b4:88:69:11:99:82:21:83:ac:a1:6d:8b:9b:84:ad:0f:
47 2d:c8:1e:8c:ca:7b:7e:ad:aa:d4:8e:de:07:d6:9e:45:c7:a5:
48 b8:9c:07:39:60:25:55:1a:c0:4f:19:e5:cf:17:29:49:89:18:
49 35:66:e5:eb:28:40:4e:57:c9:af:b3:e4:b8:20:05:a3:3b:95:
50 50:91:49:94:29:7d:2c:e5:88:41:a5:45:88:5e:9d:82:27:f7:
51 d2:ef:5b:b5:4f:9f:be:fe:35:65:2c:55:64:9f:e1:51:da:22:
52 61:77:ba:58:4e:8f:c6:79:59:59:6e:30:80:a2:4f:90:6e:21:
53 0b:ad:d0:68:39:90:10:9b:ed:22:65:6f:1e:11:38:e6:7f:8c:
54 d2:f3:39:6d:47:d5:21:e8:ea:75:3a:41:d1:ad:f6:16:9d:5d:
55 0b:21:bd:f3:1f:63:06:25:1d:c1:1f:35:71:2c:eb:20:19:d5:
56 c1:b0:ec:3d:e5:6f:ed:02:07:3f:13:7b:66:92:d6:44:c1:98:
57 f7:5f:50:8b:7a:5b:c2:6f:6d:b0:d1:f8:e5:74:a0:40:37:a3:
58 25:0f:e4:3d:ca:64:31:93:90:5c:30:7b:b9:39:31:9a:5e:4c:
59 cd:b9:41:4f:50:e4:3d:38:ae:c8:66:d9:c7:3b:5d:51:47:ac:
60 9b:ab:f2:ad
61SHA1 Fingerprint=84:C4:8F:00:E9:91:EC:DE:DB:B4:18:A9:8B:EF:A1:7A:47:ED:72:98
62-----BEGIN CERTIFICATE-----
63MIIDnjCCAoagAwIBAgILAgAAAAAA1ni50a8wDQYJKoZIhvcNAQEEBQAwVzELMAkG
64A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
65b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05OTAxMjgxMjAw
66MDBaFw0wOTAxMjgxMjAwMDBaMF8xCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
67YWxTaWduIG52LXNhMRQwEgYDVQQLEwtQYXJ0bmVycyBDQTEfMB0GA1UEAxMWR2xv
68YmFsU2lnbiBQYXJ0bmVycyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
69ggEBANIs+DKsShJ6N8gpkaWujG4eDsA0M4jlM3EWHHiEaMMYNFAuFj6xlIJPsZqf
70APjGETXGaXuYAq0ABohs50wzKACIJ0Yfh7NxdWO8MruI3mYYDlAGk7T2vBQ3MD0i
713z3/dX7ZChrFn7P80KyzCHqJ0wHoAFznSgs9TXsmordiBovaRt2TFz8/WwJLC7aI
72IBGSAK27xy7U40Wu9YlafI2krYVkMsAnjMbyioCShiRWWY10aKKDQrOePVBBhm8g
73bvb9ztMZ4zLMj+2aXm0fKPVSrG4YXvg90ZLlumwBiEsK8i3eZTMFQqBMqjF2vv2/
74gXj5cRxGXi0VlS0wWY5MQdFiqz0CAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgAGMB0G
75A1UdDgQWBBRDJI1wFQhiVZxPDEAXXYZeD6JM+zAfBgNVHSMEGDAWgBRge2YaRQ2X
76yolQL30EzTSo//z9SzAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IB
77AQBm7bSIaRGZgiGDrKFti5uErQ8tyB6Mynt+rarUjt4H1p5Fx6W4nAc5YCVVGsBP
78GeXPFylJiRg1ZuXrKEBOV8mvs+S4IAWjO5VQkUmUKX0s5YhBpUWIXp2CJ/fS71u1
79T5++/jVlLFVkn+FR2iJhd7pYTo/GeVlZbjCAok+QbiELrdBoOZAQm+0iZW8eETjm
80f4zS8zltR9Uh6Op1OkHRrfYWnV0LIb3zH2MGJR3BHzVxLOsgGdXBsOw95W/tAgc/
81E3tmktZEwZj3X1CLelvCb22w0fjldKBAN6MlD+Q9ymQxk5BcMHu5OTGaXkzNuUFP
82UOQ9OK7IZtnHO11RR6ybq/Kt
83-----END CERTIFICATE-----
84Certificate:
85 Data:
86 Version: 3 (0x2)
87 Serial Number: 0 (0x0)
88 Signature Algorithm: md5WithRSAEncryption
89 Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting, OU=Certification Services Division, CN=Thawte Personal Basic CA/emailAddress=personal-basic@thawte.com
90 Validity
91 Not Before: Jan 1 00:00:00 1996 GMT
92 Not After : Dec 31 23:59:59 2020 GMT
93 Subject: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting, OU=Certification Services Division, CN=Thawte Personal Basic CA/emailAddress=personal-basic@thawte.com
94 Subject Public Key Info:
95 Public Key Algorithm: rsaEncryption
96 RSA Public Key: (1024 bit)
97 Modulus (1024 bit):
98 00:bc:bc:93:53:6d:c0:50:4f:82:15:e6:48:94:35:
99 a6:5a:be:6f:42:fa:0f:47:ee:77:75:72:dd:8d:49:
100 9b:96:57:a0:78:d4:ca:3f:51:b3:69:0b:91:76:17:
101 22:07:97:6a:c4:51:93:4b:e0:8d:ef:37:95:a1:0c:
102 4d:da:34:90:1d:17:89:97:e0:35:38:57:4a:c0:f4:
103 08:70:e9:3c:44:7b:50:7e:61:9a:90:e3:23:d3:88:
104 11:46:27:f5:0b:07:0e:bb:dd:d1:7f:20:0a:88:b9:
105 56:0b:2e:1c:80:da:f1:e3:9e:29:ef:14:bd:0a:44:
106 fb:1b:5b:18:d1:bf:23:93:21
107 Exponent: 65537 (0x10001)
108 X509v3 extensions:
109 X509v3 Basic Constraints: critical
110 CA:TRUE
111 Signature Algorithm: md5WithRSAEncryption
112 2d:e2:99:6b:b0:3d:7a:89:d7:59:a2:94:01:1f:2b:dd:12:4b:
113 53:c2:ad:7f:aa:a7:00:5c:91:40:57:25:4a:38:aa:84:70:b9:
114 d9:80:0f:a5:7b:5c:fb:73:c6:bd:d7:8a:61:5c:03:e3:2d:27:
115 a8:17:e0:84:85:42:dc:5e:9b:c6:b7:b2:6d:bb:74:af:e4:3f:
116 cb:a7:b7:b0:e0:5d:be:78:83:25:94:d2:db:81:0f:79:07:6d:
117 4f:f4:39:15:5a:52:01:7b:de:32:d6:4d:38:f6:12:5c:06:50:
118 df:05:5b:bd:14:4b:a1:df:29:ba:3b:41:8d:f7:63:56:a1:df:
119 22:b1
120SHA1 Fingerprint=40:E7:8C:1D:52:3D:1C:D9:95:4F:AC:1A:1A:B3:BD:3C:BA:A1:5B:FC
121-----BEGIN CERTIFICATE-----
122MIIDITCCAoqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCWkEx
123FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD
124VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT
125ZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFBlcnNvbmFsIEJhc2lj
126IENBMSgwJgYJKoZIhvcNAQkBFhlwZXJzb25hbC1iYXNpY0B0aGF3dGUuY29tMB4X
127DTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgcsxCzAJBgNVBAYTAlpBMRUw
128EwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UE
129ChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2Vy
130dmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQZXJzb25hbCBCYXNpYyBD
131QTEoMCYGCSqGSIb3DQEJARYZcGVyc29uYWwtYmFzaWNAdGhhd3RlLmNvbTCBnzAN
132BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvLyTU23AUE+CFeZIlDWmWr5vQvoPR+53
133dXLdjUmbllegeNTKP1GzaQuRdhciB5dqxFGTS+CN7zeVoQxN2jSQHReJl+A1OFdK
134wPQIcOk8RHtQfmGakOMj04gRRif1CwcOu93RfyAKiLlWCy4cgNrx454p7xS9CkT7
135G1sY0b8jkyECAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQF
136AAOBgQAt4plrsD16iddZopQBHyvdEktTwq1/qqcAXJFAVyVKOKqEcLnZgA+le1z7
137c8a914phXAPjLSeoF+CEhULcXpvGt7Jtu3Sv5D/Lp7ew4F2+eIMllNLbgQ95B21P
1389DkVWlIBe94y1k049hJcBlDfBVu9FEuh3ym6O0GN92NWod8isQ==
139-----END CERTIFICATE-----
140Certificate:
141 Data:
142 Version: 1 (0x0)
143 Serial Number:
144 d0:1e:40:8b:00:00:02:7c:00:00:00:02:00:00:00:01
145 Signature Algorithm: sha1WithRSAEncryption
146 Issuer: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=DSTCA X1, CN=DST RootCA X1/emailAddress=ca@digsigtrust.com
147 Validity
148 Not Before: Dec 1 18:18:55 1998 GMT
149 Not After : Nov 28 18:18:55 2008 GMT
150 Subject: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=DSTCA X1, CN=DST RootCA X1/emailAddress=ca@digsigtrust.com
151 Subject Public Key Info:
152 Public Key Algorithm: rsaEncryption
153 RSA Public Key: (2048 bit)
154 Modulus (2048 bit):
155 00:d2:c6:26:b6:e7:a5:3d:c1:c4:68:d5:50:6f:53:
156 c5:6f:49:13:09:b8:af:2c:48:8d:14:6a:a3:17:5f:
157 5a:f9:d3:2e:75:2f:d8:28:62:d1:93:2f:fc:4d:d4:
158 ab:87:e5:08:c7:99:e7:92:3f:75:bd:eb:25:b4:15:
159 c1:9b:19:3d:d2:44:8d:d7:74:20:6d:37:02:8f:69:
160 93:5b:8a:c4:19:9d:f4:b2:0e:fc:16:6c:b9:b1:05:
161 92:83:d1:85:2c:60:94:3e:45:55:a0:d9:ab:08:21:
162 e6:60:e8:3b:74:f2:99:50:51:68:d0:03:2d:b1:80:
163 be:a3:d8:52:b0:44:cd:43:4a:70:8e:58:85:95:e1:
164 4e:2c:d6:2d:41:6f:d6:84:e7:c8:98:44:ca:47:db:
165 2c:24:a5:69:26:cf:6b:b8:27:62:c3:f4:c9:7a:92:
166 23:ed:13:67:82:ae:45:2e:45:e5:7e:72:3f:85:9d:
167 94:62:10:e6:3c:91:a1:ad:77:00:e0:15:ec:f3:84:
168 80:72:7a:8e:6e:60:97:c7:24:59:10:34:83:5b:e1:
169 a5:a4:69:b6:57:35:1c:78:59:c6:d3:2f:3a:73:67:
170 ee:94:ca:04:13:05:62:06:70:23:b3:f4:7c:ee:45:
171 d9:64:0b:5b:49:aa:a4:43:ce:26:c4:44:12:6c:b8:
172 dd:79
173 Exponent: 65537 (0x10001)
174 Signature Algorithm: sha1WithRSAEncryption
175 a2:37:b2:3f:69:fb:d7:86:79:54:49:31:95:33:2b:f3:d1:09:
176 14:49:62:60:86:a5:b0:11:e2:50:c2:1d:06:57:3e:2d:e8:33:
177 64:be:9b:aa:ad:5f:1b:4d:d4:99:95:a2:8b:9a:c9:62:72:b5:
178 69:ea:d9:58:ab:35:ed:15:a2:43:d6:b6:bc:07:79:65:64:73:
179 7d:d7:79:ca:7b:d5:5a:51:c6:e1:53:04:96:8d:38:cf:a3:17:
180 ac:39:71:6b:01:c3:8b:53:3c:63:e9:ee:79:c0:e4:be:92:32:
181 64:7a:b3:1f:97:94:62:bd:ea:b2:20:15:95:fb:97:f2:78:2f:
182 63:36:40:38:e3:46:0f:1d:dd:ac:95:ca:e7:4b:90:7b:b1:4b:
183 a9:d4:c5:eb:9a:da:aa:d5:a3:94:14:46:8d:2d:1f:f3:3a:d6:
184 93:3a:f6:3e:79:fc:e8:e6:b0:75:ed:ee:3d:c9:70:c7:5d:aa:
185 81:4b:46:25:1c:c7:6c:15:e3:95:4e:0f:aa:32:37:94:0a:17:
186 24:92:13:84:58:d2:63:6f:2b:f7:e6:5b:62:0b:13:17:b0:0d:
187 52:4c:fe:fe:6f:5c:e2:91:6e:1d:fd:a4:62:d7:68:fa:8e:7a:
188 4f:d2:08:da:93:dc:f0:92:11:7a:d0:dc:72:93:0c:73:93:62:
189 85:68:d0:f4
190SHA1 Fingerprint=B7:2F:FF:92:D2:CE:43:DE:0A:8D:4C:54:8C:50:37:26:A8:1E:2B:93
191-----BEGIN CERTIFICATE-----
192MIID2DCCAsACEQDQHkCLAAACfAAAAAIAAAABMA0GCSqGSIb3DQEBBQUAMIGpMQsw
193CQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENp
194dHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UE
195CxMIRFNUQ0EgWDExFjAUBgNVBAMTDURTVCBSb290Q0EgWDExITAfBgkqhkiG9w0B
196CQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05ODEyMDExODE4NTVaFw0wODExMjgx
197ODE4NTVaMIGpMQswCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMO
198U2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0
199IENvLjERMA8GA1UECxMIRFNUQ0EgWDExFjAUBgNVBAMTDURTVCBSb290Q0EgWDEx
200ITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcN
201AQEBBQADggEPADCCAQoCggEBANLGJrbnpT3BxGjVUG9TxW9JEwm4ryxIjRRqoxdf
202WvnTLnUv2Chi0ZMv/E3Uq4flCMeZ55I/db3rJbQVwZsZPdJEjdd0IG03Ao9pk1uK
203xBmd9LIO/BZsubEFkoPRhSxglD5FVaDZqwgh5mDoO3TymVBRaNADLbGAvqPYUrBE
204zUNKcI5YhZXhTizWLUFv1oTnyJhEykfbLCSlaSbPa7gnYsP0yXqSI+0TZ4KuRS5F
2055X5yP4WdlGIQ5jyRoa13AOAV7POEgHJ6jm5gl8ckWRA0g1vhpaRptlc1HHhZxtMv
206OnNn7pTKBBMFYgZwI7P0fO5F2WQLW0mqpEPOJsREEmy43XkCAwEAATANBgkqhkiG
2079w0BAQUFAAOCAQEAojeyP2n714Z5VEkxlTMr89EJFEliYIalsBHiUMIdBlc+Legz
208ZL6bqq1fG03UmZWii5rJYnK1aerZWKs17RWiQ9a2vAd5ZWRzfdd5ynvVWlHG4VME
209lo04z6MXrDlxawHDi1M8Y+nuecDkvpIyZHqzH5eUYr3qsiAVlfuX8ngvYzZAOONG
210Dx3drJXK50uQe7FLqdTF65raqtWjlBRGjS0f8zrWkzr2Pnn86Oawde3uPclwx12q
211gUtGJRzHbBXjlU4PqjI3lAoXJJIThFjSY28r9+ZbYgsTF7ANUkz+/m9c4pFuHf2k
212Ytdo+o56T9II2pPc8JIRetDccpMMc5NihWjQ9A==
213-----END CERTIFICATE-----
214Certificate:
215 Data:
216 Version: 3 (0x2)
217 Serial Number: 1 (0x1)
218 Signature Algorithm: md5WithRSAEncryption
219 Issuer: C=BE, L=Brussels, O=BelSign NV, OU=BelSign Object Publishing Certificate Authority, CN=BelSign Object Publishing CA/emailAddress=webmaster@belsign.be
220 Validity
221 Not Before: Sep 19 22:03:00 1997 GMT
222 Not After : Sep 19 22:03:00 2007 GMT
223 Subject: C=BE, L=Brussels, O=BelSign NV, OU=BelSign Object Publishing Certificate Authority, CN=BelSign Object Publishing CA/emailAddress=webmaster@belsign.be
224 Subject Public Key Info:
225 Public Key Algorithm: rsaEncryption
226 RSA Public Key: (1024 bit)
227 Modulus (1024 bit):
228 00:c4:2e:1f:b6:bf:ee:82:40:dd:f9:b7:2e:41:d5:
229 9e:05:b1:5a:d0:26:7c:62:55:03:9b:fc:cb:61:de:
230 4b:ef:fe:e8:99:fe:87:b9:88:cf:90:da:0f:09:3c:
231 76:df:17:97:b6:cb:3f:25:45:fd:b4:bc:58:00:be:
232 b0:5a:b6:14:87:8f:ee:67:64:ad:1d:88:83:bb:67:
233 9f:65:61:00:58:08:80:50:9f:80:c9:31:f6:2a:90:
234 1c:2d:f7:4a:6c:10:f6:23:43:5d:38:09:60:88:57:
235 02:cd:16:6c:18:fc:cd:fb:92:2a:77:d0:9e:93:a3:
236 5d:88:64:d0:c8:f8:5d:54:51
237 Exponent: 65537 (0x10001)
238 X509v3 extensions:
239 Netscape Cert Type:
240 SSL CA, S/MIME CA, Object Signing CA
241 Signature Algorithm: md5WithRSAEncryption
242 63:76:17:7c:96:f0:53:a5:5d:01:1c:53:ce:29:c2:7e:75:ac:
243 4c:0d:a2:08:73:b4:6a:31:fd:02:06:14:99:dc:54:04:a4:bf:
244 c8:96:86:9f:31:43:32:25:57:f6:85:f6:25:bb:37:be:a1:79:
245 23:c9:57:06:25:71:6b:45:4f:f8:f4:02:40:16:82:22:af:54:
246 ea:32:28:f6:0d:ee:99:ba:4b:08:51:0f:6e:86:23:21:4c:2d:
247 25:88:81:c4:2e:0e:f1:13:2c:38:8a:95:02:24:c3:3a:95:63:
248 e4:93:8e:48:bb:08:47:72:5f:ae:e6:3a:5a:47:d6:71:c6:9e:
249 9a:52
250SHA1 Fingerprint=FB:94:55:18:3D:97:5B:E3:68:60:84:97:6A:A7:2A:81:55:7B:81:29
251-----BEGIN CERTIFICATE-----
252MIIDAzCCAmygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBuzELMAkGA1UEBhMCQkUx
253ETAPBgNVBAcTCEJydXNzZWxzMRMwEQYDVQQKEwpCZWxTaWduIE5WMTgwNgYDVQQL
254Ey9CZWxTaWduIE9iamVjdCBQdWJsaXNoaW5nIENlcnRpZmljYXRlIEF1dGhvcml0
255eTElMCMGA1UEAxMcQmVsU2lnbiBPYmplY3QgUHVibGlzaGluZyBDQTEjMCEGCSqG
256SIb3DQEJARYUd2VibWFzdGVyQGJlbHNpZ24uYmUwHhcNOTcwOTE5MjIwMzAwWhcN
257MDcwOTE5MjIwMzAwWjCBuzELMAkGA1UEBhMCQkUxETAPBgNVBAcTCEJydXNzZWxz
258MRMwEQYDVQQKEwpCZWxTaWduIE5WMTgwNgYDVQQLEy9CZWxTaWduIE9iamVjdCBQ
259dWJsaXNoaW5nIENlcnRpZmljYXRlIEF1dGhvcml0eTElMCMGA1UEAxMcQmVsU2ln
260biBPYmplY3QgUHVibGlzaGluZyBDQTEjMCEGCSqGSIb3DQEJARYUd2VibWFzdGVy
261QGJlbHNpZ24uYmUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMQuH7a/7oJA
2623fm3LkHVngWxWtAmfGJVA5v8y2HeS+/+6Jn+h7mIz5DaDwk8dt8Xl7bLPyVF/bS8
263WAC+sFq2FIeP7mdkrR2Ig7tnn2VhAFgIgFCfgMkx9iqQHC33SmwQ9iNDXTgJYIhX
264As0WbBj8zfuSKnfQnpOjXYhk0Mj4XVRRAgMBAAGjFTATMBEGCWCGSAGG+EIBAQQE
265AwIABzANBgkqhkiG9w0BAQQFAAOBgQBjdhd8lvBTpV0BHFPOKcJ+daxMDaIIc7Rq
266Mf0CBhSZ3FQEpL/IloafMUMyJVf2hfYluze+oXkjyVcGJXFrRU/49AJAFoIir1Tq
267Mij2De6ZuksIUQ9uhiMhTC0liIHELg7xEyw4ipUCJMM6lWPkk45IuwhHcl+u5jpa
268R9Zxxp6aUg==
269-----END CERTIFICATE-----
270Certificate:
271 Data:
272 Version: 3 (0x2)
273 Serial Number: 438 (0x1b6)
274 Signature Algorithm: sha1WithRSAEncryption
275 Issuer: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 5
276 Validity
277 Not Before: Aug 14 14:50:00 1998 GMT
278 Not After : Aug 14 23:59:00 2013 GMT
279 Subject: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 5
280 Subject Public Key Info:
281 Public Key Algorithm: rsaEncryption
282 RSA Public Key: (2048 bit)
283 Modulus (2048 bit):
284 00:bc:12:6e:3f:8a:7c:7a:97:01:ec:1e:bb:39:5a:
285 02:f4:78:44:a2:48:1b:8e:7b:49:52:7a:b8:7b:47:
286 b3:af:94:9b:6f:bb:96:fa:2b:6a:65:5c:b8:1c:94:
287 73:be:bf:89:0a:22:80:ee:57:fc:8c:05:bb:70:9f:
288 97:39:04:da:a3:87:5c:a8:e5:ca:af:c0:33:9a:d5:
289 37:5c:4b:ac:e4:80:d0:a6:23:60:fb:fd:72:2e:94:
290 9d:c7:ce:c2:04:32:ef:78:60:5d:ed:ad:87:0f:45:
291 65:1e:3c:9a:0a:9a:be:5d:1d:99:ec:e7:f2:d1:c6:
292 7a:17:d9:ad:9b:54:96:7f:c4:7c:60:bf:85:aa:15:
293 35:1d:40:da:11:bc:ec:54:21:28:2d:23:a1:a8:f0:
294 cf:2d:cd:dd:fc:7e:0f:5e:e1:65:07:56:cb:07:b4:
295 d2:56:e8:5e:31:cc:18:63:c4:86:d2:2d:85:cf:93:
296 92:ab:6d:fe:68:39:fb:de:73:bd:86:f8:e4:46:7a:
297 ea:9f:0c:cb:f4:19:fe:63:bc:d1:2c:7b:88:33:36:
298 f6:e4:e1:9c:0c:53:81:60:1c:da:2e:ab:96:a9:16:
299 88:13:50:99:b2:bd:55:df:15:30:7e:e8:e5:98:fb:
300 70:7e:6c:b5:07:fc:fc:46:b7:d0:ed:37:96:7e:32:
301 fe:21
302 Exponent: 65537 (0x10001)
303 X509v3 extensions:
304 X509v3 Basic Constraints: critical
305 CA:TRUE, pathlen:5
306 X509v3 Key Usage: critical
307 Certificate Sign, CRL Sign
308 X509v3 Certificate Policies:
309 Policy: 1.2.840.113763.1.2.1.3
310
311 X509v3 Subject Key Identifier:
312 76:0A:49:21:38:4C:9F:DE:F8:C4:49:C7:71:71:91:9D
313 Signature Algorithm: sha1WithRSAEncryption
314 41:3a:d4:18:5b:da:b8:de:21:1c:e1:8e:09:e5:f1:68:34:ff:
315 de:96:f4:07:f5:a7:3c:f3:ac:4a:b1:9b:fa:92:fa:9b:ed:e6:
316 32:21:aa:4a:76:c5:dc:4f:38:e5:df:d5:86:e4:d5:c8:76:7d:
317 98:d7:b1:cd:8f:4d:b5:91:23:6c:8b:8a:eb:ea:7c:ef:14:94:
318 c4:c6:f0:1f:4a:2d:32:71:63:2b:63:91:26:02:09:b6:80:1d:
319 ed:e2:cc:b8:7f:db:87:63:c8:e1:d0:6c:26:b1:35:1d:40:66:
320 10:1b:cd:95:54:18:33:61:ec:13:4f:da:13:f7:99:af:3e:d0:
321 cf:8e:a6:72:a2:b3:c3:05:9a:c9:27:7d:92:cc:7e:52:8d:b3:
322 ab:70:6d:9e:89:9f:4d:eb:1a:75:c2:98:aa:d5:02:16:d7:0c:
323 8a:bf:25:e4:eb:2d:bc:98:e9:58:38:19:7c:b9:37:fe:db:e2:
324 99:08:73:06:c7:97:83:6a:7d:10:01:2f:32:b9:17:05:4a:65:
325 e6:2f:ce:be:5e:53:a6:82:e9:9a:53:0a:84:74:2d:83:ca:c8:
326 94:16:76:5f:94:61:28:f0:85:a7:39:bb:d7:8b:d9:a8:b2:13:
327 1d:54:09:34:24:7d:20:81:7d:66:7e:a2:90:74:5c:10:c6:bd:
328 ec:ab:1b:c2
329SHA1 Fingerprint=47:C5:4C:BC:DA:5D:76:CE:62:88:38:11:AC:11:66:5D:55:F4:2C:00
330-----BEGIN CERTIFICATE-----
331MIIDtjCCAp6gAwIBAgICAbYwDQYJKoZIhvcNAQEFBQAwcDELMAkGA1UEBhMCVVMx
332GDAWBgNVBAoTD0dURSBDb3Jwb3JhdGlvbjEnMCUGA1UECxMeR1RFIEN5YmVyVHJ1
333c3QgU29sdXRpb25zLCBJbmMuMR4wHAYDVQQDExVHVEUgQ3liZXJUcnVzdCBSb290
334IDUwHhcNOTgwODE0MTQ1MDAwWhcNMTMwODE0MjM1OTAwWjBwMQswCQYDVQQGEwJV
335UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
336cnVzdCBTb2x1dGlvbnMsIEluYy4xHjAcBgNVBAMTFUdURSBDeWJlclRydXN0IFJv
337b3QgNTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALwSbj+KfHqXAewe
338uzlaAvR4RKJIG457SVJ6uHtHs6+Um2+7lvoramVcuByUc76/iQoigO5X/IwFu3Cf
339lzkE2qOHXKjlyq/AM5rVN1xLrOSA0KYjYPv9ci6UncfOwgQy73hgXe2thw9FZR48
340mgqavl0dmezn8tHGehfZrZtUln/EfGC/haoVNR1A2hG87FQhKC0joajwzy3N3fx+
341D17hZQdWywe00lboXjHMGGPEhtIthc+Tkqtt/mg5+95zvYb45EZ66p8My/QZ/mO8
3420Sx7iDM29uThnAxTgWAc2i6rlqkWiBNQmbK9Vd8VMH7o5Zj7cH5stQf8/Ea30O03
343ln4y/iECAwEAAaNaMFgwEgYDVR0TAQH/BAgwBgEB/wIBBTAOBgNVHQ8BAf8EBAMC
344AQYwFwYDVR0gBBAwDjAMBgoqhkiG+GMBAgEDMBkGA1UdDgQSBBB2CkkhOEyf3vjE
345ScdxcZGdMA0GCSqGSIb3DQEBBQUAA4IBAQBBOtQYW9q43iEc4Y4J5fFoNP/elvQH
3469ac886xKsZv6kvqb7eYyIapKdsXcTzjl39WG5NXIdn2Y17HNj021kSNsi4rr6nzv
347FJTExvAfSi0ycWMrY5EmAgm2gB3t4sy4f9uHY8jh0GwmsTUdQGYQG82VVBgzYewT
348T9oT95mvPtDPjqZyorPDBZrJJ32SzH5SjbOrcG2eiZ9N6xp1wpiq1QIW1wyKvyXk
3496y28mOlYOBl8uTf+2+KZCHMGx5eDan0QAS8yuRcFSmXmL86+XlOmgumaUwqEdC2D
350ysiUFnZflGEo8IWnObvXi9moshMdVAk0JH0ggX1mfqKQdFwQxr3sqxvC
351-----END CERTIFICATE-----
352Certificate:
353 Data:
354 Version: 1 (0x0)
355 Serial Number: 411 (0x19b)
356 Signature Algorithm: md5WithRSAEncryption
357 Issuer: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 2
358 Validity
359 Not Before: Aug 11 11:35:07 1998 GMT
360 Not After : Aug 11 11:22:16 2008 GMT
361 Subject: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 2
362 Subject Public Key Info:
363 Public Key Algorithm: rsaEncryption
364 RSA Public Key: (1024 bit)
365 Modulus (1024 bit):
366 00:d9:2c:4c:4e:2f:69:1a:23:e3:56:ba:f3:ce:84:
367 c0:09:c0:79:f1:44:5f:33:1f:15:91:7f:8a:88:28:
368 b8:24:45:cc:8f:18:cd:1f:74:d1:b5:8f:71:4c:d6:
369 31:f6:73:96:84:94:40:c5:a9:83:60:24:7d:af:6f:
370 34:b7:4b:4c:c2:09:80:3b:45:04:9e:c4:3c:c4:27:
371 75:7b:00:0c:a1:64:47:b5:14:5d:82:4b:51:3a:58:
372 bb:44:4c:3d:d3:e5:06:38:e8:61:5c:98:78:bb:80:
373 b3:9c:da:72:82:62:a0:df:9c:5f:eb:f9:4f:77:c2:
374 cc:60:18:00:6b:34:82:25:b3
375 Exponent: 65537 (0x10001)
376 Signature Algorithm: md5WithRSAEncryption
377 a3:64:91:6f:10:ed:e7:6e:a2:42:40:94:78:ce:f8:14:08:d1:
378 fa:43:85:eb:46:cd:92:14:d0:ef:2e:2d:36:39:18:d9:ba:c9:
379 27:88:29:e9:48:17:6f:f8:c1:aa:c8:61:6d:2d:fd:40:2d:75:
380 43:30:97:39:f8:14:64:bd:6f:ef:63:a8:2b:42:df:b2:5a:0d:
381 25:ec:7b:37:d8:ce:91:29:82:16:f9:e8:62:a2:e1:76:c4:02:
382 7d:dd:25:8b:98:e1:f6:0d:60:8c:f6:59:90:40:51:44:d1:c2:
383 fb:19:24:1e:17:39:6b:74:21:15:33:d6:55:d7:82:1e:70:2c:
384 27:a8
385SHA1 Fingerprint=D1:AD:6B:1C:1A:0E:B9:3D:16:CE:CF:95:E9:4C:81:8B:BE:32:B4:2E
386-----BEGIN CERTIFICATE-----
387MIICUDCCAbkCAgGbMA0GCSqGSIb3DQEBBAUAMHAxCzAJBgNVBAYTAlVTMRgwFgYD
388VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv
389bHV0aW9ucywgSW5jLjEeMBwGA1UEAxMVR1RFIEN5YmVyVHJ1c3QgUm9vdCAyMB4X
390DTk4MDgxMTExMzUwN1oXDTA4MDgxMTExMjIxNlowcDELMAkGA1UEBhMCVVMxGDAW
391BgNVBAoTD0dURSBDb3Jwb3JhdGlvbjEnMCUGA1UECxMeR1RFIEN5YmVyVHJ1c3Qg
392U29sdXRpb25zLCBJbmMuMR4wHAYDVQQDExVHVEUgQ3liZXJUcnVzdCBSb290IDIw
393gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANksTE4vaRoj41a6886EwAnAefFE
394XzMfFZF/iogouCRFzI8YzR900bWPcUzWMfZzloSUQMWpg2Akfa9vNLdLTMIJgDtF
395BJ7EPMQndXsADKFkR7UUXYJLUTpYu0RMPdPlBjjoYVyYeLuAs5zacoJioN+cX+v5
396T3fCzGAYAGs0giWzAgMBAAEwDQYJKoZIhvcNAQEEBQADgYEAo2SRbxDt526iQkCU
397eM74FAjR+kOF60bNkhTQ7y4tNjkY2brJJ4gp6UgXb/jBqshhbS39QC11QzCXOfgU
398ZL1v72OoK0LfsloNJex7N9jOkSmCFvnoYqLhdsQCfd0li5jh9g1gjPZZkEBRRNHC
399+xkkHhc5a3QhFTPWVdeCHnAsJ6g=
400-----END CERTIFICATE-----
401Certificate:
402 Data:
403 Version: 3 (0x2)
404 Serial Number: 1002 (0x3ea)
405 Signature Algorithm: md5WithRSAEncryption
406 Issuer: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 2 CA/emailAddress=certificate@trustcenter.de
407 Validity
408 Not Before: Mar 9 11:59:59 1998 GMT
409 Not After : Jan 1 11:59:59 2011 GMT
410 Subject: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 2 CA/emailAddress=certificate@trustcenter.de
411 Subject Public Key Info:
412 Public Key Algorithm: rsaEncryption
413 RSA Public Key: (1024 bit)
414 Modulus (1024 bit):
415 00:da:38:e8:ed:32:00:29:71:83:01:0d:bf:8c:01:
416 dc:da:c6:ad:39:a4:a9:8a:2f:d5:8b:5c:68:5f:50:
417 c6:62:f5:66:bd:ca:91:22:ec:aa:1d:51:d7:3d:b3:
418 51:b2:83:4e:5d:cb:49:b0:f0:4c:55:e5:6b:2d:c7:
419 85:0b:30:1c:92:4e:82:d4:ca:02:ed:f7:6f:be:dc:
420 e0:e3:14:b8:05:53:f2:9a:f4:56:8b:5a:9e:85:93:
421 d1:b4:82:56:ae:4d:bb:a8:4b:57:16:bc:fe:f8:58:
422 9e:f8:29:8d:b0:7b:cd:78:c9:4f:ac:8b:67:0c:f1:
423 9c:fb:fc:57:9b:57:5c:4f:0d
424 Exponent: 65537 (0x10001)
425 X509v3 extensions:
426 X509v3 Basic Constraints: critical
427 CA:TRUE
428 X509v3 Key Usage: critical
429 Digital Signature, Certificate Sign, CRL Sign
430 Netscape CA Policy Url:
431 http://www.trustcenter.de/guidelines
432 Netscape Cert Type:
433 SSL CA, S/MIME CA, Object Signing CA
434 Signature Algorithm: md5WithRSAEncryption
435 84:52:fb:28:df:ff:1f:75:01:bc:01:be:04:56:97:6a:74:42:
436 24:31:83:f9:46:b1:06:8a:89:cf:96:2c:33:bf:8c:b5:5f:7a:
437 72:a1:85:06:ce:86:f8:05:8e:e8:f9:25:ca:da:83:8c:06:ac:
438 eb:36:6d:85:91:34:04:36:f4:42:f0:f8:79:2e:0a:48:5c:ab:
439 cc:51:4f:78:76:a0:d9:ac:19:bd:2a:d1:69:04:28:91:ca:36:
440 10:27:80:57:5b:d2:5c:f5:c2:5b:ab:64:81:63:74:51:f4:97:
441 bf:cd:12:28:f7:4d:66:7f:a7:f0:1c:01:26:78:b2:66:47:70:
442 51:64
443SHA1 Fingerprint=83:8E:30:F7:7F:DD:14:AA:38:5E:D1:45:00:9C:0E:22:36:49:4F:AA
444-----BEGIN CERTIFICATE-----
445MIIDXDCCAsWgAwIBAgICA+owDQYJKoZIhvcNAQEEBQAwgbwxCzAJBgNVBAYTAkRF
446MRAwDgYDVQQIEwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFU
447QyBUcnVzdENlbnRlciBmb3IgU2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJI
448MSIwIAYDVQQLExlUQyBUcnVzdENlbnRlciBDbGFzcyAyIENBMSkwJwYJKoZIhvcN
449AQkBFhpjZXJ0aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAeFw05ODAzMDkxMTU5NTla
450Fw0xMTAxMDExMTU5NTlaMIG8MQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFtYnVy
451ZzEQMA4GA1UEBxMHSGFtYnVyZzE6MDgGA1UEChMxVEMgVHJ1c3RDZW50ZXIgZm9y
452IFNlY3VyaXR5IGluIERhdGEgTmV0d29ya3MgR21iSDEiMCAGA1UECxMZVEMgVHJ1
453c3RDZW50ZXIgQ2xhc3MgMiBDQTEpMCcGCSqGSIb3DQEJARYaY2VydGlmaWNhdGVA
454dHJ1c3RjZW50ZXIuZGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANo46O0y
455AClxgwENv4wB3NrGrTmkqYov1YtcaF9QxmL1Zr3KkSLsqh1R1z2zUbKDTl3LSbDw
456TFXlay3HhQswHJJOgtTKAu33b77c4OMUuAVT8pr0VotanoWT0bSCVq5Nu6hLVxa8
457/vhYnvgpjbB7zXjJT6yLZwzxnPv8V5tXXE8NAgMBAAGjazBpMA8GA1UdEwEB/wQF
458MAMBAf8wDgYDVR0PAQH/BAQDAgGGMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3
459LnRydXN0Y2VudGVyLmRlL2d1aWRlbGluZXMwEQYJYIZIAYb4QgEBBAQDAgAHMA0G
460CSqGSIb3DQEBBAUAA4GBAIRS+yjf/x91AbwBvgRWl2p0QiQxg/lGsQaKic+WLDO/
461jLVfenKhhQbOhvgFjuj5Jcrag4wGrOs2bYWRNAQ29ELw+HkuCkhcq8xRT3h2oNms
462Gb0q0WkEKJHKNhAngFdb0lz1wlurZIFjdFH0l7/NEij3TWZ/p/AcASZ4smZHcFFk
463-----END CERTIFICATE-----
464Certificate:
465 Data:
466 Version: 1 (0x0)
467 Serial Number: 424 (0x1a8)
468 Signature Algorithm: sha1WithRSAEncryption
469 Issuer: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 4
470 Validity
471 Not Before: Aug 13 13:51:00 1998 GMT
472 Not After : Aug 13 23:59:00 2013 GMT
473 Subject: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 4
474 Subject Public Key Info:
475 Public Key Algorithm: rsaEncryption
476 RSA Public Key: (2048 bit)
477 Modulus (2048 bit):
478 00:ba:9d:22:6e:7f:da:66:3c:39:42:b1:a3:2a:6f:
479 d3:f7:bc:ae:ac:31:5a:d7:11:90:47:b9:9d:19:2e:
480 f9:f3:1b:22:a0:c3:e1:a7:ba:c4:fc:5e:0a:94:4b:
481 98:5a:4b:26:e4:1f:f4:dc:f3:fe:8e:88:dc:6c:2d:
482 7c:77:87:26:50:c0:5e:4e:a8:28:a1:ea:17:69:4f:
483 4d:c6:01:0e:da:9a:0d:06:56:26:15:b6:a4:5d:7a:
484 35:af:8d:ed:78:52:86:f9:38:ab:b3:01:d3:da:05:
485 96:b1:b6:50:ab:c0:a1:ae:17:53:fa:43:39:20:71:
486 65:23:db:6d:c4:b6:ed:98:45:83:d7:d2:f6:e2:a9:
487 6b:fb:f9:75:cc:ef:c5:ab:71:96:35:e8:df:8e:91:
488 9b:a8:10:75:1f:b7:ce:13:8e:6b:b3:96:77:97:1a:
489 91:2f:c7:2c:69:99:f0:0f:2a:68:00:98:76:44:1b:
490 8c:28:d2:eb:8e:f4:83:b4:7f:a4:25:5e:6c:3b:d9:
491 c6:68:d5:61:b8:d4:5e:31:07:b5:5b:90:35:52:57:
492 7b:17:20:ed:2d:b8:1e:8e:88:39:3e:52:cb:df:f0:
493 5c:b1:65:bb:a5:12:b4:90:63:bf:71:9d:32:c1:da:
494 bf:50:4a:95:be:06:3a:c4:2b:eb:cd:98:76:44:4d:
495 0b:e5
496 Exponent: 65537 (0x10001)
497 Signature Algorithm: sha1WithRSAEncryption
498 43:af:1c:87:c9:49:ba:65:89:34:49:3c:ea:07:3b:47:a2:79:
499 d4:a0:3b:90:6c:de:7f:a8:54:c3:e8:4c:40:32:bc:c8:ec:1c:
500 e5:d9:ac:40:ba:fc:8c:3f:c2:73:9c:f4:64:ea:df:a9:ed:4e:
501 5b:c8:01:60:ee:39:6d:43:27:f3:7f:aa:08:d2:fe:4e:6f:14:
502 32:4d:7d:e4:34:80:a5:35:c4:d6:46:50:b4:3b:a0:2d:65:1f:
503 4f:65:7e:34:28:2d:c0:a7:76:7d:31:c9:0d:33:16:f6:20:19:
504 20:11:50:bb:03:cc:70:6d:96:b7:ef:4c:a7:da:36:15:cf:bb:
505 4d:d4:96:dc:88:4d:6c:98:ed:b9:73:fe:28:57:a0:ed:64:f8:
506 0a:81:29:73:f6:f6:97:32:87:39:b4:81:ef:d9:4d:1a:07:34:
507 f7:ba:42:35:de:57:dc:5c:d6:f7:c5:eb:0a:27:0c:81:a6:c2:
508 d0:68:4e:fd:92:5b:48:83:f6:16:8a:8f:36:5b:ed:31:6c:3f:
509 41:7a:71:f7:92:3f:31:a4:0a:40:4c:f3:86:e2:61:c1:3c:49:
510 81:2d:a5:b8:ef:ba:97:0f:bc:2b:1d:9b:89:f2:d2:8e:1e:4d:
511 86:f2:c2:ab:f6:2d:99:c0:1b:2a:0d:a1:b6:4f:f9:2c:58:4d:
512 3d:7d:37:0a
513SHA1 Fingerprint=BB:EB:01:B9:A0:6E:07:9B:00:FF:CB:74:05:F4:A6:4E:01:03:E3:4B
514-----BEGIN CERTIFICATE-----
515MIIDVTCCAj0CAgGoMA0GCSqGSIb3DQEBBQUAMHAxCzAJBgNVBAYTAlVTMRgwFgYD
516VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv
517bHV0aW9ucywgSW5jLjEeMBwGA1UEAxMVR1RFIEN5YmVyVHJ1c3QgUm9vdCA0MB4X
518DTk4MDgxMzEzNTEwMFoXDTEzMDgxMzIzNTkwMFowcDELMAkGA1UEBhMCVVMxGDAW
519BgNVBAoTD0dURSBDb3Jwb3JhdGlvbjEnMCUGA1UECxMeR1RFIEN5YmVyVHJ1c3Qg
520U29sdXRpb25zLCBJbmMuMR4wHAYDVQQDExVHVEUgQ3liZXJUcnVzdCBSb290IDQw
521ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6nSJuf9pmPDlCsaMqb9P3
522vK6sMVrXEZBHuZ0ZLvnzGyKgw+GnusT8XgqUS5haSybkH/Tc8/6OiNxsLXx3hyZQ
523wF5OqCih6hdpT03GAQ7amg0GViYVtqRdejWvje14Uob5OKuzAdPaBZaxtlCrwKGu
524F1P6QzkgcWUj223Etu2YRYPX0vbiqWv7+XXM78WrcZY16N+OkZuoEHUft84Tjmuz
525lneXGpEvxyxpmfAPKmgAmHZEG4wo0uuO9IO0f6QlXmw72cZo1WG41F4xB7VbkDVS
526V3sXIO0tuB6OiDk+Usvf8FyxZbulErSQY79xnTLB2r9QSpW+BjrEK+vNmHZETQvl
527AgMBAAEwDQYJKoZIhvcNAQEFBQADggEBAEOvHIfJSbpliTRJPOoHO0eiedSgO5Bs
5283n+oVMPoTEAyvMjsHOXZrEC6/Iw/wnOc9GTq36ntTlvIAWDuOW1DJ/N/qgjS/k5v
529FDJNfeQ0gKU1xNZGULQ7oC1lH09lfjQoLcCndn0xyQ0zFvYgGSARULsDzHBtlrfv
530TKfaNhXPu03UltyITWyY7blz/ihXoO1k+AqBKXP29pcyhzm0ge/ZTRoHNPe6QjXe
531V9xc1vfF6wonDIGmwtBoTv2SW0iD9haKjzZb7TFsP0F6cfeSPzGkCkBM84biYcE8
532SYEtpbjvupcPvCsdm4ny0o4eTYbywqv2LZnAGyoNobZP+SxYTT19Nwo=
533-----END CERTIFICATE-----
534Certificate:
535 Data:
536 Version: 3 (0x2)
537 Serial Number:
538 02:00:00:00:00:00:d6:78:b8:8d:8d
539 Signature Algorithm: md5WithRSAEncryption
540 Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA
541 Validity
542 Not Before: Jan 28 12:00:00 1999 GMT
543 Not After : Jan 28 12:00:00 2009 GMT
544 Subject: C=BE, O=GlobalSign nv-sa, OU=Primary Class 2 CA, CN=GlobalSign Primary Class 2 CA
545 Subject Public Key Info:
546 Public Key Algorithm: rsaEncryption
547 RSA Public Key: (2048 bit)
548 Modulus (2048 bit):
549 00:92:8c:fe:ef:f4:45:8e:17:41:6e:fc:d8:bf:21:
550 6f:ab:06:9d:52:c1:2c:00:9d:3f:8e:85:b8:7f:4a:
551 8f:bd:a0:63:2a:ca:49:27:ae:5a:82:f4:74:e2:55:
552 92:ff:c2:d1:aa:79:a2:b6:fa:d5:9d:82:04:4f:c6:
553 b2:c6:5e:63:a7:3a:ba:d8:ee:eb:8a:6f:9f:b6:bb:
554 28:41:c0:22:fb:4e:48:1a:06:92:d7:bf:d7:cf:b9:
555 d9:bd:38:4f:3b:0d:44:6e:55:41:fe:fc:09:db:d8:
556 bf:f3:8e:21:f1:e8:12:b5:f6:13:a5:d3:c6:4c:93:
557 22:b0:02:ff:ee:1d:0c:c4:a8:6b:4f:75:68:56:e8:
558 dc:28:12:50:f7:a8:24:9d:2e:24:39:fb:09:05:de:
559 e5:a3:64:49:21:d0:68:7e:71:30:91:b1:60:e0:39:
560 f4:50:f8:7a:4d:98:00:6b:7c:79:ba:4e:ce:4a:e2:
561 ba:36:1d:b7:c5:36:15:95:9c:64:42:ea:5f:c4:ba:
562 f5:40:05:be:e1:3a:59:bd:84:a7:19:b8:de:4d:53:
563 50:ce:07:d1:d2:51:d3:ef:0d:81:6c:e6:e7:6d:cb:
564 5d:7c:3f:7c:cc:ec:4f:83:27:25:ff:70:50:f6:83:
565 59:75:84:06:66:58:2c:de:89:8d:00:a6:49:f9:a5:
566 43:77
567 Exponent: 65537 (0x10001)
568 X509v3 extensions:
569 X509v3 Key Usage: critical
570 Certificate Sign, CRL Sign
571 X509v3 Subject Key Identifier:
572 7C:E7:B2:B1:2C:DE:B1:A7:6B:E9:76:0C:E1:A3:FD:4E:6C:C7:B9:F6
573 X509v3 Authority Key Identifier:
574 keyid:60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B
575
576 X509v3 Basic Constraints: critical
577 CA:TRUE
578 Signature Algorithm: md5WithRSAEncryption
579 63:dd:59:ce:8a:79:aa:98:9d:4e:c5:89:64:37:7e:8a:93:67:
580 2f:10:ea:6f:27:c3:8d:77:6d:f2:5c:56:94:19:1a:69:60:30:
581 46:5d:8f:f2:6d:45:3c:8e:35:97:7c:2f:b8:51:e2:e8:89:bd:
582 88:cf:27:1c:08:34:5c:88:c1:68:24:db:91:85:e4:cf:fb:fb:
583 43:8d:e8:25:01:1b:c4:0e:f7:00:42:48:86:1f:24:08:58:5a:
584 8c:8d:f2:6b:47:2c:68:91:b1:69:42:fd:0d:8d:c9:26:e6:92:
585 86:a6:64:6e:92:c5:ce:3e:3c:7d:71:e3:23:a4:ab:c7:d5:a8:
586 a9:df:82:a7:3b:e8:86:d5:c3:4f:18:e3:44:d0:e0:dc:f3:c5:
587 68:2e:fe:a5:2f:05:84:c8:7e:47:42:53:6b:87:4a:fe:32:ff:
588 5e:3e:70:8c:b7:a8:15:cc:17:c2:ff:46:ec:d0:ec:2d:b4:6e:
589 12:28:a9:f9:40:e9:eb:d4:66:97:53:a9:69:55:c0:a9:aa:b2:
590 2e:cd:d1:69:f4:be:f8:bb:7c:69:ee:54:a6:db:9e:fb:5a:a6:
591 3e:fe:9a:ef:94:51:4b:75:ee:d8:d4:e1:9a:f1:02:56:13:89:
592 0e:a7:42:8b:96:8b:85:0c:1b:85:be:26:ae:ab:a6:99:bc:22:
593 f1:73:df:42
594SHA1 Fingerprint=83:FE:DE:D5:71:E3:96:CF:C7:64:F7:3B:DF:16:76:87:72:C5:1F:CC
595-----BEGIN CERTIFICATE-----
596MIIDrDCCApSgAwIBAgILAgAAAAAA1ni4jY0wDQYJKoZIhvcNAQEEBQAwVzELMAkG
597A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
598b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05OTAxMjgxMjAw
599MDBaFw0wOTAxMjgxMjAwMDBaMG0xCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
600YWxTaWduIG52LXNhMRswGQYDVQQLExJQcmltYXJ5IENsYXNzIDIgQ0ExJjAkBgNV
601BAMTHUdsb2JhbFNpZ24gUHJpbWFyeSBDbGFzcyAyIENBMIIBIjANBgkqhkiG9w0B
602AQEFAAOCAQ8AMIIBCgKCAQEAkoz+7/RFjhdBbvzYvyFvqwadUsEsAJ0/joW4f0qP
603vaBjKspJJ65agvR04lWS/8LRqnmitvrVnYIET8ayxl5jpzq62O7rim+ftrsoQcAi
604+05IGgaS17/Xz7nZvThPOw1EblVB/vwJ29i/844h8egStfYTpdPGTJMisAL/7h0M
605xKhrT3VoVujcKBJQ96gknS4kOfsJBd7lo2RJIdBofnEwkbFg4Dn0UPh6TZgAa3x5
606uk7OSuK6Nh23xTYVlZxkQupfxLr1QAW+4TpZvYSnGbjeTVNQzgfR0lHT7w2BbObn
607bctdfD98zOxPgycl/3BQ9oNZdYQGZlgs3omNAKZJ+aVDdwIDAQABo2MwYTAOBgNV
608HQ8BAf8EBAMCAAYwHQYDVR0OBBYEFHznsrEs3rGna+l2DOGj/U5sx7n2MB8GA1Ud
609IwQYMBaAFGB7ZhpFDZfKiVAvfQTNNKj//P1LMA8GA1UdEwEB/wQFMAMBAf8wDQYJ
610KoZIhvcNAQEEBQADggEBAGPdWc6KeaqYnU7FiWQ3foqTZy8Q6m8nw413bfJcVpQZ
611GmlgMEZdj/JtRTyONZd8L7hR4uiJvYjPJxwINFyIwWgk25GF5M/7+0ON6CUBG8QO
6129wBCSIYfJAhYWoyN8mtHLGiRsWlC/Q2NySbmkoamZG6Sxc4+PH1x4yOkq8fVqKnf
613gqc76IbVw08Y40TQ4NzzxWgu/qUvBYTIfkdCU2uHSv4y/14+cIy3qBXMF8L/RuzQ
6147C20bhIoqflA6evUZpdTqWlVwKmqsi7N0Wn0vvi7fGnuVKbbnvtapj7+mu+UUUt1
6157tjU4ZrxAlYTiQ6nQouWi4UMG4W+Jq6rppm8IvFz30I=
616-----END CERTIFICATE-----
617Certificate:
618 Data:
619 Version: 1 (0x0)
620 Serial Number:
621 cd:ba:7f:56:f0:df:e4:bc:54:fe:22:ac:b3:72:aa:55
622 Signature Algorithm: md2WithRSAEncryption
623 Issuer: C=US, O=VeriSign, Inc., OU=Class 1 Public Primary Certification Authority
624 Validity
625 Not Before: Jan 29 00:00:00 1996 GMT
626 Not After : Aug 1 23:59:59 2028 GMT
627 Subject: C=US, O=VeriSign, Inc., OU=Class 1 Public Primary Certification Authority
628 Subject Public Key Info:
629 Public Key Algorithm: rsaEncryption
630 RSA Public Key: (1024 bit)
631 Modulus (1024 bit):
632 00:e5:19:bf:6d:a3:56:61:2d:99:48:71:f6:67:de:
633 b9:8d:eb:b7:9e:86:80:0a:91:0e:fa:38:25:af:46:
634 88:82:e5:73:a8:a0:9b:24:5d:0d:1f:cc:65:6e:0c:
635 b0:d0:56:84:18:87:9a:06:9b:10:a1:73:df:b4:58:
636 39:6b:6e:c1:f6:15:d5:a8:a8:3f:aa:12:06:8d:31:
637 ac:7f:b0:34:d7:8f:34:67:88:09:cd:14:11:e2:4e:
638 45:56:69:1f:78:02:80:da:dc:47:91:29:bb:36:c9:
639 63:5c:c5:e0:d7:2d:87:7b:a1:b7:32:b0:7b:30:ba:
640 2a:2f:31:aa:ee:a3:67:da:db
641 Exponent: 65537 (0x10001)
642 Signature Algorithm: md2WithRSAEncryption
643 4c:3f:b8:8b:c6:68:df:ee:43:33:0e:5d:e9:a6:cb:07:84:4d:
644 7a:33:ff:92:1b:f4:36:ad:d8:95:22:36:68:11:6c:7c:42:cc:
645 f3:9c:2e:c4:07:3f:14:b0:0f:4f:ff:90:92:76:f9:e2:bc:4a:
646 e9:8f:cd:a0:80:0a:f7:c5:29:f1:82:22:5d:b8:b1:dd:81:23:
647 a3:7b:25:15:46:30:79:16:f8:ea:05:4b:94:7f:1d:c2:1c:c8:
648 e3:b7:f4:10:40:3c:13:c3:5f:1f:53:e8:48:e4:86:b4:7b:a1:
649 35:b0:7b:25:ba:b8:d3:8e:ab:3f:38:9d:00:34:00:98:f3:d1:
650 71:94
651SHA1 Fingerprint=90:AE:A2:69:85:FF:14:80:4C:43:49:52:EC:E9:60:84:77:AF:55:6F
652-----BEGIN CERTIFICATE-----
653MIICPTCCAaYCEQDNun9W8N/kvFT+IqyzcqpVMA0GCSqGSIb3DQEBAgUAMF8xCzAJ
654BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xh
655c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05
656NjAxMjkwMDAwMDBaFw0yODA4MDEyMzU5NTlaMF8xCzAJBgNVBAYTAlVTMRcwFQYD
657VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMSBQdWJsaWMgUHJp
658bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOB
659jQAwgYkCgYEA5Rm/baNWYS2ZSHH2Z965jeu3noaACpEO+jglr0aIguVzqKCbJF0N
660H8xlbgyw0FaEGIeaBpsQoXPftFg5a27B9hXVqKg/qhIGjTGsf7A01480Z4gJzRQR
6614k5FVmkfeAKA2txHkSm7NsljXMXg1y2He6G3MrB7MLoqLzGq7qNn2tsCAwEAATAN
662BgkqhkiG9w0BAQIFAAOBgQBMP7iLxmjf7kMzDl3ppssHhE16M/+SG/Q2rdiVIjZo
663EWx8QszznC7EBz8UsA9P/5CSdvnivErpj82ggAr3xSnxgiJduLHdgSOjeyUVRjB5
664FvjqBUuUfx3CHMjjt/QQQDwTw18fU+hI5Ia0e6E1sHslurjTjqs/OJ0ANACY89Fx
665lA==
666-----END CERTIFICATE-----
667Certificate:
668 Data:
669 Version: 3 (0x2)
670 Serial Number: 0 (0x0)
671 Signature Algorithm: md5WithRSAEncryption
672 Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting, OU=Certification Services Division, CN=Thawte Personal Premium CA/emailAddress=personal-premium@thawte.com
673 Validity
674 Not Before: Jan 1 00:00:00 1996 GMT
675 Not After : Dec 31 23:59:59 2020 GMT
676 Subject: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting, OU=Certification Services Division, CN=Thawte Personal Premium CA/emailAddress=personal-premium@thawte.com
677 Subject Public Key Info:
678 Public Key Algorithm: rsaEncryption
679 RSA Public Key: (1024 bit)
680 Modulus (1024 bit):
681 00:c9:66:d9:f8:07:44:cf:b9:8c:2e:f0:a1:ef:13:
682 45:6c:05:df:de:27:16:51:36:41:11:6c:6c:3b:ed:
683 fe:10:7d:12:9e:e5:9b:42:9a:fe:60:31:c3:66:b7:
684 73:3a:48:ae:4e:d0:32:37:94:88:b5:0d:b6:d9:f3:
685 f2:44:d9:d5:88:12:dd:76:4d:f2:1a:fc:6f:23:1e:
686 7a:f1:d8:98:45:4e:07:10:ef:16:42:d0:43:75:6d:
687 4a:de:e2:aa:c9:31:ff:1f:00:70:7c:66:cf:10:25:
688 08:ba:fa:ee:00:e9:46:03:66:27:11:15:3b:aa:5b:
689 f2:98:dd:36:42:b2:da:88:75
690 Exponent: 65537 (0x10001)
691 X509v3 extensions:
692 X509v3 Basic Constraints: critical
693 CA:TRUE
694 Signature Algorithm: md5WithRSAEncryption
695 69:36:89:f7:34:2a:33:72:2f:6d:3b:d4:22:b2:b8:6f:9a:c5:
696 36:66:0e:1b:3c:a1:b1:75:5a:e6:fd:35:d3:f8:a8:f2:07:6f:
697 85:67:8e:de:2b:b9:e2:17:b0:3a:a0:f0:0e:a2:00:9a:df:f3:
698 14:15:6e:bb:c8:85:5a:98:80:f9:ff:be:74:1d:3d:f3:fe:30:
699 25:d1:37:34:67:fa:a5:71:79:30:61:29:72:c0:e0:2c:4c:fb:
700 56:e4:3a:a8:6f:e5:32:59:52:db:75:28:50:59:0c:f8:0b:19:
701 e4:ac:d9:af:96:8d:2f:50:db:07:c3:ea:1f:ab:33:e0:f5:2b:
702 31:89
703SHA1 Fingerprint=36:86:35:63:FD:51:28:C7:BE:A6:F0:05:CF:E9:B4:36:68:08:6C:CE
704-----BEGIN CERTIFICATE-----
705MIIDKTCCApKgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBzzELMAkGA1UEBhMCWkEx
706FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD
707VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT
708ZXJ2aWNlcyBEaXZpc2lvbjEjMCEGA1UEAxMaVGhhd3RlIFBlcnNvbmFsIFByZW1p
709dW0gQ0ExKjAoBgkqhkiG9w0BCQEWG3BlcnNvbmFsLXByZW1pdW1AdGhhd3RlLmNv
710bTAeFw05NjAxMDEwMDAwMDBaFw0yMDEyMzEyMzU5NTlaMIHPMQswCQYDVQQGEwJa
711QTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xGjAY
712BgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9u
713IFNlcnZpY2VzIERpdmlzaW9uMSMwIQYDVQQDExpUaGF3dGUgUGVyc29uYWwgUHJl
714bWl1bSBDQTEqMCgGCSqGSIb3DQEJARYbcGVyc29uYWwtcHJlbWl1bUB0aGF3dGUu
715Y29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJZtn4B0TPuYwu8KHvE0Vs
716Bd/eJxZRNkERbGw77f4QfRKe5ZtCmv5gMcNmt3M6SK5O0DI3lIi1DbbZ8/JE2dWI
717Et12TfIa/G8jHnrx2JhFTgcQ7xZC0EN1bUre4qrJMf8fAHB8Zs8QJQi6+u4A6UYD
718ZicRFTuqW/KY3TZCstqIdQIDAQABoxMwETAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
719SIb3DQEBBAUAA4GBAGk2ifc0KjNyL2071CKyuG+axTZmDhs8obF1Wub9NdP4qPIH
720b4Vnjt4rueIXsDqg8A6iAJrf8xQVbrvIhVqYgPn/vnQdPfP+MCXRNzRn+qVxeTBh
721KXLA4CxM+1bkOqhv5TJZUtt1KFBZDPgLGeSs2a+WjS9Q2wfD6h+rM+D1KzGJ
722-----END CERTIFICATE-----
723Certificate:
724 Data:
725 Version: 1 (0x0)
726 Serial Number: 141 (0x8d)
727 Signature Algorithm: md5WithRSAEncryption
728 Issuer: C=US, O=American Express Company, Inc., OU=American Express Technologies, CN=American Express Certificate Authority
729 Validity
730 Not Before: Aug 14 22:01:00 1998 GMT
731 Not After : Aug 14 23:59:00 2006 GMT
732 Subject: C=US, O=American Express Company, Inc., OU=American Express Technologies, CN=American Express Certificate Authority
733 Subject Public Key Info:
734 Public Key Algorithm: rsaEncryption
735 RSA Public Key: (1024 bit)
736 Modulus (1024 bit):
737 00:c9:f2:49:92:85:ca:fd:15:29:b5:06:b6:44:ec:
738 fc:88:a3:f2:86:ce:ff:14:4f:24:1c:92:f9:c2:23:
739 c1:ce:43:df:5d:34:c8:b8:14:ec:d5:2a:70:91:49:
740 95:d7:56:cd:94:f1:a9:93:d0:68:22:dc:4d:7d:a0:
741 0a:72:2a:47:ea:25:f0:85:00:5f:36:54:61:cf:0b:
742 f9:37:5a:67:9d:e9:1f:e9:64:3f:70:95:61:a7:d0:
743 30:02:de:26:28:a4:66:03:04:e9:30:fb:8f:33:07:
744 f9:6f:61:87:a2:72:db:f3:68:78:63:66:59:a9:c9:
745 b7:66:e1:15:b2:48:36:2c:f9
746 Exponent: 65537 (0x10001)
747 Signature Algorithm: md5WithRSAEncryption
748 68:17:62:b8:73:8b:4c:6c:eb:4a:a5:3e:ab:e5:9d:2e:d2:cd:
749 8a:07:57:f3:c6:59:97:76:17:17:f8:52:8e:27:93:d8:58:d8:
750 28:6c:f4:a2:04:7a:8a:c2:76:24:b1:02:b4:df:28:f2:f7:f3:
751 a8:a7:7e:23:48:61:88:f4:11:68:ae:26:5d:f6:a1:4b:53:25:
752 6a:d8:2a:14:02:0e:e0:87:20:6e:9e:19:5c:73:90:0b:23:e2:
753 31:97:23:3f:d5:22:a2:d3:06:7b:da:37:f5:d7:b5:41:44:17:
754 7a:45:02:d9:85:45:66:d6:8e:c7:f0:7a:0c:99:62:22:69:5b:
755 ed:d2
756SHA1 Fingerprint=AC:99:8F:80:C4:A0:05:F8:6E:F2:A0:AE:48:18:E4:4F:48:9F:F8:7F
757-----BEGIN CERTIFICATE-----
758MIICkDCCAfkCAgCNMA0GCSqGSIb3DQEBBAUAMIGPMQswCQYDVQQGEwJVUzEnMCUG
759A1UEChMeQW1lcmljYW4gRXhwcmVzcyBDb21wYW55LCBJbmMuMSYwJAYDVQQLEx1B
760bWVyaWNhbiBFeHByZXNzIFRlY2hub2xvZ2llczEvMC0GA1UEAxMmQW1lcmljYW4g
761RXhwcmVzcyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNOTgwODE0MjIwMTAwWhcN
762MDYwODE0MjM1OTAwWjCBjzELMAkGA1UEBhMCVVMxJzAlBgNVBAoTHkFtZXJpY2Fu
763IEV4cHJlc3MgQ29tcGFueSwgSW5jLjEmMCQGA1UECxMdQW1lcmljYW4gRXhwcmVz
764cyBUZWNobm9sb2dpZXMxLzAtBgNVBAMTJkFtZXJpY2FuIEV4cHJlc3MgQ2VydGlm
765aWNhdGUgQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJ8kmS
766hcr9FSm1BrZE7PyIo/KGzv8UTyQckvnCI8HOQ99dNMi4FOzVKnCRSZXXVs2U8amT
7670Ggi3E19oApyKkfqJfCFAF82VGHPC/k3Wmed6R/pZD9wlWGn0DAC3iYopGYDBOkw
768+48zB/lvYYeictvzaHhjZlmpybdm4RWySDYs+QIDAQABMA0GCSqGSIb3DQEBBAUA
769A4GBAGgXYrhzi0xs60qlPqvlnS7SzYoHV/PGWZd2Fxf4Uo4nk9hY2Chs9KIEeorC
770diSxArTfKPL386infiNIYYj0EWiuJl32oUtTJWrYKhQCDuCHIG6eGVxzkAsj4jGX
771Iz/VIqLTBnvaN/XXtUFEF3pFAtmFRWbWjsfwegyZYiJpW+3S
772-----END CERTIFICATE-----
773Certificate:
774 Data:
775 Version: 1 (0x0)
776 Serial Number:
777 d0:1e:40:8b:00:00:77:6d:00:00:00:01:00:00:00:04
778 Signature Algorithm: sha1WithRSAEncryption
779 Issuer: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=DSTCA X2, CN=DST RootCA X2/emailAddress=ca@digsigtrust.com
780 Validity
781 Not Before: Nov 30 22:46:16 1998 GMT
782 Not After : Nov 27 22:46:16 2008 GMT
783 Subject: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=DSTCA X2, CN=DST RootCA X2/emailAddress=ca@digsigtrust.com
784 Subject Public Key Info:
785 Public Key Algorithm: rsaEncryption
786 RSA Public Key: (2048 bit)
787 Modulus (2048 bit):
788 00:dc:75:f0:8c:c0:75:96:9a:c0:62:1f:26:f7:c4:
789 e1:9a:ea:e0:56:73:5b:99:cd:01:44:a8:08:b6:d5:
790 a7:da:1a:04:18:39:92:4a:78:a3:81:c2:f5:77:7a:
791 50:b4:70:ff:9a:ab:c6:c7:ca:6e:83:4f:42:98:fb:
792 26:0b:da:dc:6d:d6:a9:99:55:52:67:e9:28:03:92:
793 dc:e5:b0:05:9a:0f:15:f9:6b:59:72:56:f2:fa:39:
794 fc:aa:68:ee:0f:1f:10:83:2f:fc:9d:fa:17:96:dd:
795 82:e3:e6:45:7d:c0:4b:80:44:1f:ed:2c:e0:84:fd:
796 91:5c:92:54:69:25:e5:62:69:dc:e5:ee:00:52:bd:
797 33:0b:ad:75:02:85:a7:64:50:2d:c5:19:19:30:c0:
798 26:db:c9:d3:fd:2e:99:ad:59:b5:0b:4d:d4:41:ae:
799 85:48:43:59:dc:b7:a8:e2:a2:de:c3:8f:d7:b8:a1:
800 62:a6:68:50:52:e4:cf:31:a7:94:85:da:9f:46:32:
801 17:56:e5:f2:eb:66:3d:12:ff:43:db:98:ef:77:cf:
802 cb:81:8d:34:b1:c6:50:4a:26:d1:e4:3e:41:50:af:
803 6c:ae:22:34:2e:d5:6b:6e:83:ba:79:b8:76:65:48:
804 da:09:29:64:63:22:b9:fb:47:76:85:8c:86:44:cb:
805 09:db
806 Exponent: 65537 (0x10001)
807 Signature Algorithm: sha1WithRSAEncryption
808 b5:36:0e:5d:e1:61:28:5a:11:65:c0:3f:83:03:79:4d:be:28:
809 a6:0b:07:02:52:85:cd:f8:91:d0:10:6c:b5:6a:20:5b:1c:90:
810 d9:30:3c:c6:48:9e:8a:5e:64:f9:a1:71:77:ef:04:27:1f:07:
811 eb:e4:26:f7:73:74:c9:44:18:1a:66:d3:e0:43:af:91:3b:d1:
812 cb:2c:d8:74:54:3a:1c:4d:ca:d4:68:cd:23:7c:1d:10:9e:45:
813 e9:f6:00:6e:a6:cd:19:ff:4f:2c:29:8f:57:4d:c4:77:92:be:
814 e0:4c:09:fb:5d:44:86:66:21:a8:b9:32:a2:56:d5:e9:8c:83:
815 7c:59:3f:c4:f1:0b:e7:9d:ec:9e:bd:9c:18:0e:3e:c2:39:79:
816 28:b7:03:0d:08:cb:c6:e7:d9:01:37:50:10:ec:cc:61:16:40:
817 d4:af:31:74:7b:fc:3f:31:a7:d0:47:73:33:39:1b:cc:4e:6a:
818 d7:49:83:11:06:fe:eb:82:58:33:32:4c:f0:56:ac:1e:9c:2f:
819 56:9a:7b:c1:4a:1c:a5:fd:55:36:ce:fc:96:4d:f4:b0:f0:ec:
820 b7:6c:82:ed:2f:31:99:42:4c:a9:b2:0d:b8:15:5d:f1:df:ba:
821 c9:b5:4a:d4:64:98:b3:26:a9:30:c8:fd:a6:ec:ab:96:21:ad:
822 7f:c2:78:b6
823SHA1 Fingerprint=67:EB:33:7B:68:4C:EB:0E:C2:B0:76:0A:B4:88:27:8C:DD:95:97:DD
824-----BEGIN CERTIFICATE-----
825MIID2DCCAsACEQDQHkCLAAB3bQAAAAEAAAAEMA0GCSqGSIb3DQEBBQUAMIGpMQsw
826CQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENp
827dHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UE
828CxMIRFNUQ0EgWDIxFjAUBgNVBAMTDURTVCBSb290Q0EgWDIxITAfBgkqhkiG9w0B
829CQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05ODExMzAyMjQ2MTZaFw0wODExMjcy
830MjQ2MTZaMIGpMQswCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMO
831U2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0
832IENvLjERMA8GA1UECxMIRFNUQ0EgWDIxFjAUBgNVBAMTDURTVCBSb290Q0EgWDIx
833ITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcN
834AQEBBQADggEPADCCAQoCggEBANx18IzAdZaawGIfJvfE4Zrq4FZzW5nNAUSoCLbV
835p9oaBBg5kkp4o4HC9Xd6ULRw/5qrxsfKboNPQpj7Jgva3G3WqZlVUmfpKAOS3OWw
836BZoPFflrWXJW8vo5/Kpo7g8fEIMv/J36F5bdguPmRX3AS4BEH+0s4IT9kVySVGkl
8375WJp3OXuAFK9MwutdQKFp2RQLcUZGTDAJtvJ0/0uma1ZtQtN1EGuhUhDWdy3qOKi
8383sOP17ihYqZoUFLkzzGnlIXan0YyF1bl8utmPRL/Q9uY73fPy4GNNLHGUEom0eQ+
839QVCvbK4iNC7Va26Dunm4dmVI2gkpZGMiuftHdoWMhkTLCdsCAwEAATANBgkqhkiG
8409w0BAQUFAAOCAQEAtTYOXeFhKFoRZcA/gwN5Tb4opgsHAlKFzfiR0BBstWogWxyQ
8412TA8xkieil5k+aFxd+8EJx8H6+Qm93N0yUQYGmbT4EOvkTvRyyzYdFQ6HE3K1GjN
842I3wdEJ5F6fYAbqbNGf9PLCmPV03Ed5K+4EwJ+11EhmYhqLkyolbV6YyDfFk/xPEL
843553snr2cGA4+wjl5KLcDDQjLxufZATdQEOzMYRZA1K8xdHv8PzGn0EdzMzkbzE5q
84410mDEQb+64JYMzJM8FasHpwvVpp7wUocpf1VNs78lk30sPDst2yC7S8xmUJMqbIN
845uBVd8d+6ybVK1GSYsyapMMj9puyrliGtf8J4tg==
846-----END CERTIFICATE-----
847Certificate:
848 Data:
849 Version: 1 (0x0)
850 Serial Number: 421 (0x1a5)
851 Signature Algorithm: md5WithRSAEncryption
852 Issuer: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Global Root
853 Validity
854 Not Before: Aug 13 00:29:00 1998 GMT
855 Not After : Aug 13 23:59:00 2018 GMT
856 Subject: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Global Root
857 Subject Public Key Info:
858 Public Key Algorithm: rsaEncryption
859 RSA Public Key: (1024 bit)
860 Modulus (1024 bit):
861 00:95:0f:a0:b6:f0:50:9c:e8:7a:c7:88:cd:dd:17:
862 0e:2e:b0:94:d0:1b:3d:0e:f6:94:c0:8a:94:c7:06:
863 c8:90:97:c8:b8:64:1a:7a:7e:6c:3c:53:e1:37:28:
864 73:60:7f:b2:97:53:07:9f:53:f9:6d:58:94:d2:af:
865 8d:6d:88:67:80:e6:ed:b2:95:cf:72:31:ca:a5:1c:
866 72:ba:5c:02:e7:64:42:e7:f9:a9:2c:d6:3a:0d:ac:
867 8d:42:aa:24:01:39:e6:9c:3f:01:85:57:0d:58:87:
868 45:f8:d3:85:aa:93:69:26:85:70:48:80:3f:12:15:
869 c7:79:b4:1f:05:2f:3b:62:99
870 Exponent: 65537 (0x10001)
871 Signature Algorithm: md5WithRSAEncryption
872 6d:eb:1b:09:e9:5e:d9:51:db:67:22:61:a4:2a:3c:48:77:e3:
873 a0:7c:a6:de:73:a2:14:03:85:3d:fb:ab:0e:30:c5:83:16:33:
874 81:13:08:9e:7b:34:4e:df:40:c8:74:d7:b9:7d:dc:f4:76:55:
875 7d:9b:63:54:18:e9:f0:ea:f3:5c:b1:d9:8b:42:1e:b9:c0:95:
876 4e:ba:fa:d5:e2:7c:f5:68:61:bf:8e:ec:05:97:5f:5b:b0:d7:
877 a3:85:34:c4:24:a7:0d:0f:95:93:ef:cb:94:d8:9e:1f:9d:5c:
878 85:6d:c7:aa:ae:4f:1f:22:b5:cd:95:ad:ba:a7:cc:f9:ab:0b:
879 7a:7f
880SHA1 Fingerprint=97:81:79:50:D8:1C:96:70:CC:34:D8:09:CF:79:44:31:36:7E:F4:74
881-----BEGIN CERTIFICATE-----
882MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD
883VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv
884bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv
885b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV
886UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
887cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
888b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH
889iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS
890r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4
89104Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r
892GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9
8933PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P
894lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
895-----END CERTIFICATE-----
896Certificate:
897 Data:
898 Version: 3 (0x2)
899 Serial Number: 913220207 (0x366ea26f)
900 Signature Algorithm: sha1WithRSAEncryption
901 Issuer: C=US, O=Digital Signature Trust Co., OU=DST (ANX Network) CA
902 Validity
903 Not Before: Dec 9 15:46:48 1998 GMT
904 Not After : Dec 9 16:16:48 2018 GMT
905 Subject: C=US, O=Digital Signature Trust Co., OU=DST (ANX Network) CA
906 Subject Public Key Info:
907 Public Key Algorithm: rsaEncryption
908 RSA Public Key: (1024 bit)
909 Modulus (1024 bit):
910 00:b4:48:11:80:58:a0:d5:a5:99:0f:f6:37:2c:44:
911 b6:6e:d1:7c:f3:2a:6b:9e:11:b6:88:23:04:5c:71:
912 25:9e:6a:12:77:11:6e:bf:68:39:65:a8:f6:b2:f6:
913 a2:18:b2:89:15:a0:67:b7:7a:8c:22:48:6b:f6:84:
914 34:1f:b6:ca:f7:1b:72:cb:f2:5b:48:d3:87:1e:22:
915 76:13:04:b4:ac:6c:96:7f:e7:0e:08:c9:32:51:30:
916 2d:d5:80:e8:21:67:ba:f3:5e:08:24:2c:07:59:9d:
917 90:1a:ee:46:c9:b5:a4:1e:96:b4:41:91:d4:7f:d2:
918 8d:38:26:b0:6f:43:6e:09:7d
919 Exponent: 3 (0x3)
920 X509v3 extensions:
921 Netscape Cert Type:
922 SSL CA, S/MIME CA, Object Signing CA
923 X509v3 CRL Distribution Points:
924 DirName:/C=US/O=Digital Signature Trust Co./OU=DST (ANX Network) CA/CN=CRL1
925
926 X509v3 Private Key Usage Period:
927 Not Before: Dec 9 15:46:48 1998 GMT, Not After: Dec 9 15:46:48 2018 GMT
928 X509v3 Key Usage:
929 Certificate Sign, CRL Sign
930 X509v3 Authority Key Identifier:
931 keyid:8C:16:55:70:CC:16:0A:53:64:C2:A5:84:AA:B3:64:17:43:3F:82:36
932
933 X509v3 Subject Key Identifier:
934 8C:16:55:70:CC:16:0A:53:64:C2:A5:84:AA:B3:64:17:43:3F:82:36
935 X509v3 Basic Constraints:
936 CA:TRUE
937 1.2.840.113533.7.65.0:
938 0
939..V4.0....
940 Signature Algorithm: sha1WithRSAEncryption
941 49:25:c9:60:b1:0c:5f:a9:39:10:d3:c5:34:55:7d:cf:79:c3:
942 29:eb:de:f9:c2:40:f9:e8:56:c5:f0:2f:ec:f4:d9:ec:48:51:
943 b8:63:38:5e:93:6e:18:96:85:b9:ca:50:9c:a4:b8:ea:66:26:
944 68:93:85:6f:6f:4c:71:d0:be:7a:0b:3c:31:b9:f7:be:69:9e:
945 10:d7:d1:40:e8:ac:16:71:ab:ae:ab:38:e1:70:b1:ca:92:16:
946 e0:5d:85:a6:18:80:06:00:9c:e1:a6:18:42:51:a7:68:68:59:
947 ef:26:94:5f:ad:31:0c:fe:29:1e:17:01:84:37:5b:e8:12:32:
948 a3:5d
949SHA1 Fingerprint=76:39:C7:18:47:E1:51:B5:C7:EA:01:C7:58:FB:F1:2A:BA:29:8F:7A
950-----BEGIN CERTIFICATE-----
951MIIDTTCCAragAwIBAgIENm6ibzANBgkqhkiG9w0BAQUFADBSMQswCQYDVQQGEwJV
952UzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMR0wGwYDVQQL
953ExREU1QgKEFOWCBOZXR3b3JrKSBDQTAeFw05ODEyMDkxNTQ2NDhaFw0xODEyMDkx
954NjE2NDhaMFIxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVy
955ZSBUcnVzdCBDby4xHTAbBgNVBAsTFERTVCAoQU5YIE5ldHdvcmspIENBMIGdMA0G
956CSqGSIb3DQEBAQUAA4GLADCBhwKBgQC0SBGAWKDVpZkP9jcsRLZu0XzzKmueEbaI
957IwRccSWeahJ3EW6/aDllqPay9qIYsokVoGe3eowiSGv2hDQftsr3G3LL8ltI04ce
958InYTBLSsbJZ/5w4IyTJRMC3VgOghZ7rzXggkLAdZnZAa7kbJtaQelrRBkdR/0o04
959JrBvQ24JfQIBA6OCATAwggEsMBEGCWCGSAGG+EIBAQQEAwIABzB0BgNVHR8EbTBr
960MGmgZ6BlpGMwYTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
961dXJlIFRydXN0IENvLjEdMBsGA1UECxMURFNUIChBTlggTmV0d29yaykgQ0ExDTAL
962BgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMDkxNTQ2NDhagQ8yMDE4MTIw
963OTE1NDY0OFowCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFIwWVXDMFgpTZMKlhKqz
964ZBdDP4I2MB0GA1UdDgQWBBSMFlVwzBYKU2TCpYSqs2QXQz+CNjAMBgNVHRMEBTAD
965AQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
966AEklyWCxDF+pORDTxTRVfc95wynr3vnCQPnoVsXwL+z02exIUbhjOF6TbhiWhbnK
967UJykuOpmJmiThW9vTHHQvnoLPDG5975pnhDX0UDorBZxq66rOOFwscqSFuBdhaYY
968gAYAnOGmGEJRp2hoWe8mlF+tMQz+KR4XAYQ3W+gSMqNd
969-----END CERTIFICATE-----
970Certificate:
971 Data:
972 Version: 3 (0x2)
973 Serial Number: 1003 (0x3eb)
974 Signature Algorithm: md5WithRSAEncryption
975 Issuer: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 3 CA/emailAddress=certificate@trustcenter.de
976 Validity
977 Not Before: Mar 9 11:59:59 1998 GMT
978 Not After : Jan 1 11:59:59 2011 GMT
979 Subject: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 3 CA/emailAddress=certificate@trustcenter.de
980 Subject Public Key Info:
981 Public Key Algorithm: rsaEncryption
982 RSA Public Key: (1024 bit)
983 Modulus (1024 bit):
984 00:b6:b4:c1:35:05:2e:0d:8d:ec:a0:40:6a:1c:0e:
985 27:a6:50:92:6b:50:1b:07:de:2e:e7:76:cc:e0:da:
986 fc:84:a8:5e:8c:63:6a:2b:4d:d9:4e:02:76:11:c1:
987 0b:f2:8d:79:ca:00:b6:f1:b0:0e:d7:fb:a4:17:3d:
988 af:ab:69:7a:96:27:bf:af:33:a1:9a:2a:59:aa:c4:
989 b5:37:08:f2:12:a5:31:b6:43:f5:32:96:71:28:28:
990 ab:8d:28:86:df:bb:ee:e3:0c:7d:30:d6:c3:52:ab:
991 8f:5d:27:9c:6b:c0:a3:e7:05:6b:57:49:44:b3:6e:
992 ea:64:cf:d2:8e:7a:50:77:77
993 Exponent: 65537 (0x10001)
994 X509v3 extensions:
995 X509v3 Basic Constraints: critical
996 CA:TRUE
997 X509v3 Key Usage: critical
998 Digital Signature, Certificate Sign, CRL Sign
999 Netscape CA Policy Url:
1000 http://www.trustcenter.de/guidelines
1001 Netscape Cert Type:
1002 SSL CA, S/MIME CA, Object Signing CA
1003 Signature Algorithm: md5WithRSAEncryption
1004 16:3d:c6:cd:c1:bb:85:71:85:46:9f:3e:20:8f:51:28:99:ec:
1005 2d:45:21:63:23:5b:04:bb:4c:90:b8:88:92:04:4d:bd:7d:01:
1006 a3:3f:f6:ec:ce:f1:de:fe:7d:e5:e1:3e:bb:c6:ab:5e:0b:dd:
1007 3d:96:c4:cb:a9:d4:f9:26:e6:06:4e:9e:0c:a5:7a:ba:6e:c3:
1008 7c:82:19:d1:c7:b1:b1:c3:db:0d:8e:9b:40:7c:37:0b:f1:5d:
1009 e8:fd:1f:90:88:a5:0e:4e:37:64:21:a8:4e:8d:b4:9f:f1:de:
1010 48:ad:d5:56:18:52:29:8b:47:34:12:09:d4:bb:92:35:ef:0f:
1011 db:34
1012SHA1 Fingerprint=9F:C7:96:E8:F8:52:4F:86:3A:E1:49:6D:38:12:42:10:5F:1B:78:F5
1013-----BEGIN CERTIFICATE-----
1014MIIDXDCCAsWgAwIBAgICA+swDQYJKoZIhvcNAQEEBQAwgbwxCzAJBgNVBAYTAkRF
1015MRAwDgYDVQQIEwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFU
1016QyBUcnVzdENlbnRlciBmb3IgU2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJI
1017MSIwIAYDVQQLExlUQyBUcnVzdENlbnRlciBDbGFzcyAzIENBMSkwJwYJKoZIhvcN
1018AQkBFhpjZXJ0aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAeFw05ODAzMDkxMTU5NTla
1019Fw0xMTAxMDExMTU5NTlaMIG8MQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFtYnVy
1020ZzEQMA4GA1UEBxMHSGFtYnVyZzE6MDgGA1UEChMxVEMgVHJ1c3RDZW50ZXIgZm9y
1021IFNlY3VyaXR5IGluIERhdGEgTmV0d29ya3MgR21iSDEiMCAGA1UECxMZVEMgVHJ1
1022c3RDZW50ZXIgQ2xhc3MgMyBDQTEpMCcGCSqGSIb3DQEJARYaY2VydGlmaWNhdGVA
1023dHJ1c3RjZW50ZXIuZGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALa0wTUF
1024Lg2N7KBAahwOJ6ZQkmtQGwfeLud2zODa/ISoXoxjaitN2U4CdhHBC/KNecoAtvGw
1025Dtf7pBc9r6tpepYnv68zoZoqWarEtTcI8hKlMbZD9TKWcSgoq40oht+77uMMfTDW
1026w1Krj10nnGvAo+cFa1dJRLNu6mTP0o56UHd3AgMBAAGjazBpMA8GA1UdEwEB/wQF
1027MAMBAf8wDgYDVR0PAQH/BAQDAgGGMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3
1028LnRydXN0Y2VudGVyLmRlL2d1aWRlbGluZXMwEQYJYIZIAYb4QgEBBAQDAgAHMA0G
1029CSqGSIb3DQEBBAUAA4GBABY9xs3Bu4VxhUafPiCPUSiZ7C1FIWMjWwS7TJC4iJIE
1030Tb19AaM/9uzO8d7+feXhPrvGq14L3T2WxMup1Pkm5gZOngylerpuw3yCGdHHsbHD
10312w2Om0B8NwvxXej9H5CIpQ5ON2QhqE6NtJ/x3kit1VYYUimLRzQSCdS7kjXvD9s0
1032-----END CERTIFICATE-----
1033Certificate:
1034 Data:
1035 Version: 3 (0x2)
1036 Serial Number: 903804111 (0x35def4cf)
1037 Signature Algorithm: sha1WithRSAEncryption
1038 Issuer: C=US, O=Equifax, OU=Equifax Secure Certificate Authority
1039 Validity
1040 Not Before: Aug 22 16:41:51 1998 GMT
1041 Not After : Aug 22 16:41:51 2018 GMT
1042 Subject: C=US, O=Equifax, OU=Equifax Secure Certificate Authority
1043 Subject Public Key Info:
1044 Public Key Algorithm: rsaEncryption
1045 RSA Public Key: (1024 bit)
1046 Modulus (1024 bit):
1047 00:c1:5d:b1:58:67:08:62:ee:a0:9a:2d:1f:08:6d:
1048 91:14:68:98:0a:1e:fe:da:04:6f:13:84:62:21:c3:
1049 d1:7c:ce:9f:05:e0:b8:01:f0:4e:34:ec:e2:8a:95:
1050 04:64:ac:f1:6b:53:5f:05:b3:cb:67:80:bf:42:02:
1051 8e:fe:dd:01:09:ec:e1:00:14:4f:fc:fb:f0:0c:dd:
1052 43:ba:5b:2b:e1:1f:80:70:99:15:57:93:16:f1:0f:
1053 97:6a:b7:c2:68:23:1c:cc:4d:59:30:ac:51:1e:3b:
1054 af:2b:d6:ee:63:45:7b:c5:d9:5f:50:d2:e3:50:0f:
1055 3a:88:e7:bf:14:fd:e0:c7:b9
1056 Exponent: 65537 (0x10001)
1057 X509v3 extensions:
1058 X509v3 CRL Distribution Points:
1059 DirName:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority/CN=CRL1
1060
1061 X509v3 Private Key Usage Period:
1062 Not After: Aug 22 16:41:51 2018 GMT
1063 X509v3 Key Usage:
1064 Certificate Sign, CRL Sign
1065 X509v3 Authority Key Identifier:
1066 keyid:48:E6:68:F9:2B:D2:B2:95:D7:47:D8:23:20:10:4F:33:98:90:9F:D4
1067
1068 X509v3 Subject Key Identifier:
1069 48:E6:68:F9:2B:D2:B2:95:D7:47:D8:23:20:10:4F:33:98:90:9F:D4
1070 X509v3 Basic Constraints:
1071 CA:TRUE
1072 1.2.840.113533.7.65.0:
1073 0...V3.0c....
1074 Signature Algorithm: sha1WithRSAEncryption
1075 58:ce:29:ea:fc:f7:de:b5:ce:02:b9:17:b5:85:d1:b9:e3:e0:
1076 95:cc:25:31:0d:00:a6:92:6e:7f:b6:92:63:9e:50:95:d1:9a:
1077 6f:e4:11:de:63:85:6e:98:ee:a8:ff:5a:c8:d3:55:b2:66:71:
1078 57:de:c0:21:eb:3d:2a:a7:23:49:01:04:86:42:7b:fc:ee:7f:
1079 a2:16:52:b5:67:67:d3:40:db:3b:26:58:b2:28:77:3d:ae:14:
1080 77:61:d6:fa:2a:66:27:a0:0d:fa:a7:73:5c:ea:70:f1:94:21:
1081 65:44:5f:fa:fc:ef:29:68:a9:a2:87:79:ef:79:ef:4f:ac:07:
1082 77:38
1083SHA1 Fingerprint=D2:32:09:AD:23:D3:14:23:21:74:E4:0D:7F:9D:62:13:97:86:63:3A
1084-----BEGIN CERTIFICATE-----
1085MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV
1086UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy
1087dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1
1088MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx
1089dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B
1090AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f
1091BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A
1092cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC
1093AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ
1094MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm
1095aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw
1096ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj
1097IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF
1098MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA
1099A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y
11007qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh
11011voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4
1102-----END CERTIFICATE-----
1103Certificate:
1104 Data:
1105 Version: 3 (0x2)
1106 Serial Number: 0 (0x0)
1107 Signature Algorithm: md5WithRSAEncryption
1108 Issuer: O=Root CA, OU=http://www.cacert.org, CN=CA Cert Signing Authority/emailAddress=support@cacert.org
1109 Validity
1110 Not Before: Mar 30 12:29:49 2003 GMT
1111 Not After : Mar 29 12:29:49 2033 GMT
1112 Subject: O=Root CA, OU=http://www.cacert.org, CN=CA Cert Signing Authority/emailAddress=support@cacert.org
1113 Subject Public Key Info:
1114 Public Key Algorithm: rsaEncryption
1115 RSA Public Key: (4096 bit)
1116 Modulus (4096 bit):
1117 00:ce:22:c0:e2:46:7d:ec:36:28:07:50:96:f2:a0:
1118 33:40:8c:4b:f1:3b:66:3f:31:e5:6b:02:36:db:d6:
1119 7c:f6:f1:88:8f:4e:77:36:05:41:95:f9:09:f0:12:
1120 cf:46:86:73:60:b7:6e:7e:e8:c0:58:64:ae:cd:b0:
1121 ad:45:17:0c:63:fa:67:0a:e8:d6:d2:bf:3e:e7:98:
1122 c4:f0:4c:fa:e0:03:bb:35:5d:6c:21:de:9e:20:d9:
1123 ba:cd:66:32:37:72:fa:f7:08:f5:c7:cd:58:c9:8e:
1124 e7:0e:5e:ea:3e:fe:1c:a1:14:0a:15:6c:86:84:5b:
1125 64:66:2a:7a:a9:4b:53:79:f5:88:a2:7b:ee:2f:0a:
1126 61:2b:8d:b2:7e:4d:56:a5:13:ec:ea:da:92:9e:ac:
1127 44:41:1e:58:60:65:05:66:f8:c0:44:bd:cb:94:f7:
1128 42:7e:0b:f7:65:68:98:51:05:f0:f3:05:91:04:1d:
1129 1b:17:82:ec:c8:57:bb:c3:6b:7a:88:f1:b0:72:cc:
1130 25:5b:20:91:ec:16:02:12:8f:32:e9:17:18:48:d0:
1131 c7:05:2e:02:30:42:b8:25:9c:05:6b:3f:aa:3a:a7:
1132 eb:53:48:f7:e8:d2:b6:07:98:dc:1b:c6:34:7f:7f:
1133 c9:1c:82:7a:05:58:2b:08:5b:f3:38:a2:ab:17:5d:
1134 66:c9:98:d7:9e:10:8b:a2:d2:dd:74:9a:f7:71:0c:
1135 72:60:df:cd:6f:98:33:9d:96:34:76:3e:24:7a:92:
1136 b0:0e:95:1e:6f:e6:a0:45:38:47:aa:d7:41:ed:4a:
1137 b7:12:f6:d7:1b:83:8a:0f:2e:d8:09:b6:59:d7:aa:
1138 04:ff:d2:93:7d:68:2e:dd:8b:4b:ab:58:ba:2f:8d:
1139 ea:95:a7:a0:c3:54:89:a5:fb:db:8b:51:22:9d:b2:
1140 c3:be:11:be:2c:91:86:8b:96:78:ad:20:d3:8a:2f:
1141 1a:3f:c6:d0:51:65:87:21:b1:19:01:65:7f:45:1c:
1142 87:f5:7c:d0:41:4c:4f:29:98:21:fd:33:1f:75:0c:
1143 04:51:fa:19:77:db:d4:14:1c:ee:81:c3:1d:f5:98:
1144 b7:69:06:91:22:dd:00:50:cc:81:31:ac:12:07:7b:
1145 38:da:68:5b:e6:2b:d4:7e:c9:5f:ad:e8:eb:72:4c:
1146 f3:01:e5:4b:20:bf:9a:a6:57:ca:91:00:01:8b:a1:
1147 75:21:37:b5:63:0d:67:3e:46:4f:70:20:67:ce:c5:
1148 d6:59:db:02:e0:f0:d2:cb:cd:ba:62:b7:90:41:e8:
1149 dd:20:e4:29:bc:64:29:42:c8:22:dc:78:9a:ff:43:
1150 ec:98:1b:09:51:4b:5a:5a:c2:71:f1:c4:cb:73:a9:
1151 e5:a1:0b
1152 Exponent: 65537 (0x10001)
1153 X509v3 extensions:
1154 X509v3 Subject Key Identifier:
1155 16:B5:32:1B:D4:C7:F3:E0:E6:8E:F3:BD:D2:B0:3A:EE:B2:39:18:D1
1156 X509v3 Authority Key Identifier:
1157 keyid:16:B5:32:1B:D4:C7:F3:E0:E6:8E:F3:BD:D2:B0:3A:EE:B2:39:18:D1
1158 DirName:/O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org
1159 serial:00
1160
1161 X509v3 Basic Constraints: critical
1162 CA:TRUE
1163 X509v3 CRL Distribution Points:
1164 URI:https://www.cacert.org/revoke.crl
1165
1166 Netscape CA Revocation Url:
1167 https://www.cacert.org/revoke.crl
1168 Netscape CA Policy Url:
1169 http://www.cacert.org/index.php?id=10
1170 Netscape Comment:
1171 To get your own certificate for FREE head over to http://www.cacert.org
1172 Signature Algorithm: md5WithRSAEncryption
1173 28:c7:ee:9c:82:02:ba:5c:80:12:ca:35:0a:1d:81:6f:89:6a:
1174 99:cc:f2:68:0f:7f:a7:e1:8d:58:95:3e:bd:f2:06:c3:90:5a:
1175 ac:b5:60:f6:99:43:01:a3:88:70:9c:9d:62:9d:a4:87:af:67:
1176 58:0d:30:36:3b:e6:ad:48:d3:cb:74:02:86:71:3e:e2:2b:03:
1177 68:f1:34:62:40:46:3b:53:ea:28:f4:ac:fb:66:95:53:8a:4d:
1178 5d:fd:3b:d9:60:d7:ca:79:69:3b:b1:65:92:a6:c6:81:82:5c:
1179 9c:cd:eb:4d:01:8a:a5:df:11:55:aa:15:ca:1f:37:c0:82:98:
1180 70:61:db:6a:7c:96:a3:8e:2e:54:3e:4f:21:a9:90:ef:dc:82:
1181 bf:dc:e8:45:ad:4d:90:73:08:3c:94:65:b0:04:99:76:7f:e2:
1182 bc:c2:6a:15:aa:97:04:37:24:d8:1e:94:4e:6d:0e:51:be:d6:
1183 c4:8f:ca:96:6d:f7:43:df:e8:30:65:27:3b:7b:bb:43:43:63:
1184 c4:43:f7:b2:ec:68:cc:e1:19:8e:22:fb:98:e1:7b:5a:3e:01:
1185 37:3b:8b:08:b0:a2:f3:95:4e:1a:cb:9b:cd:9a:b1:db:b2:70:
1186 f0:2d:4a:db:d8:b0:e3:6f:45:48:33:12:ff:fe:3c:32:2a:54:
1187 f7:c4:f7:8a:f0:88:23:c2:47:fe:64:7a:71:c0:d1:1e:a6:63:
1188 b0:07:7e:a4:2f:d3:01:8f:dc:9f:2b:b6:c6:08:a9:0f:93:48:
1189 25:fc:12:fd:9f:42:dc:f3:c4:3e:f6:57:b0:d7:dd:69:d1:06:
1190 77:34:0a:4b:d2:ca:a0:ff:1c:c6:8c:c9:16:be:c4:cc:32:37:
1191 68:73:5f:08:fb:51:f7:49:53:36:05:0a:95:02:4c:f2:79:1a:
1192 10:f6:d8:3a:75:9c:f3:1d:f1:a2:0d:70:67:86:1b:b3:16:f5:
1193 2f:e5:a4:eb:79:86:f9:3d:0b:c2:73:0b:a5:99:ac:6f:fc:67:
1194 b8:e5:2f:0b:a6:18:24:8d:7b:d1:48:35:29:18:40:ac:93:60:
1195 e1:96:86:50:b4:7a:59:d8:8f:21:0b:9f:cf:82:91:c6:3b:bf:
1196 6b:dc:07:91:b9:97:56:23:aa:b6:6c:94:c6:48:06:3c:e4:ce:
1197 4e:aa:e4:f6:2f:09:dc:53:6f:2e:fc:74:eb:3a:63:99:c2:a6:
1198 ac:89:bc:a7:b2:44:a0:0d:8a:10:e3:6c:f2:24:cb:fa:9b:9f:
1199 70:47:2e:de:14:8b:d4:b2:20:09:96:a2:64:f1:24:1c:dc:a1:
1200 35:9c:15:b2:d4:bc:55:2e:7d:06:f5:9c:0e:55:f4:5a:d6:93:
1201 da:76:ad:25:73:4c:c5:43
1202SHA1 Fingerprint=13:5C:EC:36:F4:9C:B8:E9:3B:1A:B2:70:CD:80:88:46:76:CE:8F:33
1203-----BEGIN CERTIFICATE-----
1204MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290
1205IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB
1206IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA
1207Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO
1208BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi
1209MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ
1210ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
1211CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ
12128BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6
1213zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y
1214fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7
1215w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc
1216G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k
1217epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q
1218laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ
1219QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU
1220fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826
1221YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w
1222ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY
1223gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe
1224MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0
1225IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy
1226dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw
1227czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0
1228dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl
1229aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC
1230AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg
1231b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB
1232ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc
1233nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg
123418p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c
1235gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl
1236Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY
1237sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T
1238SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF
1239CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum
1240GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk
1241zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW
1242omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD
1243-----END CERTIFICATE-----
1244Certificate:
1245 Data:
1246 Version: 3 (0x2)
1247 Serial Number: 913163544 (0x366dc518)
1248 Signature Algorithm: sha1WithRSAEncryption
1249 Issuer: C=US, O=Digital Signature Trust Co., OU=DST-Entrust GTI CA
1250 Validity
1251 Not Before: Dec 9 00:02:24 1998 GMT
1252 Not After : Dec 9 00:32:24 2018 GMT
1253 Subject: C=US, O=Digital Signature Trust Co., OU=DST-Entrust GTI CA
1254 Subject Public Key Info:
1255 Public Key Algorithm: rsaEncryption
1256 RSA Public Key: (1024 bit)
1257 Modulus (1024 bit):
1258 00:b6:1d:f7:4b:8d:0f:13:e3:12:f5:09:fe:06:32:
1259 0e:af:4c:41:f5:7d:d4:47:3d:2a:0a:df:83:05:de:
1260 de:7d:e6:03:16:f6:51:3a:cb:47:1a:4a:ad:7e:c4:
1261 fd:1d:b4:be:74:8a:78:dd:0b:83:8e:b4:84:13:c4:
1262 fb:f8:6d:29:ae:a1:e1:0f:0f:43:e3:b5:5e:60:69:
1263 fa:83:94:fc:79:e6:dc:76:ed:d1:44:2b:8e:fd:12:
1264 bb:fe:17:77:17:0c:89:ed:a7:ef:51:7d:c4:ed:38:
1265 c3:3b:a3:7a:fb:e2:4d:a0:60:b5:f2:fd:13:65:d3:
1266 c6:ec:3f:be:35:9c:3d:22:ef
1267 Exponent: 3 (0x3)
1268 X509v3 extensions:
1269 Netscape Cert Type:
1270 SSL CA, S/MIME CA, Object Signing CA
1271 X509v3 CRL Distribution Points:
1272 DirName:/C=US/O=Digital Signature Trust Co./OU=DST-Entrust GTI CA/CN=CRL1
1273
1274 X509v3 Private Key Usage Period:
1275 Not Before: Dec 9 00:02:24 1998 GMT, Not After: Dec 9 00:02:24 2018 GMT
1276 X509v3 Key Usage:
1277 Certificate Sign, CRL Sign
1278 X509v3 Authority Key Identifier:
1279 keyid:93:9A:44:CA:D0:78:53:80:29:49:04:DF:C7:AF:33:3F:99:75:5F:AE
1280
1281 X509v3 Subject Key Identifier:
1282 93:9A:44:CA:D0:78:53:80:29:49:04:DF:C7:AF:33:3F:99:75:5F:AE
1283 X509v3 Basic Constraints:
1284 CA:TRUE
1285 1.2.840.113533.7.65.0:
1286 0
1287..V4.0....
1288 Signature Algorithm: sha1WithRSAEncryption
1289 64:89:cc:03:a7:dc:0a:f2:58:20:e7:fd:17:a0:28:72:cd:87:
1290 b0:cd:98:b5:24:47:63:33:31:10:10:b2:ef:8a:57:72:ae:4c:
1291 03:e0:67:9f:ac:60:43:84:22:c1:a9:a3:e5:b1:a7:de:09:d4:
1292 cf:0d:78:46:23:5b:8f:49:7b:fe:13:22:97:94:ea:72:48:e1:
1293 2c:20:78:96:e9:66:45:19:cb:09:65:63:61:3f:d1:49:98:b1:
1294 76:10:55:d5:63:4a:66:4b:a4:07:6b:de:7b:7f:b9:e6:93:5b:
1295 1a:02:5b:80:0e:dd:8d:18:d4:8a:a3:c2:68:f1:a3:e0:18:d1:
1296 4e:4c
1297SHA1 Fingerprint=BC:92:19:DD:C9:8E:14:BF:1A:78:1F:6E:28:0B:04:C2:7F:90:27:12
1298-----BEGIN CERTIFICATE-----
1299MIIDRzCCArCgAwIBAgIENm3FGDANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJV
1300UzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRswGQYDVQQL
1301ExJEU1QtRW50cnVzdCBHVEkgQ0EwHhcNOTgxMjA5MDAwMjI0WhcNMTgxMjA5MDAz
1302MjI0WjBQMQswCQYDVQQGEwJVUzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUg
1303VHJ1c3QgQ28uMRswGQYDVQQLExJEU1QtRW50cnVzdCBHVEkgQ0EwgZ0wDQYJKoZI
1304hvcNAQEBBQADgYsAMIGHAoGBALYd90uNDxPjEvUJ/gYyDq9MQfV91Ec9KgrfgwXe
13053n3mAxb2UTrLRxpKrX7E/R20vnSKeN0Lg460hBPE+/htKa6h4Q8PQ+O1XmBp+oOU
1306/Hnm3Hbt0UQrjv0Su/4XdxcMie2n71F9xO04wzujevviTaBgtfL9E2XTxuw/vjWc
1307PSLvAgEDo4IBLjCCASowEQYJYIZIAYb4QgEBBAQDAgAHMHIGA1UdHwRrMGkwZ6Bl
1308oGOkYTBfMQswCQYDVQQGEwJVUzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUg
1309VHJ1c3QgQ28uMRswGQYDVQQLExJEU1QtRW50cnVzdCBHVEkgQ0ExDTALBgNVBAMT
1310BENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMDkwMDAyMjRagQ8yMDE4MTIwOTAwMDIy
1311NFowCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFJOaRMrQeFOAKUkE38evMz+ZdV+u
1312MB0GA1UdDgQWBBSTmkTK0HhTgClJBN/HrzM/mXVfrjAMBgNVHRMEBTADAQH/MBkG
1313CSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GBAGSJzAOn
13143AryWCDn/RegKHLNh7DNmLUkR2MzMRAQsu+KV3KuTAPgZ5+sYEOEIsGpo+Wxp94J
13151M8NeEYjW49Je/4TIpeU6nJI4SwgeJbpZkUZywllY2E/0UmYsXYQVdVjSmZLpAdr
13163nt/ueaTWxoCW4AO3Y0Y1Iqjwmjxo+AY0U5M
1317-----END CERTIFICATE-----
1318Certificate:
1319 Data:
1320 Version: 3 (0x2)
1321 Serial Number:
1322 02:00:00:00:00:00:d6:78:b8:d6:c3
1323 Signature Algorithm: md5WithRSAEncryption
1324 Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA
1325 Validity
1326 Not Before: Jan 28 12:00:00 1999 GMT
1327 Not After : Jan 28 12:00:00 2009 GMT
1328 Subject: C=BE, O=GlobalSign nv-sa, OU=Primary Class 3 CA, CN=GlobalSign Primary Class 3 CA
1329 Subject Public Key Info:
1330 Public Key Algorithm: rsaEncryption
1331 RSA Public Key: (2048 bit)
1332 Modulus (2048 bit):
1333 00:91:5e:56:65:d6:c0:c0:04:9c:bf:47:c4:5c:7b:
1334 7a:31:01:f9:58:96:99:e3:1c:84:2f:dc:56:8f:ad:
1335 f5:59:81:d5:43:66:5d:5a:93:8c:75:ca:a9:e7:11:
1336 c1:51:10:14:60:c9:2c:d4:7b:af:c6:77:86:ab:7a:
1337 27:ae:6f:95:b9:0b:ca:b6:46:fb:7e:1a:f4:0d:14:
1338 6d:d2:c9:4e:b2:ae:f0:54:f6:5c:40:4c:36:48:74:
1339 e8:54:8c:65:66:10:a7:bd:2b:b7:20:8d:05:49:ad:
1340 78:7d:d2:24:23:50:e3:f0:b4:79:9b:01:39:ff:af:
1341 3b:d3:2d:ee:e1:49:8d:8d:2f:3c:6a:41:45:2f:9b:
1342 e3:3d:e1:12:e4:91:75:9e:cf:a0:3e:3c:92:81:6f:
1343 8a:2e:18:dc:e0:f2:8c:8c:fd:87:d9:07:f4:40:94:
1344 c9:4e:4f:43:df:67:56:6f:bd:03:50:7c:99:67:a4:
1345 b9:3c:91:6c:02:6e:84:d6:fc:46:f7:cc:6f:18:3e:
1346 17:f0:ef:0b:64:16:57:e6:ac:86:f1:48:aa:43:c1:
1347 c9:27:78:73:44:45:e2:85:7d:ba:ff:b3:e1:fb:1b:
1348 05:a4:4b:3b:99:12:25:01:50:14:6a:af:5d:ea:c8:
1349 0c:ee:e4:da:ec:4b:8b:5c:68:13:95:dc:c3:b5:30:
1350 3a:d7
1351 Exponent: 65537 (0x10001)
1352 X509v3 extensions:
1353 X509v3 Key Usage: critical
1354 Certificate Sign, CRL Sign
1355 X509v3 Subject Key Identifier:
1356 CC:36:CC:17:B4:45:91:2F:ED:CF:3B:30:48:77:FB:B5:14:99:BE:E3
1357 X509v3 Authority Key Identifier:
1358 keyid:60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B
1359
1360 X509v3 Basic Constraints: critical
1361 CA:TRUE
1362 Signature Algorithm: md5WithRSAEncryption
1363 57:b2:54:cc:bd:95:17:64:60:89:b6:53:91:0c:45:92:c3:3d:
1364 a8:6c:c3:cc:b2:18:f5:78:41:74:d8:7d:a3:27:af:77:0d:59:
1365 3e:94:1d:69:fa:89:d3:0c:bd:1a:01:f4:3f:e8:e0:77:1a:82:
1366 28:5a:e6:62:d7:b7:e3:36:c9:0e:9f:7a:e3:c2:d3:cc:59:89:
1367 0c:ef:16:8b:f0:36:77:22:ca:a4:b6:b7:c1:42:67:01:40:63:
1368 cc:e7:38:64:87:5b:14:96:66:7b:2d:14:ee:bd:49:6d:ff:77:
1369 d0:e2:4e:5b:d3:80:c2:4d:0f:ca:b8:9d:81:97:a7:34:6e:c7:
1370 e3:9c:48:e5:b4:aa:45:f5:f6:65:4c:48:f2:12:c2:d2:93:8c:
1371 c2:15:24:f3:2b:52:ff:e3:08:ae:b8:6e:d6:2c:12:cf:39:cb:
1372 12:2a:e7:a9:7b:5f:98:3d:a3:e1:cc:a6:63:89:5c:7d:31:75:
1373 f9:d5:d6:5d:f2:d0:d4:3d:df:9e:71:a8:0e:dc:e4:20:97:78:
1374 e6:7f:53:a4:0d:51:4f:8e:3b:03:ae:a3:0d:5a:4d:c3:79:e7:
1375 35:58:70:42:c9:5e:a1:5e:b4:d9:22:a3:44:53:35:a4:d0:cf:
1376 73:80:c5:cf:9f:56:98:76:f9:14:4c:77:87:82:c9:dc:7e:5d:
1377 34:d5:36:75
1378SHA1 Fingerprint=74:03:C9:33:48:AA:C4:F7:0E:29:F4:D0:15:12:F4:46:49:0F:75:8C
1379-----BEGIN CERTIFICATE-----
1380MIIDrDCCApSgAwIBAgILAgAAAAAA1ni41sMwDQYJKoZIhvcNAQEEBQAwVzELMAkG
1381A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
1382b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05OTAxMjgxMjAw
1383MDBaFw0wOTAxMjgxMjAwMDBaMG0xCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
1384YWxTaWduIG52LXNhMRswGQYDVQQLExJQcmltYXJ5IENsYXNzIDMgQ0ExJjAkBgNV
1385BAMTHUdsb2JhbFNpZ24gUHJpbWFyeSBDbGFzcyAzIENBMIIBIjANBgkqhkiG9w0B
1386AQEFAAOCAQ8AMIIBCgKCAQEAkV5WZdbAwAScv0fEXHt6MQH5WJaZ4xyEL9xWj631
1387WYHVQ2ZdWpOMdcqp5xHBURAUYMks1HuvxneGq3onrm+VuQvKtkb7fhr0DRRt0slO
1388sq7wVPZcQEw2SHToVIxlZhCnvSu3II0FSa14fdIkI1Dj8LR5mwE5/6870y3u4UmN
1389jS88akFFL5vjPeES5JF1ns+gPjySgW+KLhjc4PKMjP2H2Qf0QJTJTk9D32dWb70D
1390UHyZZ6S5PJFsAm6E1vxG98xvGD4X8O8LZBZX5qyG8UiqQ8HJJ3hzREXihX26/7Ph
1391+xsFpEs7mRIlAVAUaq9d6sgM7uTa7EuLXGgTldzDtTA61wIDAQABo2MwYTAOBgNV
1392HQ8BAf8EBAMCAAYwHQYDVR0OBBYEFMw2zBe0RZEv7c87MEh3+7UUmb7jMB8GA1Ud
1393IwQYMBaAFGB7ZhpFDZfKiVAvfQTNNKj//P1LMA8GA1UdEwEB/wQFMAMBAf8wDQYJ
1394KoZIhvcNAQEEBQADggEBAFeyVMy9lRdkYIm2U5EMRZLDPahsw8yyGPV4QXTYfaMn
1395r3cNWT6UHWn6idMMvRoB9D/o4Hcagiha5mLXt+M2yQ6feuPC08xZiQzvFovwNnci
1396yqS2t8FCZwFAY8znOGSHWxSWZnstFO69SW3/d9DiTlvTgMJND8q4nYGXpzRux+Oc
1397SOW0qkX19mVMSPISwtKTjMIVJPMrUv/jCK64btYsEs85yxIq56l7X5g9o+HMpmOJ
1398XH0xdfnV1l3y0NQ9355xqA7c5CCXeOZ/U6QNUU+OOwOuow1aTcN55zVYcELJXqFe
1399tNkio0RTNaTQz3OAxc+fVph2+RRMd4eCydx+XTTVNnU=
1400-----END CERTIFICATE-----
1401Certificate:
1402 Data:
1403 Version: 1 (0x0)
1404 Serial Number:
1405 d0:1e:40:8a:00:00:02:7c:00:00:00:03:00:00:00:01
1406 Signature Algorithm: sha1WithRSAEncryption
1407 Issuer: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=National Retail Federation, CN=DST (NRF) RootCA/emailAddress=ca@digsigtrust.com
1408 Validity
1409 Not Before: Dec 11 16:14:16 1998 GMT
1410 Not After : Dec 8 16:14:16 2008 GMT
1411 Subject: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=National Retail Federation, CN=DST (NRF) RootCA/emailAddress=ca@digsigtrust.com
1412 Subject Public Key Info:
1413 Public Key Algorithm: rsaEncryption
1414 RSA Public Key: (2048 bit)
1415 Modulus (2048 bit):
1416 00:d9:ac:9b:77:fa:50:d3:cc:dc:b9:40:ac:b9:72:
1417 6a:00:87:23:fc:0f:96:21:d0:26:af:e4:e2:b5:5f:
1418 fa:d3:a6:7d:21:30:2e:cc:17:82:8f:98:74:fc:67:
1419 a4:a6:df:88:97:a2:42:29:f5:a7:db:11:93:fb:5e:
1420 23:30:c2:aa:bc:22:e7:41:1b:e5:ed:25:de:c8:3f:
1421 db:de:57:45:78:40:46:83:b2:d5:1a:3d:df:0f:45:
1422 6d:d5:63:02:75:d8:2f:c6:6e:ab:95:91:74:37:0d:
1423 cb:4d:09:5c:d1:d4:5b:3a:da:dd:0e:c8:6b:99:d8:
1424 d5:39:cc:df:85:55:c4:92:53:02:a3:e1:f7:80:c9:
1425 70:a3:da:dc:33:c4:7f:a2:47:08:1c:35:96:1f:a1:
1426 03:1c:30:83:f4:c4:cc:ff:98:c3:b0:46:44:a2:c0:
1427 bf:ad:db:d2:81:f6:4c:98:2c:a7:5e:24:f3:86:ca:
1428 63:d5:ba:7d:f0:9a:c0:4a:d0:1b:58:ee:ec:a9:67:
1429 cf:69:02:6c:22:c0:60:2c:2c:d1:c8:20:ea:c8:2d:
1430 fb:dd:9c:bb:cb:51:4c:dc:e7:57:04:3b:54:9b:11:
1431 a5:32:74:ec:74:01:f3:90:15:5b:2f:7c:2c:93:65:
1432 b9:66:67:b4:81:88:35:e5:9e:91:18:7f:81:a8:41:
1433 c8:cb
1434 Exponent: 65537 (0x10001)
1435 Signature Algorithm: sha1WithRSAEncryption
1436 84:5e:0b:3b:ec:a0:8d:1c:9b:d0:3c:1d:71:69:e4:1a:7f:64:
1437 be:81:65:61:c5:8c:6a:d7:7c:00:74:e0:7a:62:55:ed:24:7c:
1438 e0:61:e3:f2:dd:14:e6:11:6e:83:0e:e1:ea:a9:9e:80:ad:9a:
1439 20:bf:e0:57:7e:d5:d0:b5:84:63:2d:d9:18:e4:bd:1b:35:2c:
1440 5e:ae:61:76:aa:67:85:3b:38:e1:31:81:1f:31:7f:e6:d7:f8:
1441 5b:d2:bb:63:79:86:c4:8c:c5:de:0a:ae:d7:d1:fc:01:74:ff:
1442 b6:b6:0d:62:81:67:1c:bb:26:f8:24:80:e0:5c:5e:d8:a4:8a:
1443 3a:8f:7d:cb:ff:92:a3:fd:7c:a9:32:69:07:58:58:61:42:99:
1444 52:03:b1:38:3d:c6:71:6f:6c:f2:e8:7d:06:aa:c1:7c:53:cb:
1445 1a:2d:88:4f:c9:a9:a7:ac:69:6f:f7:a4:1f:d8:74:81:f5:4a:
1446 bf:b1:55:b7:d3:77:38:a7:6f:c2:4a:c8:e2:73:89:d3:57:72:
1447 e1:43:2f:72:3c:f6:1f:b7:f8:04:4a:6e:c1:e9:94:17:e4:97:
1448 17:f4:0e:13:86:6f:8d:ab:e8:5f:2d:b4:ff:6c:d6:a2:b4:1f:
1449 ec:b9:94:6a:aa:12:4f:1a:dd:f5:77:b5:25:8c:f2:8a:0a:f1:
1450 fc:52:5b:58
1451SHA1 Fingerprint=CF:DE:FE:10:2F:DA:05:BB:E4:C7:8D:2E:44:23:58:90:05:B2:57:1D
1452-----BEGIN CERTIFICATE-----
1453MIIEAjCCAuoCEQDQHkCKAAACfAAAAAMAAAABMA0GCSqGSIb3DQEBBQUAMIG+MQsw
1454CQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENp
1455dHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjEjMCEGA1UE
1456CxMaTmF0aW9uYWwgUmV0YWlsIEZlZGVyYXRpb24xGTAXBgNVBAMTEERTVCAoTlJG
1457KSBSb290Q0ExITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05
1458ODEyMTExNjE0MTZaFw0wODEyMDgxNjE0MTZaMIG+MQswCQYDVQQGEwJ1czENMAsG
1459A1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0Rp
1460Z2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjEjMCEGA1UECxMaTmF0aW9uYWwgUmV0
1461YWlsIEZlZGVyYXRpb24xGTAXBgNVBAMTEERTVCAoTlJGKSBSb290Q0ExITAfBgkq
1462hkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD
1463ggEPADCCAQoCggEBANmsm3f6UNPM3LlArLlyagCHI/wPliHQJq/k4rVf+tOmfSEw
1464LswXgo+YdPxnpKbfiJeiQin1p9sRk/teIzDCqrwi50Eb5e0l3sg/295XRXhARoOy
14651Ro93w9FbdVjAnXYL8Zuq5WRdDcNy00JXNHUWzra3Q7Ia5nY1TnM34VVxJJTAqPh
146694DJcKPa3DPEf6JHCBw1lh+hAxwwg/TEzP+Yw7BGRKLAv63b0oH2TJgsp14k84bK
1467Y9W6ffCawErQG1ju7Klnz2kCbCLAYCws0cgg6sgt+92cu8tRTNznVwQ7VJsRpTJ0
14687HQB85AVWy98LJNluWZntIGINeWekRh/gahByMsCAwEAATANBgkqhkiG9w0BAQUF
1469AAOCAQEAhF4LO+ygjRyb0DwdcWnkGn9kvoFlYcWMatd8AHTgemJV7SR84GHj8t0U
14705hFugw7h6qmegK2aIL/gV37V0LWEYy3ZGOS9GzUsXq5hdqpnhTs44TGBHzF/5tf4
1471W9K7Y3mGxIzF3gqu19H8AXT/trYNYoFnHLsm+CSA4Fxe2KSKOo99y/+So/18qTJp
1472B1hYYUKZUgOxOD3GcW9s8uh9BqrBfFPLGi2IT8mpp6xpb/ekH9h0gfVKv7FVt9N3
1473OKdvwkrI4nOJ01dy4UMvcjz2H7f4BEpuwemUF+SXF/QOE4ZvjavoXy20/2zWorQf
14747LmUaqoSTxrd9Xe1JYzyigrx/FJbWA==
1475-----END CERTIFICATE-----
1476Certificate:
1477 Data:
1478 Version: 3 (0x2)
1479 Serial Number: 1 (0x1)
1480 Signature Algorithm: md5WithRSAEncryption
1481 Issuer: C=BE, L=Brussels, O=BelSign NV, OU=BelSign Secure Server Certificate Authority, CN=BelSign Secure Server CA/emailAddress=webmaster@belsign.be
1482 Validity
1483 Not Before: Jul 16 22:00:54 1997 GMT
1484 Not After : Jul 16 22:00:54 2007 GMT
1485 Subject: C=BE, L=Brussels, O=BelSign NV, OU=BelSign Secure Server Certificate Authority, CN=BelSign Secure Server CA/emailAddress=webmaster@belsign.be
1486 Subject Public Key Info:
1487 Public Key Algorithm: rsaEncryption
1488 RSA Public Key: (1024 bit)
1489 Modulus (1024 bit):
1490 00:d6:01:12:78:92:f8:04:42:7f:c9:c7:22:83:fc:
1491 7c:47:70:30:2b:49:0b:3e:36:40:90:28:da:21:73:
1492 83:53:f2:c4:d1:16:40:c0:53:ff:ae:a6:c6:24:b3:
1493 27:6d:a5:b3:3d:39:77:5d:a8:06:f6:e6:e9:bc:63:
1494 11:4e:06:65:70:0a:9d:93:f9:a2:40:8b:7f:4a:84:
1495 0e:8d:16:b1:d6:cc:08:64:12:0c:e0:28:4b:c8:a5:
1496 84:90:17:fb:11:46:2e:d6:a7:85:18:cb:18:ae:63:
1497 9a:b0:58:06:f4:00:cf:f8:c4:09:1a:35:0c:a1:f9:
1498 ee:4a:fd:6d:de:fe:26:a5:3b
1499 Exponent: 65537 (0x10001)
1500 X509v3 extensions:
1501 Netscape Cert Type:
1502 SSL Client, S/MIME
1503 Signature Algorithm: md5WithRSAEncryption
1504 6c:3d:99:c3:05:e2:1d:ca:e5:2d:aa:68:85:8b:40:31:20:66:
1505 13:68:e6:58:3a:89:d0:8d:75:b2:c5:62:d8:7d:82:8f:f7:d9:
1506 32:81:77:f6:35:5b:85:29:ce:67:b2:b9:bc:2b:19:78:cf:f3:
1507 87:fd:46:f1:95:75:b2:09:57:03:30:c1:7a:cd:72:47:71:80:
1508 ca:7d:9d:c9:65:3c:47:11:22:7d:fa:07:0b:28:78:a1:93:e8:
1509 05:45:48:e2:32:32:4a:3d:e8:53:1c:10:b7:c7:73:8c:07:50:
1510 e1:f9:c9:2b:53:41:f5:83:8d:e5:09:39:4a:8e:03:62:aa:40:
1511 63:8b
1512SHA1 Fingerprint=C2:C5:B5:FE:83:64:F8:A3:6E:78:1D:7C:15:08:7C:E8:85:A1:86:98
1513-----BEGIN CERTIFICATE-----
1514MIIC8zCCAlygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBszELMAkGA1UEBhMCQkUx
1515ETAPBgNVBAcTCEJydXNzZWxzMRMwEQYDVQQKEwpCZWxTaWduIE5WMTQwMgYDVQQL
1516EytCZWxTaWduIFNlY3VyZSBTZXJ2ZXIgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MSEw
1517HwYDVQQDExhCZWxTaWduIFNlY3VyZSBTZXJ2ZXIgQ0ExIzAhBgkqhkiG9w0BCQEW
1518FHdlYm1hc3RlckBiZWxzaWduLmJlMB4XDTk3MDcxNjIyMDA1NFoXDTA3MDcxNjIy
1519MDA1NFowgbMxCzAJBgNVBAYTAkJFMREwDwYDVQQHEwhCcnVzc2VsczETMBEGA1UE
1520ChMKQmVsU2lnbiBOVjE0MDIGA1UECxMrQmVsU2lnbiBTZWN1cmUgU2VydmVyIENl
1521cnRpZmljYXRlIEF1dGhvcml0eTEhMB8GA1UEAxMYQmVsU2lnbiBTZWN1cmUgU2Vy
1522dmVyIENBMSMwIQYJKoZIhvcNAQkBFhR3ZWJtYXN0ZXJAYmVsc2lnbi5iZTCBnzAN
1523BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1gESeJL4BEJ/yccig/x8R3AwK0kLPjZA
1524kCjaIXODU/LE0RZAwFP/rqbGJLMnbaWzPTl3XagG9ubpvGMRTgZlcAqdk/miQIt/
1525SoQOjRax1swIZBIM4ChLyKWEkBf7EUYu1qeFGMsYrmOasFgG9ADP+MQJGjUMofnu
1526Sv1t3v4mpTsCAwEAAaMVMBMwEQYJYIZIAYb4QgEBBAQDAgCgMA0GCSqGSIb3DQEB
1527BAUAA4GBAGw9mcMF4h3K5S2qaIWLQDEgZhNo5lg6idCNdbLFYth9go/32TKBd/Y1
1528W4UpzmeyubwrGXjP84f9RvGVdbIJVwMwwXrNckdxgMp9ncllPEcRIn36BwsoeKGT
15296AVFSOIyMko96FMcELfHc4wHUOH5yStTQfWDjeUJOUqOA2KqQGOL
1530-----END CERTIFICATE-----
1531Certificate:
1532 Data:
1533 Version: 3 (0x2)
1534 Serial Number: 0 (0x0)
1535 Signature Algorithm: md5WithRSAEncryption
1536 Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting, OU=Certification Services Division, CN=Thawte Personal Freemail CA/emailAddress=personal-freemail@thawte.com
1537 Validity
1538 Not Before: Jan 1 00:00:00 1996 GMT
1539 Not After : Dec 31 23:59:59 2020 GMT
1540 Subject: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting, OU=Certification Services Division, CN=Thawte Personal Freemail CA/emailAddress=personal-freemail@thawte.com
1541 Subject Public Key Info:
1542 Public Key Algorithm: rsaEncryption
1543 RSA Public Key: (1024 bit)
1544 Modulus (1024 bit):
1545 00:d4:69:d7:d4:b0:94:64:5b:71:e9:47:d8:0c:51:
1546 b6:ea:72:91:b0:84:5e:7d:2d:0d:8f:7b:12:df:85:
1547 25:75:28:74:3a:42:2c:63:27:9f:95:7b:4b:ef:7e:
1548 19:87:1d:86:ea:a3:dd:b9:ce:96:64:1a:c2:14:6e:
1549 44:ac:7c:e6:8f:e8:4d:0f:71:1f:40:38:a6:00:a3:
1550 87:78:f6:f9:94:86:5e:ad:ea:c0:5e:76:eb:d9:14:
1551 a3:5d:6e:7a:7c:0c:a5:4b:55:7f:06:19:29:7f:9e:
1552 9a:26:d5:6a:bb:38:24:08:6a:98:c7:b1:da:a3:98:
1553 91:fd:79:db:e5:5a:c4:1c:b9
1554 Exponent: 65537 (0x10001)
1555 X509v3 extensions:
1556 X509v3 Basic Constraints: critical
1557 CA:TRUE
1558 Signature Algorithm: md5WithRSAEncryption
1559 c7:ec:92:7e:4e:f8:f5:96:a5:67:62:2a:a4:f0:4d:11:60:d0:
1560 6f:8d:60:58:61:ac:26:bb:52:35:5c:08:cf:30:fb:a8:4a:96:
1561 8a:1f:62:42:23:8c:17:0f:f4:ba:64:9c:17:ac:47:29:df:9d:
1562 98:5e:d2:6c:60:71:5c:a2:ac:dc:79:e3:e7:6e:00:47:1f:b5:
1563 0d:28:e8:02:9d:e4:9a:fd:13:f4:a6:d9:7c:b1:f8:dc:5f:23:
1564 26:09:91:80:73:d0:14:1b:de:43:a9:83:25:f2:e6:9c:2f:15:
1565 ca:fe:a6:ab:8a:07:75:8b:0c:dd:51:84:6b:e4:f8:d1:ce:77:
1566 a2:81
1567SHA1 Fingerprint=20:99:00:B6:3D:95:57:28:14:0C:D1:36:22:D8:C6:87:A4:EB:00:85
1568-----BEGIN CERTIFICATE-----
1569MIIDLTCCApagAwIBAgIBADANBgkqhkiG9w0BAQQFADCB0TELMAkGA1UEBhMCWkEx
1570FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD
1571VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT
1572ZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVt
1573YWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUu
1574Y29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgdExCzAJBgNVBAYT
1575AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEa
1576MBgGA1UEChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRp
1577b24gU2VydmljZXMgRGl2aXNpb24xJDAiBgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBG
1578cmVlbWFpbCBDQTErMCkGCSqGSIb3DQEJARYccGVyc29uYWwtZnJlZW1haWxAdGhh
1579d3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1GnX1LCUZFtx6UfY
1580DFG26nKRsIRefS0Nj3sS34UldSh0OkIsYyeflXtL734Zhx2G6qPduc6WZBrCFG5E
1581rHzmj+hND3EfQDimAKOHePb5lIZererAXnbr2RSjXW56fAylS1V/Bhkpf56aJtVq
1582uzgkCGqYx7Hao5iR/Xnb5VrEHLkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zAN
1583BgkqhkiG9w0BAQQFAAOBgQDH7JJ+Tvj1lqVnYiqk8E0RYNBvjWBYYawmu1I1XAjP
1584MPuoSpaKH2JCI4wXD/S6ZJwXrEcp352YXtJsYHFcoqzceePnbgBHH7UNKOgCneSa
1585/RP0ptl8sfjcXyMmCZGAc9AUG95DqYMl8uacLxXK/qarigd1iwzdUYRr5PjRznei
1586gQ==
1587-----END CERTIFICATE-----
1588Certificate:
1589 Data:
1590 Version: 1 (0x0)
1591 Serial Number:
1592 7d:d9:fe:07:cf:a8:1e:b7:10:79:67:fb:a7:89:34:c6
1593 Signature Algorithm: sha1WithRSAEncryption
1594 Issuer: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network
1595 Validity
1596 Not Before: May 18 00:00:00 1998 GMT
1597 Not After : Aug 1 23:59:59 2028 GMT
1598 Subject: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network
1599 Subject Public Key Info:
1600 Public Key Algorithm: rsaEncryption
1601 RSA Public Key: (1024 bit)
1602 Modulus (1024 bit):
1603 00:cc:5e:d1:11:5d:5c:69:d0:ab:d3:b9:6a:4c:99:
1604 1f:59:98:30:8e:16:85:20:46:6d:47:3f:d4:85:20:
1605 84:e1:6d:b3:f8:a4:ed:0c:f1:17:0f:3b:f9:a7:f9:
1606 25:d7:c1:cf:84:63:f2:7c:63:cf:a2:47:f2:c6:5b:
1607 33:8e:64:40:04:68:c1:80:b9:64:1c:45:77:c7:d8:
1608 6e:f5:95:29:3c:50:e8:34:d7:78:1f:a8:ba:6d:43:
1609 91:95:8f:45:57:5e:7e:c5:fb:ca:a4:04:eb:ea:97:
1610 37:54:30:6f:bb:01:47:32:33:cd:dc:57:9b:64:69:
1611 61:f8:9b:1d:1c:89:4f:5c:67
1612 Exponent: 65537 (0x10001)
1613 Signature Algorithm: sha1WithRSAEncryption
1614 51:4d:cd:be:5c:cb:98:19:9c:15:b2:01:39:78:2e:4d:0f:67:
1615 70:70:99:c6:10:5a:94:a4:53:4d:54:6d:2b:af:0d:5d:40:8b:
1616 64:d3:d7:ee:de:56:61:92:5f:a6:c4:1d:10:61:36:d3:2c:27:
1617 3c:e8:29:09:b9:11:64:74:cc:b5:73:9f:1c:48:a9:bc:61:01:
1618 ee:e2:17:a6:0c:e3:40:08:3b:0e:e7:eb:44:73:2a:9a:f1:69:
1619 92:ef:71:14:c3:39:ac:71:a7:91:09:6f:e4:71:06:b3:ba:59:
1620 57:26:79:00:f6:f8:0d:a2:33:30:28:d4:aa:58:a0:9d:9d:69:
1621 91:fd
1622SHA1 Fingerprint=85:37:1C:A6:E5:50:14:3D:CE:28:03:47:1B:DE:3A:09:E8:F8:77:0F
1623-----BEGIN CERTIFICATE-----
1624MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ
1625BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh
1626c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy
1627MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp
1628emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X
1629DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw
1630FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg
1631UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo
1632YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5
1633MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB
1634AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4
1635pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0
163613gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID
1637AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk
1638U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i
1639F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY
1640oJ2daZH9
1641-----END CERTIFICATE-----
1642Certificate:
1643 Data:
1644 Version: 1 (0x0)
1645 Serial Number:
1646 70:ba:e4:1d:10:d9:29:34:b6:38:ca:7b:03:cc:ba:bf
1647 Signature Algorithm: md2WithRSAEncryption
1648 Issuer: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority
1649 Validity
1650 Not Before: Jan 29 00:00:00 1996 GMT
1651 Not After : Aug 1 23:59:59 2028 GMT
1652 Subject: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority
1653 Subject Public Key Info:
1654 Public Key Algorithm: rsaEncryption
1655 RSA Public Key: (1024 bit)
1656 Modulus (1024 bit):
1657 00:c9:5c:59:9e:f2:1b:8a:01:14:b4:10:df:04:40:
1658 db:e3:57:af:6a:45:40:8f:84:0c:0b:d1:33:d9:d9:
1659 11:cf:ee:02:58:1f:25:f7:2a:a8:44:05:aa:ec:03:
1660 1f:78:7f:9e:93:b9:9a:00:aa:23:7d:d6:ac:85:a2:
1661 63:45:c7:72:27:cc:f4:4c:c6:75:71:d2:39:ef:4f:
1662 42:f0:75:df:0a:90:c6:8e:20:6f:98:0f:f8:ac:23:
1663 5f:70:29:36:a4:c9:86:e7:b1:9a:20:cb:53:a5:85:
1664 e7:3d:be:7d:9a:fe:24:45:33:dc:76:15:ed:0f:a2:
1665 71:64:4c:65:2e:81:68:45:a7
1666 Exponent: 65537 (0x10001)
1667 Signature Algorithm: md2WithRSAEncryption
1668 bb:4c:12:2b:cf:2c:26:00:4f:14:13:dd:a6:fb:fc:0a:11:84:
1669 8c:f3:28:1c:67:92:2f:7c:b6:c5:fa:df:f0:e8:95:bc:1d:8f:
1670 6c:2c:a8:51:cc:73:d8:a4:c0:53:f0:4e:d6:26:c0:76:01:57:
1671 81:92:5e:21:f1:d1:b1:ff:e7:d0:21:58:cd:69:17:e3:44:1c:
1672 9c:19:44:39:89:5c:dc:9c:00:0f:56:8d:02:99:ed:a2:90:45:
1673 4c:e4:bb:10:a4:3d:f0:32:03:0e:f1:ce:f8:e8:c9:51:8c:e6:
1674 62:9f:e6:9f:c0:7d:b7:72:9c:c9:36:3a:6b:9f:4e:a8:ff:64:
1675 0d:64
1676SHA1 Fingerprint=74:2C:31:92:E6:07:E4:24:EB:45:49:54:2B:E1:BB:C5:3E:61:74:E2
1677-----BEGIN CERTIFICATE-----
1678MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG
1679A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
1680cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2
1681MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV
1682BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt
1683YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN
1684ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE
1685BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is
1686I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G
1687CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do
1688lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc
1689AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k
1690-----END CERTIFICATE-----
1691Certificate:
1692 Data:
1693 Version: 3 (0x2)
1694 Serial Number: 903999262 (0x35e1ef1e)
1695 Signature Algorithm: sha1WithRSAEncryption
1696 Issuer: C=US, O=Equifax, OU=Equifax Premium Certificate Authority
1697 Validity
1698 Not Before: Aug 24 22:54:23 1998 GMT
1699 Not After : Aug 24 22:54:23 2018 GMT
1700 Subject: C=US, O=Equifax, OU=Equifax Premium Certificate Authority
1701 Subject Public Key Info:
1702 Public Key Algorithm: rsaEncryption
1703 RSA Public Key: (1024 bit)
1704 Modulus (1024 bit):
1705 00:ce:a1:06:8e:06:cc:08:0b:c1:86:a8:de:20:d5:
1706 0d:0e:d1:0d:c4:9f:ea:6a:d9:b3:c2:32:47:40:6f:
1707 8a:88:a4:09:bd:38:2c:1d:e6:cb:e6:a4:f3:36:eb:
1708 da:eb:bc:fc:64:b3:07:f6:2d:bc:aa:ce:9f:19:48:
1709 68:4a:fc:f5:a2:45:7e:09:10:f5:8f:b3:49:5c:23:
1710 06:39:ea:13:8b:b8:0b:cd:91:1d:76:5f:d9:37:a1:
1711 44:fb:5f:90:f2:67:b3:cd:18:99:43:1f:76:12:6b:
1712 02:f2:95:83:38:43:c2:f6:62:34:ca:c9:78:5d:5f:
1713 d2:d8:ba:9a:ff:be:10:60:5b
1714 Exponent: 65537 (0x10001)
1715 X509v3 extensions:
1716 X509v3 CRL Distribution Points:
1717 DirName:/C=US/O=Equifax/OU=Equifax Premium Certificate Authority/CN=CRL1
1718
1719 X509v3 Private Key Usage Period:
1720 Not After: Aug 24 22:54:23 2018 GMT
1721 X509v3 Key Usage:
1722 Certificate Sign, CRL Sign
1723 X509v3 Authority Key Identifier:
1724 keyid:15:EE:B2:28:59:AB:6E:E5:F8:CF:8B:81:F4:24:E1:AE:3F:75:1B:98
1725
1726 X509v3 Subject Key Identifier:
1727 15:EE:B2:28:59:AB:6E:E5:F8:CF:8B:81:F4:24:E1:AE:3F:75:1B:98
1728 X509v3 Basic Constraints:
1729 CA:TRUE
1730 1.2.840.113533.7.65.0:
1731 0...V3.0c....
1732 Signature Algorithm: sha1WithRSAEncryption
1733 bd:0b:9c:27:a9:03:db:28:dc:98:a9:4b:d0:d1:8e:a7:a8:1a:
1734 5a:91:e0:9c:f1:f7:18:7c:2e:22:9e:36:1f:c9:a8:b5:cd:46:
1735 4a:6e:fa:35:07:1b:86:08:eb:9f:e2:a8:f9:9d:41:2d:3a:ae:
1736 5c:5c:b6:5f:34:04:eb:fc:2a:60:b0:fb:74:e4:85:e9:65:38:
1737 96:ee:15:c7:c6:77:63:12:bd:8a:68:1f:ab:6c:7d:da:ca:5c:
1738 13:ce:ea:c9:eb:09:5c:c5:73:e7:12:01:d5:d9:53:07:9e:e0:
1739 0f:96:f0:8b:b4:bb:45:48:9f:86:c5:19:55:a0:cb:96:c5:03:
1740 fc:48
1741SHA1 Fingerprint=9D:11:77:BB:43:DB:BD:A0:07:C8:AA:D1:AB:90:57:10:AE:78:A4:5D
1742-----BEGIN CERTIFICATE-----
1743MIIDIzCCAoygAwIBAgIENeHvHjANBgkqhkiG9w0BAQUFADBPMQswCQYDVQQGEwJV
1744UzEQMA4GA1UEChMHRXF1aWZheDEuMCwGA1UECxMlRXF1aWZheCBQcmVtaXVtIENl
1745cnRpZmljYXRlIEF1dGhvcml0eTAeFw05ODA4MjQyMjU0MjNaFw0xODA4MjQyMjU0
1746MjNaME8xCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFcXVpZmF4MS4wLAYDVQQLEyVF
1747cXVpZmF4IFByZW1pdW0gQ2VydGlmaWNhdGUgQXV0aG9yaXR5MIGfMA0GCSqGSIb3
1748DQEBAQUAA4GNADCBiQKBgQDOoQaOBswIC8GGqN4g1Q0O0Q3En+pq2bPCMkdAb4qI
1749pAm9OCwd5svmpPM269rrvPxkswf2Lbyqzp8ZSGhK/PWiRX4JEPWPs0lcIwY56hOL
1750uAvNkR12X9k3oUT7X5DyZ7PNGJlDH3YSawLylYM4Q8L2YjTKyXhdX9LYupr/vhBg
1751WwIDAQABo4IBCjCCAQYwcQYDVR0fBGowaDBmoGSgYqRgMF4xCzAJBgNVBAYTAlVT
1752MRAwDgYDVQQKEwdFcXVpZmF4MS4wLAYDVQQLEyVFcXVpZmF4IFByZW1pdW0gQ2Vy
1753dGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIw
1754MTgwODI0MjI1NDIzWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUFe6yKFmrbuX4
1755z4uB9CThrj91G5gwHQYDVR0OBBYEFBXusihZq27l+M+LgfQk4a4/dRuYMAwGA1Ud
1756EwQFMAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEB
1757BQUAA4GBAL0LnCepA9so3JipS9DRjqeoGlqR4Jzx9xh8LiKeNh/JqLXNRkpu+jUH
1758G4YI65/iqPmdQS06rlxctl80BOv8KmCw+3TkhellOJbuFcfGd2MSvYpoH6tsfdrK
1759XBPO6snrCVzFc+cSAdXZUwee4A+W8Iu0u0VIn4bFGVWgy5bFA/xI
1760-----END CERTIFICATE-----
1761Certificate:
1762 Data:
1763 Version: 1 (0x0)
1764 Serial Number:
1765 d0:1e:40:8b:00:00:02:7c:00:00:00:07:00:00:00:01
1766 Signature Algorithm: sha1WithRSAEncryption
1767 Issuer: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=United Parcel Service, CN=DST (UPS) RootCA/emailAddress=ca@digsigtrust.com
1768 Validity
1769 Not Before: Dec 10 00:25:46 1998 GMT
1770 Not After : Dec 7 00:25:46 2008 GMT
1771 Subject: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=United Parcel Service, CN=DST (UPS) RootCA/emailAddress=ca@digsigtrust.com
1772 Subject Public Key Info:
1773 Public Key Algorithm: rsaEncryption
1774 RSA Public Key: (2048 bit)
1775 Modulus (2048 bit):
1776 00:ef:17:ec:af:29:e6:d9:2b:27:c0:db:7b:24:9f:
1777 66:f4:04:a3:c2:ad:0a:ca:b0:cd:84:2b:aa:37:f3:
1778 80:a1:60:ef:42:8f:e5:5d:77:5f:57:42:54:dd:2b:
1779 db:61:b2:71:5e:93:7b:6f:5f:eb:24:2b:e7:a4:f2:
1780 eb:f1:73:b3:0b:8d:f5:59:d7:32:df:ac:90:8e:4e:
1781 31:ba:25:4d:b6:0c:a6:f1:e5:af:0c:e1:e5:6f:52:
1782 03:15:c1:df:be:7e:4a:a6:a6:18:46:70:3f:ef:a7:
1783 4d:a8:dc:f5:74:d9:61:7a:40:3c:a1:94:28:ea:c2:
1784 94:88:cb:37:15:05:19:3c:95:62:ba:1c:2d:fb:28:
1785 8c:d1:c8:9e:92:3c:5b:11:54:3b:78:d9:47:3b:9b:
1786 2d:4a:e6:3e:7b:6b:df:f4:f6:05:cf:28:f6:ba:98:
1787 36:00:9e:3c:37:85:0a:9c:de:b7:a4:85:c5:63:fd:
1788 b7:62:14:6d:17:1e:cc:8a:80:85:42:32:11:b0:21:
1789 e2:9d:77:c9:80:16:41:9e:eb:e5:14:89:7f:b7:c3:
1790 bc:4f:c1:9f:87:9b:96:ec:63:f6:f9:90:56:0e:95:
1791 a3:23:0a:8c:64:da:9b:bb:1c:77:b0:4c:5d:e6:c8:
1792 e8:f5:7d:79:2d:57:24:3f:cc:e3:3d:2c:98:cf:12:
1793 9f:17
1794 Exponent: 65537 (0x10001)
1795 Signature Algorithm: sha1WithRSAEncryption
1796 bb:38:8e:04:22:26:58:0e:21:44:56:cc:bd:59:7c:29:68:cb:
1797 5c:0f:c8:86:54:3f:81:78:a7:ad:8f:cc:46:f7:1c:54:b8:79:
1798 2d:5b:72:05:6a:e8:21:d0:ec:1d:1d:fe:a4:34:51:be:ee:ed:
1799 ce:cc:9c:16:68:e2:5d:75:73:08:43:31:91:6a:10:2b:10:c2:
1800 4b:69:f8:c9:ad:98:a8:fd:b8:ef:f6:ab:f0:5f:21:ef:cb:85:
1801 6b:09:ed:2f:48:66:b5:60:72:c0:e8:a0:c7:98:db:0e:f7:1b:
1802 73:8d:34:08:0a:7b:c5:77:62:aa:30:23:9b:b0:1e:8b:80:98:
1803 54:dc:05:87:b3:a9:62:59:fc:8b:b7:15:9a:ac:44:ec:cf:35:
1804 1a:f7:0f:2e:5d:92:4b:01:c8:7b:ee:a0:37:ed:e4:1d:82:0d:
1805 99:41:43:17:ad:d4:d5:ca:e3:f9:7d:17:a2:01:d0:30:0f:40:
1806 b9:dc:b9:04:82:69:83:b6:f9:0f:fa:06:92:f7:a8:f4:d6:17:
1807 1c:f0:5e:7f:c4:29:c8:e6:e1:e2:ff:36:68:21:51:ae:ff:a9:
1808 ba:84:92:ad:8a:7b:33:d8:90:d2:c1:79:6d:33:33:39:74:ac:
1809 1b:38:71:9f:2c:07:90:ea:1d:e0:d3:89:5f:cb:ef:14:8d:27:
1810 54:a5:bd:46
1811SHA1 Fingerprint=EC:0C:37:16:EA:9E:DF:AD:D3:5D:FB:D5:56:08:E6:0A:05:D3:CB:F3
1812-----BEGIN CERTIFICATE-----
1813MIID+DCCAuACEQDQHkCLAAACfAAAAAcAAAABMA0GCSqGSIb3DQEBBQUAMIG5MQsw
1814CQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENp
1815dHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjEeMBwGA1UE
1816CxMVVW5pdGVkIFBhcmNlbCBTZXJ2aWNlMRkwFwYDVQQDExBEU1QgKFVQUykgUm9v
1817dENBMSEwHwYJKoZIhvcNAQkBFhJjYUBkaWdzaWd0cnVzdC5jb20wHhcNOTgxMjEw
1818MDAyNTQ2WhcNMDgxMjA3MDAyNTQ2WjCBuTELMAkGA1UEBhMCdXMxDTALBgNVBAgT
1819BFV0YWgxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MSQwIgYDVQQKExtEaWdpdGFs
1820IFNpZ25hdHVyZSBUcnVzdCBDby4xHjAcBgNVBAsTFVVuaXRlZCBQYXJjZWwgU2Vy
1821dmljZTEZMBcGA1UEAxMQRFNUIChVUFMpIFJvb3RDQTEhMB8GCSqGSIb3DQEJARYS
1822Y2FAZGlnc2lndHJ1c3QuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
1823AQEA7xfsrynm2SsnwNt7JJ9m9ASjwq0KyrDNhCuqN/OAoWDvQo/lXXdfV0JU3Svb
1824YbJxXpN7b1/rJCvnpPLr8XOzC431Wdcy36yQjk4xuiVNtgym8eWvDOHlb1IDFcHf
1825vn5KpqYYRnA/76dNqNz1dNlhekA8oZQo6sKUiMs3FQUZPJViuhwt+yiM0ciekjxb
1826EVQ7eNlHO5stSuY+e2vf9PYFzyj2upg2AJ48N4UKnN63pIXFY/23YhRtFx7MioCF
1827QjIRsCHinXfJgBZBnuvlFIl/t8O8T8Gfh5uW7GP2+ZBWDpWjIwqMZNqbuxx3sExd
18285sjo9X15LVckP8zjPSyYzxKfFwIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQC7OI4E
1829IiZYDiFEVsy9WXwpaMtcD8iGVD+BeKetj8xG9xxUuHktW3IFaugh0OwdHf6kNFG+
18307u3OzJwWaOJddXMIQzGRahArEMJLafjJrZio/bjv9qvwXyHvy4VrCe0vSGa1YHLA
18316KDHmNsO9xtzjTQICnvFd2KqMCObsB6LgJhU3AWHs6liWfyLtxWarETszzUa9w8u
1832XZJLAch77qA37eQdgg2ZQUMXrdTVyuP5fReiAdAwD0C53LkEgmmDtvkP+gaS96j0
18331hcc8F5/xCnI5uHi/zZoIVGu/6m6hJKtinsz2JDSwXltMzM5dKwbOHGfLAeQ6h3g
183404lfy+8UjSdUpb1G
1835-----END CERTIFICATE-----
1836Certificate:
1837 Data:
1838 Version: 1 (0x0)
1839 Serial Number: 419 (0x1a3)
1840 Signature Algorithm: md5WithRSAEncryption
1841 Issuer: C=US, O=GTE Corporation, CN=GTE CyberTrust Root
1842 Validity
1843 Not Before: Feb 23 23:01:00 1996 GMT
1844 Not After : Feb 23 23:59:00 2006 GMT
1845 Subject: C=US, O=GTE Corporation, CN=GTE CyberTrust Root
1846 Subject Public Key Info:
1847 Public Key Algorithm: rsaEncryption
1848 RSA Public Key: (1024 bit)
1849 Modulus (1024 bit):
1850 00:b8:e6:4f:ba:db:98:7c:71:7c:af:44:b7:d3:0f:
1851 46:d9:64:e5:93:c1:42:8e:c7:ba:49:8d:35:2d:7a:
1852 e7:8b:bd:e5:05:31:59:c6:b1:2f:0a:0c:fb:9f:a7:
1853 3f:a2:09:66:84:56:1e:37:29:1b:87:e9:7e:0c:ca:
1854 9a:9f:a5:7f:f5:15:94:a3:d5:a2:46:82:d8:68:4c:
1855 d1:37:15:06:68:af:bd:f8:b0:b3:f0:29:f5:95:5a:
1856 09:16:61:77:0a:22:25:d4:4f:45:aa:c7:bd:e5:96:
1857 df:f9:d4:a8:8e:42:cc:24:c0:1e:91:27:4a:b5:6d:
1858 06:80:63:39:c4:a2:5e:38:03
1859 Exponent: 65537 (0x10001)
1860 Signature Algorithm: md5WithRSAEncryption
1861 12:b3:75:c6:5f:1d:e1:61:55:80:00:d4:81:4b:7b:31:0f:23:
1862 63:e7:3d:f3:03:f9:f4:36:a8:bb:d9:e3:a5:97:4d:ea:2b:29:
1863 e0:d6:6a:73:81:e6:c0:89:a3:d3:f1:e0:a5:a5:22:37:9a:63:
1864 c2:48:20:b4:db:72:e3:c8:f6:d9:7c:be:b1:af:53:da:14:b4:
1865 21:b8:d6:d5:96:e3:fe:4e:0c:59:62:b6:9a:4a:f9:42:dd:8c:
1866 6f:81:a9:71:ff:f4:0a:72:6d:6d:44:0e:9d:f3:74:74:a8:d5:
1867 34:49:e9:5e:9e:e9:b4:7a:e1:e5:5a:1f:84:30:9c:d3:9f:a5:
1868 25:d8
1869SHA1 Fingerprint=90:DE:DE:9E:4C:4E:9F:6F:D8:86:17:57:9D:D3:91:BC:65:A6:89:64
1870-----BEGIN CERTIFICATE-----
1871MIIB+jCCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
1872VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
1873b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
1874UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
1875cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC45k+625h8cXyv
1876RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
1877ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
18781KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
1879dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
1880IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
1881bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
1882-----END CERTIFICATE-----
1883Certificate:
1884 Data:
1885 Version: 3 (0x2)
1886 Serial Number: 913232846 (0x366ed3ce)
1887 Signature Algorithm: sha1WithRSAEncryption
1888 Issuer: C=US, O=Digital Signature Trust Co., OU=DSTCA E2
1889 Validity
1890 Not Before: Dec 9 19:17:26 1998 GMT
1891 Not After : Dec 9 19:47:26 2018 GMT
1892 Subject: C=US, O=Digital Signature Trust Co., OU=DSTCA E2
1893 Subject Public Key Info:
1894 Public Key Algorithm: rsaEncryption
1895 RSA Public Key: (1024 bit)
1896 Modulus (1024 bit):
1897 00:bf:93:8f:17:92:ef:33:13:18:eb:10:7f:4e:16:
1898 bf:ff:06:8f:2a:85:bc:5e:f9:24:a6:24:88:b6:03:
1899 b7:c1:c3:5f:03:5b:d1:6f:ae:7e:42:ea:66:23:b8:
1900 63:83:56:fb:28:2d:e1:38:8b:b4:ee:a8:01:e1:ce:
1901 1c:b6:88:2a:22:46:85:fb:9f:a7:70:a9:47:14:3f:
1902 ce:de:65:f0:a8:71:f7:4f:26:6c:8c:bc:c6:b5:ef:
1903 de:49:27:ff:48:2a:7d:e8:4d:03:cc:c7:b2:52:c6:
1904 17:31:13:3b:b5:4d:db:c8:c4:f6:c3:0f:24:2a:da:
1905 0c:9d:e7:91:5b:80:cd:94:9d
1906 Exponent: 3 (0x3)
1907 X509v3 extensions:
1908 Netscape Cert Type:
1909 SSL CA, S/MIME CA, Object Signing CA
1910 X509v3 CRL Distribution Points:
1911 DirName:/C=US/O=Digital Signature Trust Co./OU=DSTCA E2/CN=CRL1
1912
1913 X509v3 Private Key Usage Period:
1914 Not Before: Dec 9 19:17:26 1998 GMT, Not After: Dec 9 19:17:26 2018 GMT
1915 X509v3 Key Usage:
1916 Certificate Sign, CRL Sign
1917 X509v3 Authority Key Identifier:
1918 keyid:1E:82:4D:28:65:80:3C:C9:41:6E:AC:35:2E:5A:CB:DE:EE:F8:39:5B
1919
1920 X509v3 Subject Key Identifier:
1921 1E:82:4D:28:65:80:3C:C9:41:6E:AC:35:2E:5A:CB:DE:EE:F8:39:5B
1922 X509v3 Basic Constraints:
1923 CA:TRUE
1924 1.2.840.113533.7.65.0:
1925 0
1926..V4.0....
1927 Signature Algorithm: sha1WithRSAEncryption
1928 47:8d:83:ad:62:f2:db:b0:9e:45:22:05:b9:a2:d6:03:0e:38:
1929 72:e7:9e:fc:7b:e6:93:b6:9a:a5:a2:94:c8:34:1d:91:d1:c5:
1930 d7:f4:0a:25:0f:3d:78:81:9e:0f:b1:67:c4:90:4c:63:dd:5e:
1931 a7:e2:ba:9f:f5:f7:4d:a5:31:7b:9c:29:2d:4c:fe:64:3e:ec:
1932 b6:53:fe:ea:9b:ed:82:db:74:75:4b:07:79:6e:1e:d8:19:83:
1933 73:de:f5:3e:d0:b5:de:e7:4b:68:7d:43:2e:2a:20:e1:7e:a0:
1934 78:44:9e:08:f5:98:f9:c7:7f:1b:1b:d6:06:20:02:58:a1:c3:
1935 a2:03
1936SHA1 Fingerprint=AB:48:F3:33:DB:04:AB:B9:C0:72:DA:5B:0C:C1:D0:57:F0:36:9B:46
1937-----BEGIN CERTIFICATE-----
1938MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJV
1939UzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQL
1940EwhEU1RDQSBFMjAeFw05ODEyMDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJ
1941BgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4x
1942ETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQC/
1943k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGODVvso
1944LeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3o
1945TQPMx7JSxhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCG
1946SAGG+EIBAQQEAwIABzBoBgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMx
1947JDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMI
1948RFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMDkxOTE3
1949MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFB6C
1950TShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5
1951WzAMBgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqG
1952SIb3DQEBBQUAA4GBAEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHR
1953xdf0CiUPPXiBng+xZ8SQTGPdXqfiup/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVL
1954B3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1mPnHfxsb1gYgAlihw6ID
1955-----END CERTIFICATE-----
1956Certificate:
1957 Data:
1958 Version: 3 (0x2)
1959 Serial Number:
1960 02:00:00:00:00:00:d6:78:b7:94:05
1961 Signature Algorithm: md5WithRSAEncryption
1962 Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA
1963 Validity
1964 Not Before: Sep 1 12:00:00 1998 GMT
1965 Not After : Jan 28 12:00:00 2014 GMT
1966 Subject: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA
1967 Subject Public Key Info:
1968 Public Key Algorithm: rsaEncryption
1969 RSA Public Key: (2048 bit)
1970 Modulus (2048 bit):
1971 00:da:0e:e6:99:8d:ce:a3:e3:4f:8a:7e:fb:f1:8b:
1972 83:25:6b:ea:48:1f:f1:2a:b0:b9:95:11:04:bd:f0:
1973 63:d1:e2:67:66:cf:1c:dd:cf:1b:48:2b:ee:8d:89:
1974 8e:9a:af:29:80:65:ab:e9:c7:2d:12:cb:ab:1c:4c:
1975 70:07:a1:3d:0a:30:cd:15:8d:4f:f8:dd:d4:8c:50:
1976 15:1c:ef:50:ee:c4:2e:f7:fc:e9:52:f2:91:7d:e0:
1977 6d:d5:35:30:8e:5e:43:73:f2:41:e9:d5:6a:e3:b2:
1978 89:3a:56:39:38:6f:06:3c:88:69:5b:2a:4d:c5:a7:
1979 54:b8:6c:89:cc:9b:f9:3c:ca:e5:fd:89:f5:12:3c:
1980 92:78:96:d6:dc:74:6e:93:44:61:d1:8d:c7:46:b2:
1981 75:0e:86:e8:19:8a:d5:6d:6c:d5:78:16:95:a2:e9:
1982 c8:0a:38:eb:f2:24:13:4f:73:54:93:13:85:3a:1b:
1983 bc:1e:34:b5:8b:05:8c:b9:77:8b:b1:db:1f:20:91:
1984 ab:09:53:6e:90:ce:7b:37:74:b9:70:47:91:22:51:
1985 63:16:79:ae:b1:ae:41:26:08:c8:19:2b:d1:46:aa:
1986 48:d6:64:2a:d7:83:34:ff:2c:2a:c1:6c:19:43:4a:
1987 07:85:e7:d3:7c:f6:21:68:ef:ea:f2:52:9f:7f:93:
1988 90:cf
1989 Exponent: 65537 (0x10001)
1990 X509v3 extensions:
1991 X509v3 Key Usage: critical
1992 Certificate Sign, CRL Sign
1993 X509v3 Subject Key Identifier:
1994 60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B
1995 X509v3 Basic Constraints: critical
1996 CA:TRUE
1997 Signature Algorithm: md5WithRSAEncryption
1998 ae:aa:9f:fc:b7:d2:cb:1f:5f:39:29:28:18:9e:34:c9:6c:4f:
1999 6f:1a:f0:64:a2:70:4a:4f:13:86:9b:60:28:9e:e8:81:49:98:
2000 7d:0a:bb:e5:b0:9d:3d:36:db:8f:05:51:ff:09:31:2a:1f:dd:
2001 89:77:9e:0f:2e:6c:95:04:ed:86:cb:b4:00:3f:84:02:4d:80:
2002 6a:2a:2d:78:0b:ae:6f:2b:a2:83:44:83:1f:cd:50:82:4c:24:
2003 af:bd:f7:a5:b4:c8:5a:0f:f4:e7:47:5e:49:8e:37:96:fe:9a:
2004 88:05:3a:d9:c0:db:29:87:e6:19:96:47:a7:3a:a6:8c:8b:3c:
2005 77:fe:46:63:a7:53:da:21:d1:ac:7e:49:a2:4b:e6:c3:67:59:
2006 2f:b3:8a:0e:bb:2c:bd:a9:aa:42:7c:35:c1:d8:7f:d5:a7:31:
2007 3a:4e:63:43:39:af:08:b0:61:34:8c:d3:98:a9:43:34:f6:0f:
2008 87:29:3b:9d:c2:56:58:98:77:c3:f7:1b:ac:f6:9d:f8:3e:aa:
2009 a7:54:45:f0:f5:f9:d5:31:65:fe:6b:58:9c:71:b3:1e:d7:52:
2010 ea:32:17:fc:40:60:1d:c9:79:24:b2:f6:6c:fd:a8:66:0e:82:
2011 dd:98:cb:da:c2:44:4f:2e:a0:7b:f2:f7:6b:2c:76:11:84:46:
2012 8a:78:a3:e3
2013SHA1 Fingerprint=2F:17:3F:7D:E9:96:67:AF:A5:7A:F8:0A:A2:D1:B1:2F:AC:83:03:38
2014-----BEGIN CERTIFICATE-----
2015MIIDdTCCAl2gAwIBAgILAgAAAAAA1ni3lAUwDQYJKoZIhvcNAQEEBQAwVzELMAkG
2016A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
2017b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw
2018MDBaFw0xNDAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
2019YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT
2020aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ
2021jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp
2022xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp
20231Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG
2024snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ
2025U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8
20269iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIABjAdBgNVHQ4EFgQU
2027YHtmGkUNl8qJUC99BM00qP/8/UswDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B
2028AQQFAAOCAQEArqqf/LfSyx9fOSkoGJ40yWxPbxrwZKJwSk8ThptgKJ7ogUmYfQq7
20295bCdPTbbjwVR/wkxKh/diXeeDy5slQTthsu0AD+EAk2AaioteAuubyuig0SDH81Q
2030gkwkr733pbTIWg/050deSY43lv6aiAU62cDbKYfmGZZHpzqmjIs8d/5GY6dT2iHR
2031rH5Jokvmw2dZL7OKDrssvamqQnw1wdh/1acxOk5jQzmvCLBhNIzTmKlDNPYPhyk7
2032ncJWWJh3w/cbrPad+D6qp1RF8PX51TFl/mtYnHGzHtdS6jIX/EBgHcl5JLL2bP2o
2033Zg6C3ZjL2sJETy6ge/L3ayx2EYRGinij4w==
2034-----END CERTIFICATE-----
2035Certificate:
2036 Data:
2037 Version: 1 (0x0)
2038 Serial Number:
2039 2d:1b:fc:4a:17:8d:a3:91:eb:e7:ff:f5:8b:45:be:0b
2040 Signature Algorithm: md2WithRSAEncryption
2041 Issuer: C=US, O=VeriSign, Inc., OU=Class 2 Public Primary Certification Authority
2042 Validity
2043 Not Before: Jan 29 00:00:00 1996 GMT
2044 Not After : Aug 1 23:59:59 2028 GMT
2045 Subject: C=US, O=VeriSign, Inc., OU=Class 2 Public Primary Certification Authority
2046 Subject Public Key Info:
2047 Public Key Algorithm: rsaEncryption
2048 RSA Public Key: (1024 bit)
2049 Modulus (1024 bit):
2050 00:b6:5a:8b:a3:0d:6a:23:83:80:6b:cf:39:87:f4:
2051 21:13:33:06:4c:25:a2:ed:55:12:97:c5:a7:80:b9:
2052 fa:83:c1:20:a0:fa:2f:15:0d:7c:a1:60:6b:7e:79:
2053 2c:fa:06:0f:3a:ae:f6:1b:6f:b1:d2:ff:2f:28:52:
2054 5f:83:7d:4b:c4:7a:b7:f8:66:1f:80:54:fc:b7:c2:
2055 8e:59:4a:14:57:46:d1:9a:93:be:41:91:03:bb:15:
2056 80:93:5c:eb:e7:cc:08:6c:3f:3e:b3:4a:fc:ff:4b:
2057 6c:23:d5:50:82:26:44:19:8e:23:c3:71:ea:19:24:
2058 47:04:9e:75:bf:c8:a6:00:1f
2059 Exponent: 65537 (0x10001)
2060 Signature Algorithm: md2WithRSAEncryption
2061 8a:1b:2b:fa:39:c1:74:d7:5e:d8:19:64:a2:58:4a:2d:37:e0:
2062 33:47:0f:ac:ed:f7:aa:db:1e:e4:8b:06:5c:60:27:ca:45:52:
2063 ce:16:ef:3f:06:64:e7:94:68:7c:60:33:15:11:69:af:9d:62:
2064 8d:a3:03:54:6b:a6:be:e5:ee:05:18:60:04:bf:42:80:fd:d0:
2065 a8:a8:1e:01:3b:f7:a3:5c:af:a3:dc:e6:26:80:23:3c:b8:44:
2066 74:f7:0a:ae:49:8b:61:78:cc:24:bf:88:8a:a7:0e:ea:73:19:
2067 41:fd:4d:03:f0:88:d1:e5:78:8d:a5:2a:4f:f6:97:0d:17:77:
2068 ca:d8
2069SHA1 Fingerprint=67:82:AA:E0:ED:EE:E2:1A:58:39:D3:C0:CD:14:68:0A:4F:60:14:2A
2070-----BEGIN CERTIFICATE-----
2071MIICPDCCAaUCEC0b/EoXjaOR6+f/9YtFvgswDQYJKoZIhvcNAQECBQAwXzELMAkG
2072A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
2073cyAyIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2
2074MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV
2075BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAyIFB1YmxpYyBQcmlt
2076YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN
2077ADCBiQKBgQC2WoujDWojg4BrzzmH9CETMwZMJaLtVRKXxaeAufqDwSCg+i8VDXyh
2078YGt+eSz6Bg86rvYbb7HS/y8oUl+DfUvEerf4Zh+AVPy3wo5ZShRXRtGak75BkQO7
2079FYCTXOvnzAhsPz6zSvz/S2wj1VCCJkQZjiPDceoZJEcEnnW/yKYAHwIDAQABMA0G
2080CSqGSIb3DQEBAgUAA4GBAIobK/o5wXTXXtgZZKJYSi034DNHD6zt96rbHuSLBlxg
2081J8pFUs4W7z8GZOeUaHxgMxURaa+dYo2jA1Rrpr7l7gUYYAS/QoD90KioHgE796Nc
2082r6Pc5iaAIzy4RHT3Cq5Ji2F4zCS/iIqnDupzGUH9TQPwiNHleI2lKk/2lw0Xd8rY
2083-----END CERTIFICATE-----
2084Certificate:
2085 Data:
2086 Version: 1 (0x0)
2087 Serial Number:
2088 4c:c7:ea:aa:98:3e:71:d3:93:10:f8:3d:3a:89:91:92
2089 Signature Algorithm: sha1WithRSAEncryption
2090 Issuer: C=US, O=VeriSign, Inc., OU=Class 1 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network
2091 Validity
2092 Not Before: May 18 00:00:00 1998 GMT
2093 Not After : Aug 1 23:59:59 2028 GMT
2094 Subject: C=US, O=VeriSign, Inc., OU=Class 1 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network
2095 Subject Public Key Info:
2096 Public Key Algorithm: rsaEncryption
2097 RSA Public Key: (1024 bit)
2098 Modulus (1024 bit):
2099 00:aa:d0:ba:be:16:2d:b8:83:d4:ca:d2:0f:bc:76:
2100 31:ca:94:d8:1d:93:8c:56:02:bc:d9:6f:1a:6f:52:
2101 36:6e:75:56:0a:55:d3:df:43:87:21:11:65:8a:7e:
2102 8f:bd:21:de:6b:32:3f:1b:84:34:95:05:9d:41:35:
2103 eb:92:eb:96:dd:aa:59:3f:01:53:6d:99:4f:ed:e5:
2104 e2:2a:5a:90:c1:b9:c4:a6:15:cf:c8:45:eb:a6:5d:
2105 8e:9c:3e:f0:64:24:76:a5:cd:ab:1a:6f:b6:d8:7b:
2106 51:61:6e:a6:7f:87:c8:e2:b7:e5:34:dc:41:88:ea:
2107 09:40:be:73:92:3d:6b:e7:75
2108 Exponent: 65537 (0x10001)
2109 Signature Algorithm: sha1WithRSAEncryption
2110 a9:4f:c3:0d:c7:67:be:2c:cb:d9:a8:cd:2d:75:e7:7e:15:9e:
2111 3b:72:eb:7e:eb:5c:2d:09:87:d6:6b:6d:60:7c:e5:ae:c5:90:
2112 23:0c:5c:4a:d0:af:b1:5d:f3:c7:b6:0a:db:e0:15:93:0d:dd:
2113 03:bc:c7:76:8a:b5:dd:4f:c3:9b:13:75:b8:01:c0:e6:c9:5b:
2114 6b:a5:b8:89:dc:ac:a4:dd:72:ed:4e:a1:f7:4f:bc:06:d3:ea:
2115 c8:64:74:7b:c2:95:41:9c:65:73:58:f1:90:9a:3c:6a:b1:98:
2116 c9:c4:87:bc:cf:45:6d:45:e2:6e:22:3f:fe:bc:0f:31:5c:e8:
2117 f2:d9
2118SHA1 Fingerprint=27:3E:E1:24:57:FD:C4:F9:0C:55:E8:2B:56:16:7F:62:F5:32:E5:47
2119-----BEGIN CERTIFICATE-----
2120MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJ
2121BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh
2122c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy
2123MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp
2124emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X
2125DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw
2126FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMg
2127UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo
2128YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5
2129MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB
2130AQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgdk4xWArzZbxpvUjZudVYK
2131VdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIqWpDBucSm
2132Fc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQID
2133AQABMA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0J
2134h9ZrbWB85a7FkCMMXErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2ul
2135uIncrKTdcu1OofdPvAbT6shkdHvClUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68
2136DzFc6PLZ
2137-----END CERTIFICATE-----
2138Certificate:
2139 Data:
2140 Version: 3 (0x2)
2141 Serial Number: 913315222 (0x36701596)
2142 Signature Algorithm: sha1WithRSAEncryption
2143 Issuer: C=US, O=Digital Signature Trust Co., OU=DSTCA E1
2144 Validity
2145 Not Before: Dec 10 18:10:23 1998 GMT
2146 Not After : Dec 10 18:40:23 2018 GMT
2147 Subject: C=US, O=Digital Signature Trust Co., OU=DSTCA E1
2148 Subject Public Key Info:
2149 Public Key Algorithm: rsaEncryption
2150 RSA Public Key: (1024 bit)
2151 Modulus (1024 bit):
2152 00:a0:6c:81:a9:cf:34:1e:24:dd:fe:86:28:cc:de:
2153 83:2f:f9:5e:d4:42:d2:e8:74:60:66:13:98:06:1c:
2154 a9:51:12:69:6f:31:55:b9:49:72:00:08:7e:d3:a5:
2155 62:44:37:24:99:8f:d9:83:48:8f:99:6d:95:13:bb:
2156 43:3b:2e:49:4e:88:37:c1:bb:58:7f:fe:e1:bd:f8:
2157 bb:61:cd:f3:47:c0:99:a6:f1:f3:91:e8:78:7c:00:
2158 cb:61:c9:44:27:71:69:55:4a:7e:49:4d:ed:a2:a3:
2159 be:02:4c:00:ca:02:a8:ee:01:02:31:64:0f:52:2d:
2160 13:74:76:36:b5:7a:b4:2d:71
2161 Exponent: 3 (0x3)
2162 X509v3 extensions:
2163 Netscape Cert Type:
2164 SSL CA, S/MIME CA, Object Signing CA
2165 X509v3 CRL Distribution Points:
2166 DirName:/C=US/O=Digital Signature Trust Co./OU=DSTCA E1/CN=CRL1
2167
2168 X509v3 Private Key Usage Period:
2169 Not Before: Dec 10 18:10:23 1998 GMT, Not After: Dec 10 18:10:23 2018 GMT
2170 X509v3 Key Usage:
2171 Certificate Sign, CRL Sign
2172 X509v3 Authority Key Identifier:
2173 keyid:6A:79:7E:91:69:46:18:13:0A:02:77:A5:59:5B:60:98:25:0E:A2:F8
2174
2175 X509v3 Subject Key Identifier:
2176 6A:79:7E:91:69:46:18:13:0A:02:77:A5:59:5B:60:98:25:0E:A2:F8
2177 X509v3 Basic Constraints:
2178 CA:TRUE
2179 1.2.840.113533.7.65.0:
2180 0
2181..V4.0....
2182 Signature Algorithm: sha1WithRSAEncryption
2183 22:12:d8:7a:1d:dc:81:06:b6:09:65:b2:87:c8:1f:5e:b4:2f:
2184 e9:c4:1e:f2:3c:c1:bb:04:90:11:4a:83:4e:7e:93:b9:4d:42:
2185 c7:92:26:a0:5c:34:9a:38:72:f8:fd:6b:16:3e:20:ee:82:8b:
2186 31:2a:93:36:85:23:88:8a:3c:03:68:d3:c9:09:0f:4d:fc:6c:
2187 a4:da:28:72:93:0e:89:80:b0:7d:fe:80:6f:65:6d:18:33:97:
2188 8b:c2:6b:89:ee:60:3d:c8:9b:ef:7f:2b:32:62:73:93:cb:3c:
2189 e3:7b:e2:76:78:45:bc:a1:93:04:bb:86:9f:3a:5b:43:7a:c3:
2190 8a:65
2191SHA1 Fingerprint=81:96:8B:3A:EF:1C:DC:70:F5:FA:32:69:C2:92:A3:63:5B:D1:23:D3
2192-----BEGIN CERTIFICATE-----
2193MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJV
2194UzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQL
2195EwhEU1RDQSBFMTAeFw05ODEyMTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJ
2196BgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4x
2197ETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQCg
2198bIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJENySZ
2199j9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlV
2200Sn5JTe2io74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCG
2201SAGG+EIBAQQEAwIABzBoBgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMx
2202JDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMI
2203RFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMTAxODEw
2204MjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFGp5
2205fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i
2206+DAMBgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqG
2207SIb3DQEBBQUAA4GBACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lN
2208QseSJqBcNJo4cvj9axY+IO6CizEqkzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+
2209gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4RbyhkwS7hp86W0N6w4pl
2210-----END CERTIFICATE-----
2211Certificate:
2212 Data:
2213 Version: 3 (0x2)
2214 Serial Number: 1 (0x1)
2215 Signature Algorithm: md5WithRSAEncryption
2216 Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com
2217 Validity
2218 Not Before: Aug 1 00:00:00 1996 GMT
2219 Not After : Dec 31 23:59:59 2020 GMT
2220 Subject: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com
2221 Subject Public Key Info:
2222 Public Key Algorithm: rsaEncryption
2223 RSA Public Key: (1024 bit)
2224 Modulus (1024 bit):
2225 00:d2:36:36:6a:8b:d7:c2:5b:9e:da:81:41:62:8f:
2226 38:ee:49:04:55:d6:d0:ef:1c:1b:95:16:47:ef:18:
2227 48:35:3a:52:f4:2b:6a:06:8f:3b:2f:ea:56:e3:af:
2228 86:8d:9e:17:f7:9e:b4:65:75:02:4d:ef:cb:09:a2:
2229 21:51:d8:9b:d0:67:d0:ba:0d:92:06:14:73:d4:93:
2230 cb:97:2a:00:9c:5c:4e:0c:bc:fa:15:52:fc:f2:44:
2231 6e:da:11:4a:6e:08:9f:2f:2d:e3:f9:aa:3a:86:73:
2232 b6:46:53:58:c8:89:05:bd:83:11:b8:73:3f:aa:07:
2233 8d:f4:42:4d:e7:40:9d:1c:37
2234 Exponent: 65537 (0x10001)
2235 X509v3 extensions:
2236 X509v3 Basic Constraints: critical
2237 CA:TRUE
2238 Signature Algorithm: md5WithRSAEncryption
2239 26:48:2c:16:c2:58:fa:e8:16:74:0c:aa:aa:5f:54:3f:f2:d7:
2240 c9:78:60:5e:5e:6e:37:63:22:77:36:7e:b2:17:c4:34:b9:f5:
2241 08:85:fc:c9:01:38:ff:4d:be:f2:16:42:43:e7:bb:5a:46:fb:
2242 c1:c6:11:1f:f1:4a:b0:28:46:c9:c3:c4:42:7d:bc:fa:ab:59:
2243 6e:d5:b7:51:88:11:e3:a4:85:19:6b:82:4c:a4:0c:12:ad:e9:
2244 a4:ae:3f:f1:c3:49:65:9a:8c:c5:c8:3e:25:b7:94:99:bb:92:
2245 32:71:07:f0:86:5e:ed:50:27:a6:0d:a6:23:f9:bb:cb:a6:07:
2246 14:42
2247SHA1 Fingerprint=62:7F:8D:78:27:65:63:99:D2:7D:7F:90:44:C9:FE:B3:F3:3E:FA:9A
2248-----BEGIN CERTIFICATE-----
2249MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx
2250FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD
2251VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv
2252biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy
2253dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t
2254MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB
2255MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG
2256A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp
2257b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl
2258cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv
2259bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE
2260VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ
2261ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR
2262uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
22639w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI
2264hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM
2265pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg==
2266-----END CERTIFICATE-----
2267Certificate:
2268 Data:
2269 Version: 3 (0x2)
2270 Serial Number: 133 (0x85)
2271 Signature Algorithm: sha1WithRSAEncryption
2272 Issuer: C=US, O=American Express Company, Inc., OU=American Express Technologies, CN=American Express Global Certificate Authority
2273 Validity
2274 Not Before: Aug 14 19:06:00 1998 GMT
2275 Not After : Aug 14 23:59:00 2013 GMT
2276 Subject: C=US, O=American Express Company, Inc., OU=American Express Technologies, CN=American Express Global Certificate Authority
2277 Subject Public Key Info:
2278 Public Key Algorithm: rsaEncryption
2279 RSA Public Key: (2048 bit)
2280 Modulus (2048 bit):
2281 00:f0:24:26:66:2e:fb:eb:4a:73:71:53:89:47:cb:
2282 26:3c:53:92:94:4c:ca:c2:85:b5:0d:f8:c3:57:bd:
2283 2f:2a:1f:6a:18:b7:57:af:0c:00:16:fa:a0:b6:90:
2284 a6:f7:1a:a1:2e:66:26:c7:68:a3:8a:93:69:66:b5:
2285 46:56:2d:1d:82:ea:90:0c:0a:22:c2:89:50:8d:05:
2286 f3:d4:ab:73:41:f0:cf:12:ac:28:b4:6f:14:94:96:
2287 59:4b:9e:90:75:86:df:e2:47:eb:e1:e9:4f:43:7e:
2288 87:ca:27:18:66:9e:b5:c1:40:65:7d:fc:61:6f:ad:
2289 9b:72:cf:a9:5e:d8:f3:f9:da:6e:91:10:fa:4c:b5:
2290 ea:7e:20:de:a9:39:2f:f5:88:e4:8a:6f:35:c6:20:
2291 9c:2b:86:46:33:0a:fc:31:55:a5:6b:ac:16:40:e9:
2292 cd:35:59:6f:32:04:c3:7b:b5:0f:7b:77:70:f3:48:
2293 bb:2a:52:82:ce:af:29:6d:f1:11:6f:6d:e6:07:00:
2294 01:ef:9a:f3:26:0d:a6:79:13:67:af:f8:ab:1c:75:
2295 ac:91:b5:6b:be:40:b0:de:9c:0c:b1:69:85:19:71:
2296 91:13:45:ca:df:d1:fd:e6:b2:ca:96:83:79:db:c5:
2297 b8:aa:5b:7a:90:0b:78:56:3e:c6:d7:9f:94:48:11:
2298 f5:ad
2299 Exponent: 65537 (0x10001)
2300 X509v3 extensions:
2301 X509v3 Basic Constraints: critical
2302 CA:TRUE, pathlen:5
2303 X509v3 Key Usage: critical
2304 Certificate Sign, CRL Sign
2305 X509v3 Certificate Policies:
2306 Policy: 1.2.840.113807.10.1.5.1
2307
2308 X509v3 Subject Key Identifier:
2309 57:47:35:7B:36:27:11:A8:08:FC:2F:46:25:EB:24:69
2310 Signature Algorithm: sha1WithRSAEncryption
2311 c7:61:45:a8:8a:71:b9:be:34:e9:21:7b:21:cd:56:13:98:d5:
2312 30:63:e9:18:aa:4b:92:15:bf:0b:1d:bb:ec:92:69:c5:2e:c3:
2313 61:8b:e8:30:45:cb:10:46:c1:73:38:5c:8b:19:d2:2b:f3:40:
2314 eb:7c:72:b3:2e:1e:27:e3:75:95:8a:1c:9b:2e:c4:95:05:86:
2315 72:d0:55:f4:a1:92:52:79:5c:db:f4:f8:dc:e5:d7:12:b1:40:
2316 c7:3c:86:e4:31:65:4a:ca:37:c6:de:76:57:19:69:4c:46:69:
2317 fc:2a:ad:16:37:7a:93:ac:f7:21:4b:2d:fb:eb:a9:50:cb:c1:
2318 d1:40:08:da:03:69:87:a7:37:5e:55:c1:c5:ed:c4:e3:8e:0c:
2319 26:97:9b:5c:57:4b:72:e3:f2:03:05:d0:02:3b:26:03:40:90:
2320 9e:be:0b:5b:49:0c:78:f1:d5:4c:55:29:e0:f6:fd:4c:03:a9:
2321 54:02:32:d1:57:5a:85:ac:43:ed:5b:3b:16:5f:a0:bf:35:db:
2322 4b:9e:7b:e8:ff:e7:0d:3c:3b:a8:9b:49:41:46:f5:73:4e:ff:
2323 92:65:21:83:13:55:71:eb:49:3c:7f:88:1a:c2:12:28:25:a1:
2324 46:4b:41:37:97:7f:ec:8e:f1:d4:a1:96:c2:20:b6:5e:ad:a9:
2325 1c:1e:11:a0
2326SHA1 Fingerprint=05:15:83:35:7C:B7:B7:BE:E4:0E:BB:91:FF:6B:3B:BC:F1:54:DD:56
2327-----BEGIN CERTIFICATE-----
2328MIIEBDCCAuygAwIBAgICAIUwDQYJKoZIhvcNAQEFBQAwgZYxCzAJBgNVBAYTAlVT
2329MScwJQYDVQQKEx5BbWVyaWNhbiBFeHByZXNzIENvbXBhbnksIEluYy4xJjAkBgNV
2330BAsTHUFtZXJpY2FuIEV4cHJlc3MgVGVjaG5vbG9naWVzMTYwNAYDVQQDEy1BbWVy
2331aWNhbiBFeHByZXNzIEdsb2JhbCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNOTgw
2332ODE0MTkwNjAwWhcNMTMwODE0MjM1OTAwWjCBljELMAkGA1UEBhMCVVMxJzAlBgNV
2333BAoTHkFtZXJpY2FuIEV4cHJlc3MgQ29tcGFueSwgSW5jLjEmMCQGA1UECxMdQW1l
2334cmljYW4gRXhwcmVzcyBUZWNobm9sb2dpZXMxNjA0BgNVBAMTLUFtZXJpY2FuIEV4
2335cHJlc3MgR2xvYmFsIENlcnRpZmljYXRlIEF1dGhvcml0eTCCASIwDQYJKoZIhvcN
2336AQEBBQADggEPADCCAQoCggEBAPAkJmYu++tKc3FTiUfLJjxTkpRMysKFtQ34w1e9
2337Lyofahi3V68MABb6oLaQpvcaoS5mJsdoo4qTaWa1RlYtHYLqkAwKIsKJUI0F89Sr
2338c0HwzxKsKLRvFJSWWUuekHWG3+JH6+HpT0N+h8onGGaetcFAZX38YW+tm3LPqV7Y
23398/nabpEQ+ky16n4g3qk5L/WI5IpvNcYgnCuGRjMK/DFVpWusFkDpzTVZbzIEw3u1
2340D3t3cPNIuypSgs6vKW3xEW9t5gcAAe+a8yYNpnkTZ6/4qxx1rJG1a75AsN6cDLFp
2341hRlxkRNFyt/R/eayypaDedvFuKpbepALeFY+xteflEgR9a0CAwEAAaNaMFgwEgYD
2342VR0TAQH/BAgwBgEB/wIBBTAOBgNVHQ8BAf8EBAMCAQYwFwYDVR0gBBAwDjAMBgoq
2343hkiG+Q8KAQUBMBkGA1UdDgQSBBBXRzV7NicRqAj8L0Yl6yRpMA0GCSqGSIb3DQEB
2344BQUAA4IBAQDHYUWoinG5vjTpIXshzVYTmNUwY+kYqkuSFb8LHbvskmnFLsNhi+gw
2345RcsQRsFzOFyLGdIr80DrfHKzLh4n43WVihybLsSVBYZy0FX0oZJSeVzb9Pjc5dcS
2346sUDHPIbkMWVKyjfG3nZXGWlMRmn8Kq0WN3qTrPchSy3766lQy8HRQAjaA2mHpzde
2347VcHF7cTjjgwml5tcV0ty4/IDBdACOyYDQJCevgtbSQx48dVMVSng9v1MA6lUAjLR
2348V1qFrEPtWzsWX6C/NdtLnnvo/+cNPDuom0lBRvVzTv+SZSGDE1Vx60k8f4gawhIo
2349JaFGS0E3l3/sjvHUoZbCILZerakcHhGg
2350-----END CERTIFICATE-----
2351Certificate:
2352 Data:
2353 Version: 3 (0x2)
2354 Serial Number: 1 (0x1)
2355 Signature Algorithm: md5WithRSAEncryption
2356 Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Server CA/emailAddress=server-certs@thawte.com
2357 Validity
2358 Not Before: Aug 1 00:00:00 1996 GMT
2359 Not After : Dec 31 23:59:59 2020 GMT
2360 Subject: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Server CA/emailAddress=server-certs@thawte.com
2361 Subject Public Key Info:
2362 Public Key Algorithm: rsaEncryption
2363 RSA Public Key: (1024 bit)
2364 Modulus (1024 bit):
2365 00:d3:a4:50:6e:c8:ff:56:6b:e6:cf:5d:b6:ea:0c:
2366 68:75:47:a2:aa:c2:da:84:25:fc:a8:f4:47:51:da:
2367 85:b5:20:74:94:86:1e:0f:75:c9:e9:08:61:f5:06:
2368 6d:30:6e:15:19:02:e9:52:c0:62:db:4d:99:9e:e2:
2369 6a:0c:44:38:cd:fe:be:e3:64:09:70:c5:fe:b1:6b:
2370 29:b6:2f:49:c8:3b:d4:27:04:25:10:97:2f:e7:90:
2371 6d:c0:28:42:99:d7:4c:43:de:c3:f5:21:6d:54:9f:
2372 5d:c3:58:e1:c0:e4:d9:5b:b0:b8:dc:b4:7b:df:36:
2373 3a:c2:b5:66:22:12:d6:87:0d
2374 Exponent: 65537 (0x10001)
2375 X509v3 extensions:
2376 X509v3 Basic Constraints: critical
2377 CA:TRUE
2378 Signature Algorithm: md5WithRSAEncryption
2379 07:fa:4c:69:5c:fb:95:cc:46:ee:85:83:4d:21:30:8e:ca:d9:
2380 a8:6f:49:1a:e6:da:51:e3:60:70:6c:84:61:11:a1:1a:c8:48:
2381 3e:59:43:7d:4f:95:3d:a1:8b:b7:0b:62:98:7a:75:8a:dd:88:
2382 4e:4e:9e:40:db:a8:cc:32:74:b9:6f:0d:c6:e3:b3:44:0b:d9:
2383 8a:6f:9a:29:9b:99:18:28:3b:d1:e3:40:28:9a:5a:3c:d5:b5:
2384 e7:20:1b:8b:ca:a4:ab:8d:e9:51:d9:e2:4c:2c:59:a9:da:b9:
2385 b2:75:1b:f6:42:f2:ef:c7:f2:18:f9:89:bc:a3:ff:8a:23:2e:
2386 70:47
2387SHA1 Fingerprint=23:E5:94:94:51:95:F2:41:48:03:B4:D5:64:D2:A3:A3:F5:D8:8B:8C
2388-----BEGIN CERTIFICATE-----
2389MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx
2390FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD
2391VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv
2392biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm
2393MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx
2394MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
2395DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3
2396dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl
2397cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3
2398DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD
2399gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91
2400yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX
2401L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj
2402EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG
24037oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e
2404QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ
2405qdq5snUb9kLy78fyGPmJvKP/iiMucEc=
2406-----END CERTIFICATE-----
2407Certificate:
2408 Data:
2409 Version: 3 (0x2)
2410 Serial Number:
2411 02:00:00:00:00:00:d6:78:b8:37:cf
2412 Signature Algorithm: md5WithRSAEncryption
2413 Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA
2414 Validity
2415 Not Before: Sep 15 12:00:00 1998 GMT
2416 Not After : Jan 28 12:00:00 2009 GMT
2417 Subject: C=BE, O=GlobalSign nv-sa, OU=Primary Class 1 CA, CN=GlobalSign Primary Class 1 CA
2418 Subject Public Key Info:
2419 Public Key Algorithm: rsaEncryption
2420 RSA Public Key: (2048 bit)
2421 Modulus (2048 bit):
2422 00:bd:20:35:47:d1:28:d6:08:a3:12:39:23:47:0d:
2423 bd:70:21:52:0e:57:31:95:a6:34:57:6b:ec:7e:43:
2424 79:c3:06:52:48:cd:bc:b5:a1:99:bd:d8:1f:32:bc:
2425 cf:d7:6e:72:6d:2e:77:22:90:82:4e:4b:8f:9a:0c:
2426 01:42:9a:d9:70:59:b6:9d:1f:e6:63:d1:0c:ad:1d:
2427 4e:f8:85:81:f9:ae:ef:9f:a6:52:61:44:79:1a:75:
2428 45:e0:61:56:45:6d:42:8c:3d:72:cb:a6:a4:12:b7:
2429 9a:f5:d6:60:d0:60:50:b3:8e:a6:a6:ec:b4:f4:12:
2430 cd:7f:a8:ce:ef:b3:e1:85:30:fe:72:c4:e6:e7:77:
2431 b3:9e:58:41:d6:51:83:88:07:c6:b6:69:4f:36:de:
2432 d1:0b:48:3f:bd:d6:9f:21:74:64:6f:27:06:3e:4b:
2433 fd:0e:a6:9b:bf:a4:48:57:8c:90:ee:89:18:0b:02:
2434 81:18:be:67:fe:53:60:88:27:ba:a3:73:34:4b:5a:
2435 56:b4:de:73:05:ed:98:96:5d:ec:4a:e7:40:fc:4b:
2436 09:62:eb:d0:e3:31:4f:85:d1:7a:ab:59:67:2b:fb:
2437 88:0f:eb:aa:83:bd:35:fd:61:27:ec:66:0e:42:57:
2438 f7:69:c2:0c:ef:fc:6a:c2:6e:49:da:8f:41:38:ae:
2439 48:a9
2440 Exponent: 65537 (0x10001)
2441 X509v3 extensions:
2442 X509v3 Key Usage: critical
2443 Certificate Sign, CRL Sign
2444 X509v3 Subject Key Identifier:
2445 FC:E0:66:F6:5A:35:99:EB:40:1E:D2:B8:1E:43:BC:98:8E:1F:8A:C3
2446 X509v3 Authority Key Identifier:
2447 keyid:60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B
2448
2449 X509v3 Basic Constraints: critical
2450 CA:TRUE
2451 Signature Algorithm: md5WithRSAEncryption
2452 9b:a3:08:44:ce:f2:90:9d:71:f3:32:b3:05:6a:b5:ea:cf:29:
2453 98:de:55:3e:a0:16:7d:06:7a:44:d6:af:d2:fa:13:58:8c:f8:
2454 1c:c7:ab:1d:b4:1b:ef:69:68:98:5c:08:39:8f:e0:f7:fb:48:
2455 cc:21:e7:b8:33:db:05:aa:34:24:6c:4a:e5:e9:7b:60:de:83:
2456 b3:1f:0a:be:41:75:fc:cc:30:48:b7:c1:26:1d:04:33:aa:b6:
2457 78:ed:2a:cb:ba:56:97:32:6e:f7:31:95:2e:46:f2:14:ee:27:
2458 c7:f7:62:89:b9:5c:5a:d3:38:8a:64:f5:37:b4:f1:b3:34:72:
2459 d5:d5:21:3d:4b:d7:78:93:d7:31:66:35:1e:a3:d8:47:49:6f:
2460 1c:ad:e1:80:7f:f8:98:24:6c:73:ac:0e:c2:1a:77:02:a3:26:
2461 07:b7:c7:6b:5d:bc:82:d5:2a:48:1d:63:cf:50:32:a6:fb:1c:
2462 18:47:15:0a:5b:0c:5c:38:24:9a:04:98:a8:08:48:5f:7c:34:
2463 87:63:ab:2d:8d:4c:00:77:94:1b:76:ba:f5:16:18:a3:15:af:
2464 2f:94:f6:29:00:76:c1:15:17:d3:e9:37:4d:76:d4:cb:4b:29:
2465 59:24:ac:da:4a:a0:ea:63:de:5f:54:b1:fa:f3:d1:45:cb:c5:
2466 64:b4:73:21
2467SHA1 Fingerprint=EB:31:54:CD:21:96:F3:55:12:2B:89:67:B7:73:02:42:ED:D1:DE:4B
2468-----BEGIN CERTIFICATE-----
2469MIIDrDCCApSgAwIBAgILAgAAAAAA1ni4N88wDQYJKoZIhvcNAQEEBQAwVzELMAkG
2470A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
2471b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MTUxMjAw
2472MDBaFw0wOTAxMjgxMjAwMDBaMG0xCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
2473YWxTaWduIG52LXNhMRswGQYDVQQLExJQcmltYXJ5IENsYXNzIDEgQ0ExJjAkBgNV
2474BAMTHUdsb2JhbFNpZ24gUHJpbWFyeSBDbGFzcyAxIENBMIIBIjANBgkqhkiG9w0B
2475AQEFAAOCAQ8AMIIBCgKCAQEAvSA1R9Eo1gijEjkjRw29cCFSDlcxlaY0V2vsfkN5
2476wwZSSM28taGZvdgfMrzP125ybS53IpCCTkuPmgwBQprZcFm2nR/mY9EMrR1O+IWB
2477+a7vn6ZSYUR5GnVF4GFWRW1CjD1yy6akErea9dZg0GBQs46mpuy09BLNf6jO77Ph
2478hTD+csTm53eznlhB1lGDiAfGtmlPNt7RC0g/vdafIXRkbycGPkv9Dqabv6RIV4yQ
24797okYCwKBGL5n/lNgiCe6o3M0S1pWtN5zBe2Yll3sSudA/EsJYuvQ4zFPhdF6q1ln
2480K/uID+uqg701/WEn7GYOQlf3acIM7/xqwm5J2o9BOK5IqQIDAQABo2MwYTAOBgNV
2481HQ8BAf8EBAMCAAYwHQYDVR0OBBYEFPzgZvZaNZnrQB7SuB5DvJiOH4rDMB8GA1Ud
2482IwQYMBaAFGB7ZhpFDZfKiVAvfQTNNKj//P1LMA8GA1UdEwEB/wQFMAMBAf8wDQYJ
2483KoZIhvcNAQEEBQADggEBAJujCETO8pCdcfMyswVqterPKZjeVT6gFn0GekTWr9L6
2484E1iM+BzHqx20G+9paJhcCDmP4Pf7SMwh57gz2wWqNCRsSuXpe2Deg7MfCr5BdfzM
2485MEi3wSYdBDOqtnjtKsu6VpcybvcxlS5G8hTuJ8f3Yom5XFrTOIpk9Te08bM0ctXV
2486IT1L13iT1zFmNR6j2EdJbxyt4YB/+JgkbHOsDsIadwKjJge3x2tdvILVKkgdY89Q
2487Mqb7HBhHFQpbDFw4JJoEmKgISF98NIdjqy2NTAB3lBt2uvUWGKMVry+U9ikAdsEV
2488F9PpN0121MtLKVkkrNpKoOpj3l9Usfrz0UXLxWS0cyE=
2489-----END CERTIFICATE-----
2490Certificate:
2491 Data:
2492 Version: 3 (0x2)
2493 Serial Number: 1 (0x1)
2494 Signature Algorithm: md5WithRSAEncryption
2495 Issuer: O=Root CA, OU=http://www.cacert.org, CN=CA Cert Signing Authority/emailAddress=support@cacert.org
2496 Validity
2497 Not Before: Oct 14 07:36:55 2005 GMT
2498 Not After : Mar 28 07:36:55 2033 GMT
2499 Subject: O=CAcert Inc., OU=http://www.CAcert.org, CN=CAcert Class 3 Root
2500 Subject Public Key Info:
2501 Public Key Algorithm: rsaEncryption
2502 RSA Public Key: (4096 bit)
2503 Modulus (4096 bit):
2504 00:ab:49:35:11:48:7c:d2:26:7e:53:94:cf:43:a9:
2505 dd:28:d7:42:2a:8b:f3:87:78:19:58:7c:0f:9e:da:
2506 89:7d:e1:fb:eb:72:90:0d:74:a1:96:64:ab:9f:a0:
2507 24:99:73:da:e2:55:76:c7:17:7b:f5:04:ac:46:b8:
2508 c3:be:7f:64:8d:10:6c:24:f3:61:9c:c0:f2:90:fa:
2509 51:e6:f5:69:01:63:c3:0f:56:e2:4a:42:cf:e2:44:
2510 8c:25:28:a8:c5:79:09:7d:46:b9:8a:f3:e9:f3:34:
2511 29:08:45:e4:1c:9f:cb:94:04:1c:81:a8:14:b3:98:
2512 65:c4:43:ec:4e:82:8d:09:d1:bd:aa:5b:8d:92:d0:
2513 ec:de:90:c5:7f:0a:c2:e3:eb:e6:31:5a:5e:74:3e:
2514 97:33:59:e8:c3:03:3d:60:33:bf:f7:d1:6f:47:c4:
2515 cd:ee:62:83:52:6e:2e:08:9a:a4:d9:15:18:91:a6:
2516 85:92:47:b0:ae:48:eb:6d:b7:21:ec:85:1a:68:72:
2517 35:ab:ff:f0:10:5d:c0:f4:94:a7:6a:d5:3b:92:7e:
2518 4c:90:05:7e:93:c1:2c:8b:a4:8e:62:74:15:71:6e:
2519 0b:71:03:ea:af:15:38:9a:d4:d2:05:72:6f:8c:f9:
2520 2b:eb:5a:72:25:f9:39:46:e3:72:1b:3e:04:c3:64:
2521 27:22:10:2a:8a:4f:58:a7:03:ad:be:b4:2e:13:ed:
2522 5d:aa:48:d7:d5:7d:d4:2a:7b:5c:fa:46:04:50:e4:
2523 cc:0e:42:5b:8c:ed:db:f2:cf:fc:96:93:e0:db:11:
2524 36:54:62:34:38:8f:0c:60:9b:3b:97:56:38:ad:f3:
2525 d2:5b:8b:a0:5b:ea:4e:96:b8:7c:d7:d5:a0:86:70:
2526 40:d3:91:29:b7:a2:3c:ad:f5:8c:bb:cf:1a:92:8a:
2527 e4:34:7b:c0:d8:6c:5f:e9:0a:c2:c3:a7:20:9a:5a:
2528 df:2c:5d:52:5c:ba:47:d5:9b:ef:24:28:70:38:20:
2529 2f:d5:7f:29:c0:b2:41:03:68:92:cc:e0:9c:cc:97:
2530 4b:45:ef:3a:10:0a:ab:70:3a:98:95:70:ad:35:b1:
2531 ea:85:2b:a4:1c:80:21:31:a9:ae:60:7a:80:26:48:
2532 00:b8:01:c0:93:63:55:22:91:3c:56:e7:af:db:3a:
2533 25:f3:8f:31:54:ea:26:8b:81:59:f9:a1:d1:53:11:
2534 c5:7b:9d:03:f6:74:11:e0:6d:b1:2c:3f:2c:86:91:
2535 99:71:9a:a6:77:8b:34:60:d1:14:b4:2c:ac:9d:af:
2536 8c:10:d3:9f:c4:6a:f8:6f:13:fc:73:59:f7:66:42:
2537 74:1e:8a:e3:f8:dc:d2:6f:98:9c:cb:47:98:95:40:
2538 05:fb:e9
2539 Exponent: 65537 (0x10001)
2540 X509v3 extensions:
2541 X509v3 Basic Constraints: critical
2542 CA:TRUE
2543 Authority Information Access:
2544 OCSP - URI:http://ocsp.CAcert.org/
2545 CA Issuers - URI:http://www.CAcert.org/ca.crt
2546
2547 X509v3 Certificate Policies:
2548 Policy: 1.3.6.1.4.1.18506
2549 CPS: http://www.CAcert.org/index.php?id=10
2550
2551 Signature Algorithm: md5WithRSAEncryption
2552 7f:08:88:a1:da:1a:50:49:da:89:fb:a1:08:72:f3:8a:f7:1e:
2553 c4:3a:b4:79:5b:20:30:b1:45:de:c2:5d:d3:65:69:f1:c2:5d:
2554 54:54:3c:85:5f:b9:7b:42:91:c2:99:fd:1b:51:9b:ab:46:a5:
2555 a1:10:53:9e:6d:88:ac:73:6e:2c:33:a6:f0:f4:9e:e0:75:c1:
2556 3e:88:45:a9:e1:66:43:fe:56:5a:d1:7a:41:78:f7:40:da:4a:
2557 3a:f1:0b:5b:a5:bb:16:06:e6:c2:e7:93:b9:85:4d:97:4f:b1:
2558 1e:38:43:80:ef:9b:0d:8c:ef:b8:a7:60:00:87:57:7d:1e:44:
2559 1c:cb:23:ef:9b:3c:99:9d:af:b5:29:1c:45:79:16:96:4d:27:
2560 6d:f1:1c:6c:c3:c2:55:64:b3:bc:14:e2:f3:a4:1f:1e:32:fc:
2561 27:15:05:cf:dd:2e:ae:3e:82:61:7b:f0:21:10:18:f6:44:ea:
2562 53:39:f9:dc:d0:9a:20:e0:c6:bb:e0:bb:5a:4f:c4:99:c8:07:
2563 bd:b5:bd:a2:db:2e:62:0d:42:34:41:bc:ff:8b:8a:f5:51:22:
2564 aa:88:30:00:e2:b0:d4:bc:be:65:ba:d5:03:57:79:9b:e8:dc:
2565 c8:4d:f8:50:ed:91:a5:52:28:a2:ac:fb:36:58:3e:e9:94:2b:
2566 91:50:87:1b:d6:5e:d6:8c:cc:f7:0f:10:0c:52:4e:d0:16:61:
2567 e5:e5:0a:6c:bf:17:c7:72:46:57:9c:98:f5:6c:60:63:7a:6f:
2568 5e:b9:4e:2f:c8:b9:b9:bb:6a:85:bc:98:0d:ed:f9:3e:97:84:
2569 34:94:ae:00:af:a1:e5:e7:92:6e:4e:bd:f3:e2:d9:14:8b:5c:
2570 d2:eb:01:6c:a0:17:a5:2d:10:eb:9c:7a:4a:bd:bd:ee:ce:fd:
2571 ed:22:40:ab:70:38:88:f5:0a:87:6a:c2:ab:05:60:c9:48:05:
2572 da:53:c1:de:44:77:6a:b3:f3:3c:3c:ed:80:bc:a6:38:4a:29:
2573 24:5f:fe:59:3b:9b:25:7a:56:63:00:64:b9:5d:a4:62:7d:57:
2574 36:4f:ad:83:ef:1f:92:53:a0:8e:77:57:dd:e5:61:11:3d:23:
2575 00:90:4c:3c:fa:a3:60:93:04:a3:af:35:f6:0e:6a:8f:4f:4a:
2576 60:a7:85:05:6c:46:a1:8f:f4:c7:76:e3:a1:59:57:f7:71:b2:
2577 c4:6e:14:5c:6d:6d:41:66:df:1b:93:b1:d4:00:c3:ee:cb:cf:
2578 3c:3d:21:80:a9:5f:63:65:fc:dd:e0:5f:a4:f4:2b:f0:85:71:
2579 41:d4:67:25:fb:1a:b1:97:ae:d6:99:82:13:41:d2:6e:a5:1b:
2580 99:27:80:e7:0b:a9:a8:00
2581SHA1 Fingerprint=DB:4C:42:69:07:3F:E9:C2:A3:7D:89:0A:5C:1B:18:C4:18:4E:2A:2D
2582-----BEGIN CERTIFICATE-----
2583MIIGCDCCA/CgAwIBAgIBATANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290
2584IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB
2585IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA
2586Y2FjZXJ0Lm9yZzAeFw0wNTEwMTQwNzM2NTVaFw0zMzAzMjgwNzM2NTVaMFQxFDAS
2587BgNVBAoTC0NBY2VydCBJbmMuMR4wHAYDVQQLExVodHRwOi8vd3d3LkNBY2VydC5v
2588cmcxHDAaBgNVBAMTE0NBY2VydCBDbGFzcyAzIFJvb3QwggIiMA0GCSqGSIb3DQEB
2589AQUAA4ICDwAwggIKAoICAQCrSTURSHzSJn5TlM9Dqd0o10Iqi/OHeBlYfA+e2ol9
25904fvrcpANdKGWZKufoCSZc9riVXbHF3v1BKxGuMO+f2SNEGwk82GcwPKQ+lHm9WkB
2591Y8MPVuJKQs/iRIwlKKjFeQl9RrmK8+nzNCkIReQcn8uUBByBqBSzmGXEQ+xOgo0J
25920b2qW42S0OzekMV/CsLj6+YxWl50PpczWejDAz1gM7/30W9HxM3uYoNSbi4ImqTZ
2593FRiRpoWSR7CuSOtttyHshRpocjWr//AQXcD0lKdq1TuSfkyQBX6TwSyLpI5idBVx
2594bgtxA+qvFTia1NIFcm+M+SvrWnIl+TlG43IbPgTDZCciECqKT1inA62+tC4T7V2q
2595SNfVfdQqe1z6RgRQ5MwOQluM7dvyz/yWk+DbETZUYjQ4jwxgmzuXVjit89Jbi6Bb
25966k6WuHzX1aCGcEDTkSm3ojyt9Yy7zxqSiuQ0e8DYbF/pCsLDpyCaWt8sXVJcukfV
2597m+8kKHA4IC/VfynAskEDaJLM4JzMl0tF7zoQCqtwOpiVcK01seqFK6QcgCExqa5g
2598eoAmSAC4AcCTY1UikTxW56/bOiXzjzFU6iaLgVn5odFTEcV7nQP2dBHgbbEsPyyG
2599kZlxmqZ3izRg0RS0LKydr4wQ05/EavhvE/xzWfdmQnQeiuP43NJvmJzLR5iVQAX7
26006QIDAQABo4G/MIG8MA8GA1UdEwEB/wQFMAMBAf8wXQYIKwYBBQUHAQEEUTBPMCMG
2601CCsGAQUFBzABhhdodHRwOi8vb2NzcC5DQWNlcnQub3JnLzAoBggrBgEFBQcwAoYc
2602aHR0cDovL3d3dy5DQWNlcnQub3JnL2NhLmNydDBKBgNVHSAEQzBBMD8GCCsGAQQB
2603gZBKMDMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93d3cuQ0FjZXJ0Lm9yZy9pbmRleC5w
2604aHA/aWQ9MTAwDQYJKoZIhvcNAQEEBQADggIBAH8IiKHaGlBJ2on7oQhy84r3HsQ6
2605tHlbIDCxRd7CXdNlafHCXVRUPIVfuXtCkcKZ/RtRm6tGpaEQU55tiKxzbiwzpvD0
2606nuB1wT6IRanhZkP+VlrRekF490DaSjrxC1uluxYG5sLnk7mFTZdPsR44Q4Dvmw2M
260777inYACHV30eRBzLI++bPJmdr7UpHEV5FpZNJ23xHGzDwlVks7wU4vOkHx4y/CcV
2608Bc/dLq4+gmF78CEQGPZE6lM5+dzQmiDgxrvgu1pPxJnIB721vaLbLmINQjRBvP+L
2609ivVRIqqIMADisNS8vmW61QNXeZvo3MhN+FDtkaVSKKKs+zZYPumUK5FQhxvWXtaM
2610zPcPEAxSTtAWYeXlCmy/F8dyRlecmPVsYGN6b165Ti/Iubm7aoW8mA3t+T6XhDSU
2611rgCvoeXnkm5OvfPi2RSLXNLrAWygF6UtEOucekq9ve7O/e0iQKtwOIj1CodqwqsF
2612YMlIBdpTwd5Ed2qz8zw87YC8pjhKKSRf/lk7myV6VmMAZLldpGJ9VzZPrYPvH5JT
2613oI53V93lYRE9IwCQTDz6o2CTBKOvNfYOao9PSmCnhQVsRqGP9Md246FZV/dxssRu
2614FFxtbUFm3xuTsdQAw+7Lzzw9IYCpX2Nl/N3gX6T0K/CFcUHUZyX7GrGXrtaZghNB
26150m6lG5kngOcLqagA
2616-----END CERTIFICATE-----
2617Certificate:
2618 Data:
2619 Version: 1 (0x0)
2620 Serial Number:
2621 32:88:8e:9a:d2:f5:eb:13:47:f8:7f:c4:20:37:25:f8
2622 Signature Algorithm: sha1WithRSAEncryption
2623 Issuer: C=US, O=VeriSign, Inc., OU=Class 4 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network
2624 Validity
2625 Not Before: May 18 00:00:00 1998 GMT
2626 Not After : Aug 1 23:59:59 2028 GMT
2627 Subject: C=US, O=VeriSign, Inc., OU=Class 4 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network
2628 Subject Public Key Info:
2629 Public Key Algorithm: rsaEncryption
2630 RSA Public Key: (1024 bit)
2631 Modulus (1024 bit):
2632 00:ba:f0:e4:cf:f9:c4:ae:85:54:b9:07:57:f9:8f:
2633 c5:7f:68:11:f8:c4:17:b0:44:dc:e3:30:73:d5:2a:
2634 62:2a:b8:d0:cc:1c:ed:28:5b:7e:bd:6a:dc:b3:91:
2635 24:ca:41:62:3c:fc:02:01:bf:1c:16:31:94:05:97:
2636 76:6e:a2:ad:bd:61:17:6c:4e:30:86:f0:51:37:2a:
2637 50:c7:a8:62:81:dc:5b:4a:aa:c1:a0:b4:6e:eb:2f:
2638 e5:57:c5:b1:2b:40:70:db:5a:4d:a1:8e:1f:bd:03:
2639 1f:d8:03:d4:8f:4c:99:71:bc:e2:82:cc:58:e8:98:
2640 3a:86:d3:86:38:f3:00:29:1f
2641 Exponent: 65537 (0x10001)
2642 Signature Algorithm: sha1WithRSAEncryption
2643 85:8c:12:c1:a7:b9:50:15:7a:cb:3e:ac:b8:43:8a:dc:aa:dd:
2644 14:ba:89:81:7e:01:3c:23:71:21:88:2f:82:dc:63:fa:02:45:
2645 ac:45:59:d7:2a:58:44:5b:b7:9f:81:3b:92:68:3d:e2:37:24:
2646 f5:7b:6c:8f:76:35:96:09:a8:59:9d:b9:ce:23:ab:74:d6:83:
2647 fd:32:73:27:d8:69:3e:43:74:f6:ae:c5:89:9a:e7:53:7c:e9:
2648 7b:f6:4b:f3:c1:65:83:de:8d:8a:9c:3c:88:8d:39:59:fc:aa:
2649 3f:22:8d:a1:c1:66:50:81:72:4c:ed:22:64:4f:4f:ca:80:91:
2650 b6:29
2651SHA1 Fingerprint=0B:77:BE:BB:CB:7A:A2:47:05:DE:CC:0F:BD:6A:02:FC:7A:BD:9B:52
2652-----BEGIN CERTIFICATE-----
2653MIIDAjCCAmsCEDKIjprS9esTR/h/xCA3JfgwDQYJKoZIhvcNAQEFBQAwgcExCzAJ
2654BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh
2655c3MgNCBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy
2656MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp
2657emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X
2658DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw
2659FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgNCBQdWJsaWMg
2660UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo
2661YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5
2662MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB
2663AQUAA4GNADCBiQKBgQC68OTP+cSuhVS5B1f5j8V/aBH4xBewRNzjMHPVKmIquNDM
2664HO0oW369atyzkSTKQWI8/AIBvxwWMZQFl3Zuoq29YRdsTjCG8FE3KlDHqGKB3FtK
2665qsGgtG7rL+VXxbErQHDbWk2hjh+9Ax/YA9SPTJlxvOKCzFjomDqG04Y48wApHwID
2666AQABMA0GCSqGSIb3DQEBBQUAA4GBAIWMEsGnuVAVess+rLhDityq3RS6iYF+ATwj
2667cSGIL4LcY/oCRaxFWdcqWERbt5+BO5JoPeI3JPV7bI92NZYJqFmduc4jq3TWg/0y
2668cyfYaT5DdPauxYma51N86Xv2S/PBZYPejYqcPIiNOVn8qj8ijaHBZlCBckztImRP
2669T8qAkbYp
2670-----END CERTIFICATE-----
2671Certificate:
2672 Data:
2673 Version: 1 (0x0)
2674 Serial Number:
2675 b9:2f:60:cc:88:9f:a1:7a:46:09:b8:5b:70:6c:8a:af
2676 Signature Algorithm: sha1WithRSAEncryption
2677 Issuer: C=US, O=VeriSign, Inc., OU=Class 2 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network
2678 Validity
2679 Not Before: May 18 00:00:00 1998 GMT
2680 Not After : Aug 1 23:59:59 2028 GMT
2681 Subject: C=US, O=VeriSign, Inc., OU=Class 2 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network
2682 Subject Public Key Info:
2683 Public Key Algorithm: rsaEncryption
2684 RSA Public Key: (1024 bit)
2685 Modulus (1024 bit):
2686 00:a7:88:01:21:74:2c:e7:1a:03:f0:98:e1:97:3c:
2687 0f:21:08:f1:9c:db:97:e9:9a:fc:c2:04:06:13:be:
2688 5f:52:c8:cc:1e:2c:12:56:2c:b8:01:69:2c:cc:99:
2689 1f:ad:b0:96:ae:79:04:f2:13:39:c1:7b:98:ba:08:
2690 2c:e8:c2:84:13:2c:aa:69:e9:09:f4:c7:a9:02:a4:
2691 42:c2:23:4f:4a:d8:f0:0e:a2:fb:31:6c:c9:e6:6f:
2692 99:27:07:f5:e6:f4:4c:78:9e:6d:eb:46:86:fa:b9:
2693 86:c9:54:f2:b2:c4:af:d4:46:1c:5a:c9:15:30:ff:
2694 0d:6c:f5:2d:0e:6d:ce:7f:77
2695 Exponent: 65537 (0x10001)
2696 Signature Algorithm: sha1WithRSAEncryption
2697 72:2e:f9:7f:d1:f1:71:fb:c4:9e:f6:c5:5e:51:8a:40:98:b8:
2698 68:f8:9b:1c:83:d8:e2:9d:bd:ff:ed:a1:e6:66:ea:2f:09:f4:
2699 ca:d7:ea:a5:2b:95:f6:24:60:86:4d:44:2e:83:a5:c4:2d:a0:
2700 d3:ae:78:69:6f:72:da:6c:ae:08:f0:63:92:37:e6:bb:c4:30:
2701 17:ad:77:cc:49:35:aa:cf:d8:8f:d1:be:b7:18:96:47:73:6a:
2702 54:22:34:64:2d:b6:16:9b:59:5b:b4:51:59:3a:b3:0b:14:f4:
2703 12:df:67:a0:f4:ad:32:64:5e:b1:46:72:27:8c:12:7b:c5:44:
2704 b4:ae
2705SHA1 Fingerprint=B3:EA:C4:47:76:C9:C8:1C:EA:F2:9D:95:B6:CC:A0:08:1B:67:EC:9D
2706-----BEGIN CERTIFICATE-----
2707MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQsw
2708CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0Ns
2709YXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH
2710MjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y
2711aXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazAe
2712Fw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJVUzEX
2713MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGlj
2714IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMx
2715KGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s
2716eTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazCBnzANBgkqhkiG9w0B
2717AQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjxnNuX6Zr8wgQGE75fUsjM
2718HiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRCwiNPStjw
2719DqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cC
2720AwEAATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9ji
2721nb3/7aHmZuovCfTK1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAX
2722rXfMSTWqz9iP0b63GJZHc2pUIjRkLbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnIn
2723jBJ7xUS0rg==
2724-----END CERTIFICATE-----
2725Certificate:
2726 Data:
2727 Version: 1 (0x0)
2728 Serial Number: 407 (0x197)
2729 Signature Algorithm: sha1WithRSAEncryption
2730 Issuer: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 3
2731 Validity
2732 Not Before: Aug 10 19:59:08 1998 GMT
2733 Not After : Aug 10 19:36:39 2008 GMT
2734 Subject: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 3
2735 Subject Public Key Info:
2736 Public Key Algorithm: rsaEncryption
2737 RSA Public Key: (1024 bit)
2738 Modulus (1024 bit):
2739 00:e1:f3:b1:2b:0b:ce:dc:14:d9:34:97:62:50:12:
2740 56:63:84:4c:53:fa:c0:85:cf:fa:c1:dd:0f:de:79:
2741 13:7f:53:fb:aa:0e:60:dd:e2:62:bf:c6:ee:4e:99:
2742 34:aa:68:43:35:99:f8:a3:fd:f3:63:bd:01:54:6a:
2743 9e:b2:3a:96:2c:7b:78:28:c6:5a:b5:8d:1a:15:18:
2744 fd:e3:8c:2e:a2:50:09:5b:71:d6:0d:b5:18:1f:19:
2745 8e:04:29:93:93:78:ab:5f:14:e7:73:42:f2:03:0c:
2746 57:a2:1b:50:3b:0b:bb:59:e0:a0:3a:03:ee:27:1b:
2747 5a:4c:b9:b0:08:ca:b9:1a:89
2748 Exponent: 65537 (0x10001)
2749 Signature Algorithm: sha1WithRSAEncryption
2750 85:eb:ad:94:20:06:e9:b2:a2:6b:3b:f2:66:eb:e3:4b:b8:12:
2751 26:05:e5:f4:91:a8:dc:87:dc:98:f4:94:c1:f4:61:bd:d5:9c:
2752 6c:51:73:95:5e:d0:bd:d7:e6:45:dc:3c:cf:46:84:d5:e7:b9:
2753 ec:e4:67:63:6e:00:28:77:71:5d:4a:05:e9:b9:7c:86:cc:c2:
2754 44:bb:de:29:48:da:ea:dd:bd:17:9f:1d:51:01:a8:e8:14:5e:
2755 b1:57:f7:ff:da:8f:ce:95:fe:2d:ed:32:12:77:ff:7c:6a:61:
2756 95:ae:31:72:06:08:f0:f9:f3:0d:8e:e2:ef:a8:53:5d:91:03:
2757 83:de
2758SHA1 Fingerprint=B3:4E:6F:61:FE:70:6B:BE:4C:0A:29:C7:B3:EB:97:A9:9F:AB:2F:86
2759-----BEGIN CERTIFICATE-----
2760MIICUDCCAbkCAgGXMA0GCSqGSIb3DQEBBQUAMHAxCzAJBgNVBAYTAlVTMRgwFgYD
2761VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv
2762bHV0aW9ucywgSW5jLjEeMBwGA1UEAxMVR1RFIEN5YmVyVHJ1c3QgUm9vdCAzMB4X
2763DTk4MDgxMDE5NTkwOFoXDTA4MDgxMDE5MzYzOVowcDELMAkGA1UEBhMCVVMxGDAW
2764BgNVBAoTD0dURSBDb3Jwb3JhdGlvbjEnMCUGA1UECxMeR1RFIEN5YmVyVHJ1c3Qg
2765U29sdXRpb25zLCBJbmMuMR4wHAYDVQQDExVHVEUgQ3liZXJUcnVzdCBSb290IDMw
2766gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOHzsSsLztwU2TSXYlASVmOETFP6
2767wIXP+sHdD955E39T+6oOYN3iYr/G7k6ZNKpoQzWZ+KP982O9AVRqnrI6lix7eCjG
2768WrWNGhUY/eOMLqJQCVtx1g21GB8ZjgQpk5N4q18U53NC8gMMV6IbUDsLu1ngoDoD
27697icbWky5sAjKuRqJAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAheutlCAG6bKiazvy
2770ZuvjS7gSJgXl9JGo3IfcmPSUwfRhvdWcbFFzlV7QvdfmRdw8z0aE1ee57ORnY24A
2771KHdxXUoF6bl8hszCRLveKUja6t29F58dUQGo6BResVf3/9qPzpX+Le0yEnf/fGph
2772la4xcgYI8PnzDY7i76hTXZEDg94=
2773-----END CERTIFICATE-----
2774Certificate:
2775 Data:
2776 Version: 1 (0x0)
2777 Serial Number:
2778 02:ad:66:7e:4e:45:fe:5e:57:6f:3c:98:19:5e:dd:c0
2779 Signature Algorithm: md2WithRSAEncryption
2780 Issuer: C=US, O=RSA Data Security, Inc., OU=Secure Server Certification Authority
2781 Validity
2782 Not Before: Nov 9 00:00:00 1994 GMT
2783 Not After : Jan 7 23:59:59 2010 GMT
2784 Subject: C=US, O=RSA Data Security, Inc., OU=Secure Server Certification Authority
2785 Subject Public Key Info:
2786 Public Key Algorithm: rsaEncryption
2787 RSA Public Key: (1000 bit)
2788 Modulus (1000 bit):
2789 00:92:ce:7a:c1:ae:83:3e:5a:aa:89:83:57:ac:25:
2790 01:76:0c:ad:ae:8e:2c:37:ce:eb:35:78:64:54:03:
2791 e5:84:40:51:c9:bf:8f:08:e2:8a:82:08:d2:16:86:
2792 37:55:e9:b1:21:02:ad:76:68:81:9a:05:a2:4b:c9:
2793 4b:25:66:22:56:6c:88:07:8f:f7:81:59:6d:84:07:
2794 65:70:13:71:76:3e:9b:77:4c:e3:50:89:56:98:48:
2795 b9:1d:a7:29:1a:13:2e:4a:11:59:9c:1e:15:d5:49:
2796 54:2c:73:3a:69:82:b1:97:39:9c:6d:70:67:48:e5:
2797 dd:2d:d6:c8:1e:7b
2798 Exponent: 65537 (0x10001)
2799 Signature Algorithm: md2WithRSAEncryption
2800 65:dd:7e:e1:b2:ec:b0:e2:3a:e0:ec:71:46:9a:19:11:b8:d3:
2801 c7:a0:b4:03:40:26:02:3e:09:9c:e1:12:b3:d1:5a:f6:37:a5:
2802 b7:61:03:b6:5b:16:69:3b:c6:44:08:0c:88:53:0c:6b:97:49:
2803 c7:3e:35:dc:6c:b9:bb:aa:df:5c:bb:3a:2f:93:60:b6:a9:4b:
2804 4d:f2:20:f7:cd:5f:7f:64:7b:8e:dc:00:5c:d7:fa:77:ca:39:
2805 16:59:6f:0e:ea:d3:b5:83:7f:4d:4d:42:56:76:b4:c9:5f:04:
2806 f8:38:f8:eb:d2:5f:75:5f:cd:7b:fc:e5:8e:80:7c:fc:50
2807SHA1 Fingerprint=44:63:C5:31:D7:CC:C1:00:67:94:61:2B:B6:56:D3:BF:82:57:84:6F
2808-----BEGIN CERTIFICATE-----
2809MIICNDCCAaECEAKtZn5ORf5eV288mBle3cAwDQYJKoZIhvcNAQECBQAwXzELMAkG
2810A1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYD
2811VQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk0
2812MTEwOTAwMDAwMFoXDTEwMDEwNzIzNTk1OVowXzELMAkGA1UEBhMCVVMxIDAeBgNV
2813BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2Vy
2814dmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGbMA0GCSqGSIb3DQEBAQUAA4GJ
2815ADCBhQJ+AJLOesGugz5aqomDV6wlAXYMra6OLDfO6zV4ZFQD5YRAUcm/jwjiioII
28160haGN1XpsSECrXZogZoFokvJSyVmIlZsiAeP94FZbYQHZXATcXY+m3dM41CJVphI
2817uR2nKRoTLkoRWZweFdVJVCxzOmmCsZc5nG1wZ0jl3S3WyB57AgMBAAEwDQYJKoZI
2818hvcNAQECBQADfgBl3X7hsuyw4jrg7HFGmhkRuNPHoLQDQCYCPgmc4RKz0Vr2N6W3
2819YQO2WxZpO8ZECAyIUwxrl0nHPjXcbLm7qt9cuzovk2C2qUtN8iD3zV9/ZHuO3ABc
28201/p3yjkWWW8O6tO1g39NTUJWdrTJXwT4OPjr0l91X817/OWOgHz8UA==
2821-----END CERTIFICATE-----
diff --git a/src/lib/libssl/crypto/Makefile b/src/lib/libssl/crypto/Makefile
new file mode 100644
index 0000000000..66cc55c93b
--- /dev/null
+++ b/src/lib/libssl/crypto/Makefile
@@ -0,0 +1,327 @@
1# $OpenBSD: Makefile,v 1.44 2005/11/24 20:49:21 deraadt Exp $
2
3LIB= crypto
4WANTLINT=
5
6SSLEAYDIST= src
7SSL_SRC= ${.CURDIR}/../${SSLEAYDIST}
8LCRYPTO_SRC= ${SSL_SRC}/crypto
9FIPS_SRC= ${SSL_SRC}/fips
10
11.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "arm" || \
12 ${MACHINE_ARCH} == "vax" || ${MACHINE_ARCH} == "amd64" || \
13 ${MACHINE_ARCH} == "alpha"
14CFLAGS+= -DL_ENDIAN
15.else
16CFLAGS+= -DB_ENDIAN
17.endif
18
19.include <bsd.own.mk> # for 'NOPIC' definition
20.if !defined(NOPIC)
21CFLAGS+= -DDSO_DLFCN -DHAVE_DLFCN_H
22.endif
23
24CFLAGS+= -DOPENSSL_NO_IDEA -DTERMIOS -DANSI_SOURCE -DNO_ERR -DOPENSSL_NO_ASM
25CFLAGS+= -DOPENSSL_NO_RC5 -DOPENSSL_NO_KRB5
26CFLAGS+= -DOPENSSL_NO_MDC2
27CFLAGS+= -DNO_WINDOWS_BRAINDEATH
28CFLAGS+= -DOPENSSL_NO_HW_CSWIFT -DOPENSSL_NO_HW_NCIPHER -DOPENSSL_NO_HW_ATALLA
29CFLAGS+= -DOPENSSL_NO_HW_NURON -DOPENSSL_NO_HW_UBSEC -DOPENSSL_NO_HW_AEP
30CFLAGS+= -DOPENSSL_NO_HW_SUREWARE -DOPENSSL_NO_HW_4758_CCA
31CFLAGS+= -I${.CURDIR}/../${SSLEAYDIST}
32CFLAGS+= -I${LCRYPTO_SRC}
33SRCS+= o_time.c
34SRCS+= cryptlib.c ex_data.c cpt_err.c mem.c mem_dbg.c mem_clr.c
35SRCS+= tmdiff.c cversion.c uid.c
36SRCS+= md2_dgst.c md2_one.c
37SRCS+= md5_dgst.c md5_one.c
38SRCS+= sha_dgst.c sha1dgst.c sha_one.c sha1_one.c
39#SRCS+= mdc2dgst.c mdc2_one.c
40SRCS+= hmac.c
41SRCS+= rmd_dgst.c rmd_one.c
42SRCS+= acss_skey.c acss_enc.c
43SRCS+= aes_cbc.c aes_cfb.c aes_ctr.c aes_ecb.c aes_ofb.c aes_misc.c
44SRCS+= cbc_cksm.c cbc_enc.c cfb64enc.c cfb_enc.c \
45 ecb3_enc.c ecb_enc.c enc_read.c enc_writ.c \
46 ofb64enc.c ofb_enc.c pcbc_enc.c \
47 qud_cksm.c rand_key.c rpc_enc.c set_key.c \
48 des_enc.c des_old2.c fcrypt_b.c \
49 fcrypt.c xcbc_enc.c ede_cbcm_enc.c \
50 str2key.c cfb64ede.c ofb64ede.c \
51 des_old.c read2pwd.c
52SRCS+= rc2_ecb.c rc2_skey.c rc2_cbc.c rc2cfb64.c
53SRCS+= rc2ofb64.c
54SRCS+= rc4_skey.c
55#SRCS+= rc5_skey.c rc5_ecb.c rc5cfb64.c rc5cfb64.c
56#SRCS+= rc5ofb64.c rc5_enc.c
57#SRCS+= i_cbc.c i_cfb64.c i_ofb64.c i_ecb.c
58#SRCS+= i_skey.c
59SRCS+= bf_skey.c bf_ecb.c bf_cfb64.c bf_ofb64.c
60SRCS+= c_skey.c c_ecb.c c_cfb64.c c_ofb64.c c_enc.c
61SRCS+= bn_add.c bn_div.c bn_exp.c bn_lib.c
62SRCS+= bn_mul.c bn_print.c bn_rand.c bn_shift.c
63SRCS+= bn_word.c bn_blind.c bn_gcd.c bn_prime.c bn_err.c
64SRCS+= bn_sqr.c bn_recp.c bn_mont.c bn_mpi.c bn_mod.c
65SRCS+= bn_exp2.c bn_ctx.c
66SRCS+= bn_sqrt.c bn_kron.c
67SRCS+= rsa_eay.c rsa_gen.c rsa_lib.c rsa_sign.c
68SRCS+= rsa_saos.c rsa_err.c rsa_pk1.c rsa_ssl.c
69SRCS+= rsa_none.c rsa_chk.c rsa_oaep.c rsa_null.c rsa_asn1.c
70SRCS+= dsa_gen.c dsa_key.c dsa_lib.c dsa_vrf.c
71SRCS+= dsa_sign.c dsa_err.c dsa_asn1.c dsa_ossl.c
72SRCS+= dh_gen.c dh_key.c dh_lib.c dh_check.c dh_err.c dh_asn1.c
73SRCS+= buffer.c buf_err.c
74SRCS+= bio_lib.c bio_cb.c bio_err.c bss_mem.c
75SRCS+= bss_null.c bss_fd.c bss_file.c bss_sock.c
76SRCS+= bss_conn.c bf_null.c bf_buff.c
77SRCS+= b_print.c b_dump.c b_sock.c bss_acpt.c
78SRCS+= bf_nbio.c bss_bio.c bss_log.c
79SRCS+= stack.c
80SRCS+= lhash.c lh_stats.c
81SRCS+= md_rand.c randfile.c rand_lib.c rand_egd.c rand_err.c rand_unix.c
82SRCS+= err.c err_all.c err_prn.c
83SRCS+= obj_dat.c obj_lib.c obj_err.c o_names.c
84SRCS+= bio_b64.c e_bf.c m_sha.c p_open.c
85SRCS+= bio_enc.c e_cast.c e_xcbc_d.c m_dss.c m_sha1.c p_seal.c
86SRCS+= bio_md.c e_des.c encode.c m_dss1.c names.c p_sign.c
87SRCS+= bio_ok.c e_des3.c evp_enc.c m_md2.c p_verify.c
88SRCS+= c_all.c evp_err.c evp_acnf.c m_md4.c p5_crpt.c e_old.c
89SRCS+= c_allc.c evp_key.c m_md5.c p5_crpt2.c
90SRCS+= c_alld.c e_null.c evp_lib.c p_dec.c
91SRCS+= digest.c e_rc2.c evp_pbe.c m_null.c p_enc.c
92SRCS+= e_acss.c e_aes.c e_rc4.c evp_pkey.c m_ripemd.c p_lib.c
93SRCS+= md4_dgst.c md4_one.c
94SRCS+= pem_sign.c pem_seal.c pem_info.c pem_lib.c pem_pkey.c
95SRCS+= pem_all.c pem_err.c pem_x509.c pem_pk8.c pem_oth.c pem_xaux.c
96SRCS+= ui_err.c ui_lib.c ui_openssl.c ui_compat.c ui_util.c
97SRCS+= a_bitstr.c a_mbstr.c a_utctm.c f_enum.c t_bitst.c x_name.c
98SRCS+= a_bool.c a_meth.c a_utf8.c f_int.c t_crl.c tasn_typ.c x_pkey.c
99SRCS+= a_bytes.c a_object.c a_verify.c f_string.c t_pkey.c tasn_utl.c x_pubkey.c
100SRCS+= a_d2i_fp.c a_octet.c asn1_err.c i2d_pr.c t_req.c x_algor.c x_req.c
101SRCS+= a_digest.c a_print.c asn1_lib.c i2d_pu.c t_spki.c x_attrib.c x_sig.c
102SRCS+= a_dup.c a_set.c asn1_par.c n_pkey.c t_x509.c x_bignum.c x_spki.c
103SRCS+= a_enum.c a_sign.c asn_pack.c nsseq.c t_x509a.c x_val.c
104SRCS+= a_gentm.c a_strex.c d2i_pr.c p5_pbe.c tasn_dec.c x_crl.c x_x509.c
105SRCS+= a_hdr.c a_strnid.c d2i_pu.c p5_pbev2.c tasn_enc.c x_exten.c x_x509a.c
106SRCS+= a_i2d_fp.c a_time.c evp_asn1.c tasn_fre.c x_info.c
107SRCS+=a_int.c a_type.c p8_pkey.c tasn_new.c x_long.c asn_moid.c
108SRCS+= x509_d2.c x509_lu.c x509_set.c x509_vfy.c x509spki.c by_dir.c
109SRCS+= x509_def.c x509_obj.c x509_trs.c x509cset.c x509type.c by_file.c
110SRCS+= x509_att.c x509_err.c x509_r2x.c x509_txt.c x509name.c x_all.c
111SRCS+= x509_cmp.c x509_ext.c x509_req.c x509_v3.c x509rset.c
112SRCS+= v3_akey.c v3_alt.c v3_bcons.c v3_bitst.c v3_conf.c v3_cpols.c
113SRCS+= v3_crld.c v3_enum.c v3_extku.c v3_genn.c v3_ia5.c v3_int.c
114SRCS+= v3_lib.c v3_pku.c v3_prn.c v3_skey.c v3_sxnet.c v3_utl.c
115SRCS+= v3err.c v3_info.c v3_purp.c v3_ocsp.c v3_akeya.c v3_pci.c v3_pcia.c
116SRCS+= conf_err.c conf_lib.c conf_def.c conf_api.c conf_mod.c conf_mall.c
117SRCS+= conf_sap.c
118SRCS+= txt_db.c
119SRCS+= pk7_lib.c pkcs7err.c
120SRCS+= pk7_asn1.c pk7_doit.c pk7_mime.c
121SRCS+= pk7_attr.c pk7_smime.c
122SRCS+= c_rle.c c_zlib.c comp_lib.c comp_err.c
123SRCS+= p12_add.c p12_crpt.c p12_init.c p12_mutl.c p12_p8e.c
124SRCS+= p12_asn.c p12_crt.c p12_key.c p12_npas.c p12_utl.c
125SRCS+= p12_attr.c p12_decr.c p12_kiss.c p12_p8d.c pk12err.c
126SRCS+= eng_all.c eng_openssl.c eng_ctrl.c eng_pkey.c
127SRCS+= eng_dyn.c eng_table.c tb_cipher.c eng_err.c tb_rsa.c
128SRCS+= hw_cryptodev.c eng_cnf.c
129SRCS+= tb_dh.c eng_fat.c tb_digest.c eng_init.c
130SRCS+= tb_dsa.c eng_lib.c tb_rand.c eng_list.c
131SRCS+= dso_dl.c dso_dlfcn.c dso_err.c dso_lib.c dso_null.c
132SRCS+= dso_openssl.c dso_win32.c dso_vms.c
133SRCS+= ocsp_asn.c ocsp_err.c ocsp_ht.c ocsp_prn.c ocsp_vfy.c
134SRCS+= ocsp_cl.c ocsp_ext.c ocsp_lib.c ocsp_srv.c
135SRCS+= ec_cvt.c ec_lib.c ecp_mont.c ecp_recp.c
136SRCS+= ec_err.c ec_mult.c ecp_nist.c ecp_smpl.c
137
138# Only used when -DOPENSSL_FIPS is set
139#SRCS+= fips.c fips_err_wrapper.c
140#SRCS+= fips_aes_core.c fips_aes_selftest.c
141#SRCS+= fips_des_enc.c fips_des_selftest.c fips_set_key.c
142#SRCS+= fips_dh_check.c fips_dh_gen.c fips_dh_key.c
143#SRCS+= fips_dsa_ossl.c fips_dsa_gen.c fips_dsa_selftest.c
144#SRCS+= fips_rand.c
145#SRCS+= fips_rsa_eay.c fips_rsa_gen.c fips_rsa_selftest.c
146#SRCS+= fips_sha1dgst.c fips_sha1_selftest.c
147
148.PATH: ${LCRYPTO_SRC}/md2 ${LCRYPTO_SRC}/md5 ${LCRYPTO_SRC}/sha \
149 ${LCRYPTO_SRC}/mdc2 ${LCRYPTO_SRC}/hmac ${LCRYPTO_SRC}/ripemd \
150 ${LCRYPTO_SRC}/des ${LCRYPTO_SRC}/rc2 ${LCRYPTO_SRC}/rc4 \
151 ${LCRYPTO_SRC}/rc5 ${LCRYPTO_SRC}/idea ${LCRYPTO_SRC}/bf \
152 ${LCRYPTO_SRC}/cast ${LCRYPTO_SRC}/bn ${LCRYPTO_SRC}/rsa \
153 ${LCRYPTO_SRC}/dsa ${LCRYPTO_SRC}/dh ${LCRYPTO_SRC}/buffer \
154 ${LCRYPTO_SRC}/bio ${LCRYPTO_SRC}/stack ${LCRYPTO_SRC}/lhash \
155 ${LCRYPTO_SRC}/rand ${LCRYPTO_SRC}/err ${LCRYPTO_SRC}/objects \
156 ${LCRYPTO_SRC}/evp ${LCRYPTO_SRC}/pem ${LCRYPTO_SRC}/asn1 \
157 ${LCRYPTO_SRC}/asn1 ${LCRYPTO_SRC}/x509 ${LCRYPTO_SRC}/conf \
158 ${LCRYPTO_SRC}/pkcs7 ${LCRYPTO_SRC}/x509v3 ${LCRYPTO_SRC}/pkcs12 \
159 ${LCRYPTO_SRC}/comp ${LCRYPTO_SRC}/txt_db ${LCRYPTO_SRC}/md4 \
160 ${LCRYPTO_SRC}/engine ${LCRYPTO_SRC}/dso ${LCRYPTO_SRC}/ui \
161 ${LCRYPTO_SRC}/ocsp ${LCRYPTO_SRC}/ec ${LCRYPTO_SRC}/aes \
162 ${LCRYPTO_SRC} \
163 ${LCRYPTO_SRC}/acss ${.CURDIR}/arch/${MACHINE_ARCH} \
164 ${LCRYPTO_SRC}/bn/asm \
165 ${FIPS_SRC}/ ${FIPS_SRC}/aes ${FIPS_SRC}/des ${FIPS_SRC}/dh \
166 ${FIPS_SRC}/dsa ${FIPS_SRC}/rand ${FIPS_SRC}/rsa ${FIPS_SRC}/sha1
167
168HDRS=\
169 crypto/acss/acss.h \
170 crypto/aes/aes.h \
171 crypto/asn1/asn1.h \
172 crypto/asn1/asn1_mac.h \
173 crypto/asn1/asn1t.h \
174 crypto/bf/blowfish.h \
175 crypto/bio/bio.h \
176 crypto/bn/bn.h \
177 crypto/buffer/buffer.h \
178 crypto/cast/cast.h \
179 crypto/comp/comp.h \
180 crypto/conf/conf.h \
181 crypto/conf/conf_api.h \
182 crypto/crypto.h \
183 crypto/des/des.h \
184 crypto/des/des_old.h \
185 crypto/dh/dh.h \
186 crypto/dsa/dsa.h \
187 crypto/dso/dso.h \
188 crypto/ebcdic.h \
189 crypto/ec/ec.h \
190 crypto/engine/engine.h \
191 crypto/err/err.h \
192 crypto/evp/evp.h \
193 crypto/hmac/hmac.h \
194 crypto/idea/idea.h \
195 crypto/lhash/lhash.h \
196 crypto/md2/md2.h \
197 crypto/md4/md4.h \
198 crypto/md5/md5.h \
199 crypto/mdc2/mdc2.h \
200 crypto/objects/objects.h \
201 crypto/ocsp/ocsp.h \
202 crypto/opensslv.h \
203 crypto/ossl_typ.h \
204 crypto/pem/pem.h \
205 crypto/pem/pem2.h \
206 crypto/pkcs12/pkcs12.h \
207 crypto/pkcs7/pkcs7.h \
208 crypto/rand/rand.h \
209 crypto/rc2/rc2.h \
210 crypto/rc4/rc4.h \
211 crypto/rc5/rc5.h \
212 crypto/ripemd/ripemd.h \
213 crypto/rsa/rsa.h \
214 crypto/sha/sha.h \
215 crypto/stack/safestack.h \
216 crypto/stack/stack.h \
217 crypto/symhacks.h \
218 crypto/tmdiff.h \
219 crypto/txt_db/txt_db.h \
220 crypto/ui/ui.h \
221 crypto/ui/ui_compat.h \
222 crypto/x509/x509.h \
223 crypto/x509/x509_vfy.h \
224 crypto/x509v3/x509v3.h \
225 e_os2.h \
226 fips/fips.h \
227 fips/rand/fips_rand.h
228
229HDRS_GEN=\
230 ${.CURDIR}/arch/${MACHINE_ARCH}/opensslconf.h \
231 ${.OBJDIR}/obj_mac.h
232
233includes: obj_mac.h
234 @test -d ${DESTDIR}/usr/include/openssl || \
235 mkdir ${DESTDIR}/usr/include/openssl
236 @cd ${SSL_SRC}; \
237 for i in $(HDRS); do \
238 j="cmp -s $$i ${DESTDIR}/usr/include/openssl/`basename $$i` || \
239 ${INSTALL} ${INSTALL_COPY} -o ${BINOWN} -g ${BINGRP} -m 444 $$i\
240 ${DESTDIR}/usr/include/openssl"; \
241 echo $$j; \
242 eval "$$j"; \
243 done; \
244 for i in $(HDRS_GEN); do \
245 j="cmp -s $$i ${DESTDIR}/usr/include/openssl/`basename $$i` || \
246 ${INSTALL} ${INSTALL_COPY} -o ${BINOWN} -g ${BINGRP} -m 444 $$i\
247 ${DESTDIR}/usr/include/openssl"; \
248 echo $$j; \
249 eval "$$j"; \
250 done;
251
252# generated
253CFLAGS+= -I${.OBJDIR}
254
255GENERATED=obj_mac.h obj_dat.h
256CLEANFILES=${GENERATED} obj_mac.num.tmp
257SSL_OBJECTS=${SSL_SRC}/crypto/objects
258
259obj_mac.h: ${SSL_OBJECTS}/objects.h ${SSL_OBJECTS}/obj_mac.num ${SSL_OBJECTS}/objects.txt
260 cat ${SSL_OBJECTS}/obj_mac.num > obj_mac.num.tmp
261 /usr/bin/perl ${SSL_OBJECTS}/objects.pl ${SSL_OBJECTS}/objects.txt obj_mac.num.tmp obj_mac.h
262
263obj_dat.h: obj_mac.h
264 /usr/bin/perl ${SSL_OBJECTS}/obj_dat.pl obj_mac.h obj_dat.h
265
266.if (${MACHINE_ARCH} == "vax")
267# egcs bombs optimising this file on vax
268a_strnid.o:
269 ${CC} ${CFLAGS} -O0 ${CPPFLAGS} -c ${.IMPSRC}
270a_strnid.po:
271 ${CC} ${CFLAGS} -O0 ${CPPFLAGS} -c ${.IMPSRC} -o $@
272des_enc.o:
273 ${CC} ${CFLAGS} -O1 ${CPPFLAGS} -c ${.IMPSRC}
274des_enc.po:
275 ${CC} ${CFLAGS} -O1 ${CPPFLAGS} -c ${.IMPSRC} -o $@
276.endif
277
278.if (${MACHINE_ARCH} == "i386")
279CFLAGS+= -DAES_ASM
280CFLAGS+= -DMD5_ASM
281CFLAGS+= -DSHA1_ASM
282CFLAGS+= -DRMD160_ASM
283CFLAGS+= -DOPENBSD_CAST_ASM
284CFLAGS+= -DOPENBSD_DES_ASM
285SSLASM=\
286 aes aes-586 \
287 bf bf-586 \
288 bn bn-586 \
289 bn co-586 \
290 cast cast-586 \
291 des des-586 \
292 md5 md5-586 \
293 rc4 rc4-586 \
294 ripemd rmd-586 \
295 sha sha1-586
296.for dir f in ${SSLASM}
297SRCS+= ${f}.S
298GENERATED+=${f}.S
299${f}.S: ${LCRYPTO_SRC}/${dir}/asm/${f}.pl ${LCRYPTO_SRC}/perlasm/x86unix.pl
300 /usr/bin/perl -I${LCRYPTO_SRC}/perlasm -I${LCRYPTO_SRC}/${dir}/asm \
301 ${LCRYPTO_SRC}/${dir}/asm/${f}.pl openbsd-elf 386 > ${.TARGET}
302.endfor
303SRCS+= bf_cbc.c
304.else
305.if (${MACHINE_ARCH} == "vax")
306SRCS+= aes_core.c
307SRCS+= bf_enc.c
308SRCS+= bn_asm_vax.S
309SRCS+= rc4_enc.c
310.else
311.if (${MACHINE_ARCH} == "amd64")
312SRCS+= aes_core.c
313SRCS+= bf_enc.c
314SRCS+= x86_64-gcc.c
315SRCS+= rc4_enc.c
316.else
317SRCS+= aes_core.c
318SRCS+= bf_enc.c
319SRCS+= bn_asm.c
320SRCS+= rc4_enc.c
321.endif
322.endif
323.endif
324
325all beforedepend: ${GENERATED}
326
327.include <bsd.lib.mk>
diff --git a/src/lib/libssl/crypto/arch/alpha/opensslconf.h b/src/lib/libssl/crypto/arch/alpha/opensslconf.h
new file mode 100644
index 0000000000..c33ccc8a0f
--- /dev/null
+++ b/src/lib/libssl/crypto/arch/alpha/opensslconf.h
@@ -0,0 +1,180 @@
1/* opensslconf.h */
2/* WARNING: Generated automatically from opensslconf.h.in by Configure. */
3
4/* OpenSSL was configured with the following options: */
5#ifndef OPENSSL_DOING_MAKEDEPEND
6
7#ifndef OPENSSL_NO_KRB5
8# define OPENSSL_NO_KRB5
9#endif
10
11#endif /* OPENSSL_DOING_MAKEDEPEND */
12
13/* The OPENSSL_NO_* macros are also defined as NO_* if the application
14 asks for it. This is a transient feature that is provided for those
15 who haven't had the time to do the appropriate changes in their
16 applications. */
17#ifdef OPENSSL_ALGORITHM_DEFINES
18# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5)
19# define NO_KRB5
20# endif
21#endif
22
23/* crypto/opensslconf.h.in */
24
25/* Generate 80386 code? */
26#undef I386_ONLY
27
28#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
29#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
30#define OPENSSLDIR "/etc/ssl"
31#endif
32#endif
33
34#undef OPENSSL_UNISTD
35#define OPENSSL_UNISTD <unistd.h>
36
37#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
38
39#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
40#define IDEA_INT unsigned int
41#endif
42
43#if defined(HEADER_MD2_H) && !defined(MD2_INT)
44#define MD2_INT unsigned int
45#endif
46
47#if defined(HEADER_RC2_H) && !defined(RC2_INT)
48/* I need to put in a mod for the alpha - eay */
49#define RC2_INT unsigned int
50#endif
51
52#if defined(HEADER_RC4_H)
53#if !defined(RC4_INT)
54/* using int types make the structure larger but make the code faster
55 * on most boxes I have tested - up to %20 faster. */
56/*
57 * I don't know what does "most" mean, but declaring "int" is a must on:
58 * - Intel P6 because partial register stalls are very expensive;
59 * - elder Alpha because it lacks byte load/store instructions;
60 */
61#define RC4_INT unsigned int
62#endif
63#if !defined(RC4_CHUNK)
64/*
65 * This enables code handling data aligned at natural CPU word
66 * boundary. See crypto/rc4/rc4_enc.c for further details.
67 */
68#undef RC4_CHUNK
69#endif
70#endif
71
72#if (defined(HEADER_DES_H) || defined(HEADER_DES_OLD_H)) && !defined(DES_LONG)
73/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
74 * %20 speed up (longs are 8 bytes, int's are 4). */
75#ifndef DES_LONG
76#define DES_LONG unsigned int
77#endif
78#endif
79
80#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
81#define CONFIG_HEADER_BN_H
82#undef BN_LLONG
83
84/* Should we define BN_DIV2W here? */
85
86/* Only one for the following should be defined */
87/* The prime number generation stuff may not work when
88 * EIGHT_BIT but I don't care since I've only used this mode
89 * for debuging the bignum libraries */
90#define SIXTY_FOUR_BIT_LONG
91#undef SIXTY_FOUR_BIT
92#undef THIRTY_TWO_BIT
93#undef SIXTEEN_BIT
94#undef EIGHT_BIT
95#endif
96
97#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
98#define CONFIG_HEADER_RC4_LOCL_H
99/* if this is defined data[i] is used instead of *data, this is a %20
100 * speedup on x86 */
101#undef RC4_INDEX
102#endif
103
104#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
105#define CONFIG_HEADER_BF_LOCL_H
106#undef BF_PTR
107#endif /* HEADER_BF_LOCL_H */
108
109#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H)
110#define CONFIG_HEADER_DES_LOCL_H
111#ifndef DES_DEFAULT_OPTIONS
112/* the following is tweaked from a config script, that is why it is a
113 * protected undef/define */
114#ifndef DES_PTR
115#define DES_PTR
116#endif
117
118/* This helps C compiler generate the correct code for multiple functional
119 * units. It reduces register dependancies at the expense of 2 more
120 * registers */
121#ifndef DES_RISC1
122#undef DES_RISC1
123#endif
124
125#ifndef DES_RISC2
126#define DES_RISC2
127#endif
128
129#if defined(DES_RISC1) && defined(DES_RISC2)
130YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
131#endif
132
133/* Unroll the inner loop, this sometimes helps, sometimes hinders.
134 * Very mucy CPU dependant */
135#ifndef DES_UNROLL
136#undef DES_UNROLL
137#endif
138
139/* These default values were supplied by
140 * Peter Gutman <pgut001@cs.auckland.ac.nz>
141 * They are only used if nothing else has been defined */
142#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
143/* Special defines which change the way the code is built depending on the
144 CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
145 even newer MIPS CPU's, but at the moment one size fits all for
146 optimization options. Older Sparc's work better with only UNROLL, but
147 there's no way to tell at compile time what it is you're running on */
148
149#if defined( sun ) /* Newer Sparc's */
150# define DES_PTR
151# define DES_RISC1
152# define DES_UNROLL
153#elif defined( __ultrix ) /* Older MIPS */
154# define DES_PTR
155# define DES_RISC2
156# define DES_UNROLL
157#elif defined( __osf1__ ) /* Alpha */
158# define DES_PTR
159# define DES_RISC2
160#elif defined ( _AIX ) /* RS6000 */
161 /* Unknown */
162#elif defined( __hpux ) /* HP-PA */
163 /* Unknown */
164#elif defined( __aux ) /* 68K */
165 /* Unknown */
166#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */
167# define DES_UNROLL
168#elif defined( __sgi ) /* Newer MIPS */
169# define DES_PTR
170# define DES_RISC2
171# define DES_UNROLL
172#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */
173# define DES_PTR
174# define DES_RISC1
175# define DES_UNROLL
176#endif /* Systems-specific speed defines */
177#endif
178
179#endif /* DES_DEFAULT_OPTIONS */
180#endif /* HEADER_DES_LOCL_H */
diff --git a/src/lib/libssl/crypto/arch/amd64/opensslconf.h b/src/lib/libssl/crypto/arch/amd64/opensslconf.h
new file mode 100644
index 0000000000..c33ccc8a0f
--- /dev/null
+++ b/src/lib/libssl/crypto/arch/amd64/opensslconf.h
@@ -0,0 +1,180 @@
1/* opensslconf.h */
2/* WARNING: Generated automatically from opensslconf.h.in by Configure. */
3
4/* OpenSSL was configured with the following options: */
5#ifndef OPENSSL_DOING_MAKEDEPEND
6
7#ifndef OPENSSL_NO_KRB5
8# define OPENSSL_NO_KRB5
9#endif
10
11#endif /* OPENSSL_DOING_MAKEDEPEND */
12
13/* The OPENSSL_NO_* macros are also defined as NO_* if the application
14 asks for it. This is a transient feature that is provided for those
15 who haven't had the time to do the appropriate changes in their
16 applications. */
17#ifdef OPENSSL_ALGORITHM_DEFINES
18# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5)
19# define NO_KRB5
20# endif
21#endif
22
23/* crypto/opensslconf.h.in */
24
25/* Generate 80386 code? */
26#undef I386_ONLY
27
28#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
29#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
30#define OPENSSLDIR "/etc/ssl"
31#endif
32#endif
33
34#undef OPENSSL_UNISTD
35#define OPENSSL_UNISTD <unistd.h>
36
37#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
38
39#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
40#define IDEA_INT unsigned int
41#endif
42
43#if defined(HEADER_MD2_H) && !defined(MD2_INT)
44#define MD2_INT unsigned int
45#endif
46
47#if defined(HEADER_RC2_H) && !defined(RC2_INT)
48/* I need to put in a mod for the alpha - eay */
49#define RC2_INT unsigned int
50#endif
51
52#if defined(HEADER_RC4_H)
53#if !defined(RC4_INT)
54/* using int types make the structure larger but make the code faster
55 * on most boxes I have tested - up to %20 faster. */
56/*
57 * I don't know what does "most" mean, but declaring "int" is a must on:
58 * - Intel P6 because partial register stalls are very expensive;
59 * - elder Alpha because it lacks byte load/store instructions;
60 */
61#define RC4_INT unsigned int
62#endif
63#if !defined(RC4_CHUNK)
64/*
65 * This enables code handling data aligned at natural CPU word
66 * boundary. See crypto/rc4/rc4_enc.c for further details.
67 */
68#undef RC4_CHUNK
69#endif
70#endif
71
72#if (defined(HEADER_DES_H) || defined(HEADER_DES_OLD_H)) && !defined(DES_LONG)
73/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
74 * %20 speed up (longs are 8 bytes, int's are 4). */
75#ifndef DES_LONG
76#define DES_LONG unsigned int
77#endif
78#endif
79
80#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
81#define CONFIG_HEADER_BN_H
82#undef BN_LLONG
83
84/* Should we define BN_DIV2W here? */
85
86/* Only one for the following should be defined */
87/* The prime number generation stuff may not work when
88 * EIGHT_BIT but I don't care since I've only used this mode
89 * for debuging the bignum libraries */
90#define SIXTY_FOUR_BIT_LONG
91#undef SIXTY_FOUR_BIT
92#undef THIRTY_TWO_BIT
93#undef SIXTEEN_BIT
94#undef EIGHT_BIT
95#endif
96
97#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
98#define CONFIG_HEADER_RC4_LOCL_H
99/* if this is defined data[i] is used instead of *data, this is a %20
100 * speedup on x86 */
101#undef RC4_INDEX
102#endif
103
104#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
105#define CONFIG_HEADER_BF_LOCL_H
106#undef BF_PTR
107#endif /* HEADER_BF_LOCL_H */
108
109#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H)
110#define CONFIG_HEADER_DES_LOCL_H
111#ifndef DES_DEFAULT_OPTIONS
112/* the following is tweaked from a config script, that is why it is a
113 * protected undef/define */
114#ifndef DES_PTR
115#define DES_PTR
116#endif
117
118/* This helps C compiler generate the correct code for multiple functional
119 * units. It reduces register dependancies at the expense of 2 more
120 * registers */
121#ifndef DES_RISC1
122#undef DES_RISC1
123#endif
124
125#ifndef DES_RISC2
126#define DES_RISC2
127#endif
128
129#if defined(DES_RISC1) && defined(DES_RISC2)
130YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
131#endif
132
133/* Unroll the inner loop, this sometimes helps, sometimes hinders.
134 * Very mucy CPU dependant */
135#ifndef DES_UNROLL
136#undef DES_UNROLL
137#endif
138
139/* These default values were supplied by
140 * Peter Gutman <pgut001@cs.auckland.ac.nz>
141 * They are only used if nothing else has been defined */
142#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
143/* Special defines which change the way the code is built depending on the
144 CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
145 even newer MIPS CPU's, but at the moment one size fits all for
146 optimization options. Older Sparc's work better with only UNROLL, but
147 there's no way to tell at compile time what it is you're running on */
148
149#if defined( sun ) /* Newer Sparc's */
150# define DES_PTR
151# define DES_RISC1
152# define DES_UNROLL
153#elif defined( __ultrix ) /* Older MIPS */
154# define DES_PTR
155# define DES_RISC2
156# define DES_UNROLL
157#elif defined( __osf1__ ) /* Alpha */
158# define DES_PTR
159# define DES_RISC2
160#elif defined ( _AIX ) /* RS6000 */
161 /* Unknown */
162#elif defined( __hpux ) /* HP-PA */
163 /* Unknown */
164#elif defined( __aux ) /* 68K */
165 /* Unknown */
166#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */
167# define DES_UNROLL
168#elif defined( __sgi ) /* Newer MIPS */
169# define DES_PTR
170# define DES_RISC2
171# define DES_UNROLL
172#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */
173# define DES_PTR
174# define DES_RISC1
175# define DES_UNROLL
176#endif /* Systems-specific speed defines */
177#endif
178
179#endif /* DES_DEFAULT_OPTIONS */
180#endif /* HEADER_DES_LOCL_H */
diff --git a/src/lib/libssl/crypto/arch/arm/opensslconf.h b/src/lib/libssl/crypto/arch/arm/opensslconf.h
new file mode 100644
index 0000000000..47a6dd8596
--- /dev/null
+++ b/src/lib/libssl/crypto/arch/arm/opensslconf.h
@@ -0,0 +1,180 @@
1/* opensslconf.h */
2/* WARNING: Generated automatically from opensslconf.h.in by Configure. */
3
4/* OpenSSL was configured with the following options: */
5#ifndef OPENSSL_DOING_MAKEDEPEND
6
7#ifndef OPENSSL_NO_KRB5
8# define OPENSSL_NO_KRB5
9#endif
10
11#endif /* OPENSSL_DOING_MAKEDEPEND */
12
13/* The OPENSSL_NO_* macros are also defined as NO_* if the application
14 asks for it. This is a transient feature that is provided for those
15 who haven't had the time to do the appropriate changes in their
16 applications. */
17#ifdef OPENSSL_ALGORITHM_DEFINES
18# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5)
19# define NO_KRB5
20# endif
21#endif
22
23/* crypto/opensslconf.h.in */
24
25/* Generate 80386 code? */
26#undef I386_ONLY
27
28#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
29#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
30#define OPENSSLDIR "/etc/ssl"
31#endif
32#endif
33
34#undef OPENSSL_UNISTD
35#define OPENSSL_UNISTD <unistd.h>
36
37#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
38
39#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
40#define IDEA_INT unsigned int
41#endif
42
43#if defined(HEADER_MD2_H) && !defined(MD2_INT)
44#define MD2_INT unsigned int
45#endif
46
47#if defined(HEADER_RC2_H) && !defined(RC2_INT)
48/* I need to put in a mod for the alpha - eay */
49#define RC2_INT unsigned int
50#endif
51
52#if defined(HEADER_RC4_H)
53#if !defined(RC4_INT)
54/* using int types make the structure larger but make the code faster
55 * on most boxes I have tested - up to %20 faster. */
56/*
57 * I don't know what does "most" mean, but declaring "int" is a must on:
58 * - Intel P6 because partial register stalls are very expensive;
59 * - elder Alpha because it lacks byte load/store instructions;
60 */
61#define RC4_INT unsigned int
62#endif
63#if !defined(RC4_CHUNK)
64/*
65 * This enables code handling data aligned at natural CPU word
66 * boundary. See crypto/rc4/rc4_enc.c for further details.
67 */
68#undef RC4_CHUNK
69#endif
70#endif
71
72#if (defined(HEADER_DES_H) || defined(HEADER_DES_OLD_H)) && !defined(DES_LONG)
73/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
74 * %20 speed up (longs are 8 bytes, int's are 4). */
75#ifndef DES_LONG
76#define DES_LONG unsigned int
77#endif
78#endif
79
80#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
81#define CONFIG_HEADER_BN_H
82#define BN_LLONG
83
84/* Should we define BN_DIV2W here? */
85
86/* Only one for the following should be defined */
87/* The prime number generation stuff may not work when
88 * EIGHT_BIT but I don't care since I've only used this mode
89 * for debuging the bignum libraries */
90#undef SIXTY_FOUR_BIT_LONG
91#undef SIXTY_FOUR_BIT
92#define THIRTY_TWO_BIT
93#undef SIXTEEN_BIT
94#undef EIGHT_BIT
95#endif
96
97#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
98#define CONFIG_HEADER_RC4_LOCL_H
99/* if this is defined data[i] is used instead of *data, this is a %20
100 * speedup on x86 */
101#define RC4_INDEX
102#endif
103
104#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
105#define CONFIG_HEADER_BF_LOCL_H
106#undef BF_PTR
107#endif /* HEADER_BF_LOCL_H */
108
109#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H)
110#define CONFIG_HEADER_DES_LOCL_H
111#ifndef DES_DEFAULT_OPTIONS
112/* the following is tweaked from a config script, that is why it is a
113 * protected undef/define */
114#ifndef DES_PTR
115#undef DES_PTR
116#endif
117
118/* This helps C compiler generate the correct code for multiple functional
119 * units. It reduces register dependancies at the expense of 2 more
120 * registers */
121#ifndef DES_RISC1
122#undef DES_RISC1
123#endif
124
125#ifndef DES_RISC2
126#undef DES_RISC2
127#endif
128
129#if defined(DES_RISC1) && defined(DES_RISC2)
130YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
131#endif
132
133/* Unroll the inner loop, this sometimes helps, sometimes hinders.
134 * Very mucy CPU dependant */
135#ifndef DES_UNROLL
136#define DES_UNROLL
137#endif
138
139/* These default values were supplied by
140 * Peter Gutman <pgut001@cs.auckland.ac.nz>
141 * They are only used if nothing else has been defined */
142#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
143/* Special defines which change the way the code is built depending on the
144 CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
145 even newer MIPS CPU's, but at the moment one size fits all for
146 optimization options. Older Sparc's work better with only UNROLL, but
147 there's no way to tell at compile time what it is you're running on */
148
149#if defined( sun ) /* Newer Sparc's */
150# define DES_PTR
151# define DES_RISC1
152# define DES_UNROLL
153#elif defined( __ultrix ) /* Older MIPS */
154# define DES_PTR
155# define DES_RISC2
156# define DES_UNROLL
157#elif defined( __osf1__ ) /* Alpha */
158# define DES_PTR
159# define DES_RISC2
160#elif defined ( _AIX ) /* RS6000 */
161 /* Unknown */
162#elif defined( __hpux ) /* HP-PA */
163 /* Unknown */
164#elif defined( __aux ) /* 68K */
165 /* Unknown */
166#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */
167# define DES_UNROLL
168#elif defined( __sgi ) /* Newer MIPS */
169# define DES_PTR
170# define DES_RISC2
171# define DES_UNROLL
172#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */
173# define DES_PTR
174# define DES_RISC1
175# define DES_UNROLL
176#endif /* Systems-specific speed defines */
177#endif
178
179#endif /* DES_DEFAULT_OPTIONS */
180#endif /* HEADER_DES_LOCL_H */
diff --git a/src/lib/libssl/src/crypto/opensslconf.h b/src/lib/libssl/crypto/arch/hppa/opensslconf.h
index 492041bc7c..0334dbdfc6 100644
--- a/src/lib/libssl/src/crypto/opensslconf.h
+++ b/src/lib/libssl/crypto/arch/hppa/opensslconf.h
@@ -27,7 +27,7 @@
27 27
28#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */ 28#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
29#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR) 29#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
30#define OPENSSLDIR "/usr/local/ssl" 30#define OPENSSLDIR "/etc/ssl"
31#endif 31#endif
32#endif 32#endif
33 33
@@ -69,7 +69,7 @@
69#endif 69#endif
70#endif 70#endif
71 71
72#if (defined(HEADER_NEW_DES_H) || defined(HEADER_DES_H)) && !defined(DES_LONG) 72#if (defined(HEADER_DES_H) || defined(HEADER_DES_OLD_H)) && !defined(DES_LONG)
73/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a 73/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
74 * %20 speed up (longs are 8 bytes, int's are 4). */ 74 * %20 speed up (longs are 8 bytes, int's are 4). */
75#ifndef DES_LONG 75#ifndef DES_LONG
@@ -79,7 +79,7 @@
79 79
80#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H) 80#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
81#define CONFIG_HEADER_BN_H 81#define CONFIG_HEADER_BN_H
82#undef BN_LLONG 82#define BN_LLONG
83 83
84/* Should we define BN_DIV2W here? */ 84/* Should we define BN_DIV2W here? */
85 85
@@ -98,7 +98,7 @@
98#define CONFIG_HEADER_RC4_LOCL_H 98#define CONFIG_HEADER_RC4_LOCL_H
99/* if this is defined data[i] is used instead of *data, this is a %20 99/* if this is defined data[i] is used instead of *data, this is a %20
100 * speedup on x86 */ 100 * speedup on x86 */
101#undef RC4_INDEX 101#define RC4_INDEX
102#endif 102#endif
103 103
104#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H) 104#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
@@ -133,7 +133,7 @@ YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
133/* Unroll the inner loop, this sometimes helps, sometimes hinders. 133/* Unroll the inner loop, this sometimes helps, sometimes hinders.
134 * Very mucy CPU dependant */ 134 * Very mucy CPU dependant */
135#ifndef DES_UNROLL 135#ifndef DES_UNROLL
136#undef DES_UNROLL 136#define DES_UNROLL
137#endif 137#endif
138 138
139/* These default values were supplied by 139/* These default values were supplied by
diff --git a/src/lib/libssl/crypto/arch/i386/opensslconf.h b/src/lib/libssl/crypto/arch/i386/opensslconf.h
new file mode 100644
index 0000000000..7361ac56a1
--- /dev/null
+++ b/src/lib/libssl/crypto/arch/i386/opensslconf.h
@@ -0,0 +1,180 @@
1/* opensslconf.h */
2/* WARNING: Generated automatically from opensslconf.h.in by Configure. */
3
4/* OpenSSL was configured with the following options: */
5#ifndef OPENSSL_DOING_MAKEDEPEND
6
7#ifndef OPENSSL_NO_KRB5
8# define OPENSSL_NO_KRB5
9#endif
10
11#endif /* OPENSSL_DOING_MAKEDEPEND */
12
13/* The OPENSSL_NO_* macros are also defined as NO_* if the application
14 asks for it. This is a transient feature that is provided for those
15 who haven't had the time to do the appropriate changes in their
16 applications. */
17#ifdef OPENSSL_ALGORITHM_DEFINES
18# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5)
19# define NO_KRB5
20# endif
21#endif
22
23/* crypto/opensslconf.h.in */
24
25/* Generate 80386 code? */
26#undef I386_ONLY
27
28#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
29#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
30#define OPENSSLDIR "/etc/ssl"
31#endif
32#endif
33
34#undef OPENSSL_UNISTD
35#define OPENSSL_UNISTD <unistd.h>
36
37#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
38
39#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
40#define IDEA_INT unsigned int
41#endif
42
43#if defined(HEADER_MD2_H) && !defined(MD2_INT)
44#define MD2_INT unsigned int
45#endif
46
47#if defined(HEADER_RC2_H) && !defined(RC2_INT)
48/* I need to put in a mod for the alpha - eay */
49#define RC2_INT unsigned int
50#endif
51
52#if defined(HEADER_RC4_H)
53#if !defined(RC4_INT)
54/* using int types make the structure larger but make the code faster
55 * on most boxes I have tested - up to %20 faster. */
56/*
57 * I don't know what does "most" mean, but declaring "int" is a must on:
58 * - Intel P6 because partial register stalls are very expensive;
59 * - elder Alpha because it lacks byte load/store instructions;
60 */
61#define RC4_INT unsigned int
62#endif
63#if !defined(RC4_CHUNK)
64/*
65 * This enables code handling data aligned at natural CPU word
66 * boundary. See crypto/rc4/rc4_enc.c for further details.
67 */
68#undef RC4_CHUNK
69#endif
70#endif
71
72#if (defined(HEADER_DES_H) || defined(HEADER_DES_OLD_H)) && !defined(DES_LONG)
73/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
74 * %20 speed up (longs are 8 bytes, int's are 4). */
75#ifndef DES_LONG
76#define DES_LONG unsigned long
77#endif
78#endif
79
80#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
81#define CONFIG_HEADER_BN_H
82#define BN_LLONG
83
84/* Should we define BN_DIV2W here? */
85
86/* Only one for the following should be defined */
87/* The prime number generation stuff may not work when
88 * EIGHT_BIT but I don't care since I've only used this mode
89 * for debuging the bignum libraries */
90#undef SIXTY_FOUR_BIT_LONG
91#undef SIXTY_FOUR_BIT
92#define THIRTY_TWO_BIT
93#undef SIXTEEN_BIT
94#undef EIGHT_BIT
95#endif
96
97#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
98#define CONFIG_HEADER_RC4_LOCL_H
99/* if this is defined data[i] is used instead of *data, this is a %20
100 * speedup on x86 */
101#define RC4_INDEX
102#endif
103
104#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
105#define CONFIG_HEADER_BF_LOCL_H
106#undef BF_PTR
107#endif /* HEADER_BF_LOCL_H */
108
109#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H)
110#define CONFIG_HEADER_DES_LOCL_H
111#ifndef DES_DEFAULT_OPTIONS
112/* the following is tweaked from a config script, that is why it is a
113 * protected undef/define */
114#ifndef DES_PTR
115#define DES_PTR
116#endif
117
118/* This helps C compiler generate the correct code for multiple functional
119 * units. It reduces register dependancies at the expense of 2 more
120 * registers */
121#ifndef DES_RISC1
122#define DES_RISC1
123#endif
124
125#ifndef DES_RISC2
126#undef DES_RISC2
127#endif
128
129#if defined(DES_RISC1) && defined(DES_RISC2)
130YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
131#endif
132
133/* Unroll the inner loop, this sometimes helps, sometimes hinders.
134 * Very mucy CPU dependant */
135#ifndef DES_UNROLL
136#define DES_UNROLL
137#endif
138
139/* These default values were supplied by
140 * Peter Gutman <pgut001@cs.auckland.ac.nz>
141 * They are only used if nothing else has been defined */
142#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
143/* Special defines which change the way the code is built depending on the
144 CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
145 even newer MIPS CPU's, but at the moment one size fits all for
146 optimization options. Older Sparc's work better with only UNROLL, but
147 there's no way to tell at compile time what it is you're running on */
148
149#if defined( sun ) /* Newer Sparc's */
150# define DES_PTR
151# define DES_RISC1
152# define DES_UNROLL
153#elif defined( __ultrix ) /* Older MIPS */
154# define DES_PTR
155# define DES_RISC2
156# define DES_UNROLL
157#elif defined( __osf1__ ) /* Alpha */
158# define DES_PTR
159# define DES_RISC2
160#elif defined ( _AIX ) /* RS6000 */
161 /* Unknown */
162#elif defined( __hpux ) /* HP-PA */
163 /* Unknown */
164#elif defined( __aux ) /* 68K */
165 /* Unknown */
166#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */
167# define DES_UNROLL
168#elif defined( __sgi ) /* Newer MIPS */
169# define DES_PTR
170# define DES_RISC2
171# define DES_UNROLL
172#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */
173# define DES_PTR
174# define DES_RISC1
175# define DES_UNROLL
176#endif /* Systems-specific speed defines */
177#endif
178
179#endif /* DES_DEFAULT_OPTIONS */
180#endif /* HEADER_DES_LOCL_H */
diff --git a/src/lib/libssl/crypto/arch/m68k/opensslconf.h b/src/lib/libssl/crypto/arch/m68k/opensslconf.h
new file mode 100644
index 0000000000..47a6dd8596
--- /dev/null
+++ b/src/lib/libssl/crypto/arch/m68k/opensslconf.h
@@ -0,0 +1,180 @@
1/* opensslconf.h */
2/* WARNING: Generated automatically from opensslconf.h.in by Configure. */
3
4/* OpenSSL was configured with the following options: */
5#ifndef OPENSSL_DOING_MAKEDEPEND
6
7#ifndef OPENSSL_NO_KRB5
8# define OPENSSL_NO_KRB5
9#endif
10
11#endif /* OPENSSL_DOING_MAKEDEPEND */
12
13/* The OPENSSL_NO_* macros are also defined as NO_* if the application
14 asks for it. This is a transient feature that is provided for those
15 who haven't had the time to do the appropriate changes in their
16 applications. */
17#ifdef OPENSSL_ALGORITHM_DEFINES
18# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5)
19# define NO_KRB5
20# endif
21#endif
22
23/* crypto/opensslconf.h.in */
24
25/* Generate 80386 code? */
26#undef I386_ONLY
27
28#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
29#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
30#define OPENSSLDIR "/etc/ssl"
31#endif
32#endif
33
34#undef OPENSSL_UNISTD
35#define OPENSSL_UNISTD <unistd.h>
36
37#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
38
39#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
40#define IDEA_INT unsigned int
41#endif
42
43#if defined(HEADER_MD2_H) && !defined(MD2_INT)
44#define MD2_INT unsigned int
45#endif
46
47#if defined(HEADER_RC2_H) && !defined(RC2_INT)
48/* I need to put in a mod for the alpha - eay */
49#define RC2_INT unsigned int
50#endif
51
52#if defined(HEADER_RC4_H)
53#if !defined(RC4_INT)
54/* using int types make the structure larger but make the code faster
55 * on most boxes I have tested - up to %20 faster. */
56/*
57 * I don't know what does "most" mean, but declaring "int" is a must on:
58 * - Intel P6 because partial register stalls are very expensive;
59 * - elder Alpha because it lacks byte load/store instructions;
60 */
61#define RC4_INT unsigned int
62#endif
63#if !defined(RC4_CHUNK)
64/*
65 * This enables code handling data aligned at natural CPU word
66 * boundary. See crypto/rc4/rc4_enc.c for further details.
67 */
68#undef RC4_CHUNK
69#endif
70#endif
71
72#if (defined(HEADER_DES_H) || defined(HEADER_DES_OLD_H)) && !defined(DES_LONG)
73/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
74 * %20 speed up (longs are 8 bytes, int's are 4). */
75#ifndef DES_LONG
76#define DES_LONG unsigned int
77#endif
78#endif
79
80#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
81#define CONFIG_HEADER_BN_H
82#define BN_LLONG
83
84/* Should we define BN_DIV2W here? */
85
86/* Only one for the following should be defined */
87/* The prime number generation stuff may not work when
88 * EIGHT_BIT but I don't care since I've only used this mode
89 * for debuging the bignum libraries */
90#undef SIXTY_FOUR_BIT_LONG
91#undef SIXTY_FOUR_BIT
92#define THIRTY_TWO_BIT
93#undef SIXTEEN_BIT
94#undef EIGHT_BIT
95#endif
96
97#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
98#define CONFIG_HEADER_RC4_LOCL_H
99/* if this is defined data[i] is used instead of *data, this is a %20
100 * speedup on x86 */
101#define RC4_INDEX
102#endif
103
104#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
105#define CONFIG_HEADER_BF_LOCL_H
106#undef BF_PTR
107#endif /* HEADER_BF_LOCL_H */
108
109#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H)
110#define CONFIG_HEADER_DES_LOCL_H
111#ifndef DES_DEFAULT_OPTIONS
112/* the following is tweaked from a config script, that is why it is a
113 * protected undef/define */
114#ifndef DES_PTR
115#undef DES_PTR
116#endif
117
118/* This helps C compiler generate the correct code for multiple functional
119 * units. It reduces register dependancies at the expense of 2 more
120 * registers */
121#ifndef DES_RISC1
122#undef DES_RISC1
123#endif
124
125#ifndef DES_RISC2
126#undef DES_RISC2
127#endif
128
129#if defined(DES_RISC1) && defined(DES_RISC2)
130YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
131#endif
132
133/* Unroll the inner loop, this sometimes helps, sometimes hinders.
134 * Very mucy CPU dependant */
135#ifndef DES_UNROLL
136#define DES_UNROLL
137#endif
138
139/* These default values were supplied by
140 * Peter Gutman <pgut001@cs.auckland.ac.nz>
141 * They are only used if nothing else has been defined */
142#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
143/* Special defines which change the way the code is built depending on the
144 CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
145 even newer MIPS CPU's, but at the moment one size fits all for
146 optimization options. Older Sparc's work better with only UNROLL, but
147 there's no way to tell at compile time what it is you're running on */
148
149#if defined( sun ) /* Newer Sparc's */
150# define DES_PTR
151# define DES_RISC1
152# define DES_UNROLL
153#elif defined( __ultrix ) /* Older MIPS */
154# define DES_PTR
155# define DES_RISC2
156# define DES_UNROLL
157#elif defined( __osf1__ ) /* Alpha */
158# define DES_PTR
159# define DES_RISC2
160#elif defined ( _AIX ) /* RS6000 */
161 /* Unknown */
162#elif defined( __hpux ) /* HP-PA */
163 /* Unknown */
164#elif defined( __aux ) /* 68K */
165 /* Unknown */
166#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */
167# define DES_UNROLL
168#elif defined( __sgi ) /* Newer MIPS */
169# define DES_PTR
170# define DES_RISC2
171# define DES_UNROLL
172#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */
173# define DES_PTR
174# define DES_RISC1
175# define DES_UNROLL
176#endif /* Systems-specific speed defines */
177#endif
178
179#endif /* DES_DEFAULT_OPTIONS */
180#endif /* HEADER_DES_LOCL_H */
diff --git a/src/lib/libssl/crypto/arch/m88k/opensslconf.h b/src/lib/libssl/crypto/arch/m88k/opensslconf.h
new file mode 100644
index 0000000000..47a6dd8596
--- /dev/null
+++ b/src/lib/libssl/crypto/arch/m88k/opensslconf.h
@@ -0,0 +1,180 @@
1/* opensslconf.h */
2/* WARNING: Generated automatically from opensslconf.h.in by Configure. */
3
4/* OpenSSL was configured with the following options: */
5#ifndef OPENSSL_DOING_MAKEDEPEND
6
7#ifndef OPENSSL_NO_KRB5
8# define OPENSSL_NO_KRB5
9#endif
10
11#endif /* OPENSSL_DOING_MAKEDEPEND */
12
13/* The OPENSSL_NO_* macros are also defined as NO_* if the application
14 asks for it. This is a transient feature that is provided for those
15 who haven't had the time to do the appropriate changes in their
16 applications. */
17#ifdef OPENSSL_ALGORITHM_DEFINES
18# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5)
19# define NO_KRB5
20# endif
21#endif
22
23/* crypto/opensslconf.h.in */
24
25/* Generate 80386 code? */
26#undef I386_ONLY
27
28#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
29#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
30#define OPENSSLDIR "/etc/ssl"
31#endif
32#endif
33
34#undef OPENSSL_UNISTD
35#define OPENSSL_UNISTD <unistd.h>
36
37#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
38
39#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
40#define IDEA_INT unsigned int
41#endif
42
43#if defined(HEADER_MD2_H) && !defined(MD2_INT)
44#define MD2_INT unsigned int
45#endif
46
47#if defined(HEADER_RC2_H) && !defined(RC2_INT)
48/* I need to put in a mod for the alpha - eay */
49#define RC2_INT unsigned int
50#endif
51
52#if defined(HEADER_RC4_H)
53#if !defined(RC4_INT)
54/* using int types make the structure larger but make the code faster
55 * on most boxes I have tested - up to %20 faster. */
56/*
57 * I don't know what does "most" mean, but declaring "int" is a must on:
58 * - Intel P6 because partial register stalls are very expensive;
59 * - elder Alpha because it lacks byte load/store instructions;
60 */
61#define RC4_INT unsigned int
62#endif
63#if !defined(RC4_CHUNK)
64/*
65 * This enables code handling data aligned at natural CPU word
66 * boundary. See crypto/rc4/rc4_enc.c for further details.
67 */
68#undef RC4_CHUNK
69#endif
70#endif
71
72#if (defined(HEADER_DES_H) || defined(HEADER_DES_OLD_H)) && !defined(DES_LONG)
73/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
74 * %20 speed up (longs are 8 bytes, int's are 4). */
75#ifndef DES_LONG
76#define DES_LONG unsigned int
77#endif
78#endif
79
80#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
81#define CONFIG_HEADER_BN_H
82#define BN_LLONG
83
84/* Should we define BN_DIV2W here? */
85
86/* Only one for the following should be defined */
87/* The prime number generation stuff may not work when
88 * EIGHT_BIT but I don't care since I've only used this mode
89 * for debuging the bignum libraries */
90#undef SIXTY_FOUR_BIT_LONG
91#undef SIXTY_FOUR_BIT
92#define THIRTY_TWO_BIT
93#undef SIXTEEN_BIT
94#undef EIGHT_BIT
95#endif
96
97#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
98#define CONFIG_HEADER_RC4_LOCL_H
99/* if this is defined data[i] is used instead of *data, this is a %20
100 * speedup on x86 */
101#define RC4_INDEX
102#endif
103
104#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
105#define CONFIG_HEADER_BF_LOCL_H
106#undef BF_PTR
107#endif /* HEADER_BF_LOCL_H */
108
109#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H)
110#define CONFIG_HEADER_DES_LOCL_H
111#ifndef DES_DEFAULT_OPTIONS
112/* the following is tweaked from a config script, that is why it is a
113 * protected undef/define */
114#ifndef DES_PTR
115#undef DES_PTR
116#endif
117
118/* This helps C compiler generate the correct code for multiple functional
119 * units. It reduces register dependancies at the expense of 2 more
120 * registers */
121#ifndef DES_RISC1
122#undef DES_RISC1
123#endif
124
125#ifndef DES_RISC2
126#undef DES_RISC2
127#endif
128
129#if defined(DES_RISC1) && defined(DES_RISC2)
130YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
131#endif
132
133/* Unroll the inner loop, this sometimes helps, sometimes hinders.
134 * Very mucy CPU dependant */
135#ifndef DES_UNROLL
136#define DES_UNROLL
137#endif
138
139/* These default values were supplied by
140 * Peter Gutman <pgut001@cs.auckland.ac.nz>
141 * They are only used if nothing else has been defined */
142#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
143/* Special defines which change the way the code is built depending on the
144 CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
145 even newer MIPS CPU's, but at the moment one size fits all for
146 optimization options. Older Sparc's work better with only UNROLL, but
147 there's no way to tell at compile time what it is you're running on */
148
149#if defined( sun ) /* Newer Sparc's */
150# define DES_PTR
151# define DES_RISC1
152# define DES_UNROLL
153#elif defined( __ultrix ) /* Older MIPS */
154# define DES_PTR
155# define DES_RISC2
156# define DES_UNROLL
157#elif defined( __osf1__ ) /* Alpha */
158# define DES_PTR
159# define DES_RISC2
160#elif defined ( _AIX ) /* RS6000 */
161 /* Unknown */
162#elif defined( __hpux ) /* HP-PA */
163 /* Unknown */
164#elif defined( __aux ) /* 68K */
165 /* Unknown */
166#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */
167# define DES_UNROLL
168#elif defined( __sgi ) /* Newer MIPS */
169# define DES_PTR
170# define DES_RISC2
171# define DES_UNROLL
172#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */
173# define DES_PTR
174# define DES_RISC1
175# define DES_UNROLL
176#endif /* Systems-specific speed defines */
177#endif
178
179#endif /* DES_DEFAULT_OPTIONS */
180#endif /* HEADER_DES_LOCL_H */
diff --git a/src/lib/libssl/crypto/arch/mips64/opensslconf.h b/src/lib/libssl/crypto/arch/mips64/opensslconf.h
new file mode 100644
index 0000000000..c33ccc8a0f
--- /dev/null
+++ b/src/lib/libssl/crypto/arch/mips64/opensslconf.h
@@ -0,0 +1,180 @@
1/* opensslconf.h */
2/* WARNING: Generated automatically from opensslconf.h.in by Configure. */
3
4/* OpenSSL was configured with the following options: */
5#ifndef OPENSSL_DOING_MAKEDEPEND
6
7#ifndef OPENSSL_NO_KRB5
8# define OPENSSL_NO_KRB5
9#endif
10
11#endif /* OPENSSL_DOING_MAKEDEPEND */
12
13/* The OPENSSL_NO_* macros are also defined as NO_* if the application
14 asks for it. This is a transient feature that is provided for those
15 who haven't had the time to do the appropriate changes in their
16 applications. */
17#ifdef OPENSSL_ALGORITHM_DEFINES
18# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5)
19# define NO_KRB5
20# endif
21#endif
22
23/* crypto/opensslconf.h.in */
24
25/* Generate 80386 code? */
26#undef I386_ONLY
27
28#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
29#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
30#define OPENSSLDIR "/etc/ssl"
31#endif
32#endif
33
34#undef OPENSSL_UNISTD
35#define OPENSSL_UNISTD <unistd.h>
36
37#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
38
39#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
40#define IDEA_INT unsigned int
41#endif
42
43#if defined(HEADER_MD2_H) && !defined(MD2_INT)
44#define MD2_INT unsigned int
45#endif
46
47#if defined(HEADER_RC2_H) && !defined(RC2_INT)
48/* I need to put in a mod for the alpha - eay */
49#define RC2_INT unsigned int
50#endif
51
52#if defined(HEADER_RC4_H)
53#if !defined(RC4_INT)
54/* using int types make the structure larger but make the code faster
55 * on most boxes I have tested - up to %20 faster. */
56/*
57 * I don't know what does "most" mean, but declaring "int" is a must on:
58 * - Intel P6 because partial register stalls are very expensive;
59 * - elder Alpha because it lacks byte load/store instructions;
60 */
61#define RC4_INT unsigned int
62#endif
63#if !defined(RC4_CHUNK)
64/*
65 * This enables code handling data aligned at natural CPU word
66 * boundary. See crypto/rc4/rc4_enc.c for further details.
67 */
68#undef RC4_CHUNK
69#endif
70#endif
71
72#if (defined(HEADER_DES_H) || defined(HEADER_DES_OLD_H)) && !defined(DES_LONG)
73/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
74 * %20 speed up (longs are 8 bytes, int's are 4). */
75#ifndef DES_LONG
76#define DES_LONG unsigned int
77#endif
78#endif
79
80#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
81#define CONFIG_HEADER_BN_H
82#undef BN_LLONG
83
84/* Should we define BN_DIV2W here? */
85
86/* Only one for the following should be defined */
87/* The prime number generation stuff may not work when
88 * EIGHT_BIT but I don't care since I've only used this mode
89 * for debuging the bignum libraries */
90#define SIXTY_FOUR_BIT_LONG
91#undef SIXTY_FOUR_BIT
92#undef THIRTY_TWO_BIT
93#undef SIXTEEN_BIT
94#undef EIGHT_BIT
95#endif
96
97#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
98#define CONFIG_HEADER_RC4_LOCL_H
99/* if this is defined data[i] is used instead of *data, this is a %20
100 * speedup on x86 */
101#undef RC4_INDEX
102#endif
103
104#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
105#define CONFIG_HEADER_BF_LOCL_H
106#undef BF_PTR
107#endif /* HEADER_BF_LOCL_H */
108
109#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H)
110#define CONFIG_HEADER_DES_LOCL_H
111#ifndef DES_DEFAULT_OPTIONS
112/* the following is tweaked from a config script, that is why it is a
113 * protected undef/define */
114#ifndef DES_PTR
115#define DES_PTR
116#endif
117
118/* This helps C compiler generate the correct code for multiple functional
119 * units. It reduces register dependancies at the expense of 2 more
120 * registers */
121#ifndef DES_RISC1
122#undef DES_RISC1
123#endif
124
125#ifndef DES_RISC2
126#define DES_RISC2
127#endif
128
129#if defined(DES_RISC1) && defined(DES_RISC2)
130YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
131#endif
132
133/* Unroll the inner loop, this sometimes helps, sometimes hinders.
134 * Very mucy CPU dependant */
135#ifndef DES_UNROLL
136#undef DES_UNROLL
137#endif
138
139/* These default values were supplied by
140 * Peter Gutman <pgut001@cs.auckland.ac.nz>
141 * They are only used if nothing else has been defined */
142#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
143/* Special defines which change the way the code is built depending on the
144 CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
145 even newer MIPS CPU's, but at the moment one size fits all for
146 optimization options. Older Sparc's work better with only UNROLL, but
147 there's no way to tell at compile time what it is you're running on */
148
149#if defined( sun ) /* Newer Sparc's */
150# define DES_PTR
151# define DES_RISC1
152# define DES_UNROLL
153#elif defined( __ultrix ) /* Older MIPS */
154# define DES_PTR
155# define DES_RISC2
156# define DES_UNROLL
157#elif defined( __osf1__ ) /* Alpha */
158# define DES_PTR
159# define DES_RISC2
160#elif defined ( _AIX ) /* RS6000 */
161 /* Unknown */
162#elif defined( __hpux ) /* HP-PA */
163 /* Unknown */
164#elif defined( __aux ) /* 68K */
165 /* Unknown */
166#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */
167# define DES_UNROLL
168#elif defined( __sgi ) /* Newer MIPS */
169# define DES_PTR
170# define DES_RISC2
171# define DES_UNROLL
172#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */
173# define DES_PTR
174# define DES_RISC1
175# define DES_UNROLL
176#endif /* Systems-specific speed defines */
177#endif
178
179#endif /* DES_DEFAULT_OPTIONS */
180#endif /* HEADER_DES_LOCL_H */
diff --git a/src/lib/libssl/crypto/arch/powerpc/opensslconf.h b/src/lib/libssl/crypto/arch/powerpc/opensslconf.h
new file mode 100644
index 0000000000..47a6dd8596
--- /dev/null
+++ b/src/lib/libssl/crypto/arch/powerpc/opensslconf.h
@@ -0,0 +1,180 @@
1/* opensslconf.h */
2/* WARNING: Generated automatically from opensslconf.h.in by Configure. */
3
4/* OpenSSL was configured with the following options: */
5#ifndef OPENSSL_DOING_MAKEDEPEND
6
7#ifndef OPENSSL_NO_KRB5
8# define OPENSSL_NO_KRB5
9#endif
10
11#endif /* OPENSSL_DOING_MAKEDEPEND */
12
13/* The OPENSSL_NO_* macros are also defined as NO_* if the application
14 asks for it. This is a transient feature that is provided for those
15 who haven't had the time to do the appropriate changes in their
16 applications. */
17#ifdef OPENSSL_ALGORITHM_DEFINES
18# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5)
19# define NO_KRB5
20# endif
21#endif
22
23/* crypto/opensslconf.h.in */
24
25/* Generate 80386 code? */
26#undef I386_ONLY
27
28#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
29#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
30#define OPENSSLDIR "/etc/ssl"
31#endif
32#endif
33
34#undef OPENSSL_UNISTD
35#define OPENSSL_UNISTD <unistd.h>
36
37#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
38
39#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
40#define IDEA_INT unsigned int
41#endif
42
43#if defined(HEADER_MD2_H) && !defined(MD2_INT)
44#define MD2_INT unsigned int
45#endif
46
47#if defined(HEADER_RC2_H) && !defined(RC2_INT)
48/* I need to put in a mod for the alpha - eay */
49#define RC2_INT unsigned int
50#endif
51
52#if defined(HEADER_RC4_H)
53#if !defined(RC4_INT)
54/* using int types make the structure larger but make the code faster
55 * on most boxes I have tested - up to %20 faster. */
56/*
57 * I don't know what does "most" mean, but declaring "int" is a must on:
58 * - Intel P6 because partial register stalls are very expensive;
59 * - elder Alpha because it lacks byte load/store instructions;
60 */
61#define RC4_INT unsigned int
62#endif
63#if !defined(RC4_CHUNK)
64/*
65 * This enables code handling data aligned at natural CPU word
66 * boundary. See crypto/rc4/rc4_enc.c for further details.
67 */
68#undef RC4_CHUNK
69#endif
70#endif
71
72#if (defined(HEADER_DES_H) || defined(HEADER_DES_OLD_H)) && !defined(DES_LONG)
73/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
74 * %20 speed up (longs are 8 bytes, int's are 4). */
75#ifndef DES_LONG
76#define DES_LONG unsigned int
77#endif
78#endif
79
80#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
81#define CONFIG_HEADER_BN_H
82#define BN_LLONG
83
84/* Should we define BN_DIV2W here? */
85
86/* Only one for the following should be defined */
87/* The prime number generation stuff may not work when
88 * EIGHT_BIT but I don't care since I've only used this mode
89 * for debuging the bignum libraries */
90#undef SIXTY_FOUR_BIT_LONG
91#undef SIXTY_FOUR_BIT
92#define THIRTY_TWO_BIT
93#undef SIXTEEN_BIT
94#undef EIGHT_BIT
95#endif
96
97#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
98#define CONFIG_HEADER_RC4_LOCL_H
99/* if this is defined data[i] is used instead of *data, this is a %20
100 * speedup on x86 */
101#define RC4_INDEX
102#endif
103
104#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
105#define CONFIG_HEADER_BF_LOCL_H
106#undef BF_PTR
107#endif /* HEADER_BF_LOCL_H */
108
109#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H)
110#define CONFIG_HEADER_DES_LOCL_H
111#ifndef DES_DEFAULT_OPTIONS
112/* the following is tweaked from a config script, that is why it is a
113 * protected undef/define */
114#ifndef DES_PTR
115#undef DES_PTR
116#endif
117
118/* This helps C compiler generate the correct code for multiple functional
119 * units. It reduces register dependancies at the expense of 2 more
120 * registers */
121#ifndef DES_RISC1
122#undef DES_RISC1
123#endif
124
125#ifndef DES_RISC2
126#undef DES_RISC2
127#endif
128
129#if defined(DES_RISC1) && defined(DES_RISC2)
130YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
131#endif
132
133/* Unroll the inner loop, this sometimes helps, sometimes hinders.
134 * Very mucy CPU dependant */
135#ifndef DES_UNROLL
136#define DES_UNROLL
137#endif
138
139/* These default values were supplied by
140 * Peter Gutman <pgut001@cs.auckland.ac.nz>
141 * They are only used if nothing else has been defined */
142#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
143/* Special defines which change the way the code is built depending on the
144 CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
145 even newer MIPS CPU's, but at the moment one size fits all for
146 optimization options. Older Sparc's work better with only UNROLL, but
147 there's no way to tell at compile time what it is you're running on */
148
149#if defined( sun ) /* Newer Sparc's */
150# define DES_PTR
151# define DES_RISC1
152# define DES_UNROLL
153#elif defined( __ultrix ) /* Older MIPS */
154# define DES_PTR
155# define DES_RISC2
156# define DES_UNROLL
157#elif defined( __osf1__ ) /* Alpha */
158# define DES_PTR
159# define DES_RISC2
160#elif defined ( _AIX ) /* RS6000 */
161 /* Unknown */
162#elif defined( __hpux ) /* HP-PA */
163 /* Unknown */
164#elif defined( __aux ) /* 68K */
165 /* Unknown */
166#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */
167# define DES_UNROLL
168#elif defined( __sgi ) /* Newer MIPS */
169# define DES_PTR
170# define DES_RISC2
171# define DES_UNROLL
172#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */
173# define DES_PTR
174# define DES_RISC1
175# define DES_UNROLL
176#endif /* Systems-specific speed defines */
177#endif
178
179#endif /* DES_DEFAULT_OPTIONS */
180#endif /* HEADER_DES_LOCL_H */
diff --git a/src/lib/libssl/crypto/arch/sparc/opensslconf.h b/src/lib/libssl/crypto/arch/sparc/opensslconf.h
new file mode 100644
index 0000000000..47a6dd8596
--- /dev/null
+++ b/src/lib/libssl/crypto/arch/sparc/opensslconf.h
@@ -0,0 +1,180 @@
1/* opensslconf.h */
2/* WARNING: Generated automatically from opensslconf.h.in by Configure. */
3
4/* OpenSSL was configured with the following options: */
5#ifndef OPENSSL_DOING_MAKEDEPEND
6
7#ifndef OPENSSL_NO_KRB5
8# define OPENSSL_NO_KRB5
9#endif
10
11#endif /* OPENSSL_DOING_MAKEDEPEND */
12
13/* The OPENSSL_NO_* macros are also defined as NO_* if the application
14 asks for it. This is a transient feature that is provided for those
15 who haven't had the time to do the appropriate changes in their
16 applications. */
17#ifdef OPENSSL_ALGORITHM_DEFINES
18# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5)
19# define NO_KRB5
20# endif
21#endif
22
23/* crypto/opensslconf.h.in */
24
25/* Generate 80386 code? */
26#undef I386_ONLY
27
28#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
29#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
30#define OPENSSLDIR "/etc/ssl"
31#endif
32#endif
33
34#undef OPENSSL_UNISTD
35#define OPENSSL_UNISTD <unistd.h>
36
37#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
38
39#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
40#define IDEA_INT unsigned int
41#endif
42
43#if defined(HEADER_MD2_H) && !defined(MD2_INT)
44#define MD2_INT unsigned int
45#endif
46
47#if defined(HEADER_RC2_H) && !defined(RC2_INT)
48/* I need to put in a mod for the alpha - eay */
49#define RC2_INT unsigned int
50#endif
51
52#if defined(HEADER_RC4_H)
53#if !defined(RC4_INT)
54/* using int types make the structure larger but make the code faster
55 * on most boxes I have tested - up to %20 faster. */
56/*
57 * I don't know what does "most" mean, but declaring "int" is a must on:
58 * - Intel P6 because partial register stalls are very expensive;
59 * - elder Alpha because it lacks byte load/store instructions;
60 */
61#define RC4_INT unsigned int
62#endif
63#if !defined(RC4_CHUNK)
64/*
65 * This enables code handling data aligned at natural CPU word
66 * boundary. See crypto/rc4/rc4_enc.c for further details.
67 */
68#undef RC4_CHUNK
69#endif
70#endif
71
72#if (defined(HEADER_DES_H) || defined(HEADER_DES_OLD_H)) && !defined(DES_LONG)
73/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
74 * %20 speed up (longs are 8 bytes, int's are 4). */
75#ifndef DES_LONG
76#define DES_LONG unsigned int
77#endif
78#endif
79
80#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
81#define CONFIG_HEADER_BN_H
82#define BN_LLONG
83
84/* Should we define BN_DIV2W here? */
85
86/* Only one for the following should be defined */
87/* The prime number generation stuff may not work when
88 * EIGHT_BIT but I don't care since I've only used this mode
89 * for debuging the bignum libraries */
90#undef SIXTY_FOUR_BIT_LONG
91#undef SIXTY_FOUR_BIT
92#define THIRTY_TWO_BIT
93#undef SIXTEEN_BIT
94#undef EIGHT_BIT
95#endif
96
97#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
98#define CONFIG_HEADER_RC4_LOCL_H
99/* if this is defined data[i] is used instead of *data, this is a %20
100 * speedup on x86 */
101#define RC4_INDEX
102#endif
103
104#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
105#define CONFIG_HEADER_BF_LOCL_H
106#undef BF_PTR
107#endif /* HEADER_BF_LOCL_H */
108
109#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H)
110#define CONFIG_HEADER_DES_LOCL_H
111#ifndef DES_DEFAULT_OPTIONS
112/* the following is tweaked from a config script, that is why it is a
113 * protected undef/define */
114#ifndef DES_PTR
115#undef DES_PTR
116#endif
117
118/* This helps C compiler generate the correct code for multiple functional
119 * units. It reduces register dependancies at the expense of 2 more
120 * registers */
121#ifndef DES_RISC1
122#undef DES_RISC1
123#endif
124
125#ifndef DES_RISC2
126#undef DES_RISC2
127#endif
128
129#if defined(DES_RISC1) && defined(DES_RISC2)
130YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
131#endif
132
133/* Unroll the inner loop, this sometimes helps, sometimes hinders.
134 * Very mucy CPU dependant */
135#ifndef DES_UNROLL
136#define DES_UNROLL
137#endif
138
139/* These default values were supplied by
140 * Peter Gutman <pgut001@cs.auckland.ac.nz>
141 * They are only used if nothing else has been defined */
142#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
143/* Special defines which change the way the code is built depending on the
144 CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
145 even newer MIPS CPU's, but at the moment one size fits all for
146 optimization options. Older Sparc's work better with only UNROLL, but
147 there's no way to tell at compile time what it is you're running on */
148
149#if defined( sun ) /* Newer Sparc's */
150# define DES_PTR
151# define DES_RISC1
152# define DES_UNROLL
153#elif defined( __ultrix ) /* Older MIPS */
154# define DES_PTR
155# define DES_RISC2
156# define DES_UNROLL
157#elif defined( __osf1__ ) /* Alpha */
158# define DES_PTR
159# define DES_RISC2
160#elif defined ( _AIX ) /* RS6000 */
161 /* Unknown */
162#elif defined( __hpux ) /* HP-PA */
163 /* Unknown */
164#elif defined( __aux ) /* 68K */
165 /* Unknown */
166#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */
167# define DES_UNROLL
168#elif defined( __sgi ) /* Newer MIPS */
169# define DES_PTR
170# define DES_RISC2
171# define DES_UNROLL
172#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */
173# define DES_PTR
174# define DES_RISC1
175# define DES_UNROLL
176#endif /* Systems-specific speed defines */
177#endif
178
179#endif /* DES_DEFAULT_OPTIONS */
180#endif /* HEADER_DES_LOCL_H */
diff --git a/src/lib/libssl/crypto/arch/sparc64/opensslconf.h b/src/lib/libssl/crypto/arch/sparc64/opensslconf.h
new file mode 100644
index 0000000000..053308653b
--- /dev/null
+++ b/src/lib/libssl/crypto/arch/sparc64/opensslconf.h
@@ -0,0 +1,180 @@
1/* opensslconf.h */
2/* WARNING: Generated automatically from opensslconf.h.in by Configure. */
3
4/* OpenSSL was configured with the following options: */
5#ifndef OPENSSL_DOING_MAKEDEPEND
6
7#ifndef OPENSSL_NO_KRB5
8# define OPENSSL_NO_KRB5
9#endif
10
11#endif /* OPENSSL_DOING_MAKEDEPEND */
12
13/* The OPENSSL_NO_* macros are also defined as NO_* if the application
14 asks for it. This is a transient feature that is provided for those
15 who haven't had the time to do the appropriate changes in their
16 applications. */
17#ifdef OPENSSL_ALGORITHM_DEFINES
18# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5)
19# define NO_KRB5
20# endif
21#endif
22
23/* crypto/opensslconf.h.in */
24
25/* Generate 80386 code? */
26#undef I386_ONLY
27
28#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
29#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
30#define OPENSSLDIR "/etc/ssl"
31#endif
32#endif
33
34#undef OPENSSL_UNISTD
35#define OPENSSL_UNISTD <unistd.h>
36
37#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
38
39#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
40#define IDEA_INT unsigned int
41#endif
42
43#if defined(HEADER_MD2_H) && !defined(MD2_INT)
44#define MD2_INT unsigned int
45#endif
46
47#if defined(HEADER_RC2_H) && !defined(RC2_INT)
48/* I need to put in a mod for the alpha - eay */
49#define RC2_INT unsigned int
50#endif
51
52#if defined(HEADER_RC4_H)
53#if !defined(RC4_INT)
54/* using int types make the structure larger but make the code faster
55 * on most boxes I have tested - up to %20 faster. */
56/*
57 * I don't know what does "most" mean, but declaring "int" is a must on:
58 * - Intel P6 because partial register stalls are very expensive;
59 * - elder Alpha because it lacks byte load/store instructions;
60 */
61#define RC4_INT unsigned int
62#endif
63#if !defined(RC4_CHUNK)
64/*
65 * This enables code handling data aligned at natural CPU word
66 * boundary. See crypto/rc4/rc4_enc.c for further details.
67 */
68#undef RC4_CHUNK
69#endif
70#endif
71
72#if (defined(HEADER_DES_H) || defined(HEADER_DES_OLD_H)) && !defined(DES_LONG)
73/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
74 * %20 speed up (longs are 8 bytes, int's are 4). */
75#ifndef DES_LONG
76#define DES_LONG unsigned int
77#endif
78#endif
79
80#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
81#define CONFIG_HEADER_BN_H
82#undef BN_LLONG
83
84/* Should we define BN_DIV2W here? */
85
86/* Only one for the following should be defined */
87/* The prime number generation stuff may not work when
88 * EIGHT_BIT but I don't care since I've only used this mode
89 * for debuging the bignum libraries */
90#define SIXTY_FOUR_BIT_LONG
91#undef SIXTY_FOUR_BIT
92#undef THIRTY_TWO_BIT
93#undef SIXTEEN_BIT
94#undef EIGHT_BIT
95#endif
96
97#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
98#define CONFIG_HEADER_RC4_LOCL_H
99/* if this is defined data[i] is used instead of *data, this is a %20
100 * speedup on x86 */
101#undef RC4_INDEX
102#endif
103
104#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
105#define CONFIG_HEADER_BF_LOCL_H
106#define BF_PTR
107#endif /* HEADER_BF_LOCL_H */
108
109#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H)
110#define CONFIG_HEADER_DES_LOCL_H
111#ifndef DES_DEFAULT_OPTIONS
112/* the following is tweaked from a config script, that is why it is a
113 * protected undef/define */
114#ifndef DES_PTR
115#define DES_PTR
116#endif
117
118/* This helps C compiler generate the correct code for multiple functional
119 * units. It reduces register dependancies at the expense of 2 more
120 * registers */
121#ifndef DES_RISC1
122#undef DES_RISC1
123#endif
124
125#ifndef DES_RISC2
126#define DES_RISC2
127#endif
128
129#if defined(DES_RISC1) && defined(DES_RISC2)
130YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
131#endif
132
133/* Unroll the inner loop, this sometimes helps, sometimes hinders.
134 * Very mucy CPU dependant */
135#ifndef DES_UNROLL
136#undef DES_UNROLL
137#endif
138
139/* These default values were supplied by
140 * Peter Gutman <pgut001@cs.auckland.ac.nz>
141 * They are only used if nothing else has been defined */
142#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
143/* Special defines which change the way the code is built depending on the
144 CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
145 even newer MIPS CPU's, but at the moment one size fits all for
146 optimization options. Older Sparc's work better with only UNROLL, but
147 there's no way to tell at compile time what it is you're running on */
148
149#if defined( sun ) /* Newer Sparc's */
150# define DES_PTR
151# define DES_RISC1
152# define DES_UNROLL
153#elif defined( __ultrix ) /* Older MIPS */
154# define DES_PTR
155# define DES_RISC2
156# define DES_UNROLL
157#elif defined( __osf1__ ) /* Alpha */
158# define DES_PTR
159# define DES_RISC2
160#elif defined ( _AIX ) /* RS6000 */
161 /* Unknown */
162#elif defined( __hpux ) /* HP-PA */
163 /* Unknown */
164#elif defined( __aux ) /* 68K */
165 /* Unknown */
166#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */
167# define DES_UNROLL
168#elif defined( __sgi ) /* Newer MIPS */
169# define DES_PTR
170# define DES_RISC2
171# define DES_UNROLL
172#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */
173# define DES_PTR
174# define DES_RISC1
175# define DES_UNROLL
176#endif /* Systems-specific speed defines */
177#endif
178
179#endif /* DES_DEFAULT_OPTIONS */
180#endif /* HEADER_DES_LOCL_H */
diff --git a/src/lib/libssl/crypto/arch/vax/bn_asm_vax.S b/src/lib/libssl/crypto/arch/vax/bn_asm_vax.S
new file mode 100644
index 0000000000..bd067a55d3
--- /dev/null
+++ b/src/lib/libssl/crypto/arch/vax/bn_asm_vax.S
@@ -0,0 +1,436 @@
1# $OpenBSD: bn_asm_vax.S,v 1.1 2003/11/18 12:39:05 markus Exp $
2# $NetBSD: bn_asm_vax.S,v 1.1 2003/11/03 10:22:28 ragge Exp $
3
4#include <machine/asm.h>
5
6# w.j.m. 15-jan-1999
7#
8# it's magic ...
9#
10# ULONG bn_mul_add_words(ULONG r[],ULONG a[],int n,ULONG w) {
11# ULONG c = 0;
12# int i;
13# for(i = 0; i < n; i++) <c,r[i]> := r[i] + c + a[i] * w ;
14# return c;
15# }
16
17ENTRY(bn_mul_add_words,R6)
18 movl 4(ap),r2 # *r
19 movl 8(ap),r3 # *a
20 movl 12(ap),r4 # n
21 movl 16(ap),r5 # w
22 clrl r6 # return value ("carry")
23
240: emul r5,(r3),(r2),r0 # w * a[0] + r[0] -> r0
25
26 # fixup for "negative" r[]
27 tstl (r2)
28 bgeq 1f
29 incl r1 # add 1 to highword
30
311: # add saved carry to result
32 addl2 r6,r0
33 adwc $0,r1
34
35 # combined fixup for "negative" w, a[]
36 tstl r5 # if w is negative...
37 bgeq 1f
38 addl2 (r3),r1 # ...add a[0] again to highword
391: tstl (r3) # if a[0] is negative...
40 bgeq 1f
41 addl2 r5,r1 # ...add w again to highword
421:
43 movl r0,(r2)+ # save low word in dest & advance *r
44 addl2 $4,r3 # advance *a
45 movl r1,r6 # high word in r6 for return value
46
47 sobgtr r4,0b # loop?
48
49 movl r6,r0
50 ret
51
52# .title vax_bn_mul_words unsigned multiply & add, 32*32+32=>64
53#;
54#; w.j.m. 15-jan-1999
55#;
56#; it's magic ...
57#;
58#; ULONG bn_mul_words(ULONG r[],ULONG a[],int n,ULONG w) {
59#; ULONG c = 0;
60#; int i;
61#; for(i = 0; i < num; i++) <c,r[i]> := a[i] * w + c ;
62#; return(c);
63#; }
64#
65
66ENTRY(bn_mul_words,R6)
67 movl 4(ap),r2 # *r
68 movl 8(ap),r3 # *a
69 movl 12(ap),r4 # n
70 movl 16(ap),r5 # w
71 clrl r6 # carry
72
730: emul r5,(r3),r6,r0 # w * a[0] + carry -> r0
74
75 # fixup for "negative" carry
76 tstl r6
77 bgeq 1f
78 incl r1
79
801: # combined fixup for "negative" w, a[]
81 tstl r5
82 bgeq 1f
83 addl2 (r3),r1
841: tstl (r3)
85 bgeq 1f
86 addl2 r5,r1
87
881: movl r0,(r2)+
89 addl2 $4,r3
90 movl r1,r6
91
92 sobgtr r4,0b
93
94 movl r6,r0
95 ret
96
97
98
99# .title vax_bn_sqr_words unsigned square, 32*32=>64
100#;
101#; w.j.m. 15-jan-1999
102#;
103#; it's magic ...
104#;
105#; void bn_sqr_words(ULONG r[],ULONG a[],int n) {
106#; int i;
107#; for(i = 0; i < n; i++) <r[2*i+1],r[2*i]> := a[i] * a[i] ;
108#; }
109#
110
111ENTRY(bn_sqr_words,0)
112 movl 4(ap),r2 # r
113 movl 8(ap),r3 # a
114 movl 12(ap),r4 # n
115
1160: movl (r3)+,r5 # r5 = a[] & advance
117
118 emul r5,r5,$0,r0 # a[0] * a[0] + 0 -> r0
119
120 # fixup for "negative" a[]
121 tstl r5
122 bgeq 1f
123 addl2 r5,r1
124 addl2 r5,r1
125
1261: movq r0,(r2)+ # store 64-bit result
127
128 sobgtr r4,0b # loop
129
130 ret
131
132
133# .title vax_bn_div_words unsigned divide
134#;
135#; Richard Levitte 20-Nov-2000
136#;
137#; ULONG bn_div_words(ULONG h, ULONG l, ULONG d)
138#; {
139#; return ((ULONG)((((ULLONG)h)<<32)|l) / (ULLONG)d);
140#; }
141#;
142#; Using EDIV would be very easy, if it didn't do signed calculations.
143#; Any time any of the input numbers are signed, there are problems,
144#; usually with integer overflow, at which point it returns useless
145#; data (the quotient gets the value of l, and the remainder becomes 0).
146#;
147#; If it was just for the dividend, it would be very easy, just divide
148#; it by 2 (unsigned), do the division, multiply the resulting quotient
149#; and remainder by 2, add the bit that was dropped when dividing by 2
150#; to the remainder, and do some adjustment so the remainder doesn't
151#; end up larger than the divisor. For some cases when the divisor is
152#; negative (from EDIV's point of view, i.e. when the highest bit is set),
153#; dividing the dividend by 2 isn't enough, and since some operations
154#; might generate integer overflows even when the dividend is divided by
155#; 4 (when the high part of the shifted down dividend ends up being exactly
156#; half of the divisor, the result is the quotient 0x80000000, which is
157#; negative...) it needs to be divided by 8. Furthermore, the divisor needs
158#; to be divided by 2 (unsigned) as well, to avoid more problems with the sign.
159#; In this case, a little extra fiddling with the remainder is required.
160#;
161#; So, the simplest way to handle this is always to divide the dividend
162#; by 8, and to divide the divisor by 2 if it's highest bit is set.
163#; After EDIV has been used, the quotient gets multiplied by 8 if the
164#; original divisor was positive, otherwise 4. The remainder, oddly
165#; enough, is *always* multiplied by 8.
166#; NOTE: in the case mentioned above, where the high part of the shifted
167#; down dividend ends up being exactly half the shifted down divisor, we
168#; end up with a 33 bit quotient. That's no problem however, it usually
169#; means we have ended up with a too large remainder as well, and the
170#; problem is fixed by the last part of the algorithm (next paragraph).
171#;
172#; The routine ends with comparing the resulting remainder with the
173#; original divisor and if the remainder is larger, subtract the
174#; original divisor from it, and increase the quotient by 1. This is
175#; done until the remainder is smaller than the divisor.
176#;
177#; The complete algorithm looks like this:
178#;
179#; d' = d
180#; l' = l & 7
181#; [h,l] = [h,l] >> 3
182#; [q,r] = floor([h,l] / d) # This is the EDIV operation
183#; if (q < 0) q = -q # I doubt this is necessary any more
184#;
185#; r' = r >> 29
186#; if (d' >= 0)
187#; q' = q >> 29
188#; q = q << 3
189#; else
190#; q' = q >> 30
191#; q = q << 2
192#; r = (r << 3) + l'
193#;
194#; if (d' < 0)
195#; {
196#; [r',r] = [r',r] - q
197#; while ([r',r] < 0)
198#; {
199#; [r',r] = [r',r] + d
200#; [q',q] = [q',q] - 1
201#; }
202#; }
203#;
204#; while ([r',r] >= d')
205#; {
206#; [r',r] = [r',r] - d'
207#; [q',q] = [q',q] + 1
208#; }
209#;
210#; return q
211#
212#;r2 = l, q
213#;r3 = h, r
214#;r4 = d
215#;r5 = l'
216#;r6 = r'
217#;r7 = d'
218#;r8 = q'
219#
220
221ENTRY(bn_div_words,R6|R7|R8)
222 movl 4(ap),r3 # h
223 movl 8(ap),r2 # l
224 movl 12(ap),r4 # d
225
226 bicl3 $-8,r2,r5 # l' = l & 7
227 bicl3 $7,r2,r2
228
229 bicl3 $-8,r3,r6
230 bicl3 $7,r3,r3
231
232 addl2 r6,r2
233
234 rotl $-3,r2,r2 # l = l >> 3
235 rotl $-3,r3,r3 # h = h >> 3
236
237 movl r4,r7 # d' = d
238
239 clrl r6 # r' = 0
240 clrl r8 # q' = 0
241
242 tstl r4
243 beql 0f # Uh-oh, the divisor is 0...
244 bgtr 1f
245 rotl $-1,r4,r4 # If d is negative, shift it right.
246 bicl2 $0x80000000,r4 # Since d is then a large number, the
247 # lowest bit is insignificant
248 # (contradict that, and I'll fix the problem!)
2491:
250 ediv r4,r2,r2,r3 # Do the actual division
251
252 tstl r2
253 bgeq 1f
254 mnegl r2,r2 # if q < 0, negate it
2551:
256 tstl r7
257 blss 1f
258 rotl $3,r2,r2 # q = q << 3
259 bicl3 $-8,r2,r8 # q' gets the high bits from q
260 bicl3 $7,r2,r2
261 brb 2f
262
2631: # else
264 rotl $2,r2,r2 # q = q << 2
265 bicl3 $-4,r2,r8 # q' gets the high bits from q
266 bicl3 $3,r2,r2
2672:
268 rotl $3,r3,r3 # r = r << 3
269 bicl3 $-8,r3,r6 # r' gets the high bits from r
270 bicl3 $7,r3,r3
271 addl2 r5,r3 # r = r + l'
272
273 tstl r7
274 bgeq 5f
275 bitl $1,r7
276 beql 5f # if d' < 0 && d' & 1
277 subl2 r2,r3 # [r',r] = [r',r] - [q',q]
278 sbwc r8,r6
2793:
280 bgeq 5f # while r < 0
281 decl r2 # [q',q] = [q',q] - 1
282 sbwc $0,r8
283 addl2 r7,r3 # [r',r] = [r',r] + d'
284 adwc $0,r6
285 brb 3b
286
287# The return points are placed in the middle to keep a short distance from
288# all the branch points
2891:
290# movl r3,r1
291 movl r2,r0
292 ret
2930:
294 movl $-1,r0
295 ret
2965:
297 tstl r6
298 bneq 6f
299 cmpl r3,r7
300 blssu 1b # while [r',r] >= d'
3016:
302 subl2 r7,r3 # [r',r] = [r',r] - d'
303 sbwc $0,r6
304 incl r2 # [q',q] = [q',q] + 1
305 adwc $0,r8
306 brb 5b
307
308
309
310# .title vax_bn_add_words unsigned add of two arrays
311#;
312#; Richard Levitte 20-Nov-2000
313#;
314#; ULONG bn_add_words(ULONG r[], ULONG a[], ULONG b[], int n) {
315#; ULONG c = 0;
316#; int i;
317#; for (i = 0; i < n; i++) <c,r[i]> = a[i] + b[i] + c;
318#; return(c);
319#; }
320#
321
322ENTRY(bn_add_words,0)
323 movl 4(ap),r2 # r
324 movl 8(ap),r3 # a
325 movl 12(ap),r4 # b
326 movl 16(ap),r5 # n
327 clrl r0
328
329 tstl r5
330 bleq 1f
331
3320: movl (r3)+,r1 # carry untouched
333 adwc (r4)+,r1 # carry used and touched
334 movl r1,(r2)+ # carry untouched
335 sobgtr r5,0b # carry untouched
336
337 adwc $0,r0
3381: ret
339
340#;
341#; Richard Levitte 20-Nov-2000
342#;
343#; ULONG bn_sub_words(ULONG r[], ULONG a[], ULONG b[], int n) {
344#; ULONG c = 0;
345#; int i;
346#; for (i = 0; i < n; i++) <c,r[i]> = a[i] - b[i] - c;
347#; return(c);
348#; }
349#
350
351ENTRY(bn_sub_words,R6)
352 movl 4(ap),r2 # r
353 movl 8(ap),r3 # a
354 movl 12(ap),r4 # b
355 movl 16(ap),r5 # n
356 clrl r0
357
358 tstl r5
359 bleq 1f
360
3610: movl (r3)+,r6 # carry untouched
362 sbwc (r4)+,r6 # carry used and touched
363 movl r6,(r2)+ # carry untouched
364 sobgtr r5,0b # carry untouched
365
3661: adwc $0,r0
367 ret
368
369#
370# Ragge 20-Sep-2003
371#
372# Multiply a vector of 4/8 longword by another.
373# Uses two loops and 16/64 emuls.
374#
375
376ENTRY(bn_mul_comba4,R6|R7|R8|R9)
377 movl $4,r9 # 4*4
378 brb 6f
379
380ENTRY(bn_mul_comba8,R6|R7|R8|R9)
381 movl $8,r9 # 8*8
382
3836: movl 8(ap),r3 # a[]
384 movl 12(ap),r7 # b[]
385 brb 5f
386
387ENTRY(bn_sqr_comba4,R6|R7|R8|R9)
388 movl $4,r9 # 4*4
389 brb 0f
390
391ENTRY(bn_sqr_comba8,R6|R7|R8|R9)
392 movl $8,r9 # 8*8
393
3940:
395 movl 8(ap),r3 # a[]
396 movl r3,r7 # a[]
397
3985: movl 4(ap),r5 # r[]
399 movl r9,r8
400
401 clrq (r5) # clear destinatino, for add.
402 clrq 8(r5)
403 clrq 16(r5) # these only needed for comba8
404 clrq 24(r5)
405
4062: clrl r4 # carry
407 movl r9,r6 # inner loop count
408 movl (r7)+,r2 # value to multiply with
409
4101: emul r2,(r3),r4,r0
411 tstl r4
412 bgeq 3f
413 incl r1
4143: tstl r2
415 bgeq 3f
416 addl2 (r3),r1
4173: tstl (r3)
418 bgeq 3f
419 addl2 r2,r1
420
4213: addl2 r0,(r5)+ # add to destination
422 adwc $0,r1 # remember carry
423 movl r1,r4 # add carry in next emul
424 addl2 $4,r3
425 sobgtr r6,1b
426
427 movl r4,(r5) # save highest add result
428
429 ashl $2,r9,r4
430 subl2 r4,r3
431 subl2 $4,r4
432 subl2 r4,r5
433
434 sobgtr r8,2b
435
436 ret
diff --git a/src/lib/libssl/crypto/arch/vax/opensslconf.h b/src/lib/libssl/crypto/arch/vax/opensslconf.h
new file mode 100644
index 0000000000..47a6dd8596
--- /dev/null
+++ b/src/lib/libssl/crypto/arch/vax/opensslconf.h
@@ -0,0 +1,180 @@
1/* opensslconf.h */
2/* WARNING: Generated automatically from opensslconf.h.in by Configure. */
3
4/* OpenSSL was configured with the following options: */
5#ifndef OPENSSL_DOING_MAKEDEPEND
6
7#ifndef OPENSSL_NO_KRB5
8# define OPENSSL_NO_KRB5
9#endif
10
11#endif /* OPENSSL_DOING_MAKEDEPEND */
12
13/* The OPENSSL_NO_* macros are also defined as NO_* if the application
14 asks for it. This is a transient feature that is provided for those
15 who haven't had the time to do the appropriate changes in their
16 applications. */
17#ifdef OPENSSL_ALGORITHM_DEFINES
18# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5)
19# define NO_KRB5
20# endif
21#endif
22
23/* crypto/opensslconf.h.in */
24
25/* Generate 80386 code? */
26#undef I386_ONLY
27
28#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
29#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
30#define OPENSSLDIR "/etc/ssl"
31#endif
32#endif
33
34#undef OPENSSL_UNISTD
35#define OPENSSL_UNISTD <unistd.h>
36
37#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
38
39#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
40#define IDEA_INT unsigned int
41#endif
42
43#if defined(HEADER_MD2_H) && !defined(MD2_INT)
44#define MD2_INT unsigned int
45#endif
46
47#if defined(HEADER_RC2_H) && !defined(RC2_INT)
48/* I need to put in a mod for the alpha - eay */
49#define RC2_INT unsigned int
50#endif
51
52#if defined(HEADER_RC4_H)
53#if !defined(RC4_INT)
54/* using int types make the structure larger but make the code faster
55 * on most boxes I have tested - up to %20 faster. */
56/*
57 * I don't know what does "most" mean, but declaring "int" is a must on:
58 * - Intel P6 because partial register stalls are very expensive;
59 * - elder Alpha because it lacks byte load/store instructions;
60 */
61#define RC4_INT unsigned int
62#endif
63#if !defined(RC4_CHUNK)
64/*
65 * This enables code handling data aligned at natural CPU word
66 * boundary. See crypto/rc4/rc4_enc.c for further details.
67 */
68#undef RC4_CHUNK
69#endif
70#endif
71
72#if (defined(HEADER_DES_H) || defined(HEADER_DES_OLD_H)) && !defined(DES_LONG)
73/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
74 * %20 speed up (longs are 8 bytes, int's are 4). */
75#ifndef DES_LONG
76#define DES_LONG unsigned int
77#endif
78#endif
79
80#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
81#define CONFIG_HEADER_BN_H
82#define BN_LLONG
83
84/* Should we define BN_DIV2W here? */
85
86/* Only one for the following should be defined */
87/* The prime number generation stuff may not work when
88 * EIGHT_BIT but I don't care since I've only used this mode
89 * for debuging the bignum libraries */
90#undef SIXTY_FOUR_BIT_LONG
91#undef SIXTY_FOUR_BIT
92#define THIRTY_TWO_BIT
93#undef SIXTEEN_BIT
94#undef EIGHT_BIT
95#endif
96
97#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
98#define CONFIG_HEADER_RC4_LOCL_H
99/* if this is defined data[i] is used instead of *data, this is a %20
100 * speedup on x86 */
101#define RC4_INDEX
102#endif
103
104#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
105#define CONFIG_HEADER_BF_LOCL_H
106#undef BF_PTR
107#endif /* HEADER_BF_LOCL_H */
108
109#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H)
110#define CONFIG_HEADER_DES_LOCL_H
111#ifndef DES_DEFAULT_OPTIONS
112/* the following is tweaked from a config script, that is why it is a
113 * protected undef/define */
114#ifndef DES_PTR
115#undef DES_PTR
116#endif
117
118/* This helps C compiler generate the correct code for multiple functional
119 * units. It reduces register dependancies at the expense of 2 more
120 * registers */
121#ifndef DES_RISC1
122#undef DES_RISC1
123#endif
124
125#ifndef DES_RISC2
126#undef DES_RISC2
127#endif
128
129#if defined(DES_RISC1) && defined(DES_RISC2)
130YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
131#endif
132
133/* Unroll the inner loop, this sometimes helps, sometimes hinders.
134 * Very mucy CPU dependant */
135#ifndef DES_UNROLL
136#define DES_UNROLL
137#endif
138
139/* These default values were supplied by
140 * Peter Gutman <pgut001@cs.auckland.ac.nz>
141 * They are only used if nothing else has been defined */
142#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
143/* Special defines which change the way the code is built depending on the
144 CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
145 even newer MIPS CPU's, but at the moment one size fits all for
146 optimization options. Older Sparc's work better with only UNROLL, but
147 there's no way to tell at compile time what it is you're running on */
148
149#if defined( sun ) /* Newer Sparc's */
150# define DES_PTR
151# define DES_RISC1
152# define DES_UNROLL
153#elif defined( __ultrix ) /* Older MIPS */
154# define DES_PTR
155# define DES_RISC2
156# define DES_UNROLL
157#elif defined( __osf1__ ) /* Alpha */
158# define DES_PTR
159# define DES_RISC2
160#elif defined ( _AIX ) /* RS6000 */
161 /* Unknown */
162#elif defined( __hpux ) /* HP-PA */
163 /* Unknown */
164#elif defined( __aux ) /* 68K */
165 /* Unknown */
166#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */
167# define DES_UNROLL
168#elif defined( __sgi ) /* Newer MIPS */
169# define DES_PTR
170# define DES_RISC2
171# define DES_UNROLL
172#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */
173# define DES_PTR
174# define DES_RISC1
175# define DES_UNROLL
176#endif /* Systems-specific speed defines */
177#endif
178
179#endif /* DES_DEFAULT_OPTIONS */
180#endif /* HEADER_DES_LOCL_H */
diff --git a/src/lib/libssl/crypto/shlib_version b/src/lib/libssl/crypto/shlib_version
new file mode 100644
index 0000000000..eb2c603aec
--- /dev/null
+++ b/src/lib/libssl/crypto/shlib_version
@@ -0,0 +1,2 @@
1major=12
2minor=1
diff --git a/src/lib/libssl/doc/openssl.cnf b/src/lib/libssl/doc/openssl.cnf
new file mode 100644
index 0000000000..4c1d595b0a
--- /dev/null
+++ b/src/lib/libssl/doc/openssl.cnf
@@ -0,0 +1,313 @@
1#
2# OpenSSL example configuration file.
3# This is mostly being used for generation of certificate requests.
4#
5
6# This definition stops the following lines choking if HOME isn't
7# defined.
8HOME = .
9RANDFILE = $ENV::HOME/.rnd
10
11# Extra OBJECT IDENTIFIER info:
12#oid_file = $ENV::HOME/.oid
13oid_section = new_oids
14
15# To use this configuration file with the "-extfile" option of the
16# "openssl x509" utility, name here the section containing the
17# X.509v3 extensions to use:
18# extensions =
19# (Alternatively, use a configuration file that has only
20# X.509v3 extensions in its main [= default] section.)
21
22[ new_oids ]
23
24# We can add new OIDs in here for use by 'ca' and 'req'.
25# Add a simple OID like this:
26# testoid1=1.2.3.4
27# Or use config file substitution like this:
28# testoid2=${testoid1}.5.6
29
30####################################################################
31[ ca ]
32default_ca = CA_default # The default ca section
33
34####################################################################
35[ CA_default ]
36
37dir = ./demoCA # Where everything is kept
38certs = $dir/certs # Where the issued certs are kept
39crl_dir = $dir/crl # Where the issued crl are kept
40database = $dir/index.txt # database index file.
41#unique_subject = no # Set to 'no' to allow creation of
42 # several ctificates with same subject.
43new_certs_dir = $dir/newcerts # default place for new certs.
44
45certificate = $dir/cacert.pem # The CA certificate
46serial = $dir/serial # The current serial number
47#crlnumber = $dir/crlnumber # the current crl number must be
48 # commented out to leave a V1 CRL
49crl = $dir/crl.pem # The current CRL
50private_key = $dir/private/cakey.pem# The private key
51RANDFILE = $dir/private/.rand # private random number file
52
53x509_extensions = usr_cert # The extentions to add to the cert
54
55# Comment out the following two lines for the "traditional"
56# (and highly broken) format.
57name_opt = ca_default # Subject Name options
58cert_opt = ca_default # Certificate field options
59
60# Extension copying option: use with caution.
61# copy_extensions = copy
62
63# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
64# so this is commented out by default to leave a V1 CRL.
65# crlnumber must also be commented out to leave a V1 CRL.
66# crl_extensions = crl_ext
67
68default_days = 365 # how long to certify for
69default_crl_days= 30 # how long before next CRL
70default_md = md5 # which md to use.
71preserve = no # keep passed DN ordering
72
73# A few difference way of specifying how similar the request should look
74# For type CA, the listed attributes must be the same, and the optional
75# and supplied fields are just that :-)
76policy = policy_match
77
78# For the CA policy
79[ policy_match ]
80countryName = match
81stateOrProvinceName = match
82organizationName = match
83organizationalUnitName = optional
84commonName = supplied
85emailAddress = optional
86
87# For the 'anything' policy
88# At this point in time, you must list all acceptable 'object'
89# types.
90[ policy_anything ]
91countryName = optional
92stateOrProvinceName = optional
93localityName = optional
94organizationName = optional
95organizationalUnitName = optional
96commonName = supplied
97emailAddress = optional
98
99####################################################################
100[ req ]
101default_bits = 1024
102default_keyfile = privkey.pem
103distinguished_name = req_distinguished_name
104attributes = req_attributes
105x509_extensions = v3_ca # The extentions to add to the self signed cert
106
107# Passwords for private keys if not present they will be prompted for
108# input_password = secret
109# output_password = secret
110
111# This sets a mask for permitted string types. There are several options.
112# default: PrintableString, T61String, BMPString.
113# pkix : PrintableString, BMPString.
114# utf8only: only UTF8Strings.
115# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
116# MASK:XXXX a literal mask value.
117# WARNING: current versions of Netscape crash on BMPStrings or UTF8Strings
118# so use this option with caution!
119string_mask = nombstr
120
121# req_extensions = v3_req # The extensions to add to a certificate request
122
123[ req_distinguished_name ]
124countryName = Country Name (2 letter code)
125countryName_default = AU
126countryName_min = 2
127countryName_max = 2
128
129stateOrProvinceName = State or Province Name (full name)
130stateOrProvinceName_default = Some-State
131
132localityName = Locality Name (eg, city)
133
1340.organizationName = Organization Name (eg, company)
1350.organizationName_default = Internet Widgits Pty Ltd
136
137# we can do this but it is not needed normally :-)
138#1.organizationName = Second Organization Name (eg, company)
139#1.organizationName_default = World Wide Web Pty Ltd
140
141organizationalUnitName = Organizational Unit Name (eg, section)
142#organizationalUnitName_default =
143
144commonName = Common Name (eg, YOUR name)
145commonName_max = 64
146
147emailAddress = Email Address
148emailAddress_max = 64
149
150# SET-ex3 = SET extension number 3
151
152[ req_attributes ]
153challengePassword = A challenge password
154challengePassword_min = 4
155challengePassword_max = 20
156
157unstructuredName = An optional company name
158
159[ usr_cert ]
160
161# These extensions are added when 'ca' signs a request.
162
163# This goes against PKIX guidelines but some CAs do it and some software
164# requires this to avoid interpreting an end user certificate as a CA.
165
166basicConstraints=CA:FALSE
167
168# Here are some examples of the usage of nsCertType. If it is omitted
169# the certificate can be used for anything *except* object signing.
170
171# This is OK for an SSL server.
172# nsCertType = server
173
174# For an object signing certificate this would be used.
175# nsCertType = objsign
176
177# For normal client use this is typical
178# nsCertType = client, email
179
180# and for everything including object signing:
181# nsCertType = client, email, objsign
182
183# This is typical in keyUsage for a client certificate.
184# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
185
186# This will be displayed in Netscape's comment listbox.
187nsComment = "OpenSSL Generated Certificate"
188
189# PKIX recommendations harmless if included in all certificates.
190subjectKeyIdentifier=hash
191authorityKeyIdentifier=keyid,issuer:always
192
193# This stuff is for subjectAltName and issuerAltname.
194# Import the email address.
195# subjectAltName=email:copy
196# An alternative to produce certificates that aren't
197# deprecated according to PKIX.
198# subjectAltName=email:move
199
200# Copy subject details
201# issuerAltName=issuer:copy
202
203#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem
204#nsBaseUrl
205#nsRevocationUrl
206#nsRenewalUrl
207#nsCaPolicyUrl
208#nsSslServerName
209
210[ v3_req ]
211
212# Extensions to add to a certificate request
213
214basicConstraints = CA:FALSE
215keyUsage = nonRepudiation, digitalSignature, keyEncipherment
216
217[ v3_ca ]
218
219
220# Extensions for a typical CA
221
222
223# PKIX recommendation.
224
225subjectKeyIdentifier=hash
226
227authorityKeyIdentifier=keyid:always,issuer:always
228
229# This is what PKIX recommends but some broken software chokes on critical
230# extensions.
231#basicConstraints = critical,CA:true
232# So we do this instead.
233basicConstraints = CA:true
234
235# Key usage: this is typical for a CA certificate. However since it will
236# prevent it being used as an test self-signed certificate it is best
237# left out by default.
238# keyUsage = cRLSign, keyCertSign
239
240# Some might want this also
241# nsCertType = sslCA, emailCA
242
243# Include email address in subject alt name: another PKIX recommendation
244# subjectAltName=email:copy
245# Copy issuer details
246# issuerAltName=issuer:copy
247
248# DER hex encoding of an extension: beware experts only!
249# obj=DER:02:03
250# Where 'obj' is a standard or added object
251# You can even override a supported extension:
252# basicConstraints= critical, DER:30:03:01:01:FF
253
254[ crl_ext ]
255
256# CRL extensions.
257# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
258
259# issuerAltName=issuer:copy
260authorityKeyIdentifier=keyid:always,issuer:always
261
262[ proxy_cert_ext ]
263# These extensions should be added when creating a proxy certificate
264
265# This goes against PKIX guidelines but some CAs do it and some software
266# requires this to avoid interpreting an end user certificate as a CA.
267
268basicConstraints=CA:FALSE
269
270# Here are some examples of the usage of nsCertType. If it is omitted
271# the certificate can be used for anything *except* object signing.
272
273# This is OK for an SSL server.
274# nsCertType = server
275
276# For an object signing certificate this would be used.
277# nsCertType = objsign
278
279# For normal client use this is typical
280# nsCertType = client, email
281
282# and for everything including object signing:
283# nsCertType = client, email, objsign
284
285# This is typical in keyUsage for a client certificate.
286# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
287
288# This will be displayed in Netscape's comment listbox.
289nsComment = "OpenSSL Generated Certificate"
290
291# PKIX recommendations harmless if included in all certificates.
292subjectKeyIdentifier=hash
293authorityKeyIdentifier=keyid,issuer:always
294
295# This stuff is for subjectAltName and issuerAltname.
296# Import the email address.
297# subjectAltName=email:copy
298# An alternative to produce certificates that aren't
299# deprecated according to PKIX.
300# subjectAltName=email:move
301
302# Copy subject details
303# issuerAltName=issuer:copy
304
305#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem
306#nsBaseUrl
307#nsRevocationUrl
308#nsRenewalUrl
309#nsCaPolicyUrl
310#nsSslServerName
311
312# This really needs to be in place for it to be a proxy certificate.
313proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo
diff --git a/src/lib/libssl/doc/openssl.txt b/src/lib/libssl/doc/openssl.txt
new file mode 100644
index 0000000000..432a17b66c
--- /dev/null
+++ b/src/lib/libssl/doc/openssl.txt
@@ -0,0 +1,1235 @@
1
2This is some preliminary documentation for OpenSSL.
3
4Contents:
5
6 OpenSSL X509V3 extension configuration
7 X509V3 Extension code: programmers guide
8 PKCS#12 Library
9
10
11==============================================================================
12 OpenSSL X509V3 extension configuration
13==============================================================================
14
15OpenSSL X509V3 extension configuration: preliminary documentation.
16
17INTRODUCTION.
18
19For OpenSSL 0.9.2 the extension code has be considerably enhanced. It is now
20possible to add and print out common X509 V3 certificate and CRL extensions.
21
22BEGINNERS NOTE
23
24For most simple applications you don't need to know too much about extensions:
25the default openssl.cnf values will usually do sensible things.
26
27If you want to know more you can initially quickly look through the sections
28describing how the standard OpenSSL utilities display and add extensions and
29then the list of supported extensions.
30
31For more technical information about the meaning of extensions see:
32
33http://www.imc.org/ietf-pkix/
34http://home.netscape.com/eng/security/certs.html
35
36PRINTING EXTENSIONS.
37
38Extension values are automatically printed out for supported extensions.
39
40openssl x509 -in cert.pem -text
41openssl crl -in crl.pem -text
42
43will give information in the extension printout, for example:
44
45 X509v3 extensions:
46 X509v3 Basic Constraints:
47 CA:TRUE
48 X509v3 Subject Key Identifier:
49 73:FE:F7:59:A7:E1:26:84:44:D6:44:36:EE:79:1A:95:7C:B1:4B:15
50 X509v3 Authority Key Identifier:
51 keyid:73:FE:F7:59:A7:E1:26:84:44:D6:44:36:EE:79:1A:95:7C:B1:4B:15, DirName:/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd/Email=email@1.address/Email=email@2.address, serial:00
52 X509v3 Key Usage:
53 Certificate Sign, CRL Sign
54 X509v3 Subject Alternative Name:
55 email:email@1.address, email:email@2.address
56
57CONFIGURATION FILES.
58
59The OpenSSL utilities 'ca' and 'req' can now have extension sections listing
60which certificate extensions to include. In each case a line:
61
62x509_extensions = extension_section
63
64indicates which section contains the extensions. In the case of 'req' the
65extension section is used when the -x509 option is present to create a
66self signed root certificate.
67
68The 'x509' utility also supports extensions when it signs a certificate.
69The -extfile option is used to set the configuration file containing the
70extensions. In this case a line with:
71
72extensions = extension_section
73
74in the nameless (default) section is used. If no such line is included then
75it uses the default section.
76
77You can also add extensions to CRLs: a line
78
79crl_extensions = crl_extension_section
80
81will include extensions when the -gencrl option is used with the 'ca' utility.
82You can add any extension to a CRL but of the supported extensions only
83issuerAltName and authorityKeyIdentifier make any real sense. Note: these are
84CRL extensions NOT CRL *entry* extensions which cannot currently be generated.
85CRL entry extensions can be displayed.
86
87NB. At this time Netscape Communicator rejects V2 CRLs: to get an old V1 CRL
88you should not include a crl_extensions line in the configuration file.
89
90As with all configuration files you can use the inbuilt environment expansion
91to allow the values to be passed in the environment. Therefore if you have
92several extension sections used for different purposes you can have a line:
93
94x509_extensions = $ENV::ENV_EXT
95
96and set the ENV_EXT environment variable before calling the relevant utility.
97
98EXTENSION SYNTAX.
99
100Extensions have the basic form:
101
102extension_name=[critical,] extension_options
103
104the use of the critical option makes the extension critical. Extreme caution
105should be made when using the critical flag. If an extension is marked
106as critical then any client that does not understand the extension should
107reject it as invalid. Some broken software will reject certificates which
108have *any* critical extensions (these violates PKIX but we have to live
109with it).
110
111There are three main types of extension: string extensions, multi-valued
112extensions, and raw extensions.
113
114String extensions simply have a string which contains either the value itself
115or how it is obtained.
116
117For example:
118
119nsComment="This is a Comment"
120
121Multi-valued extensions have a short form and a long form. The short form
122is a list of names and values:
123
124basicConstraints=critical,CA:true,pathlen:1
125
126The long form allows the values to be placed in a separate section:
127
128basicConstraints=critical,@bs_section
129
130[bs_section]
131
132CA=true
133pathlen=1
134
135Both forms are equivalent. However it should be noted that in some cases the
136same name can appear multiple times, for example,
137
138subjectAltName=email:steve@here,email:steve@there
139
140in this case an equivalent long form is:
141
142subjectAltName=@alt_section
143
144[alt_section]
145
146email.1=steve@here
147email.2=steve@there
148
149This is because the configuration file code cannot handle the same name
150occurring twice in the same section.
151
152The syntax of raw extensions is governed by the extension code: it can
153for example contain data in multiple sections. The correct syntax to
154use is defined by the extension code itself: check out the certificate
155policies extension for an example.
156
157In addition it is also possible to use the word DER to include arbitrary
158data in any extension.
159
1601.2.3.4=critical,DER:01:02:03:04
1611.2.3.4=DER:01020304
162
163The value following DER is a hex dump of the DER encoding of the extension
164Any extension can be placed in this form to override the default behaviour.
165For example:
166
167basicConstraints=critical,DER:00:01:02:03
168
169WARNING: DER should be used with caution. It is possible to create totally
170invalid extensions unless care is taken.
171
172CURRENTLY SUPPORTED EXTENSIONS.
173
174If you aren't sure about extensions then they can be largely ignored: its only
175when you want to do things like restrict certificate usage when you need to
176worry about them.
177
178The only extension that a beginner might want to look at is Basic Constraints.
179If in addition you want to try Netscape object signing the you should also
180look at Netscape Certificate Type.
181
182Literal String extensions.
183
184In each case the 'value' of the extension is placed directly in the
185extension. Currently supported extensions in this category are: nsBaseUrl,
186nsRevocationUrl, nsCaRevocationUrl, nsRenewalUrl, nsCaPolicyUrl,
187nsSslServerName and nsComment.
188
189For example:
190
191nsComment="This is a test comment"
192
193Bit Strings.
194
195Bit string extensions just consist of a list of supported bits, currently
196two extensions are in this category: PKIX keyUsage and the Netscape specific
197nsCertType.
198
199nsCertType (netscape certificate type) takes the flags: client, server, email,
200objsign, reserved, sslCA, emailCA, objCA.
201
202keyUsage (PKIX key usage) takes the flags: digitalSignature, nonRepudiation,
203keyEncipherment, dataEncipherment, keyAgreement, keyCertSign, cRLSign,
204encipherOnly, decipherOnly.
205
206For example:
207
208nsCertType=server
209
210keyUsage=digitalSignature, nonRepudiation
211
212Hints on Netscape Certificate Type.
213
214Other than Basic Constraints this is the only extension a beginner might
215want to use, if you want to try Netscape object signing, otherwise it can
216be ignored.
217
218If you want a certificate that can be used just for object signing then:
219
220nsCertType=objsign
221
222will do the job. If you want to use it as a normal end user and server
223certificate as well then
224
225nsCertType=objsign,email,server
226
227is more appropriate. You cannot use a self signed certificate for object
228signing (well Netscape signtool can but it cheats!) so you need to create
229a CA certificate and sign an end user certificate with it.
230
231Side note: If you want to conform to the Netscape specifications then you
232should really also set:
233
234nsCertType=objCA
235
236in the *CA* certificate for just an object signing CA and
237
238nsCertType=objCA,emailCA,sslCA
239
240for everything. Current Netscape software doesn't enforce this so it can
241be omitted.
242
243Basic Constraints.
244
245This is generally the only extension you need to worry about for simple
246applications. If you want your certificate to be usable as a CA certificate
247(in addition to an end user certificate) then you set this to:
248
249basicConstraints=CA:TRUE
250
251if you want to be certain the certificate cannot be used as a CA then do:
252
253basicConstraints=CA:FALSE
254
255The rest of this section describes more advanced usage.
256
257Basic constraints is a multi-valued extension that supports a CA and an
258optional pathlen option. The CA option takes the values true and false and
259pathlen takes an integer. Note if the CA option is false the pathlen option
260should be omitted.
261
262The pathlen parameter indicates the maximum number of CAs that can appear
263below this one in a chain. So if you have a CA with a pathlen of zero it can
264only be used to sign end user certificates and not further CAs. This all
265assumes that the software correctly interprets this extension of course.
266
267Examples:
268
269basicConstraints=CA:TRUE
270basicConstraints=critical,CA:TRUE, pathlen:0
271
272NOTE: for a CA to be considered valid it must have the CA option set to
273TRUE. An end user certificate MUST NOT have the CA value set to true.
274According to PKIX recommendations it should exclude the extension entirely,
275however some software may require CA set to FALSE for end entity certificates.
276
277Extended Key Usage.
278
279This extensions consists of a list of usages.
280
281These can either be object short names of the dotted numerical form of OIDs.
282While any OID can be used only certain values make sense. In particular the
283following PKIX, NS and MS values are meaningful:
284
285Value Meaning
286----- -------
287serverAuth SSL/TLS Web Server Authentication.
288clientAuth SSL/TLS Web Client Authentication.
289codeSigning Code signing.
290emailProtection E-mail Protection (S/MIME).
291timeStamping Trusted Timestamping
292msCodeInd Microsoft Individual Code Signing (authenticode)
293msCodeCom Microsoft Commercial Code Signing (authenticode)
294msCTLSign Microsoft Trust List Signing
295msSGC Microsoft Server Gated Crypto
296msEFS Microsoft Encrypted File System
297nsSGC Netscape Server Gated Crypto
298
299For example, under IE5 a CA can be used for any purpose: by including a list
300of the above usages the CA can be restricted to only authorised uses.
301
302Note: software packages may place additional interpretations on certificate
303use, in particular some usages may only work for selected CAs. Don't for example
304expect just including msSGC or nsSGC will automatically mean that a certificate
305can be used for SGC ("step up" encryption) otherwise anyone could use it.
306
307Examples:
308
309extendedKeyUsage=critical,codeSigning,1.2.3.4
310extendedKeyUsage=nsSGC,msSGC
311
312Subject Key Identifier.
313
314This is really a string extension and can take two possible values. Either
315a hex string giving details of the extension value to include or the word
316'hash' which then automatically follow PKIX guidelines in selecting and
317appropriate key identifier. The use of the hex string is strongly discouraged.
318
319Example: subjectKeyIdentifier=hash
320
321Authority Key Identifier.
322
323The authority key identifier extension permits two options. keyid and issuer:
324both can take the optional value "always".
325
326If the keyid option is present an attempt is made to copy the subject key
327identifier from the parent certificate. If the value "always" is present
328then an error is returned if the option fails.
329
330The issuer option copies the issuer and serial number from the issuer
331certificate. Normally this will only be done if the keyid option fails or
332is not included: the "always" flag will always include the value.
333
334Subject Alternative Name.
335
336The subject alternative name extension allows various literal values to be
337included in the configuration file. These include "email" (an email address)
338"URI" a uniform resource indicator, "DNS" (a DNS domain name), RID (a
339registered ID: OBJECT IDENTIFIER) and IP (and IP address).
340
341Also the email option include a special 'copy' value. This will automatically
342include and email addresses contained in the certificate subject name in
343the extension.
344
345Examples:
346
347subjectAltName=email:copy,email:my@other.address,URI:http://my.url.here/
348subjectAltName=email:my@other.address,RID:1.2.3.4
349
350Issuer Alternative Name.
351
352The issuer alternative name option supports all the literal options of
353subject alternative name. It does *not* support the email:copy option because
354that would not make sense. It does support an additional issuer:copy option
355that will copy all the subject alternative name values from the issuer
356certificate (if possible).
357
358Example:
359
360issuserAltName = issuer:copy
361
362Authority Info Access.
363
364The authority information access extension gives details about how to access
365certain information relating to the CA. Its syntax is accessOID;location
366where 'location' has the same syntax as subject alternative name (except
367that email:copy is not supported). accessOID can be any valid OID but only
368certain values are meaningful for example OCSP and caIssuers. OCSP gives the
369location of an OCSP responder: this is used by Netscape PSM and other software.
370
371Example:
372
373authorityInfoAccess = OCSP;URI:http://ocsp.my.host/
374authorityInfoAccess = caIssuers;URI:http://my.ca/ca.html
375
376CRL distribution points.
377
378This is a multi-valued extension that supports all the literal options of
379subject alternative name. Of the few software packages that currently interpret
380this extension most only interpret the URI option.
381
382Currently each option will set a new DistributionPoint with the fullName
383field set to the given value.
384
385Other fields like cRLissuer and reasons cannot currently be set or displayed:
386at this time no examples were available that used these fields.
387
388If you see this extension with <UNSUPPORTED> when you attempt to print it out
389or it doesn't appear to display correctly then let me know, including the
390certificate (mail me at steve@openssl.org) .
391
392Examples:
393
394crlDistributionPoints=URI:http://www.myhost.com/myca.crl
395crlDistributionPoints=URI:http://www.my.com/my.crl,URI:http://www.oth.com/my.crl
396
397Certificate Policies.
398
399This is a RAW extension. It attempts to display the contents of this extension:
400unfortunately this extension is often improperly encoded.
401
402The certificate policies extension will rarely be used in practice: few
403software packages interpret it correctly or at all. IE5 does partially
404support this extension: but it needs the 'ia5org' option because it will
405only correctly support a broken encoding. Of the options below only the
406policy OID, explicitText and CPS options are displayed with IE5.
407
408All the fields of this extension can be set by using the appropriate syntax.
409
410If you follow the PKIX recommendations of not including any qualifiers and just
411using only one OID then you just include the value of that OID. Multiple OIDs
412can be set separated by commas, for example:
413
414certificatePolicies= 1.2.4.5, 1.1.3.4
415
416If you wish to include qualifiers then the policy OID and qualifiers need to
417be specified in a separate section: this is done by using the @section syntax
418instead of a literal OID value.
419
420The section referred to must include the policy OID using the name
421policyIdentifier, cPSuri qualifiers can be included using the syntax:
422
423CPS.nnn=value
424
425userNotice qualifiers can be set using the syntax:
426
427userNotice.nnn=@notice
428
429The value of the userNotice qualifier is specified in the relevant section.
430This section can include explicitText, organization and noticeNumbers
431options. explicitText and organization are text strings, noticeNumbers is a
432comma separated list of numbers. The organization and noticeNumbers options
433(if included) must BOTH be present. If you use the userNotice option with IE5
434then you need the 'ia5org' option at the top level to modify the encoding:
435otherwise it will not be interpreted properly.
436
437Example:
438
439certificatePolicies=ia5org,1.2.3.4,1.5.6.7.8,@polsect
440
441[polsect]
442
443policyIdentifier = 1.3.5.8
444CPS.1="http://my.host.name/"
445CPS.2="http://my.your.name/"
446userNotice.1=@notice
447
448[notice]
449
450explicitText="Explicit Text Here"
451organization="Organisation Name"
452noticeNumbers=1,2,3,4
453
454TECHNICAL NOTE: the ia5org option changes the type of the 'organization' field,
455according to PKIX it should be of type DisplayText but Verisign uses an
456IA5STRING and IE5 needs this too.
457
458Display only extensions.
459
460Some extensions are only partially supported and currently are only displayed
461but cannot be set. These include private key usage period, CRL number, and
462CRL reason.
463
464==============================================================================
465 X509V3 Extension code: programmers guide
466==============================================================================
467
468The purpose of the extension code is twofold. It allows an extension to be
469created from a string or structure describing its contents and it prints out an
470extension in a human or machine readable form.
471
4721. Initialisation and cleanup.
473
474No special initialisation is needed before calling the extension functions.
475You used to have to call X509V3_add_standard_extensions(); but this is no longer
476required and this function no longer does anything.
477
478void X509V3_EXT_cleanup(void);
479
480This function should be called to cleanup the extension code if any custom
481extensions have been added. If no custom extensions have been added then this
482call does nothing. After this call all custom extension code is freed up but
483you can still use the standard extensions.
484
4852. Printing and parsing extensions.
486
487The simplest way to print out extensions is via the standard X509 printing
488routines: if you use the standard X509_print() function, the supported
489extensions will be printed out automatically.
490
491The following functions allow finer control over extension display:
492
493int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, int flag, int indent);
494int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent);
495
496These two functions print out an individual extension to a BIO or FILE pointer.
497Currently the flag argument is unused and should be set to 0. The 'indent'
498argument is the number of spaces to indent each line.
499
500void *X509V3_EXT_d2i(X509_EXTENSION *ext);
501
502This function parses an extension and returns its internal structure. The
503precise structure you get back depends on the extension being parsed. If the
504extension if basicConstraints you will get back a pointer to a
505BASIC_CONSTRAINTS structure. Check out the source in crypto/x509v3 for more
506details about the structures returned. The returned structure should be freed
507after use using the relevant free function, BASIC_CONSTRAINTS_free() for
508example.
509
510void * X509_get_ext_d2i(X509 *x, int nid, int *crit, int *idx);
511void * X509_CRL_get_ext_d2i(X509_CRL *x, int nid, int *crit, int *idx);
512void * X509_REVOKED_get_ext_d2i(X509_REVOKED *x, int nid, int *crit, int *idx);
513void * X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx);
514
515These functions combine the operations of searching for extensions and
516parsing them. They search a certificate, a CRL a CRL entry or a stack
517of extensions respectively for extension whose NID is 'nid' and return
518the parsed result of NULL if an error occurred. For example:
519
520BASIC_CONSTRAINTS *bs;
521bs = X509_get_ext_d2i(cert, NID_basic_constraints, NULL, NULL);
522
523This will search for the basicConstraints extension and either return
524it value or NULL. NULL can mean either the extension was not found, it
525occurred more than once or it could not be parsed.
526
527If 'idx' is NULL then an extension is only parsed if it occurs precisely
528once. This is standard behaviour because extensions normally cannot occur
529more than once. If however more than one extension of the same type can
530occur it can be used to parse successive extensions for example:
531
532int i;
533void *ext;
534
535i = -1;
536for(;;) {
537 ext = X509_get_ext_d2i(x, nid, crit, &idx);
538 if(ext == NULL) break;
539 /* Do something with ext */
540}
541
542If 'crit' is not NULL and the extension was found then the int it points to
543is set to 1 for critical extensions and 0 for non critical. Therefore if the
544function returns NULL but 'crit' is set to 0 or 1 then the extension was
545found but it could not be parsed.
546
547The int pointed to by crit will be set to -1 if the extension was not found
548and -2 if the extension occurred more than once (this will only happen if
549idx is NULL). In both cases the function will return NULL.
550
5513. Generating extensions.
552
553An extension will typically be generated from a configuration file, or some
554other kind of configuration database.
555
556int X509V3_EXT_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section,
557 X509 *cert);
558int X509V3_EXT_CRL_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section,
559 X509_CRL *crl);
560
561These functions add all the extensions in the given section to the given
562certificate or CRL. They will normally be called just before the certificate
563or CRL is due to be signed. Both return 0 on error on non zero for success.
564
565In each case 'conf' is the LHASH pointer of the configuration file to use
566and 'section' is the section containing the extension details.
567
568See the 'context functions' section for a description of the ctx parameter.
569
570
571X509_EXTENSION *X509V3_EXT_conf(LHASH *conf, X509V3_CTX *ctx, char *name,
572 char *value);
573
574This function returns an extension based on a name and value pair, if the
575pair will not need to access other sections in a config file (or there is no
576config file) then the 'conf' parameter can be set to NULL.
577
578X509_EXTENSION *X509V3_EXT_conf_nid(char *conf, X509V3_CTX *ctx, int nid,
579 char *value);
580
581This function creates an extension in the same way as X509V3_EXT_conf() but
582takes the NID of the extension rather than its name.
583
584For example to produce basicConstraints with the CA flag and a path length of
58510:
586
587x = X509V3_EXT_conf_nid(NULL, NULL, NID_basic_constraints,"CA:TRUE,pathlen:10");
588
589
590X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc);
591
592This function sets up an extension from its internal structure. The ext_nid
593parameter is the NID of the extension and 'crit' is the critical flag.
594
5954. Context functions.
596
597The following functions set and manipulate an extension context structure.
598The purpose of the extension context is to allow the extension code to
599access various structures relating to the "environment" of the certificate:
600for example the issuers certificate or the certificate request.
601
602void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject,
603 X509_REQ *req, X509_CRL *crl, int flags);
604
605This function sets up an X509V3_CTX structure with details of the certificate
606environment: specifically the issuers certificate, the subject certificate,
607the certificate request and the CRL: if these are not relevant or not
608available then they can be set to NULL. The 'flags' parameter should be set
609to zero.
610
611X509V3_set_ctx_test(ctx)
612
613This macro is used to set the 'ctx' structure to a 'test' value: this is to
614allow the syntax of an extension (or configuration file) to be tested.
615
616X509V3_set_ctx_nodb(ctx)
617
618This macro is used when no configuration database is present.
619
620void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH *lhash);
621
622This function is used to set the configuration database when it is an LHASH
623structure: typically a configuration file.
624
625The following functions are used to access a configuration database: they
626should only be used in RAW extensions.
627
628char * X509V3_get_string(X509V3_CTX *ctx, char *name, char *section);
629
630This function returns the value of the parameter "name" in "section", or NULL
631if there has been an error.
632
633void X509V3_string_free(X509V3_CTX *ctx, char *str);
634
635This function frees up the string returned by the above function.
636
637STACK_OF(CONF_VALUE) * X509V3_get_section(X509V3_CTX *ctx, char *section);
638
639This function returns a whole section as a STACK_OF(CONF_VALUE) .
640
641void X509V3_section_free( X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section);
642
643This function frees up the STACK returned by the above function.
644
645Note: it is possible to use the extension code with a custom configuration
646database. To do this the "db_meth" element of the X509V3_CTX structure should
647be set to an X509V3_CTX_METHOD structure. This structure contains the following
648function pointers:
649
650char * (*get_string)(void *db, char *section, char *value);
651STACK_OF(CONF_VALUE) * (*get_section)(void *db, char *section);
652void (*free_string)(void *db, char * string);
653void (*free_section)(void *db, STACK_OF(CONF_VALUE) *section);
654
655these will be called and passed the 'db' element in the X509V3_CTX structure
656to access the database. If a given function is not implemented or not required
657it can be set to NULL.
658
6595. String helper functions.
660
661There are several "i2s" and "s2i" functions that convert structures to and
662from ASCII strings. In all the "i2s" cases the returned string should be
663freed using Free() after use. Since some of these are part of other extension
664code they may take a 'method' parameter. Unless otherwise stated it can be
665safely set to NULL.
666
667char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, ASN1_OCTET_STRING *oct);
668
669This returns a hex string from an ASN1_OCTET_STRING.
670
671char * i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, ASN1_INTEGER *aint);
672char * i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, ASN1_ENUMERATED *aint);
673
674These return a string decimal representations of an ASN1_INTEGER and an
675ASN1_ENUMERATED type, respectively.
676
677ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method,
678 X509V3_CTX *ctx, char *str);
679
680This converts an ASCII hex string to an ASN1_OCTET_STRING.
681
682ASN1_INTEGER * s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, char *value);
683
684This converts a decimal ASCII string into an ASN1_INTEGER.
685
6866. Multi valued extension helper functions.
687
688The following functions can be used to manipulate STACKs of CONF_VALUE
689structures, as used by multi valued extensions.
690
691int X509V3_get_value_bool(CONF_VALUE *value, int *asn1_bool);
692
693This function expects a boolean value in 'value' and sets 'asn1_bool' to
694it. That is it sets it to 0 for FALSE or 0xff for TRUE. The following
695strings are acceptable: "TRUE", "true", "Y", "y", "YES", "yes", "FALSE"
696"false", "N", "n", "NO" or "no".
697
698int X509V3_get_value_int(CONF_VALUE *value, ASN1_INTEGER **aint);
699
700This accepts a decimal integer of arbitrary length and sets an ASN1_INTEGER.
701
702int X509V3_add_value(const char *name, const char *value,
703 STACK_OF(CONF_VALUE) **extlist);
704
705This simply adds a string name and value pair.
706
707int X509V3_add_value_uchar(const char *name, const unsigned char *value,
708 STACK_OF(CONF_VALUE) **extlist);
709
710The same as above but for an unsigned character value.
711
712int X509V3_add_value_bool(const char *name, int asn1_bool,
713 STACK_OF(CONF_VALUE) **extlist);
714
715This adds either "TRUE" or "FALSE" depending on the value of 'asn1_bool'
716
717int X509V3_add_value_bool_nf(char *name, int asn1_bool,
718 STACK_OF(CONF_VALUE) **extlist);
719
720This is the same as above except it adds nothing if asn1_bool is FALSE.
721
722int X509V3_add_value_int(const char *name, ASN1_INTEGER *aint,
723 STACK_OF(CONF_VALUE) **extlist);
724
725This function adds the value of the ASN1_INTEGER in decimal form.
726
7277. Other helper functions.
728
729<to be added>
730
731ADDING CUSTOM EXTENSIONS.
732
733Currently there are three types of supported extensions.
734
735String extensions are simple strings where the value is placed directly in the
736extensions, and the string returned is printed out.
737
738Multi value extensions are passed a STACK_OF(CONF_VALUE) name and value pairs
739or return a STACK_OF(CONF_VALUE).
740
741Raw extensions are just passed a BIO or a value and it is the extensions
742responsibility to handle all the necessary printing.
743
744There are two ways to add an extension. One is simply as an alias to an already
745existing extension. An alias is an extension that is identical in ASN1 structure
746to an existing extension but has a different OBJECT IDENTIFIER. This can be
747done by calling:
748
749int X509V3_EXT_add_alias(int nid_to, int nid_from);
750
751'nid_to' is the new extension NID and 'nid_from' is the already existing
752extension NID.
753
754Alternatively an extension can be written from scratch. This involves writing
755the ASN1 code to encode and decode the extension and functions to print out and
756generate the extension from strings. The relevant functions are then placed in
757a X509V3_EXT_METHOD structure and int X509V3_EXT_add(X509V3_EXT_METHOD *ext);
758called.
759
760The X509V3_EXT_METHOD structure is described below.
761
762strut {
763int ext_nid;
764int ext_flags;
765X509V3_EXT_NEW ext_new;
766X509V3_EXT_FREE ext_free;
767X509V3_EXT_D2I d2i;
768X509V3_EXT_I2D i2d;
769X509V3_EXT_I2S i2s;
770X509V3_EXT_S2I s2i;
771X509V3_EXT_I2V i2v;
772X509V3_EXT_V2I v2i;
773X509V3_EXT_R2I r2i;
774X509V3_EXT_I2R i2r;
775
776void *usr_data;
777};
778
779The elements have the following meanings.
780
781ext_nid is the NID of the object identifier of the extension.
782
783ext_flags is set of flags. Currently the only external flag is
784 X509V3_EXT_MULTILINE which means a multi valued extensions
785 should be printed on separate lines.
786
787usr_data is an extension specific pointer to any relevant data. This
788 allows extensions to share identical code but have different
789 uses. An example of this is the bit string extension which uses
790 usr_data to contain a list of the bit names.
791
792All the remaining elements are function pointers.
793
794ext_new is a pointer to a function that allocates memory for the
795 extension ASN1 structure: for example ASN1_OBJECT_new().
796
797ext_free is a pointer to a function that free up memory of the extension
798 ASN1 structure: for example ASN1_OBJECT_free().
799
800d2i is the standard ASN1 function that converts a DER buffer into
801 the internal ASN1 structure: for example d2i_ASN1_IA5STRING().
802
803i2d is the standard ASN1 function that converts the internal
804 structure into the DER representation: for example
805 i2d_ASN1_IA5STRING().
806
807The remaining functions are depend on the type of extension. One i2X and
808one X2i should be set and the rest set to NULL. The types set do not need
809to match up, for example the extension could be set using the multi valued
810v2i function and printed out using the raw i2r.
811
812All functions have the X509V3_EXT_METHOD passed to them in the 'method'
813parameter and an X509V3_CTX structure. Extension code can then access the
814parent structure via the 'method' parameter to for example make use of the value
815of usr_data. If the code needs to use detail relating to the request it can
816use the 'ctx' parameter.
817
818A note should be given here about the 'flags' member of the 'ctx' parameter.
819If it has the value CTX_TEST then the configuration syntax is being checked
820and no actual certificate or CRL exists. Therefore any attempt in the config
821file to access such information should silently succeed. If the syntax is OK
822then it should simply return a (possibly bogus) extension, otherwise it
823should return NULL.
824
825char *i2s(struct v3_ext_method *method, void *ext);
826
827This function takes the internal structure in the ext parameter and returns
828a Malloc'ed string representing its value.
829
830void * s2i(struct v3_ext_method *method, struct v3_ext_ctx *ctx, char *str);
831
832This function takes the string representation in the ext parameter and returns
833an allocated internal structure: ext_free() will be used on this internal
834structure after use.
835
836i2v and v2i handle a STACK_OF(CONF_VALUE):
837
838typedef struct
839{
840 char *section;
841 char *name;
842 char *value;
843} CONF_VALUE;
844
845Only the name and value members are currently used.
846
847STACK_OF(CONF_VALUE) * i2v(struct v3_ext_method *method, void *ext);
848
849This function is passed the internal structure in the ext parameter and
850returns a STACK of CONF_VALUE structures. The values of name, value,
851section and the structure itself will be freed up with Free after use.
852Several helper functions are available to add values to this STACK.
853
854void * v2i(struct v3_ext_method *method, struct v3_ext_ctx *ctx,
855 STACK_OF(CONF_VALUE) *values);
856
857This function takes a STACK_OF(CONF_VALUE) structures and should set the
858values of the external structure. This typically uses the name element to
859determine which structure element to set and the value element to determine
860what to set it to. Several helper functions are available for this
861purpose (see above).
862
863int i2r(struct v3_ext_method *method, void *ext, BIO *out, int indent);
864
865This function is passed the internal extension structure in the ext parameter
866and sends out a human readable version of the extension to out. The 'indent'
867parameter should be noted to determine the necessary amount of indentation
868needed on the output.
869
870void * r2i(struct v3_ext_method *method, struct v3_ext_ctx *ctx, char *str);
871
872This is just passed the string representation of the extension. It is intended
873to be used for more elaborate extensions where the standard single and multi
874valued options are insufficient. They can use the 'ctx' parameter to parse the
875configuration database themselves. See the context functions section for details
876of how to do this.
877
878Note: although this type takes the same parameters as the "r2s" function there
879is a subtle difference. Whereas an "r2i" function can access a configuration
880database an "s2i" function MUST NOT. This is so the internal code can safely
881assume that an "s2i" function will work without a configuration database.
882
883==============================================================================
884 PKCS#12 Library
885==============================================================================
886
887This section describes the internal PKCS#12 support. There are very few
888differences between the old external library and the new internal code at
889present. This may well change because the external library will not be updated
890much in future.
891
892This version now includes a couple of high level PKCS#12 functions which
893generally "do the right thing" and should make it much easier to handle PKCS#12
894structures.
895
896HIGH LEVEL FUNCTIONS.
897
898For most applications you only need concern yourself with the high level
899functions. They can parse and generate simple PKCS#12 files as produced by
900Netscape and MSIE or indeed any compliant PKCS#12 file containing a single
901private key and certificate pair.
902
9031. Initialisation and cleanup.
904
905No special initialisation is needed for the internal PKCS#12 library: the
906standard SSLeay_add_all_algorithms() is sufficient. If you do not wish to
907add all algorithms (you should at least add SHA1 though) then you can manually
908initialise the PKCS#12 library with:
909
910PKCS12_PBE_add();
911
912The memory allocated by the PKCS#12 library is freed up when EVP_cleanup() is
913called or it can be directly freed with:
914
915EVP_PBE_cleanup();
916
917after this call (or EVP_cleanup() ) no more PKCS#12 library functions should
918be called.
919
9202. I/O functions.
921
922i2d_PKCS12_bio(bp, p12)
923
924This writes out a PKCS12 structure to a BIO.
925
926i2d_PKCS12_fp(fp, p12)
927
928This is the same but for a FILE pointer.
929
930d2i_PKCS12_bio(bp, p12)
931
932This reads in a PKCS12 structure from a BIO.
933
934d2i_PKCS12_fp(fp, p12)
935
936This is the same but for a FILE pointer.
937
9383. High level functions.
939
9403.1 Parsing with PKCS12_parse().
941
942int PKCS12_parse(PKCS12 *p12, char *pass, EVP_PKEY **pkey, X509 **cert,
943 STACK **ca);
944
945This function takes a PKCS12 structure and a password (ASCII, null terminated)
946and returns the private key, the corresponding certificate and any CA
947certificates. If any of these is not required it can be passed as a NULL.
948The 'ca' parameter should be either NULL, a pointer to NULL or a valid STACK
949structure. Typically to read in a PKCS#12 file you might do:
950
951p12 = d2i_PKCS12_fp(fp, NULL);
952PKCS12_parse(p12, password, &pkey, &cert, NULL); /* CAs not wanted */
953PKCS12_free(p12);
954
9553.2 PKCS#12 creation with PKCS12_create().
956
957PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert,
958 STACK *ca, int nid_key, int nid_cert, int iter,
959 int mac_iter, int keytype);
960
961This function will create a PKCS12 structure from a given password, name,
962private key, certificate and optional STACK of CA certificates. The remaining
9635 parameters can be set to 0 and sensible defaults will be used.
964
965The parameters nid_key and nid_cert are the key and certificate encryption
966algorithms, iter is the encryption iteration count, mac_iter is the MAC
967iteration count and keytype is the type of private key. If you really want
968to know what these last 5 parameters do then read the low level section.
969
970Typically to create a PKCS#12 file the following could be used:
971
972p12 = PKCS12_create(pass, "My Certificate", pkey, cert, NULL, 0,0,0,0,0);
973i2d_PKCS12_fp(fp, p12);
974PKCS12_free(p12);
975
9763.3 Changing a PKCS#12 structure password.
977
978int PKCS12_newpass(PKCS12 *p12, char *oldpass, char *newpass);
979
980This changes the password of an already existing PKCS#12 structure. oldpass
981is the old password and newpass is the new one. An error occurs if the old
982password is incorrect.
983
984LOW LEVEL FUNCTIONS.
985
986In some cases the high level functions do not provide the necessary
987functionality. For example if you want to generate or parse more complex
988PKCS#12 files. The sample pkcs12 application uses the low level functions
989to display details about the internal structure of a PKCS#12 file.
990
991Introduction.
992
993This is a brief description of how a PKCS#12 file is represented internally:
994some knowledge of PKCS#12 is assumed.
995
996A PKCS#12 object contains several levels.
997
998At the lowest level is a PKCS12_SAFEBAG. This can contain a certificate, a
999CRL, a private key, encrypted or unencrypted, a set of safebags (so the
1000structure can be nested) or other secrets (not documented at present).
1001A safebag can optionally have attributes, currently these are: a unicode
1002friendlyName (a Unicode string) or a localKeyID (a string of bytes).
1003
1004At the next level is an authSafe which is a set of safebags collected into
1005a PKCS#7 ContentInfo. This can be just plain data, or encrypted itself.
1006
1007At the top level is the PKCS12 structure itself which contains a set of
1008authSafes in an embedded PKCS#7 Contentinfo of type data. In addition it
1009contains a MAC which is a kind of password protected digest to preserve
1010integrity (so any unencrypted stuff below can't be tampered with).
1011
1012The reason for these levels is so various objects can be encrypted in various
1013ways. For example you might want to encrypt a set of private keys with
1014triple-DES and then include the related certificates either unencrypted or
1015with lower encryption. Yes it's the dreaded crypto laws at work again which
1016allow strong encryption on private keys and only weak encryption on other
1017stuff.
1018
1019To build one of these things you turn all certificates and keys into safebags
1020(with optional attributes). You collect the safebags into (one or more) STACKS
1021and convert these into authsafes (encrypted or unencrypted). The authsafes
1022are collected into a STACK and added to a PKCS12 structure. Finally a MAC
1023inserted.
1024
1025Pulling one apart is basically the reverse process. The MAC is verified against
1026the given password. The authsafes are extracted and each authsafe split into
1027a set of safebags (possibly involving decryption). Finally the safebags are
1028decomposed into the original keys and certificates and the attributes used to
1029match up private key and certificate pairs.
1030
1031Anyway here are the functions that do the dirty work.
1032
10331. Construction functions.
1034
10351.1 Safebag functions.
1036
1037M_PKCS12_x5092certbag(x509)
1038
1039This macro takes an X509 structure and returns a certificate bag. The
1040X509 structure can be freed up after calling this function.
1041
1042M_PKCS12_x509crl2certbag(crl)
1043
1044As above but for a CRL.
1045
1046PKCS8_PRIV_KEY_INFO *PKEY2PKCS8(EVP_PKEY *pkey)
1047
1048Take a private key and convert it into a PKCS#8 PrivateKeyInfo structure.
1049Works for both RSA and DSA private keys. NB since the PKCS#8 PrivateKeyInfo
1050structure contains a private key data in plain text form it should be free'd
1051up as soon as it has been encrypted for security reasons (freeing up the
1052structure zeros out the sensitive data). This can be done with
1053PKCS8_PRIV_KEY_INFO_free().
1054
1055PKCS8_add_keyusage(PKCS8_PRIV_KEY_INFO *p8, int usage)
1056
1057This sets the key type when a key is imported into MSIE or Outlook 98. Two
1058values are currently supported: KEY_EX and KEY_SIG. KEY_EX is an exchange type
1059key that can also be used for signing but its size is limited in the export
1060versions of MS software to 512 bits, it is also the default. KEY_SIG is a
1061signing only key but the keysize is unlimited (well 16K is supposed to work).
1062If you are using the domestic version of MSIE then you can ignore this because
1063KEY_EX is not limited and can be used for both.
1064
1065PKCS12_SAFEBAG *PKCS12_MAKE_KEYBAG(PKCS8_PRIV_KEY_INFO *p8)
1066
1067Convert a PKCS8 private key structure into a keybag. This routine embeds the
1068p8 structure in the keybag so p8 should not be freed up or used after it is
1069called. The p8 structure will be freed up when the safebag is freed.
1070
1071PKCS12_SAFEBAG *PKCS12_MAKE_SHKEYBAG(int pbe_nid, unsigned char *pass, int passlen, unsigned char *salt, int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8)
1072
1073Convert a PKCS#8 structure into a shrouded key bag (encrypted). p8 is not
1074embedded and can be freed up after use.
1075
1076int PKCS12_add_localkeyid(PKCS12_SAFEBAG *bag, unsigned char *name, int namelen)
1077int PKCS12_add_friendlyname(PKCS12_SAFEBAG *bag, unsigned char *name, int namelen)
1078
1079Add a local key id or a friendlyname to a safebag.
1080
10811.2 Authsafe functions.
1082
1083PKCS7 *PKCS12_pack_p7data(STACK *sk)
1084Take a stack of safebags and convert them into an unencrypted authsafe. The
1085stack of safebags can be freed up after calling this function.
1086
1087PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, unsigned char *pass, int passlen, unsigned char *salt, int saltlen, int iter, STACK *bags);
1088
1089As above but encrypted.
1090
10911.3 PKCS12 functions.
1092
1093PKCS12 *PKCS12_init(int mode)
1094
1095Initialise a PKCS12 structure (currently mode should be NID_pkcs7_data).
1096
1097M_PKCS12_pack_authsafes(p12, safes)
1098
1099This macro takes a STACK of authsafes and adds them to a PKCS#12 structure.
1100
1101int PKCS12_set_mac(PKCS12 *p12, unsigned char *pass, int passlen, unsigned char *salt, int saltlen, int iter, EVP_MD *md_type);
1102
1103Add a MAC to a PKCS12 structure. If EVP_MD is NULL use SHA-1, the spec suggests
1104that SHA-1 should be used.
1105
11062. Extraction Functions.
1107
11082.1 Safebags.
1109
1110M_PKCS12_bag_type(bag)
1111
1112Return the type of "bag". Returns one of the following
1113
1114NID_keyBag
1115NID_pkcs8ShroudedKeyBag 7
1116NID_certBag 8
1117NID_crlBag 9
1118NID_secretBag 10
1119NID_safeContentsBag 11
1120
1121M_PKCS12_cert_bag_type(bag)
1122
1123Returns type of certificate bag, following are understood.
1124
1125NID_x509Certificate 14
1126NID_sdsiCertificate 15
1127
1128M_PKCS12_crl_bag_type(bag)
1129
1130Returns crl bag type, currently only NID_crlBag is recognised.
1131
1132M_PKCS12_certbag2x509(bag)
1133
1134This macro extracts an X509 certificate from a certificate bag.
1135
1136M_PKCS12_certbag2x509crl(bag)
1137
1138As above but for a CRL.
1139
1140EVP_PKEY * PKCS82PKEY(PKCS8_PRIV_KEY_INFO *p8)
1141
1142Extract a private key from a PKCS8 private key info structure.
1143
1144M_PKCS12_decrypt_skey(bag, pass, passlen)
1145
1146Decrypt a shrouded key bag and return a PKCS8 private key info structure.
1147Works with both RSA and DSA keys
1148
1149char *PKCS12_get_friendlyname(bag)
1150
1151Returns the friendlyName of a bag if present or NULL if none. The returned
1152string is a null terminated ASCII string allocated with Malloc(). It should
1153thus be freed up with Free() after use.
1154
11552.2 AuthSafe functions.
1156
1157M_PKCS12_unpack_p7data(p7)
1158
1159Extract a STACK of safe bags from a PKCS#7 data ContentInfo.
1160
1161#define M_PKCS12_unpack_p7encdata(p7, pass, passlen)
1162
1163As above but for an encrypted content info.
1164
11652.3 PKCS12 functions.
1166
1167M_PKCS12_unpack_authsafes(p12)
1168
1169Extract a STACK of authsafes from a PKCS12 structure.
1170
1171M_PKCS12_mac_present(p12)
1172
1173Check to see if a MAC is present.
1174
1175int PKCS12_verify_mac(PKCS12 *p12, unsigned char *pass, int passlen)
1176
1177Verify a MAC on a PKCS12 structure. Returns an error if MAC not present.
1178
1179
1180Notes.
1181
11821. All the function return 0 or NULL on error.
11832. Encryption based functions take a common set of parameters. These are
1184described below.
1185
1186pass, passlen
1187ASCII password and length. The password on the MAC is called the "integrity
1188password" the encryption password is called the "privacy password" in the
1189PKCS#12 documentation. The passwords do not have to be the same. If -1 is
1190passed for the length it is worked out by the function itself (currently
1191this is sometimes done whatever is passed as the length but that may change).
1192
1193salt, saltlen
1194A 'salt' if salt is NULL a random salt is used. If saltlen is also zero a
1195default length is used.
1196
1197iter
1198Iteration count. This is a measure of how many times an internal function is
1199called to encrypt the data. The larger this value is the longer it takes, it
1200makes dictionary attacks on passwords harder. NOTE: Some implementations do
1201not support an iteration count on the MAC. If the password for the MAC and
1202encryption is the same then there is no point in having a high iteration
1203count for encryption if the MAC has no count. The MAC could be attacked
1204and the password used for the main decryption.
1205
1206pbe_nid
1207This is the NID of the password based encryption method used. The following are
1208supported.
1209NID_pbe_WithSHA1And128BitRC4
1210NID_pbe_WithSHA1And40BitRC4
1211NID_pbe_WithSHA1And3_Key_TripleDES_CBC
1212NID_pbe_WithSHA1And2_Key_TripleDES_CBC
1213NID_pbe_WithSHA1And128BitRC2_CBC
1214NID_pbe_WithSHA1And40BitRC2_CBC
1215
1216Which you use depends on the implementation you are exporting to. "Export
1217grade" (i.e. cryptographically challenged) products cannot support all
1218algorithms. Typically you may be able to use any encryption on shrouded key
1219bags but they must then be placed in an unencrypted authsafe. Other authsafes
1220may only support 40bit encryption. Of course if you are using SSLeay
1221throughout you can strongly encrypt everything and have high iteration counts
1222on everything.
1223
12243. For decryption routines only the password and length are needed.
1225
12264. Unlike the external version the nid's of objects are the values of the
1227constants: that is NID_certBag is the real nid, therefore there is no
1228PKCS12_obj_offset() function. Note the object constants are not the same as
1229those of the external version. If you use these constants then you will need
1230to recompile your code.
1231
12325. With the exception of PKCS12_MAKE_KEYBAG(), after calling any function or
1233macro of the form PKCS12_MAKE_SOMETHING(other) the "other" structure can be
1234reused or freed up safely.
1235
diff --git a/src/lib/libssl/doc/standards.txt b/src/lib/libssl/doc/standards.txt
new file mode 100644
index 0000000000..f6675b574b
--- /dev/null
+++ b/src/lib/libssl/doc/standards.txt
@@ -0,0 +1,261 @@
1Standards related to OpenSSL
2============================
3
4[Please, this is currently a draft. I made a first try at finding
5 documents that describe parts of what OpenSSL implements. There are
6 big gaps, and I've most certainly done something wrong. Please
7 correct whatever is... Also, this note should be removed when this
8 file is reaching a somewhat correct state. -- Richard Levitte]
9
10
11All pointers in here will be either URL's or blobs of text borrowed
12from miscellaneous indexes, like rfc-index.txt (index of RFCs),
131id-index.txt (index of Internet drafts) and the like.
14
15To find the latest possible RFCs, it's recommended to either browse
16ftp://ftp.isi.edu/in-notes/ or go to http://www.rfc-editor.org/ and
17use the search mechanism found there.
18To find the latest possible Internet drafts, it's recommended to
19browse ftp://ftp.isi.edu/internet-drafts/.
20To find the latest possible PKCS, it's recommended to browse
21http://www.rsasecurity.com/rsalabs/pkcs/.
22
23
24Implemented:
25------------
26
27These are documents that describe things that are implemented (in
28whole or at least great parts) in OpenSSL.
29
301319 The MD2 Message-Digest Algorithm. B. Kaliski. April 1992.
31 (Format: TXT=25661 bytes) (Status: INFORMATIONAL)
32
331320 The MD4 Message-Digest Algorithm. R. Rivest. April 1992. (Format:
34 TXT=32407 bytes) (Status: INFORMATIONAL)
35
361321 The MD5 Message-Digest Algorithm. R. Rivest. April 1992. (Format:
37 TXT=35222 bytes) (Status: INFORMATIONAL)
38
392246 The TLS Protocol Version 1.0. T. Dierks, C. Allen. January 1999.
40 (Format: TXT=170401 bytes) (Status: PROPOSED STANDARD)
41
422268 A Description of the RC2(r) Encryption Algorithm. R. Rivest.
43 January 1998. (Format: TXT=19048 bytes) (Status: INFORMATIONAL)
44
452315 PKCS 7: Cryptographic Message Syntax Version 1.5. B. Kaliski.
46 March 1998. (Format: TXT=69679 bytes) (Status: INFORMATIONAL)
47
48PKCS#8: Private-Key Information Syntax Standard
49
50PKCS#12: Personal Information Exchange Syntax Standard, version 1.0.
51
522560 X.509 Internet Public Key Infrastructure Online Certificate
53 Status Protocol - OCSP. M. Myers, R. Ankney, A. Malpani, S. Galperin,
54 C. Adams. June 1999. (Format: TXT=43243 bytes) (Status: PROPOSED
55 STANDARD)
56
572712 Addition of Kerberos Cipher Suites to Transport Layer Security
58 (TLS). A. Medvinsky, M. Hur. October 1999. (Format: TXT=13763 bytes)
59 (Status: PROPOSED STANDARD)
60
612898 PKCS #5: Password-Based Cryptography Specification Version 2.0.
62 B. Kaliski. September 2000. (Format: TXT=68692 bytes) (Status:
63 INFORMATIONAL)
64
652986 PKCS #10: Certification Request Syntax Specification Version 1.7.
66 M. Nystrom, B. Kaliski. November 2000. (Format: TXT=27794 bytes)
67 (Obsoletes RFC2314) (Status: INFORMATIONAL)
68
693174 US Secure Hash Algorithm 1 (SHA1). D. Eastlake 3rd, P. Jones.
70 September 2001. (Format: TXT=35525 bytes) (Status: INFORMATIONAL)
71
723268 Advanced Encryption Standard (AES) Ciphersuites for Transport
73 Layer Security (TLS). P. Chown. June 2002. (Format: TXT=13530 bytes)
74 (Status: PROPOSED STANDARD)
75
763279 Algorithms and Identifiers for the Internet X.509 Public Key
77 Infrastructure Certificate and Certificate Revocation List (CRL)
78 Profile. L. Bassham, W. Polk, R. Housley. April 2002. (Format:
79 TXT=53833 bytes) (Status: PROPOSED STANDARD)
80
813280 Internet X.509 Public Key Infrastructure Certificate and
82 Certificate Revocation List (CRL) Profile. R. Housley, W. Polk, W.
83 Ford, D. Solo. April 2002. (Format: TXT=295556 bytes) (Obsoletes
84 RFC2459) (Status: PROPOSED STANDARD)
85
863447 Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography
87 Specifications Version 2.1. J. Jonsson, B. Kaliski. February 2003.
88 (Format: TXT=143173 bytes) (Obsoletes RFC2437) (Status:
89 INFORMATIONAL)
90
913820 Internet X.509 Public Key Infrastructure (PKI) Proxy Certificate
92 Profile. S. Tuecke, V. Welch, D. Engert, L. Pearlman, M. Thompson.
93 June 2004. (Format: TXT=86374 bytes) (Status: PROPOSED STANDARD)
94
95
96Related:
97--------
98
99These are documents that are close to OpenSSL, for example the
100STARTTLS documents.
101
1021421 Privacy Enhancement for Internet Electronic Mail: Part I: Message
103 Encryption and Authentication Procedures. J. Linn. February 1993.
104 (Format: TXT=103894 bytes) (Obsoletes RFC1113) (Status: PROPOSED
105 STANDARD)
106
1071422 Privacy Enhancement for Internet Electronic Mail: Part II:
108 Certificate-Based Key Management. S. Kent. February 1993. (Format:
109 TXT=86085 bytes) (Obsoletes RFC1114) (Status: PROPOSED STANDARD)
110
1111423 Privacy Enhancement for Internet Electronic Mail: Part III:
112 Algorithms, Modes, and Identifiers. D. Balenson. February 1993.
113 (Format: TXT=33277 bytes) (Obsoletes RFC1115) (Status: PROPOSED
114 STANDARD)
115
1161424 Privacy Enhancement for Internet Electronic Mail: Part IV: Key
117 Certification and Related Services. B. Kaliski. February 1993.
118 (Format: TXT=17537 bytes) (Status: PROPOSED STANDARD)
119
1202025 The Simple Public-Key GSS-API Mechanism (SPKM). C. Adams. October
121 1996. (Format: TXT=101692 bytes) (Status: PROPOSED STANDARD)
122
1232510 Internet X.509 Public Key Infrastructure Certificate Management
124 Protocols. C. Adams, S. Farrell. March 1999. (Format: TXT=158178
125 bytes) (Status: PROPOSED STANDARD)
126
1272511 Internet X.509 Certificate Request Message Format. M. Myers, C.
128 Adams, D. Solo, D. Kemp. March 1999. (Format: TXT=48278 bytes)
129 (Status: PROPOSED STANDARD)
130
1312527 Internet X.509 Public Key Infrastructure Certificate Policy and
132 Certification Practices Framework. S. Chokhani, W. Ford. March 1999.
133 (Format: TXT=91860 bytes) (Status: INFORMATIONAL)
134
1352538 Storing Certificates in the Domain Name System (DNS). D. Eastlake
136 3rd, O. Gudmundsson. March 1999. (Format: TXT=19857 bytes) (Status:
137 PROPOSED STANDARD)
138
1392539 Storage of Diffie-Hellman Keys in the Domain Name System (DNS).
140 D. Eastlake 3rd. March 1999. (Format: TXT=21049 bytes) (Status:
141 PROPOSED STANDARD)
142
1432559 Internet X.509 Public Key Infrastructure Operational Protocols -
144 LDAPv2. S. Boeyen, T. Howes, P. Richard. April 1999. (Format:
145 TXT=22889 bytes) (Updates RFC1778) (Status: PROPOSED STANDARD)
146
1472585 Internet X.509 Public Key Infrastructure Operational Protocols:
148 FTP and HTTP. R. Housley, P. Hoffman. May 1999. (Format: TXT=14813
149 bytes) (Status: PROPOSED STANDARD)
150
1512587 Internet X.509 Public Key Infrastructure LDAPv2 Schema. S.
152 Boeyen, T. Howes, P. Richard. June 1999. (Format: TXT=15102 bytes)
153 (Status: PROPOSED STANDARD)
154
1552595 Using TLS with IMAP, POP3 and ACAP. C. Newman. June 1999.
156 (Format: TXT=32440 bytes) (Status: PROPOSED STANDARD)
157
1582631 Diffie-Hellman Key Agreement Method. E. Rescorla. June 1999.
159 (Format: TXT=25932 bytes) (Status: PROPOSED STANDARD)
160
1612632 S/MIME Version 3 Certificate Handling. B. Ramsdell, Ed.. June
162 1999. (Format: TXT=27925 bytes) (Status: PROPOSED STANDARD)
163
1642716 PPP EAP TLS Authentication Protocol. B. Aboba, D. Simon. October
165 1999. (Format: TXT=50108 bytes) (Status: EXPERIMENTAL)
166
1672773 Encryption using KEA and SKIPJACK. R. Housley, P. Yee, W. Nace.
168 February 2000. (Format: TXT=20008 bytes) (Updates RFC0959) (Status:
169 EXPERIMENTAL)
170
1712797 Certificate Management Messages over CMS. M. Myers, X. Liu, J.
172 Schaad, J. Weinstein. April 2000. (Format: TXT=103357 bytes) (Status:
173 PROPOSED STANDARD)
174
1752817 Upgrading to TLS Within HTTP/1.1. R. Khare, S. Lawrence. May
176 2000. (Format: TXT=27598 bytes) (Updates RFC2616) (Status: PROPOSED
177 STANDARD)
178
1792818 HTTP Over TLS. E. Rescorla. May 2000. (Format: TXT=15170 bytes)
180 (Status: INFORMATIONAL)
181
1822876 Use of the KEA and SKIPJACK Algorithms in CMS. J. Pawling. July
183 2000. (Format: TXT=29265 bytes) (Status: INFORMATIONAL)
184
1852984 Use of the CAST-128 Encryption Algorithm in CMS. C. Adams.
186 October 2000. (Format: TXT=11591 bytes) (Status: PROPOSED STANDARD)
187
1882985 PKCS #9: Selected Object Classes and Attribute Types Version 2.0.
189 M. Nystrom, B. Kaliski. November 2000. (Format: TXT=70703 bytes)
190 (Status: INFORMATIONAL)
191
1923029 Internet X.509 Public Key Infrastructure Data Validation and
193 Certification Server Protocols. C. Adams, P. Sylvester, M. Zolotarev,
194 R. Zuccherato. February 2001. (Format: TXT=107347 bytes) (Status:
195 EXPERIMENTAL)
196
1973039 Internet X.509 Public Key Infrastructure Qualified Certificates
198 Profile. S. Santesson, W. Polk, P. Barzin, M. Nystrom. January 2001.
199 (Format: TXT=67619 bytes) (Status: PROPOSED STANDARD)
200
2013058 Use of the IDEA Encryption Algorithm in CMS. S. Teiwes, P.
202 Hartmann, D. Kuenzi. February 2001. (Format: TXT=17257 bytes)
203 (Status: INFORMATIONAL)
204
2053161 Internet X.509 Public Key Infrastructure Time-Stamp Protocol
206 (TSP). C. Adams, P. Cain, D. Pinkas, R. Zuccherato. August 2001.
207 (Format: TXT=54585 bytes) (Status: PROPOSED STANDARD)
208
2093185 Reuse of CMS Content Encryption Keys. S. Farrell, S. Turner.
210 October 2001. (Format: TXT=20404 bytes) (Status: PROPOSED STANDARD)
211
2123207 SMTP Service Extension for Secure SMTP over Transport Layer
213 Security. P. Hoffman. February 2002. (Format: TXT=18679 bytes)
214 (Obsoletes RFC2487) (Status: PROPOSED STANDARD)
215
2163217 Triple-DES and RC2 Key Wrapping. R. Housley. December 2001.
217 (Format: TXT=19855 bytes) (Status: INFORMATIONAL)
218
2193274 Compressed Data Content Type for Cryptographic Message Syntax
220 (CMS). P. Gutmann. June 2002. (Format: TXT=11276 bytes) (Status:
221 PROPOSED STANDARD)
222
2233278 Use of Elliptic Curve Cryptography (ECC) Algorithms in
224 Cryptographic Message Syntax (CMS). S. Blake-Wilson, D. Brown, P.
225 Lambert. April 2002. (Format: TXT=33779 bytes) (Status:
226 INFORMATIONAL)
227
2283281 An Internet Attribute Certificate Profile for Authorization. S.
229 Farrell, R. Housley. April 2002. (Format: TXT=90580 bytes) (Status:
230 PROPOSED STANDARD)
231
2323369 Cryptographic Message Syntax (CMS). R. Housley. August 2002.
233 (Format: TXT=113975 bytes) (Obsoletes RFC2630, RFC3211) (Status:
234 PROPOSED STANDARD)
235
2363370 Cryptographic Message Syntax (CMS) Algorithms. R. Housley. August
237 2002. (Format: TXT=51001 bytes) (Obsoletes RFC2630, RFC3211) (Status:
238 PROPOSED STANDARD)
239
2403377 Lightweight Directory Access Protocol (v3): Technical
241 Specification. J. Hodges, R. Morgan. September 2002. (Format:
242 TXT=9981 bytes) (Updates RFC2251, RFC2252, RFC2253, RFC2254, RFC2255,
243 RFC2256, RFC2829, RFC2830) (Status: PROPOSED STANDARD)
244
2453394 Advanced Encryption Standard (AES) Key Wrap Algorithm. J. Schaad,
246 R. Housley. September 2002. (Format: TXT=73072 bytes) (Status:
247 INFORMATIONAL)
248
2493436 Transport Layer Security over Stream Control Transmission
250 Protocol. A. Jungmaier, E. Rescorla, M. Tuexen. December 2002.
251 (Format: TXT=16333 bytes) (Status: PROPOSED STANDARD)
252
253 "Securing FTP with TLS", 01/27/2000, <draft-murray-auth-ftp-ssl-05.txt>
254
255
256To be implemented:
257------------------
258
259These are documents that describe things that are planed to be
260implemented in the hopefully short future.
261
diff --git a/src/lib/libssl/man/Makefile b/src/lib/libssl/man/Makefile
new file mode 100644
index 0000000000..784537b83d
--- /dev/null
+++ b/src/lib/libssl/man/Makefile
@@ -0,0 +1,799 @@
1# $OpenBSD: Makefile,v 1.10 2006/05/12 11:16:58 fkr Exp $
2
3.include <bsd.own.mk> # for NOMAN
4
5
6POD2MAN=pod2man --official --release="OpenBSD ${OSREV}" --center=OpenSSL
7
8.ifndef NOMAN
9MANALL= \
10 BF_set_key.cat3 \
11 BN_CTX_new.cat3 \
12 BN_CTX_start.cat3 \
13 BN_add.cat3 \
14 BN_add_word.cat3 \
15 BN_bn2bin.cat3 \
16 BN_cmp.cat3 \
17 BN_copy.cat3 \
18 BN_generate_prime.cat3 \
19 BN_mod_inverse.cat3 \
20 BN_mod_mul_montgomery.cat3 \
21 BN_mod_mul_reciprocal.cat3 \
22 BN_new.cat3 \
23 BN_num_bytes.cat3 \
24 BN_rand.cat3 \
25 BN_set_bit.cat3 \
26 BN_swap.cat3 \
27 BN_zero.cat3 \
28 BUF_MEM_new.cat3 \
29 BUF_MEM_new.cat3 \
30 CRYPTO_set_ex_data.cat3 \
31 CRYPTO_set_locking_callback.cat3 \
32 DH_generate_key.cat3 \
33 DH_generate_parameters.cat3 \
34 DH_get_ex_new_index.cat3 \
35 DH_new.cat3 \
36 DH_set_method.cat3 \
37 DH_size.cat3 \
38 DSA_SIG_new.cat3 \
39 DSA_do_sign.cat3 \
40 DSA_dup_DH.cat3 \
41 DSA_generate_key.cat3 \
42 DSA_generate_parameters.cat3 \
43 DSA_get_ex_new_index.cat3 \
44 DSA_new.cat3 \
45 DSA_set_method.cat3 \
46 DSA_sign.cat3 \
47 DSA_size.cat3 \
48 ERR_GET_LIB.cat3 \
49 ERR_clear_error.cat3 \
50 ERR_error_string.cat3 \
51 ERR_get_error.cat3 \
52 ERR_load_crypto_strings.cat3 \
53 ERR_load_strings.cat3 \
54 ERR_print_errors.cat3 \
55 ERR_put_error.cat3 \
56 ERR_remove_state.cat3 \
57 EVP_BytesToKey.cat3 \
58 EVP_DigestInit.cat3 \
59 EVP_EncryptInit.cat3 \
60 EVP_OpenInit.cat3 \
61 EVP_SealInit.cat3 \
62 EVP_SignInit.cat3 \
63 EVP_VerifyInit.cat3 \
64 HMAC.cat3 \
65 MD5.cat3 \
66 OPENSSL_VERSION_NUMBER.cat3 \
67 OpenSSL_add_all_algorithms.cat3 \
68 RAND_add.cat3 \
69 RAND_bytes.cat3 \
70 RAND_cleanup.cat3 \
71 RAND_egd.cat3 \
72 RAND_load_file.cat3 \
73 RAND_set_rand_method.cat3 \
74 RC4.cat3 \
75 RIPEMD160.cat3 \
76 RSA_blinding_on.cat3 \
77 RSA_check_key.cat3 \
78 RSA_generate_key.cat3 \
79 RSA_get_ex_new_index.cat3 \
80 RSA_new.cat3 \
81 RSA_padding_add_PKCS1_type_1.cat3 \
82 RSA_print.cat3 \
83 RSA_private_encrypt.cat3 \
84 RSA_public_encrypt.cat3 \
85 RSA_set_method.cat3 \
86 RSA_sign.cat3 \
87 RSA_sign_ASN1_OCTET_STRING.cat3 \
88 RSA_size.cat3 \
89 SHA1.cat3 \
90 SSL_CIPHER_get_name.cat3 \
91 SSL_COMP_add_compression_method.cat3 \
92 SSL_CTX_add_extra_chain_cert.cat3 \
93 SSL_CTX_add_session.cat3 \
94 SSL_CTX_ctrl.cat3 \
95 SSL_CTX_flush_sessions.cat3 \
96 SSL_CTX_free.cat3 \
97 SSL_CTX_get_ex_new_index.cat3 \
98 SSL_CTX_get_verify_mode.cat3 \
99 SSL_CTX_load_verify_locations.cat3 \
100 SSL_CTX_new.cat3 \
101 SSL_CTX_sess_number.cat3 \
102 SSL_CTX_sess_set_cache_size.cat3 \
103 SSL_CTX_sess_set_get_cb.cat3 \
104 SSL_CTX_sessions.cat3 \
105 SSL_CTX_set_cert_store.cat3 \
106 SSL_CTX_set_cert_verify_callback.cat3 \
107 SSL_CTX_set_cipher_list.cat3 \
108 SSL_CTX_set_client_CA_list.cat3 \
109 SSL_CTX_set_client_cert_cb.cat3 \
110 SSL_CTX_set_default_passwd_cb.cat3 \
111 SSL_CTX_set_generate_session_id.cat3 \
112 SSL_CTX_set_info_callback.cat3 \
113 SSL_CTX_set_max_cert_list.cat3 \
114 SSL_CTX_set_mode.cat3 \
115 SSL_CTX_set_msg_callback.cat3 \
116 SSL_CTX_set_options.cat3 \
117 SSL_CTX_set_quiet_shutdown.cat3 \
118 SSL_CTX_set_session_cache_mode.cat3 \
119 SSL_CTX_set_session_id_context.cat3 \
120 SSL_CTX_set_ssl_version.cat3 \
121 SSL_CTX_set_timeout.cat3 \
122 SSL_CTX_set_tmp_dh_callback.cat3 \
123 SSL_CTX_set_tmp_rsa_callback.cat3 \
124 SSL_CTX_set_verify.cat3 \
125 SSL_CTX_use_certificate.cat3 \
126 SSL_SESSION_free.cat3 \
127 SSL_SESSION_get_ex_new_index.cat3 \
128 SSL_SESSION_get_time.cat3 \
129 SSL_accept.cat3 \
130 SSL_alert_type_string.cat3 \
131 SSL_clear.cat3 \
132 SSL_connect.cat3 \
133 SSL_do_handshake.cat3 \
134 SSL_free.cat3 \
135 SSL_get_SSL_CTX.cat3 \
136 SSL_get_ciphers.cat3 \
137 SSL_get_client_CA_list.cat3 \
138 SSL_get_current_cipher.cat3 \
139 SSL_get_default_timeout.cat3 \
140 SSL_get_error.cat3 \
141 SSL_get_ex_data_X509_STORE_CTX_idx.cat3 \
142 SSL_get_ex_new_index.cat3 \
143 SSL_get_fd.cat3 \
144 SSL_get_peer_cert_chain.cat3 \
145 SSL_get_peer_certificate.cat3 \
146 SSL_get_rbio.cat3 \
147 SSL_get_session.cat3 \
148 SSL_get_verify_result.cat3 \
149 SSL_get_version.cat3 \
150 SSL_library_init.cat3 \
151 SSL_load_client_CA_file.cat3 \
152 SSL_new.cat3 \
153 SSL_pending.cat3 \
154 SSL_read.cat3 \
155 SSL_rstate_string.cat3 \
156 SSL_session_reused.cat3 \
157 SSL_set_bio.cat3 \
158 SSL_set_connect_state.cat3 \
159 SSL_set_fd.cat3 \
160 SSL_set_session.cat3 \
161 SSL_set_shutdown.cat3 \
162 SSL_set_verify_result.cat3 \
163 SSL_shutdown.cat3 \
164 SSL_state_string.cat3 \
165 SSL_want.cat3 \
166 SSL_write.cat3 \
167 acss.cat3 \
168 bn.cat3 \
169 bn_internal.cat3 \
170 crypto.cat3 \
171 d2i_DHparams.cat3 \
172 d2i_RSAPublicKey.cat3 \
173 d2i_SSL_SESSION.cat3 \
174 des_modes.cat7 \
175 des_random_key.cat3 \
176 dh.cat3 \
177 dsa.cat3 \
178 lh_stats.cat3 \
179 lhash.cat3 \
180 rsa.cat3 \
181 ssl.cat3
182
183.if MANPS
184PSALL= ${MANALL:S/.cat1/.ps1/g:S/.cat2/.ps2/g:S/.cat3/.ps3/g:S/.cat4/.ps4/g:S/.cat5/.ps5/g:S/.cat6/.ps6/g:S/.cat7/.ps7/g:S/.cat8/.ps8/g:S/.cat9/.ps9/g}
185.endif
186
187# these are a real problem, since they re-document functions described in
188# other pages.
189#
190# err.pod -> ERR_get_error.pod
191# ERR_peek_error ERR_get_error_line
192# ERR_peek_error_line ERR_get_error_line_data ERR_peek_error_line_data
193# ERR_GET_LIB ERR_GET_FUNC ERR_GET_REASON ERR_clear_error ERR_error_string
194# ERR_lib_error_string ERR_func_error_string ERR_reason_error_string
195# ERR_print_errors ERR_print_errors_fp ERR_load_crypto_strings ERR_free_strings
196# ERR_remove_state ERR_put_error ERR_add_error_data ERR_load_strings ERR_PACK
197# ERR_get_next_error_library
198#
199# rand.pod -> RAND_bytes.pod
200# RAND_pseudo_bytes RAND_seed RAND_add RAND_status RAND_event
201# RAND_screen RAND_load_file RAND_write_file RAND_file_name RAND_egd
202# RAND_set_rand_method RAND_get_rand_method RAND_SSLeay RAND_cleanup
203
204# buffer.pod -> BUF_MEM_new.pod
205# BUF_MEM_free BUF_MEM_grow BUF_strdup
206
207# rc4.pod -> RC4.pod
208# RC4_set_key
209
210# threads.pod -> CRYPTO_set_locking_callback.pod
211# CRYPTO_set_id_callback CRYPTO_num_locks
212
213# ripemd.pod -> RIPEMD160.pod
214# RIPEMD160_Init RIPEMD160_Update RIPEMD160_Final
215
216# sha.pod -> SHA1.pod
217
218# md5.pod -> MD5.pod
219
220# hmac.pod -> HMAC.pod
221
222# des.pod -> des_random_key, des_set_key, des_key_sched, des_set_key_checked,
223# des_set_key_unchecked, des_set_odd_parity, des_is_weak_key, des_ecb_encrypt,
224# des_ecb2_encrypt, des_ecb3_encrypt, des_ncbc_encrypt, des_cfb_encrypt,
225# des_ofb_encrypt, des_pcbc_encrypt, des_cfb64_encrypt, des_ofb64_encrypt,
226# des_xcbc_encrypt, des_ede2_cbc_encrypt, des_ede2_cfb64_encrypt,
227# des_ede2_ofb64_encrypt, des_ede3_cbc_encrypt, des_ede3_cbcm_encrypt,
228# des_ede3_cfb64_encrypt, des_ede3_ofb64_encrypt, des_read_password,
229# des_read_2passwords, des_read_pw_string, des_cbc_cksum, des_quad_cksum,
230# des_string_to_key, des_string_to_2keys, des_fcrypt, des_crypt,
231# des_enc_read, des_enc_write
232
233.for page src in \
234 BUF_MEM_new buffer \
235 RC4 rc4 \
236 CRYPTO_set_locking_callback threads \
237 RIPEMD160 ripemd \
238 SHA1 sha \
239 MD5 md5 \
240 HMAC hmac \
241 des_random_key des \
242 BF_set_key blowfish
243
244${page}.cat3: ${src}.pod
245 ${POD2MAN} --section=3 --name=${page:U} ${.ALLSRC} | \
246 nroff -Tascii -mandoc > ${.TARGET}
247. if MANPS
248${page}.ps3: ${src}.pod
249 ${POD2MAN} --section=3 --name=${page:U} ${.ALLSRC} | \
250 nroff -Tps -mandoc > ${.TARGET}
251. endif
252.endfor
253
254MLINKS+=\
255 BN_CTX_new.3 BN_CTX_free.3 \
256 BN_CTX_new.3 BN_CTX_init.3 \
257 BN_CTX_start.3 BN_CTX_end.3 \
258 BN_CTX_start.3 BN_CTX_get.3 \
259 BN_add.3 BN_div.3 \
260 BN_add.3 BN_exp.3 \
261 BN_add.3 BN_gcd.3 \
262 BN_add.3 BN_mod.3 \
263 BN_add.3 BN_mod_exp.3 \
264 BN_add.3 BN_mod_mul.3 \
265 BN_add.3 BN_mul.3 \
266 BN_add.3 BN_sqr.3 \
267 BN_add.3 BN_sub.3 \
268 BN_add_word.3 BN_div_word.3 \
269 BN_add_word.3 BN_mod_word.3 \
270 BN_add_word.3 BN_mul_word.3 \
271 BN_add_word.3 BN_sub_word.3 \
272 BN_bn2bin.3 BN_bin2bn.3 \
273 BN_bn2bin.3 BN_bn2dec.3 \
274 BN_bn2bin.3 BN_bn2hex.3 \
275 BN_bn2bin.3 BN_bn2mpi.3 \
276 BN_bn2bin.3 BN_dec2bn.3 \
277 BN_bn2bin.3 BN_hex2bn.3 \
278 BN_bn2bin.3 BN_mpi2bn.3 \
279 BN_bn2bin.3 BN_print.3 \
280 BN_bn2bin.3 BN_print_fp.3 \
281 BN_cmp.3 BN_is_odd.3 \
282 BN_cmp.3 BN_is_one.3 \
283 BN_cmp.3 BN_is_word.3 \
284 BN_cmp.3 BN_is_zero.3 \
285 BN_cmp.3 BN_ucmp.3 \
286 BN_copy.3 BN_dup.3 \
287 BN_generate_prime.3 BN_is_prime.3 \
288 BN_generate_prime.3 BN_is_prime_fasttest.3 \
289 BN_mod_mul_montgomery.3 BN_MONT_CTX_copy.3 \
290 BN_mod_mul_montgomery.3 BN_MONT_CTX_free.3 \
291 BN_mod_mul_montgomery.3 BN_MONT_CTX_init.3 \
292 BN_mod_mul_montgomery.3 BN_MONT_CTX_new.3 \
293 BN_mod_mul_montgomery.3 BN_MONT_CTX_set.3 \
294 BN_mod_mul_montgomery.3 BN_from_montgomery.3 \
295 BN_mod_mul_montgomery.3 BN_to_montgomery.3 \
296 BN_mod_mul_reciprocal.3 BN_RECP_CTX_free.3 \
297 BN_mod_mul_reciprocal.3 BN_RECP_CTX_init.3 \
298 BN_mod_mul_reciprocal.3 BN_RECP_CTX_new.3 \
299 BN_mod_mul_reciprocal.3 BN_RECP_CTX_set.3 \
300 BN_mod_mul_reciprocal.3 BN_div_recp.3 \
301 BN_new.3 BN_clear.3 \
302 BN_new.3 BN_clear_free.3 \
303 BN_new.3 BN_free.3 \
304 BN_new.3 BN_init.3 \
305 BN_num_bytes.3 BN_num_bits.3 \
306 BN_num_bytes.3 BN_num_bits_word.3 \
307 BN_rand.3 BN_pseudo_rand.3 \
308 BN_rand.3 BN_rand_range.3 \
309 BN_set_bit.3 BN_clear_bit.3 \
310 BN_set_bit.3 BN_is_bit_set.3 \
311 BN_set_bit.3 BN_lshift.3 \
312 BN_set_bit.3 BN_lshift1.3 \
313 BN_set_bit.3 BN_mask_bits.3 \
314 BN_set_bit.3 BN_rshift.3 \
315 BN_set_bit.3 BN_rshift1.3 \
316 BN_zero.3 BN_get_word.3 \
317 BN_zero.3 BN_one.3 \
318 BN_zero.3 BN_set_word.3 \
319 BN_zero.3 BN_value_one.3 \
320 BUF_MEM_new.3 BUF_MEM_free.3 \
321 BUF_MEM_new.3 BUF_MEM_grow.3 \
322 BUF_MEM_new.3 BUF_strdup.3 \
323 CRYPTO_set_ex_data.3 CRYPTO_get_ex_data.3 \
324 CRYPTO_set_locking_callback.3 CRYPTO_add.3 \
325 CRYPTO_set_locking_callback.3 CRYPTO_add_lock.3 \
326 CRYPTO_set_locking_callback.3 CRYPTO_destroy_dynlockid.3 \
327 CRYPTO_set_locking_callback.3 CRYPTO_get_new_dynlockid.3 \
328 CRYPTO_set_locking_callback.3 CRYPTO_lock.3 \
329 CRYPTO_set_locking_callback.3 CRYPTO_num_locks.3 \
330 CRYPTO_set_locking_callback.3 CRYPTO_r_lock.3 \
331 CRYPTO_set_locking_callback.3 CRYPTO_r_unlock.3 \
332 CRYPTO_set_locking_callback.3 CRYPTO_set_dynlock_create_callback.3 \
333 CRYPTO_set_locking_callback.3 CRYPTO_set_dynlock_destroy_callback.3 \
334 CRYPTO_set_locking_callback.3 CRYPTO_set_dynlock_lock_callback.3 \
335 CRYPTO_set_locking_callback.3 CRYPTO_set_id_callback.3 \
336 CRYPTO_set_locking_callback.3 CRYPTO_w_lock.3 \
337 CRYPTO_set_locking_callback.3 CRYPTO_w_unlock.3 \
338 DH_generate_key.3 DH_compute_key.3 \
339 DH_generate_parameters.3 DH_check.3 \
340 DH_get_ex_new_index.3 DH_get_ex_data.3 \
341 DH_get_ex_new_index.3 DH_set_ex_data.3 \
342 DH_new.3 DH_free.3 \
343 DH_set_method.3 DH_OpenSSL.3 \
344 DH_set_method.3 DH_get_default_method.3 \
345 DH_set_method.3 DH_get_default_openssl_method.3 \
346 DH_set_method.3 DH_new_method.3 \
347 DH_set_method.3 DH_set_default_method.3 \
348 DH_set_method.3 DH_set_default_openssl_method.3 \
349 DSA_new.3 DSA_free.3 \
350 DSA_set_method.3 DSA_OpenSSL.3 \
351 DSA_set_method.3 DSA_get_default_method.3 \
352 DSA_set_method.3 DSA_get_default_openssl_method.3 \
353 DSA_set_method.3 DSA_new_method.3 \
354 DSA_set_method.3 DSA_set_default_method.3 \
355 DSA_set_method.3 DSA_set_default_openssl_method.3 \
356 DSA_sign.3 DSA_sign_setup.3 \
357 DSA_sign.3 DSA_verify.3 \
358 ERR_GET_LIB.3 ERR_GET_FUNC.3 \
359 ERR_GET_LIB.3 ERR_GET_REASON.3 \
360 ERR_error_string.3 ERR_error_string_n.3 \
361 ERR_error_string.3 ERR_func_error_string.3 \
362 ERR_error_string.3 ERR_lib_error_string.3 \
363 ERR_error_string.3 ERR_reason_error_string.3 \
364 ERR_get_error.3 ERR_get_error_line.3 \
365 ERR_get_error.3 ERR_get_error_line_data.3 \
366 ERR_get_error.3 ERR_peek_error.3 \
367 ERR_get_error.3 ERR_peek_error_line.3 \
368 ERR_get_error.3 ERR_peek_error_line_data.3 \
369 ERR_load_crypto_strings.3 ERR_free_strings.3 \
370 ERR_load_crypto_strings.3 SSL_load_error_strings.3 \
371 ERR_load_strings.3 ERR_PACK.3 \
372 ERR_load_strings.3 ERR_get_next_error_library.3 \
373 ERR_print_errors.3 ERR_print_errors_fp.3 \
374 ERR_put_error.3 ERR_add_error_data.3 \
375 EVP_DigestInit.3 EVP_DigestFinal.3 \
376 EVP_DigestInit.3 EVP_DigestUpdate.3 \
377 EVP_DigestInit.3 EVP_MD_CTX_block_size.3 \
378 EVP_DigestInit.3 EVP_MD_CTX_copy.3 \
379 EVP_DigestInit.3 EVP_MD_CTX_md.3 \
380 EVP_DigestInit.3 EVP_MD_CTX_size.3 \
381 EVP_DigestInit.3 EVP_MD_CTX_type.3 \
382 EVP_DigestInit.3 EVP_MD_block_size.3 \
383 EVP_DigestInit.3 EVP_MD_block_size.3 \
384 EVP_DigestInit.3 EVP_MD_pkey_type.3 \
385 EVP_DigestInit.3 EVP_MD_size.3 \
386 EVP_DigestInit.3 EVP_MD_size.3 \
387 EVP_DigestInit.3 EVP_MD_type.3 \
388 EVP_DigestInit.3 EVP_MD_type.3 \
389 EVP_DigestInit.3 EVP_dss.3 \
390 EVP_DigestInit.3 EVP_dss1.3 \
391 EVP_DigestInit.3 EVP_get_digestbyname.3 \
392 EVP_DigestInit.3 EVP_get_digestbyname.3 \
393 EVP_DigestInit.3 EVP_get_digestbynid.3 \
394 EVP_DigestInit.3 EVP_get_digestbynid.3 \
395 EVP_DigestInit.3 EVP_get_digestbyobj.3 \
396 EVP_DigestInit.3 EVP_md2.3 \
397 EVP_DigestInit.3 EVP_md5.3 \
398 EVP_DigestInit.3 EVP_md_null.3 \
399 EVP_DigestInit.3 EVP_mdc2.3 \
400 EVP_DigestInit.3 EVP_ripemd160.3 \
401 EVP_DigestInit.3 EVP_sha.3 \
402 EVP_DigestInit.3 EVP_sha1.3 \
403 EVP_DigestInit.3 OBJ_nid2sn.3 \
404 EVP_DigestInit.3 OBJ_obj2nid.3 \
405 EVP_EncryptInit.3 EVP_CIPHER_CTX_block_size.3 \
406 EVP_EncryptInit.3 EVP_CIPHER_CTX_cipher.3 \
407 EVP_EncryptInit.3 EVP_CIPHER_CTX_cipher.3 \
408 EVP_EncryptInit.3 EVP_CIPHER_CTX_cleanup.3 \
409 EVP_EncryptInit.3 EVP_CIPHER_CTX_ctrl.3 \
410 EVP_EncryptInit.3 EVP_CIPHER_CTX_iv_length.3 \
411 EVP_EncryptInit.3 EVP_CIPHER_CTX_key_length.3 \
412 EVP_EncryptInit.3 EVP_CIPHER_CTX_nid.3 \
413 EVP_EncryptInit.3 EVP_CIPHER_CTX_set_key_length.3 \
414 EVP_EncryptInit.3 EVP_CIPHER_CTX_type.3 \
415 EVP_EncryptInit.3 EVP_CIPHER_asn1_to_param.3 \
416 EVP_EncryptInit.3 EVP_CIPHER_block_size.3 \
417 EVP_EncryptInit.3 EVP_CIPHER_iv_length.3 \
418 EVP_EncryptInit.3 EVP_CIPHER_key_length.3 \
419 EVP_EncryptInit.3 EVP_CIPHER_nid.3 \
420 EVP_EncryptInit.3 EVP_CIPHER_param_to_asn1.3 \
421 EVP_EncryptInit.3 EVP_CIPHER_type.3 \
422 EVP_EncryptInit.3 EVP_CIPHER_type.3 \
423 EVP_EncryptInit.3 EVP_CipherFinal.3 \
424 EVP_EncryptInit.3 EVP_CipherInit.3 \
425 EVP_EncryptInit.3 EVP_CipherUpdate.3 \
426 EVP_EncryptInit.3 EVP_DecryptFinal.3 \
427 EVP_EncryptInit.3 EVP_DecryptInit.3 \
428 EVP_EncryptInit.3 EVP_DecryptUpdate.3 \
429 EVP_EncryptInit.3 EVP_EncryptFinal.3 \
430 EVP_EncryptInit.3 EVP_EncryptUpdate.3 \
431 EVP_EncryptInit.3 EVP_get_cipherbyname.3 \
432 EVP_EncryptInit.3 EVP_get_cipherbyname.3 \
433 EVP_EncryptInit.3 EVP_get_cipherbynid.3 \
434 EVP_EncryptInit.3 EVP_get_cipherbynid.3 \
435 EVP_EncryptInit.3 EVP_get_cipherbyobj.3 \
436 EVP_EncryptInit.3 OBJ_nid2sn.3 \
437 EVP_EncryptInit.3 OBJ_obj2nid.3 \
438 EVP_OpenInit.3 EVP_OpenFinal.3 \
439 EVP_OpenInit.3 EVP_OpenUpdate.3 \
440 EVP_SealInit.3 EVP_SealFinal.3 \
441 EVP_SealInit.3 EVP_SealUpdate.3 \
442 EVP_SignInit.3 EVP_PKEY_size.3 \
443 EVP_SignInit.3 EVP_SignFinal.3 \
444 EVP_SignInit.3 EVP_SignUpdate.3 \
445 EVP_VerifyInit.3 EVP_VerifyFinal.3 \
446 EVP_VerifyInit.3 EVP_VerifyUpdate.3 \
447 HMAC.3 HMAC_Final.3 \
448 HMAC.3 HMAC_Init.3 \
449 HMAC.3 HMAC_Update.3 \
450 HMAC.3 HMAC_cleanup.3 \
451 MD5.3 MD2.3 \
452 MD5.3 MD2_Final.3 \
453 MD5.3 MD2_Init.3 \
454 MD5.3 MD2_Update.3 \
455 MD5.3 MD4.3 \
456 MD5.3 MD4_Final.3 \
457 MD5.3 MD4_Init.3 \
458 MD5.3 MD4_Update.3 \
459 MD5.3 MD5_Final.3 \
460 MD5.3 MD5_Init.3 \
461 MD5.3 MD5_Update.3 \
462 OPENSSL_VERSION_NUMBER.3 SSLeay.3 \
463 OPENSSL_VERSION_NUMBER.3 SSLeay_version.3 \
464 OpenSSL_add_all_algorithms.3 EVP_cleanup.3 \
465 OpenSSL_add_all_algorithms.3 OpenSSL_add_all_ciphers.3 \
466 OpenSSL_add_all_algorithms.3 OpenSSL_add_all_digests.3 \
467 RAND_add.3 RAND_event.3 \
468 RAND_add.3 RAND_screen.3 \
469 RAND_add.3 RAND_seed.3 \
470 RAND_add.3 RAND_status.3 \
471 RAND_bytes.3 RAND_pseudo_bytes.3 \
472 RAND_bytes.3 RAND_pseudo_bytes.3 \
473 RAND_egd.3 RAND_egd_bytes.3 \
474 RAND_load_file.3 RAND_file_name.3 \
475 RAND_load_file.3 RAND_file_name.3 \
476 RAND_load_file.3 RAND_write_file.3 \
477 RAND_load_file.3 RAND_write_file.3 \
478 RAND_set_rand_method.3 RAND_SSLeay.3 \
479 RAND_set_rand_method.3 RAND_SSLeay.3 \
480 RAND_set_rand_method.3 RAND_get_rand_method.3 \
481 RAND_set_rand_method.3 RAND_get_rand_method.3 \
482 RC4.3 RC4_set_key.3 \
483 RIPEMD160.3 RIPEMD160_Final.3 \
484 RIPEMD160.3 RIPEMD160_Init.3 \
485 RIPEMD160.3 RIPEMD160_Update.3 \
486 RSA_blinding_on.3 RSA_blinding_off.3 \
487 RSA_get_ex_new_index.3 RSA_get_ex_data.3 \
488 RSA_get_ex_new_index.3 RSA_set_ex_data.3 \
489 RSA_new.3 RSA_free.3 \
490 RSA_padding_add_PKCS1_type_1.3 RSA_padding_add_PKCS1_OAEP.3 \
491 RSA_padding_add_PKCS1_type_1.3 RSA_padding_add_PKCS1_type_2.3 \
492 RSA_padding_add_PKCS1_type_1.3 RSA_padding_add_SSLv23.3 \
493 RSA_padding_add_PKCS1_type_1.3 RSA_padding_add_none.3 \
494 RSA_padding_add_PKCS1_type_1.3 RSA_padding_check_PKCS1_OAEP.3 \
495 RSA_padding_add_PKCS1_type_1.3 RSA_padding_check_PKCS1_type_1.3 \
496 RSA_padding_add_PKCS1_type_1.3 RSA_padding_check_PKCS1_type_2.3 \
497 RSA_padding_add_PKCS1_type_1.3 RSA_padding_check_SSLv23.3 \
498 RSA_padding_add_PKCS1_type_1.3 RSA_padding_check_none.3 \
499 RSA_print.3 DHparams_print.3 \
500 RSA_print.3 DHparams_print.3 \
501 RSA_print.3 DHparams_print_fp.3 \
502 RSA_print.3 DHparams_print_fp.3 \
503 RSA_print.3 DSA_print.3 \
504 RSA_print.3 DSA_print_fp.3 \
505 RSA_print.3 DSA_print_fp.3 \
506 RSA_print.3 DSAparams_print.3 \
507 RSA_print.3 DSAparams_print.3 \
508 RSA_print.3 DSAparams_print_fp.3 \
509 RSA_print.3 DSAparams_print_fp.3 \
510 RSA_print.3 RSA_print_fp.3 \
511 RSA_print.3 RSA_print_fp.3 \
512 RSA_private_encrypt.3 RSA_public_decrypt.3 \
513 RSA_public_encrypt.3 RSA_private_decrypt.3 \
514 RSA_set_method.3 RSA_PKCS1_RSAref.3 \
515 RSA_set_method.3 RSA_PKCS1_SSLeay.3 \
516 RSA_set_method.3 RSA_flags.3 \
517 RSA_set_method.3 RSA_get_default_method.3 \
518 RSA_set_method.3 RSA_get_default_openssl_method.3 \
519 RSA_set_method.3 RSA_get_method.3 \
520 RSA_set_method.3 RSA_new_method.3 \
521 RSA_set_method.3 RSA_null_method.3 \
522 RSA_set_method.3 RSA_set_default_method.3 \
523 RSA_set_method.3 RSA_set_default_openssl_method.3 \
524 RSA_sign.3 RSA_verify.3 \
525 RSA_sign_ASN1_OCTET_STRING.3 RSA_verify_ASN1_OCTET_STRING.3 \
526 SHA1.3 SHA1_Final.3 \
527 SHA1.3 SHA1_Init.3 \
528 SHA1.3 SHA1_Update.3 \
529 SSL_CIPHER_get_name.3 SSL_CIPHER_description.3 \
530 SSL_CIPHER_get_name.3 SSL_CIPHER_get_bits.3 \
531 SSL_CIPHER_get_name.3 SSL_CIPHER_get_version.3 \
532 SSL_CTX_add_session.3 SSL_CTX_remove_session.3 \
533 SSL_CTX_add_session.3 SSL_add_session.3 \
534 SSL_CTX_add_session.3 SSL_remove_session.3 \
535 SSL_CTX_ctrl.3 SSL_CTX_callback_ctrl.3 \
536 SSL_CTX_ctrl.3 SSL_callback_ctrl.3 \
537 SSL_CTX_ctrl.3 SSL_ctrl.3 \
538 SSL_CTX_flush_sessions.3 SSL_flush_sessions.3 \
539 SSL_CTX_get_ex_new_index.3 SSL_CTX_get_ex_data.3 \
540 SSL_CTX_get_ex_new_index.3 SSL_CTX_set_ex_data.3 \
541 SSL_CTX_get_verify_mode.3 SSL_CTX_get_verify_callback.3 \
542 SSL_CTX_get_verify_mode.3 SSL_CTX_get_verify_depth.3 \
543 SSL_CTX_get_verify_mode.3 SSL_get_verify_callback.3 \
544 SSL_CTX_get_verify_mode.3 SSL_get_verify_depth.3 \
545 SSL_CTX_get_verify_mode.3 SSL_get_verify_mode.3 \
546 SSL_CTX_sess_number.3 SSL_CTX_sess_accept.3 \
547 SSL_CTX_sess_number.3 SSL_CTX_sess_accept_good.3 \
548 SSL_CTX_sess_number.3 SSL_CTX_sess_accept_renegotiate.3 \
549 SSL_CTX_sess_number.3 SSL_CTX_sess_cache_full.3 \
550 SSL_CTX_sess_number.3 SSL_CTX_sess_cb_hits.3 \
551 SSL_CTX_sess_number.3 SSL_CTX_sess_connect.3 \
552 SSL_CTX_sess_number.3 SSL_CTX_sess_connect_good.3 \
553 SSL_CTX_sess_number.3 SSL_CTX_sess_connect_renegotiate.3 \
554 SSL_CTX_sess_number.3 SSL_CTX_sess_hits.3 \
555 SSL_CTX_sess_number.3 SSL_CTX_sess_misses.3 \
556 SSL_CTX_sess_number.3 SSL_CTX_sess_timeouts.3 \
557 SSL_CTX_sess_set_cache_size.3 SSL_CTX_sess_get_cache_size.3 \
558 SSL_CTX_sess_set_get_cb.3 SSL_CTX_sess_get_get_cb.3 \
559 SSL_CTX_sess_set_get_cb.3 SSL_CTX_sess_get_new_cb.3 \
560 SSL_CTX_sess_set_get_cb.3 SSL_CTX_sess_get_remove_cb.3 \
561 SSL_CTX_sess_set_get_cb.3 SSL_CTX_sess_set_new_cb.3 \
562 SSL_CTX_sess_set_get_cb.3 SSL_CTX_sess_set_remove.3 \
563 SSL_CTX_set_cert_store.3 SSL_CTX_get_cert_store.3 \
564 SSL_CTX_set_cipher_list.3 SSL_set_cipher_list.3 \
565 SSL_CTX_set_client_CA_list.3 SSL_CTX_add_client_CA.3 \
566 SSL_CTX_set_client_CA_list.3 SSL_add_client_CA.3 \
567 SSL_CTX_set_client_CA_list.3 SSL_set_client_CA_list.3 \
568 SSL_CTX_set_default_passwd_cb.3 \
569 SSL_CTX_set_default_passwd_cb_userdata.3 \
570 SSL_CTX_set_max_cert_list.3 SSL_CTX_get_max_cert_list.3 \
571 SSL_CTX_set_max_cert_list.3 SSL_get_max_cert_list.3 \
572 SSL_CTX_set_max_cert_list.3 SSL_set_max_cert_list.3 \
573 SSL_CTX_set_mode.3 SSL_CTX_get_mode.3 \
574 SSL_CTX_set_mode.3 SSL_get_mode.3 \
575 SSL_CTX_set_mode.3 SSL_set_mode.3 \
576 SSL_CTX_set_msg_callback.3 SSL_CTX_set_msg_callback_arg.3 \
577 SSL_CTX_set_msg_callback.3 SSL_set_msg_callback.3 \
578 SSL_CTX_set_msg_callback.3 SSL_set_msg_callback_arg.3 \
579 SSL_CTX_set_options.3 SSL_CTX_get_options.3 \
580 SSL_CTX_set_options.3 SSL_get_options.3 \
581 SSL_CTX_set_options.3 SSL_set_options.3 \
582 SSL_CTX_set_quiet_shutdown.3 SSL_CTX_get_quiet_shutdown.3 \
583 SSL_CTX_set_quiet_shutdown.3 SSL_get_quiet_shutdown.3 \
584 SSL_CTX_set_quiet_shutdown.3 SSL_set_quiet_shutdown.3 \
585 SSL_CTX_set_session_cache_mode.3 SSL_CTX_get_session_cache_mode.3 \
586 SSL_CTX_set_session_id_context.3 SSL_set_session_id_context.3 \
587 SSL_CTX_set_ssl_version.3 SSL_get_ssl_method.3 \
588 SSL_CTX_set_ssl_version.3 SSL_set_ssl_method.3 \
589 SSL_CTX_set_timeout.3 SSL_CTX_get_timeout.3 \
590 SSL_CTX_set_tmp_dh_callback.3 SSL_CTX_set_tmp_dh.3 \
591 SSL_CTX_set_tmp_dh_callback.3 SSL_set_tmp_dh.3 \
592 SSL_CTX_set_tmp_dh_callback.3 SSL_set_tmp_dh_callback.3 \
593 SSL_CTX_set_tmp_rsa_callback.3 SSL_CTX_need_tmp_rsa.3 \
594 SSL_CTX_set_tmp_rsa_callback.3 SSL_CTX_set_tmp_rsa.3 \
595 SSL_CTX_set_tmp_rsa_callback.3 SSL_need_tmp_rsa.3 \
596 SSL_CTX_set_tmp_rsa_callback.3 SSL_set_tmp_rsa.3 \
597 SSL_CTX_set_tmp_rsa_callback.3 SSL_set_tmp_rsa_callback.3 \
598 SSL_CTX_set_verify.3 SSL_CTX_set_verify_depth.3 \
599 SSL_CTX_set_verify.3 SSL_set_verify.3 \
600 SSL_CTX_set_verify.3 SSL_set_verify_depth.3 \
601 SSL_CTX_use_certificate.3 SSL_CTX_check_private_key.3 \
602 SSL_CTX_use_certificate.3 SSL_CTX_use_PrivateKey.3 \
603 SSL_CTX_use_certificate.3 SSL_CTX_use_PrivateKey_ASN1.3 \
604 SSL_CTX_use_certificate.3 SSL_CTX_use_PrivateKey_file.3 \
605 SSL_CTX_use_certificate.3 SSL_CTX_use_RSAPrivateKey.3 \
606 SSL_CTX_use_certificate.3 SSL_CTX_use_RSAPrivateKey_ASN1.3 \
607 SSL_CTX_use_certificate.3 SSL_CTX_use_RSAPrivateKey_file.3 \
608 SSL_CTX_use_certificate.3 SSL_CTX_use_certificate_ASN1.3 \
609 SSL_CTX_use_certificate.3 SSL_CTX_use_certificate_chain_file.3 \
610 SSL_CTX_use_certificate.3 SSL_CTX_use_certificate_file.3 \
611 SSL_CTX_use_certificate.3 SSL_check_private_key.3 \
612 SSL_CTX_use_certificate.3 SSL_use_PrivateKey.3 \
613 SSL_CTX_use_certificate.3 SSL_use_PrivateKey_ASN1.3 \
614 SSL_CTX_use_certificate.3 SSL_use_PrivateKey_file.3 \
615 SSL_CTX_use_certificate.3 SSL_use_RSAPrivateKey.3 \
616 SSL_CTX_use_certificate.3 SSL_use_RSAPrivateKey_ASN1.3 \
617 SSL_CTX_use_certificate.3 SSL_use_RSAPrivateKey_file.3 \
618 SSL_CTX_use_certificate.3 SSL_use_certificate.3 \
619 SSL_CTX_use_certificate.3 SSL_use_certificate_ASN1.3 \
620 SSL_CTX_use_certificate.3 SSL_use_certificate_file.3 \
621 SSL_SESSION_get_ex_new_index.3 SSL_SESSION_get_ex_data.3 \
622 SSL_SESSION_get_ex_new_index.3 SSL_SESSION_set_ex_data.3 \
623 SSL_SESSION_get_time.3 SSL_SESSION_get_timeout.3 \
624 SSL_SESSION_get_time.3 SSL_SESSION_set_time.3 \
625 SSL_SESSION_get_time.3 SSL_SESSION_set_timeout.3 \
626 SSL_SESSION_get_time.3 SSL_get_time.3 \
627 SSL_SESSION_get_time.3 SSL_get_timeout.3 \
628 SSL_SESSION_get_time.3 SSL_set_time.3 \
629 SSL_SESSION_get_time.3 SSL_set_timeout.3 \
630 SSL_alert_type_string.3 SSL_alert_desc_string.3 \
631 SSL_alert_type_string.3 SSL_alert_desc_string_long.3 \
632 SSL_alert_type_string.3 SSL_alert_type_string_long.3 \
633 SSL_get_ciphers.3 SSL_get_cipher_list.3 \
634 SSL_get_client_CA_list.3 SSL_CTX_get_client_CA_list.3 \
635 SSL_get_current_cipher.3 SSL_get_cipher.3 \
636 SSL_get_current_cipher.3 SSL_get_cipher_bits.3 \
637 SSL_get_current_cipher.3 SSL_get_cipher_name.3 \
638 SSL_get_current_cipher.3 SSL_get_cipher_version.3 \
639 SSL_get_ex_new_index.3 SSL_get_ex_data.3 \
640 SSL_get_ex_new_index.3 SSL_set_ex_data.3 \
641 SSL_get_fd.3 SSL_get_rfd.3 \
642 SSL_get_fd.3 SSL_get_wfd.3 \
643 SSL_get_rbio.3 SSL_get_wbio.3 \
644 SSL_get_session.3 SSL_get0_session.3 \
645 SSL_get_session.3 SSL_get1_session.3 \
646 SSL_library_init.3 OpenSSL_add_ssl_algorithms.3 \
647 SSL_library_init.3 SSLeay_add_ssl_algorithms.3 \
648 SSL_rstate_string.3 SSL_rstate_string_long.3 \
649 SSL_set_connect_state.3 SSL_set_accept_state.3 \
650 SSL_set_fd.3 SSL_set_rfd.3 \
651 SSL_set_fd.3 SSL_set_wfd.3 \
652 SSL_set_shutdown.3 SSL_get_shutdown.3 \
653 SSL_state_string.3 SSL_state_string_long.3 \
654 SSL_want.3 SSL_want_nothing.3 \
655 SSL_want.3 SSL_want_read.3 \
656 SSL_want.3 SSL_want_write.3 \
657 SSL_want.3 SSL_want_x509_lookup.3 \
658 acss.3 acss_setkey.3 \
659 BF_set_key.3 BF_cbc.3 \
660 BF_set_key.3 BF_cbc_encrypt.3 \
661 BF_set_key.3 BF_cfb64_encrypt.3 \
662 BF_set_key.3 BF_decrypt.3 \
663 BF_set_key.3 BF_ecb.3 \
664 BF_set_key.3 BF_ecb_encrypt.3 \
665 BF_set_key.3 BF_encrypt.3 \
666 BF_set_key.3 BF_ofb64_encrypt.3 \
667 BF_set_key.3 BF_options.3 \
668 bn_internal.3 bn_add_words.3 \
669 bn_internal.3 bn_check_top.3 \
670 bn_internal.3 bn_cmp_words.3 \
671 bn_internal.3 bn_div_words.3 \
672 bn_internal.3 bn_dump.3 \
673 bn_internal.3 bn_expand.3 \
674 bn_internal.3 bn_expand2.3 \
675 bn_internal.3 bn_fix_top.3 \
676 bn_internal.3 bn_mul_add_words.3 \
677 bn_internal.3 bn_mul_comba4.3 \
678 bn_internal.3 bn_mul_comba8.3 \
679 bn_internal.3 bn_mul_high.3 \
680 bn_internal.3 bn_mul_low_normal.3 \
681 bn_internal.3 bn_mul_low_recursive.3 \
682 bn_internal.3 bn_mul_normal.3 \
683 bn_internal.3 bn_mul_part_recursive.3 \
684 bn_internal.3 bn_mul_recursive.3 \
685 bn_internal.3 bn_mul_words.3 \
686 bn_internal.3 bn_print.3 \
687 bn_internal.3 bn_set_high.3 \
688 bn_internal.3 bn_set_low.3 \
689 bn_internal.3 bn_set_max.3 \
690 bn_internal.3 bn_sqr_comba4.3 \
691 bn_internal.3 bn_sqr_comba8.3 \
692 bn_internal.3 bn_sqr_normal.3 \
693 bn_internal.3 bn_sqr_recursive.3 \
694 bn_internal.3 bn_sqr_words.3 \
695 bn_internal.3 bn_sub_words.3 \
696 bn_internal.3 bn_wexpand.3 \
697 bn_internal.3 mul.3 \
698 bn_internal.3 mul_add.3 \
699 bn_internal.3 sqr.3 \
700 d2i_DHparams.3 i2d_DHparams.3 \
701 d2i_RSAPublicKey.3 d2i_Netscape_RSA.3 \
702 d2i_RSAPublicKey.3 d2i_RSAPrivateKey.3 \
703 d2i_RSAPublicKey.3 i2d_Netscape_RSA.3 \
704 d2i_RSAPublicKey.3 i2d_RSAPrivateKey.3 \
705 d2i_RSAPublicKey.3 i2d_RSAPublicKey.3 \
706 d2i_SSL_SESSION.3 i2d_SSL_SESSION.3 \
707 des_random_key.3 des_string_to_2keys.3 \
708 des_random_key.3 des_cbc_cksum.3 \
709 des_random_key.3 des_cfb64_encrypt.3 \
710 des_random_key.3 des_cfb_encrypt.3 \
711 des_random_key.3 des_crypt.3 \
712 des_random_key.3 des_ecb2_encrypt.3 \
713 des_random_key.3 des_ecb3_encrypt.3 \
714 des_random_key.3 des_ecb_encrypt.3 \
715 des_random_key.3 des_ede2_cbc_encrypt.3 \
716 des_random_key.3 des_ede2_cfb64_encrypt.3 \
717 des_random_key.3 des_ede2_ofb64_encrypt.3 \
718 des_random_key.3 des_ede3_cbc_encrypt.3 \
719 des_random_key.3 des_ede3_cbcm_encrypt.3 \
720 des_random_key.3 des_ede3_cfb64_encrypt.3 \
721 des_random_key.3 des_ede3_ofb64_encrypt.3 \
722 des_random_key.3 des_enc_read.3 \
723 des_random_key.3 des_enc_write.3 \
724 des_random_key.3 des_fcrypt.3 \
725 des_random_key.3 des_is_weak_key.3 \
726 des_random_key.3 des_key_sched.3 \
727 des_random_key.3 des_ncbc_encrypt.3 \
728 des_random_key.3 des_ofb64_encrypt.3 \
729 des_random_key.3 des_ofb_encrypt.3 \
730 des_random_key.3 des_pcbc_encrypt.3 \
731 des_random_key.3 des_quad_cksum.3 \
732 des_random_key.3 des_read_2passwords.3 \
733 des_random_key.3 des_read_password.3 \
734 des_random_key.3 des_read_pw_string.3 \
735 des_random_key.3 des_set_key.3 \
736 des_random_key.3 des_set_key_checked.3 \
737 des_random_key.3 des_set_key_unchecked.3 \
738 des_random_key.3 des_set_odd_parity.3 \
739 des_random_key.3 des_string_to_2keys.3 \
740 des_random_key.3 des_string_to_key.3 \
741 des_random_key.3 des_xcbc_encrypt.3 \
742 dsa.3 DSA_OpenSSL.3 \
743 dsa.3 DSA_SIG_free.3 \
744 dsa.3 DSA_do_verify.3 \
745 dsa.3 DSA_free.3 \
746 dsa.3 DSA_get_default_method.3 \
747 dsa.3 DSA_get_ex_data.3 \
748 dsa.3 DSA_new_method.3 \
749 dsa.3 DSA_set_default_method.3 \
750 dsa.3 DSA_set_ex_data.3 \
751 dsa.3 DSA_sign_setup.3 \
752 dsa.3 DSA_verify.3 \
753 dsa.3 d2i_DSAPrivateKey.3 \
754 dsa.3 d2i_DSAPublicKey.3 \
755 dsa.3 d2i_DSA_SIG.3 \
756 dsa.3 d2i_DSAparams.3 \
757 dsa.3 i2d_DSAPrivateKey.3 \
758 dsa.3 i2d_DSAPublicKey.3 \
759 dsa.3 i2d_DSA_SIG.3 \
760 dsa.3 i2d_DSAparams.3 \
761 lh_stats.3 lh_node_stats.3 \
762 lh_stats.3 lh_node_stats_bio.3 \
763 lh_stats.3 lh_node_usage_stats.3 \
764 lh_stats.3 lh_node_usage_stats_bio.3 \
765 lh_stats.3 lh_stats_bio.3 \
766 lhash.3 lh_delete.3 \
767 lhash.3 lh_doall.3 \
768 lhash.3 lh_doall_arg.3 \
769 lhash.3 lh_error.3 \
770 lhash.3 lh_free.3 \
771 lhash.3 lh_insert.3 \
772 lhash.3 lh_new.3 \
773 lhash.3 lh_retrieve.3
774
775.include <bsd.man.mk>
776.else
777maninstall:
778
779.endif
780
781# XXX .PATH order is critical because of non-unique filenames
782.PATH: ${.CURDIR}/../src/doc/crypto ${.CURDIR}/../src/doc/ssl ${.CURDIR}/../src/doc/apps
783.SUFFIXES: .pod
784.for sect in 1 3 7
785
786.pod.cat${sect}:
787 ${POD2MAN} --section=${sect} --name=${*:U} ${.ALLSRC} | \
788 nroff -Tascii -mandoc > ${.TARGET}
789
790.pod.ps${sect}:
791 ${POD2MAN} --section=${sect} --name=${*:U} ${.ALLSRC} | \
792 nroff -Tps -mandoc > ${.TARGET}
793.endfor
794
795.include <bsd.obj.mk>
796.include <bsd.subdir.mk>
797
798clean cleandir:
799 rm -f ${CLEANFILES}
diff --git a/src/lib/libssl/openssl.cnf b/src/lib/libssl/openssl.cnf
new file mode 100644
index 0000000000..bb97b155b8
--- /dev/null
+++ b/src/lib/libssl/openssl.cnf
@@ -0,0 +1,65 @@
1#
2# OpenSSL example configuration file.
3# This is mostly being used for generation of certificate requests.
4#
5
6RANDFILE = /dev/arandom
7
8####################################################################
9[ req ]
10default_bits = 1024
11default_keyfile = privkey.pem
12distinguished_name = req_distinguished_name
13attributes = req_attributes
14
15[ req_distinguished_name ]
16countryName = Country Name (2 letter code)
17#countryName_default = AU
18countryName_min = 2
19countryName_max = 2
20
21stateOrProvinceName = State or Province Name (full name)
22#stateOrProvinceName_default = Some-State
23
24localityName = Locality Name (eg, city)
25
260.organizationName = Organization Name (eg, company)
27#0.organizationName_default = Internet Widgits Pty Ltd
28
29# we can do this but it is not needed normally :-)
30#1.organizationName = Second Organization Name (eg, company)
31#1.organizationName_default = CryptSoft Pty Ltd
32
33organizationalUnitName = Organizational Unit Name (eg, section)
34#organizationalUnitName_default =
35
36commonName = Common Name (eg, fully qualified host name)
37commonName_max = 64
38
39emailAddress = Email Address
40emailAddress_max = 64
41
42[ req_attributes ]
43challengePassword = A challenge password
44challengePassword_min = 4
45challengePassword_max = 20
46
47unstructuredName = An optional company name
48
49[ x509v3_extensions ]
50
51nsCaRevocationUrl = http://www.cryptsoft.com/ca-crl.pem
52nsComment = "This is a comment"
53
54# under ASN.1, the 0 bit would be encoded as 80
55nsCertType = 0x40
56
57#nsBaseUrl
58#nsRevocationUrl
59#nsRenewalUrl
60#nsCaPolicyUrl
61#nsSslServerName
62#nsCertSequence
63#nsCertExt
64#nsDataType
65
diff --git a/src/lib/libssl/s23_clnt.c b/src/lib/libssl/s23_clnt.c
new file mode 100644
index 0000000000..779e94a35c
--- /dev/null
+++ b/src/lib/libssl/s23_clnt.c
@@ -0,0 +1,509 @@
1/* ssl/s23_clnt.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include "ssl_locl.h"
61#include <openssl/buffer.h>
62#include <openssl/rand.h>
63#include <openssl/objects.h>
64#include <openssl/evp.h>
65
66static SSL_METHOD *ssl23_get_client_method(int ver);
67static int ssl23_client_hello(SSL *s);
68static int ssl23_get_server_hello(SSL *s);
69static SSL_METHOD *ssl23_get_client_method(int ver)
70 {
71#ifndef OPENSSL_NO_SSL2
72 if (ver == SSL2_VERSION)
73 return(SSLv2_client_method());
74#endif
75 if (ver == SSL3_VERSION)
76 return(SSLv3_client_method());
77 else if (ver == TLS1_VERSION)
78 return(TLSv1_client_method());
79 else
80 return(NULL);
81 }
82
83SSL_METHOD *SSLv23_client_method(void)
84 {
85 static int init=1;
86 static SSL_METHOD SSLv23_client_data;
87
88 if (init)
89 {
90 CRYPTO_w_lock(CRYPTO_LOCK_SSL_METHOD);
91
92 if (init)
93 {
94 memcpy((char *)&SSLv23_client_data,
95 (char *)sslv23_base_method(),sizeof(SSL_METHOD));
96 SSLv23_client_data.ssl_connect=ssl23_connect;
97 SSLv23_client_data.get_ssl_method=ssl23_get_client_method;
98 init=0;
99 }
100
101 CRYPTO_w_unlock(CRYPTO_LOCK_SSL_METHOD);
102 }
103 return(&SSLv23_client_data);
104 }
105
106int ssl23_connect(SSL *s)
107 {
108 BUF_MEM *buf=NULL;
109 unsigned long Time=time(NULL);
110 void (*cb)(const SSL *ssl,int type,int val)=NULL;
111 int ret= -1;
112 int new_state,state;
113
114 RAND_add(&Time,sizeof(Time),0);
115 ERR_clear_error();
116 clear_sys_error();
117
118 if (s->info_callback != NULL)
119 cb=s->info_callback;
120 else if (s->ctx->info_callback != NULL)
121 cb=s->ctx->info_callback;
122
123 s->in_handshake++;
124 if (!SSL_in_init(s) || SSL_in_before(s)) SSL_clear(s);
125
126 for (;;)
127 {
128 state=s->state;
129
130 switch(s->state)
131 {
132 case SSL_ST_BEFORE:
133 case SSL_ST_CONNECT:
134 case SSL_ST_BEFORE|SSL_ST_CONNECT:
135 case SSL_ST_OK|SSL_ST_CONNECT:
136
137 if (s->session != NULL)
138 {
139 SSLerr(SSL_F_SSL23_CONNECT,SSL_R_SSL23_DOING_SESSION_ID_REUSE);
140 ret= -1;
141 goto end;
142 }
143 s->server=0;
144 if (cb != NULL) cb(s,SSL_CB_HANDSHAKE_START,1);
145
146 /* s->version=TLS1_VERSION; */
147 s->type=SSL_ST_CONNECT;
148
149 if (s->init_buf == NULL)
150 {
151 if ((buf=BUF_MEM_new()) == NULL)
152 {
153 ret= -1;
154 goto end;
155 }
156 if (!BUF_MEM_grow(buf,SSL3_RT_MAX_PLAIN_LENGTH))
157 {
158 ret= -1;
159 goto end;
160 }
161 s->init_buf=buf;
162 buf=NULL;
163 }
164
165 if (!ssl3_setup_buffers(s)) { ret= -1; goto end; }
166
167 ssl3_init_finished_mac(s);
168
169 s->state=SSL23_ST_CW_CLNT_HELLO_A;
170 s->ctx->stats.sess_connect++;
171 s->init_num=0;
172 break;
173
174 case SSL23_ST_CW_CLNT_HELLO_A:
175 case SSL23_ST_CW_CLNT_HELLO_B:
176
177 s->shutdown=0;
178 ret=ssl23_client_hello(s);
179 if (ret <= 0) goto end;
180 s->state=SSL23_ST_CR_SRVR_HELLO_A;
181 s->init_num=0;
182
183 break;
184
185 case SSL23_ST_CR_SRVR_HELLO_A:
186 case SSL23_ST_CR_SRVR_HELLO_B:
187 ret=ssl23_get_server_hello(s);
188 if (ret >= 0) cb=NULL;
189 goto end;
190 /* break; */
191
192 default:
193 SSLerr(SSL_F_SSL23_CONNECT,SSL_R_UNKNOWN_STATE);
194 ret= -1;
195 goto end;
196 /* break; */
197 }
198
199 if (s->debug) { (void)BIO_flush(s->wbio); }
200
201 if ((cb != NULL) && (s->state != state))
202 {
203 new_state=s->state;
204 s->state=state;
205 cb(s,SSL_CB_CONNECT_LOOP,1);
206 s->state=new_state;
207 }
208 }
209end:
210 s->in_handshake--;
211 if (buf != NULL)
212 BUF_MEM_free(buf);
213 if (cb != NULL)
214 cb(s,SSL_CB_CONNECT_EXIT,ret);
215 return(ret);
216 }
217
218
219static int ssl23_client_hello(SSL *s)
220 {
221 unsigned char *buf;
222 unsigned char *p,*d;
223 int i,ch_len;
224 int ret;
225
226 buf=(unsigned char *)s->init_buf->data;
227 if (s->state == SSL23_ST_CW_CLNT_HELLO_A)
228 {
229#if 0
230 /* don't reuse session-id's */
231 if (!ssl_get_new_session(s,0))
232 {
233 return(-1);
234 }
235#endif
236
237 p=s->s3->client_random;
238 if(RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE) <= 0)
239 return -1;
240
241 /* Do the message type and length last */
242 d= &(buf[2]);
243 p=d+9;
244
245 *(d++)=SSL2_MT_CLIENT_HELLO;
246 if (!(s->options & SSL_OP_NO_TLSv1))
247 {
248 *(d++)=TLS1_VERSION_MAJOR;
249 *(d++)=TLS1_VERSION_MINOR;
250 s->client_version=TLS1_VERSION;
251 }
252#ifdef OPENSSL_FIPS
253 else if(FIPS_mode())
254 {
255 SSLerr(SSL_F_SSL23_CLIENT_HELLO,
256 SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE);
257 return -1;
258 }
259#endif
260 else if (!(s->options & SSL_OP_NO_SSLv3))
261 {
262 *(d++)=SSL3_VERSION_MAJOR;
263 *(d++)=SSL3_VERSION_MINOR;
264 s->client_version=SSL3_VERSION;
265 }
266 else if (!(s->options & SSL_OP_NO_SSLv2))
267 {
268 *(d++)=SSL2_VERSION_MAJOR;
269 *(d++)=SSL2_VERSION_MINOR;
270 s->client_version=SSL2_VERSION;
271 }
272 else
273 {
274 SSLerr(SSL_F_SSL23_CLIENT_HELLO,SSL_R_NO_PROTOCOLS_AVAILABLE);
275 return(-1);
276 }
277
278 /* Ciphers supported */
279 i=ssl_cipher_list_to_bytes(s,SSL_get_ciphers(s),p);
280 if (i == 0)
281 {
282 /* no ciphers */
283 SSLerr(SSL_F_SSL23_CLIENT_HELLO,SSL_R_NO_CIPHERS_AVAILABLE);
284 return(-1);
285 }
286 s2n(i,d);
287 p+=i;
288
289 /* put in the session-id, zero since there is no
290 * reuse. */
291#if 0
292 s->session->session_id_length=0;
293#endif
294 s2n(0,d);
295
296 if (s->options & SSL_OP_NETSCAPE_CHALLENGE_BUG)
297 ch_len=SSL2_CHALLENGE_LENGTH;
298 else
299 ch_len=SSL2_MAX_CHALLENGE_LENGTH;
300
301 /* write out sslv2 challenge */
302 if (SSL3_RANDOM_SIZE < ch_len)
303 i=SSL3_RANDOM_SIZE;
304 else
305 i=ch_len;
306 s2n(i,d);
307 memset(&(s->s3->client_random[0]),0,SSL3_RANDOM_SIZE);
308 if(RAND_pseudo_bytes(&(s->s3->client_random[SSL3_RANDOM_SIZE-i]),i) <= 0)
309 return -1;
310
311 memcpy(p,&(s->s3->client_random[SSL3_RANDOM_SIZE-i]),i);
312 p+=i;
313
314 i= p- &(buf[2]);
315 buf[0]=((i>>8)&0xff)|0x80;
316 buf[1]=(i&0xff);
317
318 s->state=SSL23_ST_CW_CLNT_HELLO_B;
319 /* number of bytes to write */
320 s->init_num=i+2;
321 s->init_off=0;
322
323 ssl3_finish_mac(s,&(buf[2]),i);
324 }
325
326 /* SSL3_ST_CW_CLNT_HELLO_B */
327 ret = ssl23_write_bytes(s);
328 if (ret >= 2)
329 if (s->msg_callback)
330 s->msg_callback(1, SSL2_VERSION, 0, s->init_buf->data+2, ret-2, s, s->msg_callback_arg); /* CLIENT-HELLO */
331 return ret;
332 }
333
334static int ssl23_get_server_hello(SSL *s)
335 {
336 char buf[8];
337 unsigned char *p;
338 int i;
339 int n;
340
341 n=ssl23_read_bytes(s,7);
342
343 if (n != 7) return(n);
344 p=s->packet;
345
346 memcpy(buf,p,n);
347
348 if ((p[0] & 0x80) && (p[2] == SSL2_MT_SERVER_HELLO) &&
349 (p[5] == 0x00) && (p[6] == 0x02))
350 {
351#ifdef OPENSSL_NO_SSL2
352 SSLerr(SSL_F_SSL23_GET_SERVER_HELLO,SSL_R_UNSUPPORTED_PROTOCOL);
353 goto err;
354#else
355 /* we are talking sslv2 */
356 /* we need to clean up the SSLv3 setup and put in the
357 * sslv2 stuff. */
358 int ch_len;
359
360 if (s->options & SSL_OP_NO_SSLv2)
361 {
362 SSLerr(SSL_F_SSL23_GET_SERVER_HELLO,SSL_R_UNSUPPORTED_PROTOCOL);
363 goto err;
364 }
365 if (s->s2 == NULL)
366 {
367 if (!ssl2_new(s))
368 goto err;
369 }
370 else
371 ssl2_clear(s);
372
373 if (s->options & SSL_OP_NETSCAPE_CHALLENGE_BUG)
374 ch_len=SSL2_CHALLENGE_LENGTH;
375 else
376 ch_len=SSL2_MAX_CHALLENGE_LENGTH;
377
378 /* write out sslv2 challenge */
379 i=(SSL3_RANDOM_SIZE < ch_len)
380 ?SSL3_RANDOM_SIZE:ch_len;
381 s->s2->challenge_length=i;
382 memcpy(s->s2->challenge,
383 &(s->s3->client_random[SSL3_RANDOM_SIZE-i]),i);
384
385 if (s->s3 != NULL) ssl3_free(s);
386
387 if (!BUF_MEM_grow_clean(s->init_buf,
388 SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER))
389 {
390 SSLerr(SSL_F_SSL23_GET_SERVER_HELLO,ERR_R_BUF_LIB);
391 goto err;
392 }
393
394 s->state=SSL2_ST_GET_SERVER_HELLO_A;
395 if (!(s->client_version == SSL2_VERSION))
396 /* use special padding (SSL 3.0 draft/RFC 2246, App. E.2) */
397 s->s2->ssl2_rollback=1;
398
399 /* setup the 5 bytes we have read so we get them from
400 * the sslv2 buffer */
401 s->rstate=SSL_ST_READ_HEADER;
402 s->packet_length=n;
403 s->packet= &(s->s2->rbuf[0]);
404 memcpy(s->packet,buf,n);
405 s->s2->rbuf_left=n;
406 s->s2->rbuf_offs=0;
407
408 /* we have already written one */
409 s->s2->write_sequence=1;
410
411 s->method=SSLv2_client_method();
412 s->handshake_func=s->method->ssl_connect;
413#endif
414 }
415 else if ((p[0] == SSL3_RT_HANDSHAKE) &&
416 (p[1] == SSL3_VERSION_MAJOR) &&
417 ((p[2] == SSL3_VERSION_MINOR) ||
418 (p[2] == TLS1_VERSION_MINOR)) &&
419 (p[5] == SSL3_MT_SERVER_HELLO))
420 {
421 /* we have sslv3 or tls1 */
422
423 if (!ssl_init_wbio_buffer(s,1)) goto err;
424
425 /* we are in this state */
426 s->state=SSL3_ST_CR_SRVR_HELLO_A;
427
428 /* put the 5 bytes we have read into the input buffer
429 * for SSLv3 */
430 s->rstate=SSL_ST_READ_HEADER;
431 s->packet_length=n;
432 s->packet= &(s->s3->rbuf.buf[0]);
433 memcpy(s->packet,buf,n);
434 s->s3->rbuf.left=n;
435 s->s3->rbuf.offset=0;
436
437 if ((p[2] == SSL3_VERSION_MINOR) &&
438 !(s->options & SSL_OP_NO_SSLv3))
439 {
440#ifdef OPENSSL_FIPS
441 if(FIPS_mode())
442 {
443 SSLerr(SSL_F_SSL23_GET_SERVER_HELLO,
444 SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE);
445 goto err;
446 }
447#endif
448 s->version=SSL3_VERSION;
449 s->method=SSLv3_client_method();
450 }
451 else if ((p[2] == TLS1_VERSION_MINOR) &&
452 !(s->options & SSL_OP_NO_TLSv1))
453 {
454 s->version=TLS1_VERSION;
455 s->method=TLSv1_client_method();
456 }
457 else
458 {
459 SSLerr(SSL_F_SSL23_GET_SERVER_HELLO,SSL_R_UNSUPPORTED_PROTOCOL);
460 goto err;
461 }
462
463 s->handshake_func=s->method->ssl_connect;
464 }
465 else if ((p[0] == SSL3_RT_ALERT) &&
466 (p[1] == SSL3_VERSION_MAJOR) &&
467 ((p[2] == SSL3_VERSION_MINOR) ||
468 (p[2] == TLS1_VERSION_MINOR)) &&
469 (p[3] == 0) &&
470 (p[4] == 2))
471 {
472 void (*cb)(const SSL *ssl,int type,int val)=NULL;
473 int j;
474
475 /* An alert */
476 if (s->info_callback != NULL)
477 cb=s->info_callback;
478 else if (s->ctx->info_callback != NULL)
479 cb=s->ctx->info_callback;
480
481 i=p[5];
482 if (cb != NULL)
483 {
484 j=(i<<8)|p[6];
485 cb(s,SSL_CB_READ_ALERT,j);
486 }
487
488 s->rwstate=SSL_NOTHING;
489 SSLerr(SSL_F_SSL23_GET_SERVER_HELLO,SSL_AD_REASON_OFFSET+p[6]);
490 goto err;
491 }
492 else
493 {
494 SSLerr(SSL_F_SSL23_GET_SERVER_HELLO,SSL_R_UNKNOWN_PROTOCOL);
495 goto err;
496 }
497 s->init_num=0;
498
499 /* Since, if we are sending a ssl23 client hello, we are not
500 * reusing a session-id */
501 if (!ssl_get_new_session(s,0))
502 goto err;
503
504 s->first_packet=1;
505 return(SSL_connect(s));
506err:
507 return(-1);
508 }
509
diff --git a/src/lib/libssl/s23_lib.c b/src/lib/libssl/s23_lib.c
new file mode 100644
index 0000000000..8d7dbcf569
--- /dev/null
+++ b/src/lib/libssl/s23_lib.c
@@ -0,0 +1,236 @@
1/* ssl/s23_lib.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include <openssl/objects.h>
61#include "ssl_locl.h"
62
63static int ssl23_num_ciphers(void );
64static SSL_CIPHER *ssl23_get_cipher(unsigned int u);
65static int ssl23_read(SSL *s, void *buf, int len);
66static int ssl23_peek(SSL *s, void *buf, int len);
67static int ssl23_write(SSL *s, const void *buf, int len);
68static long ssl23_default_timeout(void );
69static int ssl23_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p);
70static SSL_CIPHER *ssl23_get_cipher_by_char(const unsigned char *p);
71const char *SSL23_version_str="SSLv2/3 compatibility" OPENSSL_VERSION_PTEXT;
72
73static SSL_METHOD SSLv23_data= {
74 TLS1_VERSION,
75 tls1_new,
76 tls1_clear,
77 tls1_free,
78 ssl_undefined_function,
79 ssl_undefined_function,
80 ssl23_read,
81 ssl23_peek,
82 ssl23_write,
83 ssl_undefined_function,
84 ssl_undefined_function,
85 ssl_ok,
86 ssl3_ctrl,
87 ssl3_ctx_ctrl,
88 ssl23_get_cipher_by_char,
89 ssl23_put_cipher_by_char,
90 ssl_undefined_const_function,
91 ssl23_num_ciphers,
92 ssl23_get_cipher,
93 ssl_bad_method,
94 ssl23_default_timeout,
95 &ssl3_undef_enc_method,
96 ssl_undefined_function,
97 ssl3_callback_ctrl,
98 ssl3_ctx_callback_ctrl,
99 };
100
101static long ssl23_default_timeout(void)
102 {
103 return(300);
104 }
105
106SSL_METHOD *sslv23_base_method(void)
107 {
108 return(&SSLv23_data);
109 }
110
111static int ssl23_num_ciphers(void)
112 {
113 return(ssl3_num_ciphers()
114#ifndef OPENSSL_NO_SSL2
115 + ssl2_num_ciphers()
116#endif
117 );
118 }
119
120static SSL_CIPHER *ssl23_get_cipher(unsigned int u)
121 {
122 unsigned int uu=ssl3_num_ciphers();
123
124 if (u < uu)
125 return(ssl3_get_cipher(u));
126 else
127#ifndef OPENSSL_NO_SSL2
128 return(ssl2_get_cipher(u-uu));
129#else
130 return(NULL);
131#endif
132 }
133
134/* This function needs to check if the ciphers required are actually
135 * available */
136static SSL_CIPHER *ssl23_get_cipher_by_char(const unsigned char *p)
137 {
138 SSL_CIPHER c,*cp;
139 unsigned long id;
140 int n;
141
142 n=ssl3_num_ciphers();
143 id=0x03000000|((unsigned long)p[0]<<16L)|
144 ((unsigned long)p[1]<<8L)|(unsigned long)p[2];
145 c.id=id;
146 cp=ssl3_get_cipher_by_char(p);
147#ifndef OPENSSL_NO_SSL2
148 if (cp == NULL)
149 cp=ssl2_get_cipher_by_char(p);
150#endif
151 return(cp);
152 }
153
154static int ssl23_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p)
155 {
156 long l;
157
158 /* We can write SSLv2 and SSLv3 ciphers */
159 if (p != NULL)
160 {
161 l=c->id;
162 p[0]=((unsigned char)(l>>16L))&0xFF;
163 p[1]=((unsigned char)(l>> 8L))&0xFF;
164 p[2]=((unsigned char)(l ))&0xFF;
165 }
166 return(3);
167 }
168
169static int ssl23_read(SSL *s, void *buf, int len)
170 {
171 int n;
172
173 clear_sys_error();
174 if (SSL_in_init(s) && (!s->in_handshake))
175 {
176 n=s->handshake_func(s);
177 if (n < 0) return(n);
178 if (n == 0)
179 {
180 SSLerr(SSL_F_SSL23_READ,SSL_R_SSL_HANDSHAKE_FAILURE);
181 return(-1);
182 }
183 return(SSL_read(s,buf,len));
184 }
185 else
186 {
187 ssl_undefined_function(s);
188 return(-1);
189 }
190 }
191
192static int ssl23_peek(SSL *s, void *buf, int len)
193 {
194 int n;
195
196 clear_sys_error();
197 if (SSL_in_init(s) && (!s->in_handshake))
198 {
199 n=s->handshake_func(s);
200 if (n < 0) return(n);
201 if (n == 0)
202 {
203 SSLerr(SSL_F_SSL23_PEEK,SSL_R_SSL_HANDSHAKE_FAILURE);
204 return(-1);
205 }
206 return(SSL_peek(s,buf,len));
207 }
208 else
209 {
210 ssl_undefined_function(s);
211 return(-1);
212 }
213 }
214
215static int ssl23_write(SSL *s, const void *buf, int len)
216 {
217 int n;
218
219 clear_sys_error();
220 if (SSL_in_init(s) && (!s->in_handshake))
221 {
222 n=s->handshake_func(s);
223 if (n < 0) return(n);
224 if (n == 0)
225 {
226 SSLerr(SSL_F_SSL23_WRITE,SSL_R_SSL_HANDSHAKE_FAILURE);
227 return(-1);
228 }
229 return(SSL_write(s,buf,len));
230 }
231 else
232 {
233 ssl_undefined_function(s);
234 return(-1);
235 }
236 }
diff --git a/src/lib/libssl/s23_pkt.c b/src/lib/libssl/s23_pkt.c
new file mode 100644
index 0000000000..4ca6a1b258
--- /dev/null
+++ b/src/lib/libssl/s23_pkt.c
@@ -0,0 +1,117 @@
1/* ssl/s23_pkt.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include <errno.h>
61#define USE_SOCKETS
62#include "ssl_locl.h"
63#include <openssl/evp.h>
64#include <openssl/buffer.h>
65
66int ssl23_write_bytes(SSL *s)
67 {
68 int i,num,tot;
69 char *buf;
70
71 buf=s->init_buf->data;
72 tot=s->init_off;
73 num=s->init_num;
74 for (;;)
75 {
76 s->rwstate=SSL_WRITING;
77 i=BIO_write(s->wbio,&(buf[tot]),num);
78 if (i <= 0)
79 {
80 s->init_off=tot;
81 s->init_num=num;
82 return(i);
83 }
84 s->rwstate=SSL_NOTHING;
85 if (i == num) return(tot+i);
86
87 num-=i;
88 tot+=i;
89 }
90 }
91
92/* return regularly only when we have read (at least) 'n' bytes */
93int ssl23_read_bytes(SSL *s, int n)
94 {
95 unsigned char *p;
96 int j;
97
98 if (s->packet_length < (unsigned int)n)
99 {
100 p=s->packet;
101
102 for (;;)
103 {
104 s->rwstate=SSL_READING;
105 j=BIO_read(s->rbio,(char *)&(p[s->packet_length]),
106 n-s->packet_length);
107 if (j <= 0)
108 return(j);
109 s->rwstate=SSL_NOTHING;
110 s->packet_length+=j;
111 if (s->packet_length >= (unsigned int)n)
112 return(s->packet_length);
113 }
114 }
115 return(n);
116 }
117
diff --git a/src/lib/libssl/s23_srvr.c b/src/lib/libssl/s23_srvr.c
new file mode 100644
index 0000000000..e9edc34328
--- /dev/null
+++ b/src/lib/libssl/s23_srvr.c
@@ -0,0 +1,603 @@
1/* ssl/s23_srvr.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58/* ====================================================================
59 * Copyright (c) 1998-2001 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#include <stdio.h>
113#include "ssl_locl.h"
114#include <openssl/buffer.h>
115#include <openssl/rand.h>
116#include <openssl/objects.h>
117#include <openssl/evp.h>
118
119static SSL_METHOD *ssl23_get_server_method(int ver);
120int ssl23_get_client_hello(SSL *s);
121static SSL_METHOD *ssl23_get_server_method(int ver)
122 {
123#ifndef OPENSSL_NO_SSL2
124 if (ver == SSL2_VERSION)
125 return(SSLv2_server_method());
126#endif
127 if (ver == SSL3_VERSION)
128 return(SSLv3_server_method());
129 else if (ver == TLS1_VERSION)
130 return(TLSv1_server_method());
131 else
132 return(NULL);
133 }
134
135SSL_METHOD *SSLv23_server_method(void)
136 {
137 static int init=1;
138 static SSL_METHOD SSLv23_server_data;
139
140 if (init)
141 {
142 CRYPTO_w_lock(CRYPTO_LOCK_SSL_METHOD);
143
144 if (init)
145 {
146 memcpy((char *)&SSLv23_server_data,
147 (char *)sslv23_base_method(),sizeof(SSL_METHOD));
148 SSLv23_server_data.ssl_accept=ssl23_accept;
149 SSLv23_server_data.get_ssl_method=ssl23_get_server_method;
150 init=0;
151 }
152
153 CRYPTO_w_unlock(CRYPTO_LOCK_SSL_METHOD);
154 }
155 return(&SSLv23_server_data);
156 }
157
158int ssl23_accept(SSL *s)
159 {
160 BUF_MEM *buf;
161 unsigned long Time=time(NULL);
162 void (*cb)(const SSL *ssl,int type,int val)=NULL;
163 int ret= -1;
164 int new_state,state;
165
166 RAND_add(&Time,sizeof(Time),0);
167 ERR_clear_error();
168 clear_sys_error();
169
170 if (s->info_callback != NULL)
171 cb=s->info_callback;
172 else if (s->ctx->info_callback != NULL)
173 cb=s->ctx->info_callback;
174
175 s->in_handshake++;
176 if (!SSL_in_init(s) || SSL_in_before(s)) SSL_clear(s);
177
178 for (;;)
179 {
180 state=s->state;
181
182 switch(s->state)
183 {
184 case SSL_ST_BEFORE:
185 case SSL_ST_ACCEPT:
186 case SSL_ST_BEFORE|SSL_ST_ACCEPT:
187 case SSL_ST_OK|SSL_ST_ACCEPT:
188
189 s->server=1;
190 if (cb != NULL) cb(s,SSL_CB_HANDSHAKE_START,1);
191
192 /* s->version=SSL3_VERSION; */
193 s->type=SSL_ST_ACCEPT;
194
195 if (s->init_buf == NULL)
196 {
197 if ((buf=BUF_MEM_new()) == NULL)
198 {
199 ret= -1;
200 goto end;
201 }
202 if (!BUF_MEM_grow(buf,SSL3_RT_MAX_PLAIN_LENGTH))
203 {
204 ret= -1;
205 goto end;
206 }
207 s->init_buf=buf;
208 }
209
210 ssl3_init_finished_mac(s);
211
212 s->state=SSL23_ST_SR_CLNT_HELLO_A;
213 s->ctx->stats.sess_accept++;
214 s->init_num=0;
215 break;
216
217 case SSL23_ST_SR_CLNT_HELLO_A:
218 case SSL23_ST_SR_CLNT_HELLO_B:
219
220 s->shutdown=0;
221 ret=ssl23_get_client_hello(s);
222 if (ret >= 0) cb=NULL;
223 goto end;
224 /* break; */
225
226 default:
227 SSLerr(SSL_F_SSL23_ACCEPT,SSL_R_UNKNOWN_STATE);
228 ret= -1;
229 goto end;
230 /* break; */
231 }
232
233 if ((cb != NULL) && (s->state != state))
234 {
235 new_state=s->state;
236 s->state=state;
237 cb(s,SSL_CB_ACCEPT_LOOP,1);
238 s->state=new_state;
239 }
240 }
241end:
242 s->in_handshake--;
243 if (cb != NULL)
244 cb(s,SSL_CB_ACCEPT_EXIT,ret);
245 return(ret);
246 }
247
248
249int ssl23_get_client_hello(SSL *s)
250 {
251 char buf_space[11]; /* Request this many bytes in initial read.
252 * We can detect SSL 3.0/TLS 1.0 Client Hellos
253 * ('type == 3') correctly only when the following
254 * is in a single record, which is not guaranteed by
255 * the protocol specification:
256 * Byte Content
257 * 0 type \
258 * 1/2 version > record header
259 * 3/4 length /
260 * 5 msg_type \
261 * 6-8 length > Client Hello message
262 * 9/10 client_version /
263 */
264 char *buf= &(buf_space[0]);
265 unsigned char *p,*d,*d_len,*dd;
266 unsigned int i;
267 unsigned int csl,sil,cl;
268 int n=0,j;
269 int type=0;
270 int v[2];
271#ifndef OPENSSL_NO_RSA
272 int use_sslv2_strong=0;
273#endif
274
275 if (s->state == SSL23_ST_SR_CLNT_HELLO_A)
276 {
277 /* read the initial header */
278 v[0]=v[1]=0;
279
280 if (!ssl3_setup_buffers(s)) goto err;
281
282 n=ssl23_read_bytes(s, sizeof buf_space);
283 if (n != sizeof buf_space) return(n); /* n == -1 || n == 0 */
284
285 p=s->packet;
286
287 memcpy(buf,p,n);
288
289 if ((p[0] & 0x80) && (p[2] == SSL2_MT_CLIENT_HELLO))
290 {
291 /*
292 * SSLv2 header
293 */
294 if ((p[3] == 0x00) && (p[4] == 0x02))
295 {
296 v[0]=p[3]; v[1]=p[4];
297 /* SSLv2 */
298 if (!(s->options & SSL_OP_NO_SSLv2))
299 type=1;
300 }
301 else if (p[3] == SSL3_VERSION_MAJOR)
302 {
303 v[0]=p[3]; v[1]=p[4];
304 /* SSLv3/TLSv1 */
305 if (p[4] >= TLS1_VERSION_MINOR)
306 {
307 if (!(s->options & SSL_OP_NO_TLSv1))
308 {
309 s->version=TLS1_VERSION;
310 /* type=2; */ /* done later to survive restarts */
311 s->state=SSL23_ST_SR_CLNT_HELLO_B;
312 }
313 else if (!(s->options & SSL_OP_NO_SSLv3))
314 {
315 s->version=SSL3_VERSION;
316 /* type=2; */
317 s->state=SSL23_ST_SR_CLNT_HELLO_B;
318 }
319 else if (!(s->options & SSL_OP_NO_SSLv2))
320 {
321 type=1;
322 }
323 }
324 else if (!(s->options & SSL_OP_NO_SSLv3))
325 {
326 s->version=SSL3_VERSION;
327 /* type=2; */
328 s->state=SSL23_ST_SR_CLNT_HELLO_B;
329 }
330 else if (!(s->options & SSL_OP_NO_SSLv2))
331 type=1;
332
333 }
334 }
335 else if ((p[0] == SSL3_RT_HANDSHAKE) &&
336 (p[1] == SSL3_VERSION_MAJOR) &&
337 (p[5] == SSL3_MT_CLIENT_HELLO) &&
338 ((p[3] == 0 && p[4] < 5 /* silly record length? */)
339 || (p[9] == p[1])))
340 {
341 /*
342 * SSLv3 or tls1 header
343 */
344
345 v[0]=p[1]; /* major version (= SSL3_VERSION_MAJOR) */
346 /* We must look at client_version inside the Client Hello message
347 * to get the correct minor version.
348 * However if we have only a pathologically small fragment of the
349 * Client Hello message, this would be difficult, and we'd have
350 * to read more records to find out.
351 * No known SSL 3.0 client fragments ClientHello like this,
352 * so we simply assume TLS 1.0 to avoid protocol version downgrade
353 * attacks. */
354 if (p[3] == 0 && p[4] < 6)
355 {
356#if 0
357 SSLerr(SSL_F_SSL23_GET_CLIENT_HELLO,SSL_R_RECORD_TOO_SMALL);
358 goto err;
359#else
360 v[1] = TLS1_VERSION_MINOR;
361#endif
362 }
363 else
364 v[1]=p[10]; /* minor version according to client_version */
365 if (v[1] >= TLS1_VERSION_MINOR)
366 {
367 if (!(s->options & SSL_OP_NO_TLSv1))
368 {
369 s->version=TLS1_VERSION;
370 type=3;
371 }
372 else if (!(s->options & SSL_OP_NO_SSLv3))
373 {
374 s->version=SSL3_VERSION;
375 type=3;
376 }
377 }
378 else
379 {
380 /* client requests SSL 3.0 */
381 if (!(s->options & SSL_OP_NO_SSLv3))
382 {
383 s->version=SSL3_VERSION;
384 type=3;
385 }
386 else if (!(s->options & SSL_OP_NO_TLSv1))
387 {
388 /* we won't be able to use TLS of course,
389 * but this will send an appropriate alert */
390 s->version=TLS1_VERSION;
391 type=3;
392 }
393 }
394 }
395 else if ((strncmp("GET ", (char *)p,4) == 0) ||
396 (strncmp("POST ",(char *)p,5) == 0) ||
397 (strncmp("HEAD ",(char *)p,5) == 0) ||
398 (strncmp("PUT ", (char *)p,4) == 0))
399 {
400 SSLerr(SSL_F_SSL23_GET_CLIENT_HELLO,SSL_R_HTTP_REQUEST);
401 goto err;
402 }
403 else if (strncmp("CONNECT",(char *)p,7) == 0)
404 {
405 SSLerr(SSL_F_SSL23_GET_CLIENT_HELLO,SSL_R_HTTPS_PROXY_REQUEST);
406 goto err;
407 }
408 }
409
410#ifdef OPENSSL_FIPS
411 if (FIPS_mode() && (s->version < TLS1_VERSION))
412 {
413 SSLerr(SSL_F_SSL23_GET_CLIENT_HELLO,
414 SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE);
415 goto err;
416 }
417#endif
418
419 if (s->state == SSL23_ST_SR_CLNT_HELLO_B)
420 {
421 /* we have SSLv3/TLSv1 in an SSLv2 header
422 * (other cases skip this state) */
423
424 type=2;
425 p=s->packet;
426 v[0] = p[3]; /* == SSL3_VERSION_MAJOR */
427 v[1] = p[4];
428
429 n=((p[0]&0x7f)<<8)|p[1];
430 if (n > (1024*4))
431 {
432 SSLerr(SSL_F_SSL23_GET_CLIENT_HELLO,SSL_R_RECORD_TOO_LARGE);
433 goto err;
434 }
435
436 j=ssl23_read_bytes(s,n+2);
437 if (j <= 0) return(j);
438
439 ssl3_finish_mac(s, s->packet+2, s->packet_length-2);
440 if (s->msg_callback)
441 s->msg_callback(0, SSL2_VERSION, 0, s->packet+2, s->packet_length-2, s, s->msg_callback_arg); /* CLIENT-HELLO */
442
443 p=s->packet;
444 p+=5;
445 n2s(p,csl);
446 n2s(p,sil);
447 n2s(p,cl);
448 d=(unsigned char *)s->init_buf->data;
449 if ((csl+sil+cl+11) != s->packet_length)
450 {
451 SSLerr(SSL_F_SSL23_GET_CLIENT_HELLO,SSL_R_RECORD_LENGTH_MISMATCH);
452 goto err;
453 }
454
455 /* record header: msg_type ... */
456 *(d++) = SSL3_MT_CLIENT_HELLO;
457 /* ... and length (actual value will be written later) */
458 d_len = d;
459 d += 3;
460
461 /* client_version */
462 *(d++) = SSL3_VERSION_MAJOR; /* == v[0] */
463 *(d++) = v[1];
464
465 /* lets populate the random area */
466 /* get the challenge_length */
467 i=(cl > SSL3_RANDOM_SIZE)?SSL3_RANDOM_SIZE:cl;
468 memset(d,0,SSL3_RANDOM_SIZE);
469 memcpy(&(d[SSL3_RANDOM_SIZE-i]),&(p[csl+sil]),i);
470 d+=SSL3_RANDOM_SIZE;
471
472 /* no session-id reuse */
473 *(d++)=0;
474
475 /* ciphers */
476 j=0;
477 dd=d;
478 d+=2;
479 for (i=0; i<csl; i+=3)
480 {
481 if (p[i] != 0) continue;
482 *(d++)=p[i+1];
483 *(d++)=p[i+2];
484 j+=2;
485 }
486 s2n(j,dd);
487
488 /* COMPRESSION */
489 *(d++)=1;
490 *(d++)=0;
491
492 i = (d-(unsigned char *)s->init_buf->data) - 4;
493 l2n3((long)i, d_len);
494
495 /* get the data reused from the init_buf */
496 s->s3->tmp.reuse_message=1;
497 s->s3->tmp.message_type=SSL3_MT_CLIENT_HELLO;
498 s->s3->tmp.message_size=i;
499 }
500
501 /* imaginary new state (for program structure): */
502 /* s->state = SSL23_SR_CLNT_HELLO_C */
503
504 if (type == 1)
505 {
506#ifdef OPENSSL_NO_SSL2
507 SSLerr(SSL_F_SSL23_GET_CLIENT_HELLO,SSL_R_UNSUPPORTED_PROTOCOL);
508 goto err;
509#else
510 /* we are talking sslv2 */
511 /* we need to clean up the SSLv3/TLSv1 setup and put in the
512 * sslv2 stuff. */
513
514 if (s->s2 == NULL)
515 {
516 if (!ssl2_new(s))
517 goto err;
518 }
519 else
520 ssl2_clear(s);
521
522 if (s->s3 != NULL) ssl3_free(s);
523
524 if (!BUF_MEM_grow_clean(s->init_buf,
525 SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER))
526 {
527 goto err;
528 }
529
530 s->state=SSL2_ST_GET_CLIENT_HELLO_A;
531 if (s->options & SSL_OP_NO_TLSv1 && s->options & SSL_OP_NO_SSLv3)
532 s->s2->ssl2_rollback=0;
533 else
534 /* reject SSL 2.0 session if client supports SSL 3.0 or TLS 1.0
535 * (SSL 3.0 draft/RFC 2246, App. E.2) */
536 s->s2->ssl2_rollback=1;
537
538 /* setup the n bytes we have read so we get them from
539 * the sslv2 buffer */
540 s->rstate=SSL_ST_READ_HEADER;
541 s->packet_length=n;
542 s->packet= &(s->s2->rbuf[0]);
543 memcpy(s->packet,buf,n);
544 s->s2->rbuf_left=n;
545 s->s2->rbuf_offs=0;
546
547 s->method=SSLv2_server_method();
548 s->handshake_func=s->method->ssl_accept;
549#endif
550 }
551
552 if ((type == 2) || (type == 3))
553 {
554 /* we have SSLv3/TLSv1 (type 2: SSL2 style, type 3: SSL3/TLS style) */
555
556 if (!ssl_init_wbio_buffer(s,1)) goto err;
557
558 /* we are in this state */
559 s->state=SSL3_ST_SR_CLNT_HELLO_A;
560
561 if (type == 3)
562 {
563 /* put the 'n' bytes we have read into the input buffer
564 * for SSLv3 */
565 s->rstate=SSL_ST_READ_HEADER;
566 s->packet_length=n;
567 s->packet= &(s->s3->rbuf.buf[0]);
568 memcpy(s->packet,buf,n);
569 s->s3->rbuf.left=n;
570 s->s3->rbuf.offset=0;
571 }
572 else
573 {
574 s->packet_length=0;
575 s->s3->rbuf.left=0;
576 s->s3->rbuf.offset=0;
577 }
578
579 if (s->version == TLS1_VERSION)
580 s->method = TLSv1_server_method();
581 else
582 s->method = SSLv3_server_method();
583#if 0 /* ssl3_get_client_hello does this */
584 s->client_version=(v[0]<<8)|v[1];
585#endif
586 s->handshake_func=s->method->ssl_accept;
587 }
588
589 if ((type < 1) || (type > 3))
590 {
591 /* bad, very bad */
592 SSLerr(SSL_F_SSL23_GET_CLIENT_HELLO,SSL_R_UNKNOWN_PROTOCOL);
593 goto err;
594 }
595 s->init_num=0;
596
597 if (buf != buf_space) OPENSSL_free(buf);
598 s->first_packet=1;
599 return(SSL_accept(s));
600err:
601 if (buf != buf_space) OPENSSL_free(buf);
602 return(-1);
603 }
diff --git a/src/lib/libssl/s3_both.c b/src/lib/libssl/s3_both.c
new file mode 100644
index 0000000000..64d317b7ac
--- /dev/null
+++ b/src/lib/libssl/s3_both.c
@@ -0,0 +1,635 @@
1/* ssl/s3_both.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58/* ====================================================================
59 * Copyright (c) 1998-2002 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#include <limits.h>
113#include <string.h>
114#include <stdio.h>
115#include "ssl_locl.h"
116#include <openssl/buffer.h>
117#include <openssl/rand.h>
118#include <openssl/objects.h>
119#include <openssl/evp.h>
120#include <openssl/x509.h>
121
122/* send s->init_buf in records of type 'type' (SSL3_RT_HANDSHAKE or SSL3_RT_CHANGE_CIPHER_SPEC) */
123int ssl3_do_write(SSL *s, int type)
124 {
125 int ret;
126
127 ret=ssl3_write_bytes(s,type,&s->init_buf->data[s->init_off],
128 s->init_num);
129 if (ret < 0) return(-1);
130 if (type == SSL3_RT_HANDSHAKE)
131 /* should not be done for 'Hello Request's, but in that case
132 * we'll ignore the result anyway */
133 ssl3_finish_mac(s,(unsigned char *)&s->init_buf->data[s->init_off],ret);
134
135 if (ret == s->init_num)
136 {
137 if (s->msg_callback)
138 s->msg_callback(1, s->version, type, s->init_buf->data, (size_t)(s->init_off + s->init_num), s, s->msg_callback_arg);
139 return(1);
140 }
141 s->init_off+=ret;
142 s->init_num-=ret;
143 return(0);
144 }
145
146int ssl3_send_finished(SSL *s, int a, int b, const char *sender, int slen)
147 {
148 unsigned char *p,*d;
149 int i;
150 unsigned long l;
151
152 if (s->state == a)
153 {
154 d=(unsigned char *)s->init_buf->data;
155 p= &(d[4]);
156
157 i=s->method->ssl3_enc->final_finish_mac(s,
158 &(s->s3->finish_dgst1),
159 &(s->s3->finish_dgst2),
160 sender,slen,s->s3->tmp.finish_md);
161 s->s3->tmp.finish_md_len = i;
162 memcpy(p, s->s3->tmp.finish_md, i);
163 p+=i;
164 l=i;
165
166#ifdef OPENSSL_SYS_WIN16
167 /* MSVC 1.5 does not clear the top bytes of the word unless
168 * I do this.
169 */
170 l&=0xffff;
171#endif
172
173 *(d++)=SSL3_MT_FINISHED;
174 l2n3(l,d);
175 s->init_num=(int)l+4;
176 s->init_off=0;
177
178 s->state=b;
179 }
180
181 /* SSL3_ST_SEND_xxxxxx_HELLO_B */
182 return(ssl3_do_write(s,SSL3_RT_HANDSHAKE));
183 }
184
185int ssl3_get_finished(SSL *s, int a, int b)
186 {
187 int al,i,ok;
188 long n;
189 unsigned char *p;
190
191 /* the mac has already been generated when we received the
192 * change cipher spec message and is in s->s3->tmp.peer_finish_md
193 */
194
195 n=ssl3_get_message(s,
196 a,
197 b,
198 SSL3_MT_FINISHED,
199 64, /* should actually be 36+4 :-) */
200 &ok);
201
202 if (!ok) return((int)n);
203
204 /* If this occurs, we have missed a message */
205 if (!s->s3->change_cipher_spec)
206 {
207 al=SSL_AD_UNEXPECTED_MESSAGE;
208 SSLerr(SSL_F_SSL3_GET_FINISHED,SSL_R_GOT_A_FIN_BEFORE_A_CCS);
209 goto f_err;
210 }
211 s->s3->change_cipher_spec=0;
212
213 p = (unsigned char *)s->init_msg;
214 i = s->s3->tmp.peer_finish_md_len;
215
216 if (i != n)
217 {
218 al=SSL_AD_DECODE_ERROR;
219 SSLerr(SSL_F_SSL3_GET_FINISHED,SSL_R_BAD_DIGEST_LENGTH);
220 goto f_err;
221 }
222
223 if (memcmp(p, s->s3->tmp.peer_finish_md, i) != 0)
224 {
225 al=SSL_AD_DECRYPT_ERROR;
226 SSLerr(SSL_F_SSL3_GET_FINISHED,SSL_R_DIGEST_CHECK_FAILED);
227 goto f_err;
228 }
229
230 return(1);
231f_err:
232 ssl3_send_alert(s,SSL3_AL_FATAL,al);
233 return(0);
234 }
235
236/* for these 2 messages, we need to
237 * ssl->enc_read_ctx re-init
238 * ssl->s3->read_sequence zero
239 * ssl->s3->read_mac_secret re-init
240 * ssl->session->read_sym_enc assign
241 * ssl->session->read_compression assign
242 * ssl->session->read_hash assign
243 */
244int ssl3_send_change_cipher_spec(SSL *s, int a, int b)
245 {
246 unsigned char *p;
247
248 if (s->state == a)
249 {
250 p=(unsigned char *)s->init_buf->data;
251 *p=SSL3_MT_CCS;
252 s->init_num=1;
253 s->init_off=0;
254
255 s->state=b;
256 }
257
258 /* SSL3_ST_CW_CHANGE_B */
259 return(ssl3_do_write(s,SSL3_RT_CHANGE_CIPHER_SPEC));
260 }
261
262unsigned long ssl3_output_cert_chain(SSL *s, X509 *x)
263 {
264 unsigned char *p;
265 int n,i;
266 unsigned long l=7;
267 BUF_MEM *buf;
268 X509_STORE_CTX xs_ctx;
269 X509_OBJECT obj;
270
271 int no_chain;
272
273 if ((s->mode & SSL_MODE_NO_AUTO_CHAIN) || s->ctx->extra_certs)
274 no_chain = 1;
275 else
276 no_chain = 0;
277
278 /* TLSv1 sends a chain with nothing in it, instead of an alert */
279 buf=s->init_buf;
280 if (!BUF_MEM_grow_clean(buf,10))
281 {
282 SSLerr(SSL_F_SSL3_OUTPUT_CERT_CHAIN,ERR_R_BUF_LIB);
283 return(0);
284 }
285 if (x != NULL)
286 {
287 if(!no_chain && !X509_STORE_CTX_init(&xs_ctx,s->ctx->cert_store,NULL,NULL))
288 {
289 SSLerr(SSL_F_SSL3_OUTPUT_CERT_CHAIN,ERR_R_X509_LIB);
290 return(0);
291 }
292
293 for (;;)
294 {
295 n=i2d_X509(x,NULL);
296 if (!BUF_MEM_grow_clean(buf,(int)(n+l+3)))
297 {
298 SSLerr(SSL_F_SSL3_OUTPUT_CERT_CHAIN,ERR_R_BUF_LIB);
299 return(0);
300 }
301 p=(unsigned char *)&(buf->data[l]);
302 l2n3(n,p);
303 i2d_X509(x,&p);
304 l+=n+3;
305
306 if (no_chain)
307 break;
308
309 if (X509_NAME_cmp(X509_get_subject_name(x),
310 X509_get_issuer_name(x)) == 0) break;
311
312 i=X509_STORE_get_by_subject(&xs_ctx,X509_LU_X509,
313 X509_get_issuer_name(x),&obj);
314 if (i <= 0) break;
315 x=obj.data.x509;
316 /* Count is one too high since the X509_STORE_get uped the
317 * ref count */
318 X509_free(x);
319 }
320 if (!no_chain)
321 X509_STORE_CTX_cleanup(&xs_ctx);
322 }
323
324 /* Thawte special :-) */
325 if (s->ctx->extra_certs != NULL)
326 for (i=0; i<sk_X509_num(s->ctx->extra_certs); i++)
327 {
328 x=sk_X509_value(s->ctx->extra_certs,i);
329 n=i2d_X509(x,NULL);
330 if (!BUF_MEM_grow_clean(buf,(int)(n+l+3)))
331 {
332 SSLerr(SSL_F_SSL3_OUTPUT_CERT_CHAIN,ERR_R_BUF_LIB);
333 return(0);
334 }
335 p=(unsigned char *)&(buf->data[l]);
336 l2n3(n,p);
337 i2d_X509(x,&p);
338 l+=n+3;
339 }
340
341 l-=7;
342 p=(unsigned char *)&(buf->data[4]);
343 l2n3(l,p);
344 l+=3;
345 p=(unsigned char *)&(buf->data[0]);
346 *(p++)=SSL3_MT_CERTIFICATE;
347 l2n3(l,p);
348 l+=4;
349 return(l);
350 }
351
352/* Obtain handshake message of message type 'mt' (any if mt == -1),
353 * maximum acceptable body length 'max'.
354 * The first four bytes (msg_type and length) are read in state 'st1',
355 * the body is read in state 'stn'.
356 */
357long ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok)
358 {
359 unsigned char *p;
360 unsigned long l;
361 long n;
362 int i,al;
363
364 if (s->s3->tmp.reuse_message)
365 {
366 s->s3->tmp.reuse_message=0;
367 if ((mt >= 0) && (s->s3->tmp.message_type != mt))
368 {
369 al=SSL_AD_UNEXPECTED_MESSAGE;
370 SSLerr(SSL_F_SSL3_GET_MESSAGE,SSL_R_UNEXPECTED_MESSAGE);
371 goto f_err;
372 }
373 *ok=1;
374 s->init_msg = s->init_buf->data + 4;
375 s->init_num = (int)s->s3->tmp.message_size;
376 return s->init_num;
377 }
378
379 p=(unsigned char *)s->init_buf->data;
380
381 if (s->state == st1) /* s->init_num < 4 */
382 {
383 int skip_message;
384
385 do
386 {
387 while (s->init_num < 4)
388 {
389 i=ssl3_read_bytes(s,SSL3_RT_HANDSHAKE,&p[s->init_num],
390 4 - s->init_num, 0);
391 if (i <= 0)
392 {
393 s->rwstate=SSL_READING;
394 *ok = 0;
395 return i;
396 }
397 s->init_num+=i;
398 }
399
400 skip_message = 0;
401 if (!s->server)
402 if (p[0] == SSL3_MT_HELLO_REQUEST)
403 /* The server may always send 'Hello Request' messages --
404 * we are doing a handshake anyway now, so ignore them
405 * if their format is correct. Does not count for
406 * 'Finished' MAC. */
407 if (p[1] == 0 && p[2] == 0 &&p[3] == 0)
408 {
409 s->init_num = 0;
410 skip_message = 1;
411
412 if (s->msg_callback)
413 s->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, p, 4, s, s->msg_callback_arg);
414 }
415 }
416 while (skip_message);
417
418 /* s->init_num == 4 */
419
420 if ((mt >= 0) && (*p != mt))
421 {
422 al=SSL_AD_UNEXPECTED_MESSAGE;
423 SSLerr(SSL_F_SSL3_GET_MESSAGE,SSL_R_UNEXPECTED_MESSAGE);
424 goto f_err;
425 }
426 if ((mt < 0) && (*p == SSL3_MT_CLIENT_HELLO) &&
427 (st1 == SSL3_ST_SR_CERT_A) &&
428 (stn == SSL3_ST_SR_CERT_B))
429 {
430 /* At this point we have got an MS SGC second client
431 * hello (maybe we should always allow the client to
432 * start a new handshake?). We need to restart the mac.
433 * Don't increment {num,total}_renegotiations because
434 * we have not completed the handshake. */
435 ssl3_init_finished_mac(s);
436 }
437
438 s->s3->tmp.message_type= *(p++);
439
440 n2l3(p,l);
441 if (l > (unsigned long)max)
442 {
443 al=SSL_AD_ILLEGAL_PARAMETER;
444 SSLerr(SSL_F_SSL3_GET_MESSAGE,SSL_R_EXCESSIVE_MESSAGE_SIZE);
445 goto f_err;
446 }
447 if (l > (INT_MAX-4)) /* BUF_MEM_grow takes an 'int' parameter */
448 {
449 al=SSL_AD_ILLEGAL_PARAMETER;
450 SSLerr(SSL_F_SSL3_GET_MESSAGE,SSL_R_EXCESSIVE_MESSAGE_SIZE);
451 goto f_err;
452 }
453 if (l && !BUF_MEM_grow_clean(s->init_buf,(int)l+4))
454 {
455 SSLerr(SSL_F_SSL3_GET_MESSAGE,ERR_R_BUF_LIB);
456 goto err;
457 }
458 s->s3->tmp.message_size=l;
459 s->state=stn;
460
461 s->init_msg = s->init_buf->data + 4;
462 s->init_num = 0;
463 }
464
465 /* next state (stn) */
466 p = s->init_msg;
467 n = s->s3->tmp.message_size - s->init_num;
468 while (n > 0)
469 {
470 i=ssl3_read_bytes(s,SSL3_RT_HANDSHAKE,&p[s->init_num],n,0);
471 if (i <= 0)
472 {
473 s->rwstate=SSL_READING;
474 *ok = 0;
475 return i;
476 }
477 s->init_num += i;
478 n -= i;
479 }
480 ssl3_finish_mac(s, (unsigned char *)s->init_buf->data, s->init_num + 4);
481 if (s->msg_callback)
482 s->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, s->init_buf->data, (size_t)s->init_num + 4, s, s->msg_callback_arg);
483 *ok=1;
484 return s->init_num;
485f_err:
486 ssl3_send_alert(s,SSL3_AL_FATAL,al);
487err:
488 *ok=0;
489 return(-1);
490 }
491
492int ssl_cert_type(X509 *x, EVP_PKEY *pkey)
493 {
494 EVP_PKEY *pk;
495 int ret= -1,i,j;
496
497 if (pkey == NULL)
498 pk=X509_get_pubkey(x);
499 else
500 pk=pkey;
501 if (pk == NULL) goto err;
502
503 i=pk->type;
504 if (i == EVP_PKEY_RSA)
505 {
506 ret=SSL_PKEY_RSA_ENC;
507 if (x != NULL)
508 {
509 j=X509_get_ext_count(x);
510 /* check to see if this is a signing only certificate */
511 /* EAY EAY EAY EAY */
512 }
513 }
514 else if (i == EVP_PKEY_DSA)
515 {
516 ret=SSL_PKEY_DSA_SIGN;
517 }
518 else if (i == EVP_PKEY_DH)
519 {
520 /* if we just have a key, we needs to be guess */
521
522 if (x == NULL)
523 ret=SSL_PKEY_DH_DSA;
524 else
525 {
526 j=X509_get_signature_type(x);
527 if (j == EVP_PKEY_RSA)
528 ret=SSL_PKEY_DH_RSA;
529 else if (j== EVP_PKEY_DSA)
530 ret=SSL_PKEY_DH_DSA;
531 else ret= -1;
532 }
533 }
534 else
535 ret= -1;
536
537err:
538 if(!pkey) EVP_PKEY_free(pk);
539 return(ret);
540 }
541
542int ssl_verify_alarm_type(long type)
543 {
544 int al;
545
546 switch(type)
547 {
548 case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT:
549 case X509_V_ERR_UNABLE_TO_GET_CRL:
550 case X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER:
551 al=SSL_AD_UNKNOWN_CA;
552 break;
553 case X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE:
554 case X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE:
555 case X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY:
556 case X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD:
557 case X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD:
558 case X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD:
559 case X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD:
560 case X509_V_ERR_CERT_NOT_YET_VALID:
561 case X509_V_ERR_CRL_NOT_YET_VALID:
562 case X509_V_ERR_CERT_UNTRUSTED:
563 case X509_V_ERR_CERT_REJECTED:
564 al=SSL_AD_BAD_CERTIFICATE;
565 break;
566 case X509_V_ERR_CERT_SIGNATURE_FAILURE:
567 case X509_V_ERR_CRL_SIGNATURE_FAILURE:
568 al=SSL_AD_DECRYPT_ERROR;
569 break;
570 case X509_V_ERR_CERT_HAS_EXPIRED:
571 case X509_V_ERR_CRL_HAS_EXPIRED:
572 al=SSL_AD_CERTIFICATE_EXPIRED;
573 break;
574 case X509_V_ERR_CERT_REVOKED:
575 al=SSL_AD_CERTIFICATE_REVOKED;
576 break;
577 case X509_V_ERR_OUT_OF_MEM:
578 al=SSL_AD_INTERNAL_ERROR;
579 break;
580 case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT:
581 case X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN:
582 case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY:
583 case X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE:
584 case X509_V_ERR_CERT_CHAIN_TOO_LONG:
585 case X509_V_ERR_PATH_LENGTH_EXCEEDED:
586 case X509_V_ERR_INVALID_CA:
587 al=SSL_AD_UNKNOWN_CA;
588 break;
589 case X509_V_ERR_APPLICATION_VERIFICATION:
590 al=SSL_AD_HANDSHAKE_FAILURE;
591 break;
592 case X509_V_ERR_INVALID_PURPOSE:
593 al=SSL_AD_UNSUPPORTED_CERTIFICATE;
594 break;
595 default:
596 al=SSL_AD_CERTIFICATE_UNKNOWN;
597 break;
598 }
599 return(al);
600 }
601
602int ssl3_setup_buffers(SSL *s)
603 {
604 unsigned char *p;
605 unsigned int extra;
606 size_t len;
607
608 if (s->s3->rbuf.buf == NULL)
609 {
610 if (s->options & SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER)
611 extra=SSL3_RT_MAX_EXTRA;
612 else
613 extra=0;
614 len = SSL3_RT_MAX_PACKET_SIZE + extra;
615 if ((p=OPENSSL_malloc(len)) == NULL)
616 goto err;
617 s->s3->rbuf.buf = p;
618 s->s3->rbuf.len = len;
619 }
620
621 if (s->s3->wbuf.buf == NULL)
622 {
623 len = SSL3_RT_MAX_PACKET_SIZE;
624 len += SSL3_RT_HEADER_LENGTH + 256; /* extra space for empty fragment */
625 if ((p=OPENSSL_malloc(len)) == NULL)
626 goto err;
627 s->s3->wbuf.buf = p;
628 s->s3->wbuf.len = len;
629 }
630 s->packet= &(s->s3->rbuf.buf[0]);
631 return(1);
632err:
633 SSLerr(SSL_F_SSL3_SETUP_BUFFERS,ERR_R_MALLOC_FAILURE);
634 return(0);
635 }
diff --git a/src/lib/libssl/s3_clnt.c b/src/lib/libssl/s3_clnt.c
new file mode 100644
index 0000000000..ebf83b0322
--- /dev/null
+++ b/src/lib/libssl/s3_clnt.c
@@ -0,0 +1,1985 @@
1/* ssl/s3_clnt.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58/* ====================================================================
59 * Copyright (c) 1998-2002 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#include <stdio.h>
113#include "ssl_locl.h"
114#include "kssl_lcl.h"
115#include <openssl/buffer.h>
116#include <openssl/rand.h>
117#include <openssl/objects.h>
118#include <openssl/evp.h>
119#include <openssl/md5.h>
120#include <openssl/fips.h>
121
122static SSL_METHOD *ssl3_get_client_method(int ver);
123static int ssl3_client_hello(SSL *s);
124static int ssl3_get_server_hello(SSL *s);
125static int ssl3_get_certificate_request(SSL *s);
126static int ca_dn_cmp(const X509_NAME * const *a,const X509_NAME * const *b);
127static int ssl3_get_server_done(SSL *s);
128static int ssl3_send_client_verify(SSL *s);
129static int ssl3_send_client_certificate(SSL *s);
130static int ssl3_send_client_key_exchange(SSL *s);
131static int ssl3_get_key_exchange(SSL *s);
132static int ssl3_get_server_certificate(SSL *s);
133static int ssl3_check_cert_and_algorithm(SSL *s);
134static SSL_METHOD *ssl3_get_client_method(int ver)
135 {
136 if (ver == SSL3_VERSION)
137 return(SSLv3_client_method());
138 else
139 return(NULL);
140 }
141
142SSL_METHOD *SSLv3_client_method(void)
143 {
144 static int init=1;
145 static SSL_METHOD SSLv3_client_data;
146
147 if (init)
148 {
149 CRYPTO_w_lock(CRYPTO_LOCK_SSL_METHOD);
150
151 if (init)
152 {
153 memcpy((char *)&SSLv3_client_data,(char *)sslv3_base_method(),
154 sizeof(SSL_METHOD));
155 SSLv3_client_data.ssl_connect=ssl3_connect;
156 SSLv3_client_data.get_ssl_method=ssl3_get_client_method;
157 init=0;
158 }
159
160 CRYPTO_w_unlock(CRYPTO_LOCK_SSL_METHOD);
161 }
162 return(&SSLv3_client_data);
163 }
164
165int ssl3_connect(SSL *s)
166 {
167 BUF_MEM *buf=NULL;
168 unsigned long Time=time(NULL),l;
169 long num1;
170 void (*cb)(const SSL *ssl,int type,int val)=NULL;
171 int ret= -1;
172 int new_state,state,skip=0;
173
174 RAND_add(&Time,sizeof(Time),0);
175 ERR_clear_error();
176 clear_sys_error();
177
178 if (s->info_callback != NULL)
179 cb=s->info_callback;
180 else if (s->ctx->info_callback != NULL)
181 cb=s->ctx->info_callback;
182
183 s->in_handshake++;
184 if (!SSL_in_init(s) || SSL_in_before(s)) SSL_clear(s);
185
186 for (;;)
187 {
188 state=s->state;
189
190 switch(s->state)
191 {
192 case SSL_ST_RENEGOTIATE:
193 s->new_session=1;
194 s->state=SSL_ST_CONNECT;
195 s->ctx->stats.sess_connect_renegotiate++;
196 /* break */
197 case SSL_ST_BEFORE:
198 case SSL_ST_CONNECT:
199 case SSL_ST_BEFORE|SSL_ST_CONNECT:
200 case SSL_ST_OK|SSL_ST_CONNECT:
201
202 s->server=0;
203 if (cb != NULL) cb(s,SSL_CB_HANDSHAKE_START,1);
204
205 if ((s->version & 0xff00 ) != 0x0300)
206 {
207 SSLerr(SSL_F_SSL3_CONNECT, ERR_R_INTERNAL_ERROR);
208 ret = -1;
209 goto end;
210 }
211
212 /* s->version=SSL3_VERSION; */
213 s->type=SSL_ST_CONNECT;
214
215 if (s->init_buf == NULL)
216 {
217 if ((buf=BUF_MEM_new()) == NULL)
218 {
219 ret= -1;
220 goto end;
221 }
222 if (!BUF_MEM_grow(buf,SSL3_RT_MAX_PLAIN_LENGTH))
223 {
224 ret= -1;
225 goto end;
226 }
227 s->init_buf=buf;
228 buf=NULL;
229 }
230
231 if (!ssl3_setup_buffers(s)) { ret= -1; goto end; }
232
233 /* setup buffing BIO */
234 if (!ssl_init_wbio_buffer(s,0)) { ret= -1; goto end; }
235
236 /* don't push the buffering BIO quite yet */
237
238 ssl3_init_finished_mac(s);
239
240 s->state=SSL3_ST_CW_CLNT_HELLO_A;
241 s->ctx->stats.sess_connect++;
242 s->init_num=0;
243 break;
244
245 case SSL3_ST_CW_CLNT_HELLO_A:
246 case SSL3_ST_CW_CLNT_HELLO_B:
247
248 s->shutdown=0;
249 ret=ssl3_client_hello(s);
250 if (ret <= 0) goto end;
251 s->state=SSL3_ST_CR_SRVR_HELLO_A;
252 s->init_num=0;
253
254 /* turn on buffering for the next lot of output */
255 if (s->bbio != s->wbio)
256 s->wbio=BIO_push(s->bbio,s->wbio);
257
258 break;
259
260 case SSL3_ST_CR_SRVR_HELLO_A:
261 case SSL3_ST_CR_SRVR_HELLO_B:
262 ret=ssl3_get_server_hello(s);
263 if (ret <= 0) goto end;
264 if (s->hit)
265 s->state=SSL3_ST_CR_FINISHED_A;
266 else
267 s->state=SSL3_ST_CR_CERT_A;
268 s->init_num=0;
269 break;
270
271 case SSL3_ST_CR_CERT_A:
272 case SSL3_ST_CR_CERT_B:
273 /* Check if it is anon DH */
274 if (!(s->s3->tmp.new_cipher->algorithms & SSL_aNULL))
275 {
276 ret=ssl3_get_server_certificate(s);
277 if (ret <= 0) goto end;
278 }
279 else
280 skip=1;
281 s->state=SSL3_ST_CR_KEY_EXCH_A;
282 s->init_num=0;
283 break;
284
285 case SSL3_ST_CR_KEY_EXCH_A:
286 case SSL3_ST_CR_KEY_EXCH_B:
287 ret=ssl3_get_key_exchange(s);
288 if (ret <= 0) goto end;
289 s->state=SSL3_ST_CR_CERT_REQ_A;
290 s->init_num=0;
291
292 /* at this point we check that we have the
293 * required stuff from the server */
294 if (!ssl3_check_cert_and_algorithm(s))
295 {
296 ret= -1;
297 goto end;
298 }
299 break;
300
301 case SSL3_ST_CR_CERT_REQ_A:
302 case SSL3_ST_CR_CERT_REQ_B:
303 ret=ssl3_get_certificate_request(s);
304 if (ret <= 0) goto end;
305 s->state=SSL3_ST_CR_SRVR_DONE_A;
306 s->init_num=0;
307 break;
308
309 case SSL3_ST_CR_SRVR_DONE_A:
310 case SSL3_ST_CR_SRVR_DONE_B:
311 ret=ssl3_get_server_done(s);
312 if (ret <= 0) goto end;
313 if (s->s3->tmp.cert_req)
314 s->state=SSL3_ST_CW_CERT_A;
315 else
316 s->state=SSL3_ST_CW_KEY_EXCH_A;
317 s->init_num=0;
318
319 break;
320
321 case SSL3_ST_CW_CERT_A:
322 case SSL3_ST_CW_CERT_B:
323 case SSL3_ST_CW_CERT_C:
324 case SSL3_ST_CW_CERT_D:
325 ret=ssl3_send_client_certificate(s);
326 if (ret <= 0) goto end;
327 s->state=SSL3_ST_CW_KEY_EXCH_A;
328 s->init_num=0;
329 break;
330
331 case SSL3_ST_CW_KEY_EXCH_A:
332 case SSL3_ST_CW_KEY_EXCH_B:
333 ret=ssl3_send_client_key_exchange(s);
334 if (ret <= 0) goto end;
335 l=s->s3->tmp.new_cipher->algorithms;
336 /* EAY EAY EAY need to check for DH fix cert
337 * sent back */
338 /* For TLS, cert_req is set to 2, so a cert chain
339 * of nothing is sent, but no verify packet is sent */
340 if (s->s3->tmp.cert_req == 1)
341 {
342 s->state=SSL3_ST_CW_CERT_VRFY_A;
343 }
344 else
345 {
346 s->state=SSL3_ST_CW_CHANGE_A;
347 s->s3->change_cipher_spec=0;
348 }
349
350 s->init_num=0;
351 break;
352
353 case SSL3_ST_CW_CERT_VRFY_A:
354 case SSL3_ST_CW_CERT_VRFY_B:
355 ret=ssl3_send_client_verify(s);
356 if (ret <= 0) goto end;
357 s->state=SSL3_ST_CW_CHANGE_A;
358 s->init_num=0;
359 s->s3->change_cipher_spec=0;
360 break;
361
362 case SSL3_ST_CW_CHANGE_A:
363 case SSL3_ST_CW_CHANGE_B:
364 ret=ssl3_send_change_cipher_spec(s,
365 SSL3_ST_CW_CHANGE_A,SSL3_ST_CW_CHANGE_B);
366 if (ret <= 0) goto end;
367 s->state=SSL3_ST_CW_FINISHED_A;
368 s->init_num=0;
369
370 s->session->cipher=s->s3->tmp.new_cipher;
371 if (s->s3->tmp.new_compression == NULL)
372 s->session->compress_meth=0;
373 else
374 s->session->compress_meth=
375 s->s3->tmp.new_compression->id;
376 if (!s->method->ssl3_enc->setup_key_block(s))
377 {
378 ret= -1;
379 goto end;
380 }
381
382 if (!s->method->ssl3_enc->change_cipher_state(s,
383 SSL3_CHANGE_CIPHER_CLIENT_WRITE))
384 {
385 ret= -1;
386 goto end;
387 }
388
389 break;
390
391 case SSL3_ST_CW_FINISHED_A:
392 case SSL3_ST_CW_FINISHED_B:
393 ret=ssl3_send_finished(s,
394 SSL3_ST_CW_FINISHED_A,SSL3_ST_CW_FINISHED_B,
395 s->method->ssl3_enc->client_finished_label,
396 s->method->ssl3_enc->client_finished_label_len);
397 if (ret <= 0) goto end;
398 s->state=SSL3_ST_CW_FLUSH;
399
400 /* clear flags */
401 s->s3->flags&= ~SSL3_FLAGS_POP_BUFFER;
402 if (s->hit)
403 {
404 s->s3->tmp.next_state=SSL_ST_OK;
405 if (s->s3->flags & SSL3_FLAGS_DELAY_CLIENT_FINISHED)
406 {
407 s->state=SSL_ST_OK;
408 s->s3->flags|=SSL3_FLAGS_POP_BUFFER;
409 s->s3->delay_buf_pop_ret=0;
410 }
411 }
412 else
413 {
414 s->s3->tmp.next_state=SSL3_ST_CR_FINISHED_A;
415 }
416 s->init_num=0;
417 break;
418
419 case SSL3_ST_CR_FINISHED_A:
420 case SSL3_ST_CR_FINISHED_B:
421
422 ret=ssl3_get_finished(s,SSL3_ST_CR_FINISHED_A,
423 SSL3_ST_CR_FINISHED_B);
424 if (ret <= 0) goto end;
425
426 if (s->hit)
427 s->state=SSL3_ST_CW_CHANGE_A;
428 else
429 s->state=SSL_ST_OK;
430 s->init_num=0;
431 break;
432
433 case SSL3_ST_CW_FLUSH:
434 /* number of bytes to be flushed */
435 num1=BIO_ctrl(s->wbio,BIO_CTRL_INFO,0,NULL);
436 if (num1 > 0)
437 {
438 s->rwstate=SSL_WRITING;
439 num1=BIO_flush(s->wbio);
440 if (num1 <= 0) { ret= -1; goto end; }
441 s->rwstate=SSL_NOTHING;
442 }
443
444 s->state=s->s3->tmp.next_state;
445 break;
446
447 case SSL_ST_OK:
448 /* clean a few things up */
449 ssl3_cleanup_key_block(s);
450
451 if (s->init_buf != NULL)
452 {
453 BUF_MEM_free(s->init_buf);
454 s->init_buf=NULL;
455 }
456
457 /* If we are not 'joining' the last two packets,
458 * remove the buffering now */
459 if (!(s->s3->flags & SSL3_FLAGS_POP_BUFFER))
460 ssl_free_wbio_buffer(s);
461 /* else do it later in ssl3_write */
462
463 s->init_num=0;
464 s->new_session=0;
465
466 ssl_update_cache(s,SSL_SESS_CACHE_CLIENT);
467 if (s->hit) s->ctx->stats.sess_hit++;
468
469 ret=1;
470 /* s->server=0; */
471 s->handshake_func=ssl3_connect;
472 s->ctx->stats.sess_connect_good++;
473
474 if (cb != NULL) cb(s,SSL_CB_HANDSHAKE_DONE,1);
475
476 goto end;
477 /* break; */
478
479 default:
480 SSLerr(SSL_F_SSL3_CONNECT,SSL_R_UNKNOWN_STATE);
481 ret= -1;
482 goto end;
483 /* break; */
484 }
485
486 /* did we do anything */
487 if (!s->s3->tmp.reuse_message && !skip)
488 {
489 if (s->debug)
490 {
491 if ((ret=BIO_flush(s->wbio)) <= 0)
492 goto end;
493 }
494
495 if ((cb != NULL) && (s->state != state))
496 {
497 new_state=s->state;
498 s->state=state;
499 cb(s,SSL_CB_CONNECT_LOOP,1);
500 s->state=new_state;
501 }
502 }
503 skip=0;
504 }
505end:
506 s->in_handshake--;
507 if (buf != NULL)
508 BUF_MEM_free(buf);
509 if (cb != NULL)
510 cb(s,SSL_CB_CONNECT_EXIT,ret);
511 return(ret);
512 }
513
514
515static int ssl3_client_hello(SSL *s)
516 {
517 unsigned char *buf;
518 unsigned char *p,*d;
519 int i,j;
520 unsigned long Time,l;
521 SSL_COMP *comp;
522
523 buf=(unsigned char *)s->init_buf->data;
524 if (s->state == SSL3_ST_CW_CLNT_HELLO_A)
525 {
526 if ((s->session == NULL) ||
527 (s->session->ssl_version != s->version) ||
528 (s->session->not_resumable))
529 {
530 if (!ssl_get_new_session(s,0))
531 goto err;
532 }
533 /* else use the pre-loaded session */
534
535 p=s->s3->client_random;
536 Time=time(NULL); /* Time */
537 l2n(Time,p);
538 if(RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE-4) <= 0)
539 goto err;
540
541 /* Do the message type and length last */
542 d=p= &(buf[4]);
543
544 *(p++)=s->version>>8;
545 *(p++)=s->version&0xff;
546 s->client_version=s->version;
547
548 /* Random stuff */
549 memcpy(p,s->s3->client_random,SSL3_RANDOM_SIZE);
550 p+=SSL3_RANDOM_SIZE;
551
552 /* Session ID */
553 if (s->new_session)
554 i=0;
555 else
556 i=s->session->session_id_length;
557 *(p++)=i;
558 if (i != 0)
559 {
560 if (i > sizeof s->session->session_id)
561 {
562 SSLerr(SSL_F_SSL3_CLIENT_HELLO, ERR_R_INTERNAL_ERROR);
563 goto err;
564 }
565 memcpy(p,s->session->session_id,i);
566 p+=i;
567 }
568
569 /* Ciphers supported */
570 i=ssl_cipher_list_to_bytes(s,SSL_get_ciphers(s),&(p[2]));
571 if (i == 0)
572 {
573 SSLerr(SSL_F_SSL3_CLIENT_HELLO,SSL_R_NO_CIPHERS_AVAILABLE);
574 goto err;
575 }
576 s2n(i,p);
577 p+=i;
578
579 /* COMPRESSION */
580 if (s->ctx->comp_methods == NULL)
581 j=0;
582 else
583 j=sk_SSL_COMP_num(s->ctx->comp_methods);
584 *(p++)=1+j;
585 for (i=0; i<j; i++)
586 {
587 comp=sk_SSL_COMP_value(s->ctx->comp_methods,i);
588 *(p++)=comp->id;
589 }
590 *(p++)=0; /* Add the NULL method */
591
592 l=(p-d);
593 d=buf;
594 *(d++)=SSL3_MT_CLIENT_HELLO;
595 l2n3(l,d);
596
597 s->state=SSL3_ST_CW_CLNT_HELLO_B;
598 /* number of bytes to write */
599 s->init_num=p-buf;
600 s->init_off=0;
601 }
602
603 /* SSL3_ST_CW_CLNT_HELLO_B */
604 return(ssl3_do_write(s,SSL3_RT_HANDSHAKE));
605err:
606 return(-1);
607 }
608
609static int ssl3_get_server_hello(SSL *s)
610 {
611 STACK_OF(SSL_CIPHER) *sk;
612 SSL_CIPHER *c;
613 unsigned char *p,*d;
614 int i,al,ok;
615 unsigned int j;
616 long n;
617 SSL_COMP *comp;
618
619 n=ssl3_get_message(s,
620 SSL3_ST_CR_SRVR_HELLO_A,
621 SSL3_ST_CR_SRVR_HELLO_B,
622 SSL3_MT_SERVER_HELLO,
623 300, /* ?? */
624 &ok);
625
626 if (!ok) return((int)n);
627 d=p=(unsigned char *)s->init_msg;
628
629 if ((p[0] != (s->version>>8)) || (p[1] != (s->version&0xff)))
630 {
631 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_WRONG_SSL_VERSION);
632 s->version=(s->version&0xff00)|p[1];
633 al=SSL_AD_PROTOCOL_VERSION;
634 goto f_err;
635 }
636 p+=2;
637
638 /* load the server hello data */
639 /* load the server random */
640 memcpy(s->s3->server_random,p,SSL3_RANDOM_SIZE);
641 p+=SSL3_RANDOM_SIZE;
642
643 /* get the session-id */
644 j= *(p++);
645
646 if ((j > sizeof s->session->session_id) || (j > SSL3_SESSION_ID_SIZE))
647 {
648 al=SSL_AD_ILLEGAL_PARAMETER;
649 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_SSL3_SESSION_ID_TOO_LONG);
650 goto f_err;
651 }
652
653 if (j != 0 && j == s->session->session_id_length
654 && memcmp(p,s->session->session_id,j) == 0)
655 {
656 if(s->sid_ctx_length != s->session->sid_ctx_length
657 || memcmp(s->session->sid_ctx,s->sid_ctx,s->sid_ctx_length))
658 {
659 /* actually a client application bug */
660 al=SSL_AD_ILLEGAL_PARAMETER;
661 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT);
662 goto f_err;
663 }
664 s->hit=1;
665 }
666 else /* a miss or crap from the other end */
667 {
668 /* If we were trying for session-id reuse, make a new
669 * SSL_SESSION so we don't stuff up other people */
670 s->hit=0;
671 if (s->session->session_id_length > 0)
672 {
673 if (!ssl_get_new_session(s,0))
674 {
675 al=SSL_AD_INTERNAL_ERROR;
676 goto f_err;
677 }
678 }
679 s->session->session_id_length=j;
680 memcpy(s->session->session_id,p,j); /* j could be 0 */
681 }
682 p+=j;
683 c=ssl_get_cipher_by_char(s,p);
684 if (c == NULL)
685 {
686 /* unknown cipher */
687 al=SSL_AD_ILLEGAL_PARAMETER;
688 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_UNKNOWN_CIPHER_RETURNED);
689 goto f_err;
690 }
691 p+=ssl_put_cipher_by_char(s,NULL,NULL);
692
693 sk=ssl_get_ciphers_by_id(s);
694 i=sk_SSL_CIPHER_find(sk,c);
695 if (i < 0)
696 {
697 /* we did not say we would use this cipher */
698 al=SSL_AD_ILLEGAL_PARAMETER;
699 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_WRONG_CIPHER_RETURNED);
700 goto f_err;
701 }
702
703 /* Depending on the session caching (internal/external), the cipher
704 and/or cipher_id values may not be set. Make sure that
705 cipher_id is set and use it for comparison. */
706 if (s->session->cipher)
707 s->session->cipher_id = s->session->cipher->id;
708 if (s->hit && (s->session->cipher_id != c->id))
709 {
710 if (!(s->options &
711 SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG))
712 {
713 al=SSL_AD_ILLEGAL_PARAMETER;
714 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED);
715 goto f_err;
716 }
717 }
718 s->s3->tmp.new_cipher=c;
719
720 /* lets get the compression algorithm */
721 /* COMPRESSION */
722 j= *(p++);
723 if (j == 0)
724 comp=NULL;
725 else
726 comp=ssl3_comp_find(s->ctx->comp_methods,j);
727
728 if ((j != 0) && (comp == NULL))
729 {
730 al=SSL_AD_ILLEGAL_PARAMETER;
731 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM);
732 goto f_err;
733 }
734 else
735 {
736 s->s3->tmp.new_compression=comp;
737 }
738
739 if (p != (d+n))
740 {
741 /* wrong packet length */
742 al=SSL_AD_DECODE_ERROR;
743 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_BAD_PACKET_LENGTH);
744 goto err;
745 }
746
747 return(1);
748f_err:
749 ssl3_send_alert(s,SSL3_AL_FATAL,al);
750err:
751 return(-1);
752 }
753
754static int ssl3_get_server_certificate(SSL *s)
755 {
756 int al,i,ok,ret= -1;
757 unsigned long n,nc,llen,l;
758 X509 *x=NULL;
759 unsigned char *p,*d,*q;
760 STACK_OF(X509) *sk=NULL;
761 SESS_CERT *sc;
762 EVP_PKEY *pkey=NULL;
763 int need_cert = 1; /* VRS: 0=> will allow null cert if auth == KRB5 */
764
765 n=ssl3_get_message(s,
766 SSL3_ST_CR_CERT_A,
767 SSL3_ST_CR_CERT_B,
768 -1,
769 s->max_cert_list,
770 &ok);
771
772 if (!ok) return((int)n);
773
774 if (s->s3->tmp.message_type == SSL3_MT_SERVER_KEY_EXCHANGE)
775 {
776 s->s3->tmp.reuse_message=1;
777 return(1);
778 }
779
780 if (s->s3->tmp.message_type != SSL3_MT_CERTIFICATE)
781 {
782 al=SSL_AD_UNEXPECTED_MESSAGE;
783 SSLerr(SSL_F_SSL3_GET_SERVER_CERTIFICATE,SSL_R_BAD_MESSAGE_TYPE);
784 goto f_err;
785 }
786 d=p=(unsigned char *)s->init_msg;
787
788 if ((sk=sk_X509_new_null()) == NULL)
789 {
790 SSLerr(SSL_F_SSL3_GET_SERVER_CERTIFICATE,ERR_R_MALLOC_FAILURE);
791 goto err;
792 }
793
794 n2l3(p,llen);
795 if (llen+3 != n)
796 {
797 al=SSL_AD_DECODE_ERROR;
798 SSLerr(SSL_F_SSL3_GET_SERVER_CERTIFICATE,SSL_R_LENGTH_MISMATCH);
799 goto f_err;
800 }
801 for (nc=0; nc<llen; )
802 {
803 n2l3(p,l);
804 if ((l+nc+3) > llen)
805 {
806 al=SSL_AD_DECODE_ERROR;
807 SSLerr(SSL_F_SSL3_GET_SERVER_CERTIFICATE,SSL_R_CERT_LENGTH_MISMATCH);
808 goto f_err;
809 }
810
811 q=p;
812 x=d2i_X509(NULL,&q,l);
813 if (x == NULL)
814 {
815 al=SSL_AD_BAD_CERTIFICATE;
816 SSLerr(SSL_F_SSL3_GET_SERVER_CERTIFICATE,ERR_R_ASN1_LIB);
817 goto f_err;
818 }
819 if (q != (p+l))
820 {
821 al=SSL_AD_DECODE_ERROR;
822 SSLerr(SSL_F_SSL3_GET_SERVER_CERTIFICATE,SSL_R_CERT_LENGTH_MISMATCH);
823 goto f_err;
824 }
825 if (!sk_X509_push(sk,x))
826 {
827 SSLerr(SSL_F_SSL3_GET_SERVER_CERTIFICATE,ERR_R_MALLOC_FAILURE);
828 goto err;
829 }
830 x=NULL;
831 nc+=l+3;
832 p=q;
833 }
834
835 i=ssl_verify_cert_chain(s,sk);
836 if ((s->verify_mode != SSL_VERIFY_NONE) && (!i)
837#ifndef OPENSSL_NO_KRB5
838 && (s->s3->tmp.new_cipher->algorithms & (SSL_MKEY_MASK|SSL_AUTH_MASK))
839 != (SSL_aKRB5|SSL_kKRB5)
840#endif /* OPENSSL_NO_KRB5 */
841 )
842 {
843 al=ssl_verify_alarm_type(s->verify_result);
844 SSLerr(SSL_F_SSL3_GET_SERVER_CERTIFICATE,SSL_R_CERTIFICATE_VERIFY_FAILED);
845 goto f_err;
846 }
847 ERR_clear_error(); /* but we keep s->verify_result */
848
849 sc=ssl_sess_cert_new();
850 if (sc == NULL) goto err;
851
852 if (s->session->sess_cert) ssl_sess_cert_free(s->session->sess_cert);
853 s->session->sess_cert=sc;
854
855 sc->cert_chain=sk;
856 /* Inconsistency alert: cert_chain does include the peer's
857 * certificate, which we don't include in s3_srvr.c */
858 x=sk_X509_value(sk,0);
859 sk=NULL;
860 /* VRS 19990621: possible memory leak; sk=null ==> !sk_pop_free() @end*/
861
862 pkey=X509_get_pubkey(x);
863
864 /* VRS: allow null cert if auth == KRB5 */
865 need_cert = ((s->s3->tmp.new_cipher->algorithms
866 & (SSL_MKEY_MASK|SSL_AUTH_MASK))
867 == (SSL_aKRB5|SSL_kKRB5))? 0: 1;
868
869#ifdef KSSL_DEBUG
870 printf("pkey,x = %p, %p\n", pkey,x);
871 printf("ssl_cert_type(x,pkey) = %d\n", ssl_cert_type(x,pkey));
872 printf("cipher, alg, nc = %s, %lx, %d\n", s->s3->tmp.new_cipher->name,
873 s->s3->tmp.new_cipher->algorithms, need_cert);
874#endif /* KSSL_DEBUG */
875
876 if (need_cert && ((pkey == NULL) || EVP_PKEY_missing_parameters(pkey)))
877 {
878 x=NULL;
879 al=SSL3_AL_FATAL;
880 SSLerr(SSL_F_SSL3_GET_SERVER_CERTIFICATE,
881 SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS);
882 goto f_err;
883 }
884
885 i=ssl_cert_type(x,pkey);
886 if (need_cert && i < 0)
887 {
888 x=NULL;
889 al=SSL3_AL_FATAL;
890 SSLerr(SSL_F_SSL3_GET_SERVER_CERTIFICATE,
891 SSL_R_UNKNOWN_CERTIFICATE_TYPE);
892 goto f_err;
893 }
894
895 if (need_cert)
896 {
897 sc->peer_cert_type=i;
898 CRYPTO_add(&x->references,1,CRYPTO_LOCK_X509);
899 /* Why would the following ever happen?
900 * We just created sc a couple of lines ago. */
901 if (sc->peer_pkeys[i].x509 != NULL)
902 X509_free(sc->peer_pkeys[i].x509);
903 sc->peer_pkeys[i].x509=x;
904 sc->peer_key= &(sc->peer_pkeys[i]);
905
906 if (s->session->peer != NULL)
907 X509_free(s->session->peer);
908 CRYPTO_add(&x->references,1,CRYPTO_LOCK_X509);
909 s->session->peer=x;
910 }
911 else
912 {
913 sc->peer_cert_type=i;
914 sc->peer_key= NULL;
915
916 if (s->session->peer != NULL)
917 X509_free(s->session->peer);
918 s->session->peer=NULL;
919 }
920 s->session->verify_result = s->verify_result;
921
922 x=NULL;
923 ret=1;
924
925 if (0)
926 {
927f_err:
928 ssl3_send_alert(s,SSL3_AL_FATAL,al);
929 }
930err:
931 EVP_PKEY_free(pkey);
932 X509_free(x);
933 sk_X509_pop_free(sk,X509_free);
934 return(ret);
935 }
936
937static int ssl3_get_key_exchange(SSL *s)
938 {
939#ifndef OPENSSL_NO_RSA
940 unsigned char *q,md_buf[EVP_MAX_MD_SIZE*2];
941#endif
942 EVP_MD_CTX md_ctx;
943 unsigned char *param,*p;
944 int al,i,j,param_len,ok;
945 long n,alg;
946 EVP_PKEY *pkey=NULL;
947#ifndef OPENSSL_NO_RSA
948 RSA *rsa=NULL;
949#endif
950#ifndef OPENSSL_NO_DH
951 DH *dh=NULL;
952#endif
953
954 /* use same message size as in ssl3_get_certificate_request()
955 * as ServerKeyExchange message may be skipped */
956 n=ssl3_get_message(s,
957 SSL3_ST_CR_KEY_EXCH_A,
958 SSL3_ST_CR_KEY_EXCH_B,
959 -1,
960 s->max_cert_list,
961 &ok);
962
963 if (!ok) return((int)n);
964
965 if (s->s3->tmp.message_type != SSL3_MT_SERVER_KEY_EXCHANGE)
966 {
967 s->s3->tmp.reuse_message=1;
968 return(1);
969 }
970
971 param=p=(unsigned char *)s->init_msg;
972
973 if (s->session->sess_cert != NULL)
974 {
975#ifndef OPENSSL_NO_RSA
976 if (s->session->sess_cert->peer_rsa_tmp != NULL)
977 {
978 RSA_free(s->session->sess_cert->peer_rsa_tmp);
979 s->session->sess_cert->peer_rsa_tmp=NULL;
980 }
981#endif
982#ifndef OPENSSL_NO_DH
983 if (s->session->sess_cert->peer_dh_tmp)
984 {
985 DH_free(s->session->sess_cert->peer_dh_tmp);
986 s->session->sess_cert->peer_dh_tmp=NULL;
987 }
988#endif
989 }
990 else
991 {
992 s->session->sess_cert=ssl_sess_cert_new();
993 }
994
995 param_len=0;
996 alg=s->s3->tmp.new_cipher->algorithms;
997 EVP_MD_CTX_init(&md_ctx);
998
999#ifndef OPENSSL_NO_RSA
1000 if (alg & SSL_kRSA)
1001 {
1002 if ((rsa=RSA_new()) == NULL)
1003 {
1004 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,ERR_R_MALLOC_FAILURE);
1005 goto err;
1006 }
1007 n2s(p,i);
1008 param_len=i+2;
1009 if (param_len > n)
1010 {
1011 al=SSL_AD_DECODE_ERROR;
1012 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_BAD_RSA_MODULUS_LENGTH);
1013 goto f_err;
1014 }
1015 if (!(rsa->n=BN_bin2bn(p,i,rsa->n)))
1016 {
1017 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,ERR_R_BN_LIB);
1018 goto err;
1019 }
1020 p+=i;
1021
1022 n2s(p,i);
1023 param_len+=i+2;
1024 if (param_len > n)
1025 {
1026 al=SSL_AD_DECODE_ERROR;
1027 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_BAD_RSA_E_LENGTH);
1028 goto f_err;
1029 }
1030 if (!(rsa->e=BN_bin2bn(p,i,rsa->e)))
1031 {
1032 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,ERR_R_BN_LIB);
1033 goto err;
1034 }
1035 p+=i;
1036 n-=param_len;
1037
1038 /* this should be because we are using an export cipher */
1039 if (alg & SSL_aRSA)
1040 pkey=X509_get_pubkey(s->session->sess_cert->peer_pkeys[SSL_PKEY_RSA_ENC].x509);
1041 else
1042 {
1043 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,ERR_R_INTERNAL_ERROR);
1044 goto err;
1045 }
1046 s->session->sess_cert->peer_rsa_tmp=rsa;
1047 rsa=NULL;
1048 }
1049#else /* OPENSSL_NO_RSA */
1050 if (0)
1051 ;
1052#endif
1053#ifndef OPENSSL_NO_DH
1054 else if (alg & SSL_kEDH)
1055 {
1056 if ((dh=DH_new()) == NULL)
1057 {
1058 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,ERR_R_DH_LIB);
1059 goto err;
1060 }
1061 n2s(p,i);
1062 param_len=i+2;
1063 if (param_len > n)
1064 {
1065 al=SSL_AD_DECODE_ERROR;
1066 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_BAD_DH_P_LENGTH);
1067 goto f_err;
1068 }
1069 if (!(dh->p=BN_bin2bn(p,i,NULL)))
1070 {
1071 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,ERR_R_BN_LIB);
1072 goto err;
1073 }
1074 p+=i;
1075
1076 n2s(p,i);
1077 param_len+=i+2;
1078 if (param_len > n)
1079 {
1080 al=SSL_AD_DECODE_ERROR;
1081 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_BAD_DH_G_LENGTH);
1082 goto f_err;
1083 }
1084 if (!(dh->g=BN_bin2bn(p,i,NULL)))
1085 {
1086 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,ERR_R_BN_LIB);
1087 goto err;
1088 }
1089 p+=i;
1090
1091 n2s(p,i);
1092 param_len+=i+2;
1093 if (param_len > n)
1094 {
1095 al=SSL_AD_DECODE_ERROR;
1096 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_BAD_DH_PUB_KEY_LENGTH);
1097 goto f_err;
1098 }
1099 if (!(dh->pub_key=BN_bin2bn(p,i,NULL)))
1100 {
1101 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,ERR_R_BN_LIB);
1102 goto err;
1103 }
1104 p+=i;
1105 n-=param_len;
1106
1107#ifndef OPENSSL_NO_RSA
1108 if (alg & SSL_aRSA)
1109 pkey=X509_get_pubkey(s->session->sess_cert->peer_pkeys[SSL_PKEY_RSA_ENC].x509);
1110#else
1111 if (0)
1112 ;
1113#endif
1114#ifndef OPENSSL_NO_DSA
1115 else if (alg & SSL_aDSS)
1116 pkey=X509_get_pubkey(s->session->sess_cert->peer_pkeys[SSL_PKEY_DSA_SIGN].x509);
1117#endif
1118 /* else anonymous DH, so no certificate or pkey. */
1119
1120 s->session->sess_cert->peer_dh_tmp=dh;
1121 dh=NULL;
1122 }
1123 else if ((alg & SSL_kDHr) || (alg & SSL_kDHd))
1124 {
1125 al=SSL_AD_ILLEGAL_PARAMETER;
1126 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER);
1127 goto f_err;
1128 }
1129#endif /* !OPENSSL_NO_DH */
1130 if (alg & SSL_aFZA)
1131 {
1132 al=SSL_AD_HANDSHAKE_FAILURE;
1133 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER);
1134 goto f_err;
1135 }
1136
1137
1138 /* p points to the next byte, there are 'n' bytes left */
1139
1140
1141 /* if it was signed, check the signature */
1142 if (pkey != NULL)
1143 {
1144 n2s(p,i);
1145 n-=2;
1146 j=EVP_PKEY_size(pkey);
1147
1148 if ((i != n) || (n > j) || (n <= 0))
1149 {
1150 /* wrong packet length */
1151 al=SSL_AD_DECODE_ERROR;
1152 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_WRONG_SIGNATURE_LENGTH);
1153 goto f_err;
1154 }
1155
1156#ifndef OPENSSL_NO_RSA
1157 if (pkey->type == EVP_PKEY_RSA)
1158 {
1159 int num;
1160
1161 j=0;
1162 q=md_buf;
1163 for (num=2; num > 0; num--)
1164 {
1165 EVP_MD_CTX_set_flags(&md_ctx,
1166 EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
1167 EVP_DigestInit_ex(&md_ctx,(num == 2)
1168 ?s->ctx->md5:s->ctx->sha1, NULL);
1169 EVP_DigestUpdate(&md_ctx,&(s->s3->client_random[0]),SSL3_RANDOM_SIZE);
1170 EVP_DigestUpdate(&md_ctx,&(s->s3->server_random[0]),SSL3_RANDOM_SIZE);
1171 EVP_DigestUpdate(&md_ctx,param,param_len);
1172
1173 EVP_DigestFinal_ex(&md_ctx,q,(unsigned int *)&i);
1174 q+=i;
1175 j+=i;
1176 }
1177 i=RSA_verify(NID_md5_sha1, md_buf, j, p, n,
1178 pkey->pkey.rsa);
1179 if (i < 0)
1180 {
1181 al=SSL_AD_DECRYPT_ERROR;
1182 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_BAD_RSA_DECRYPT);
1183 goto f_err;
1184 }
1185 if (i == 0)
1186 {
1187 /* bad signature */
1188 al=SSL_AD_DECRYPT_ERROR;
1189 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_BAD_SIGNATURE);
1190 goto f_err;
1191 }
1192 }
1193 else
1194#endif
1195#ifndef OPENSSL_NO_DSA
1196 if (pkey->type == EVP_PKEY_DSA)
1197 {
1198 /* lets do DSS */
1199 EVP_VerifyInit_ex(&md_ctx,EVP_dss1(), NULL);
1200 EVP_VerifyUpdate(&md_ctx,&(s->s3->client_random[0]),SSL3_RANDOM_SIZE);
1201 EVP_VerifyUpdate(&md_ctx,&(s->s3->server_random[0]),SSL3_RANDOM_SIZE);
1202 EVP_VerifyUpdate(&md_ctx,param,param_len);
1203 if (!EVP_VerifyFinal(&md_ctx,p,(int)n,pkey))
1204 {
1205 /* bad signature */
1206 al=SSL_AD_DECRYPT_ERROR;
1207 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_BAD_SIGNATURE);
1208 goto f_err;
1209 }
1210 }
1211 else
1212#endif
1213 {
1214 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,ERR_R_INTERNAL_ERROR);
1215 goto err;
1216 }
1217 }
1218 else
1219 {
1220 /* still data left over */
1221 if (!(alg & SSL_aNULL))
1222 {
1223 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,ERR_R_INTERNAL_ERROR);
1224 goto err;
1225 }
1226 if (n != 0)
1227 {
1228 al=SSL_AD_DECODE_ERROR;
1229 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_EXTRA_DATA_IN_MESSAGE);
1230 goto f_err;
1231 }
1232 }
1233 EVP_PKEY_free(pkey);
1234 EVP_MD_CTX_cleanup(&md_ctx);
1235 return(1);
1236f_err:
1237 ssl3_send_alert(s,SSL3_AL_FATAL,al);
1238err:
1239 EVP_PKEY_free(pkey);
1240#ifndef OPENSSL_NO_RSA
1241 if (rsa != NULL)
1242 RSA_free(rsa);
1243#endif
1244#ifndef OPENSSL_NO_DH
1245 if (dh != NULL)
1246 DH_free(dh);
1247#endif
1248 EVP_MD_CTX_cleanup(&md_ctx);
1249 return(-1);
1250 }
1251
1252static int ssl3_get_certificate_request(SSL *s)
1253 {
1254 int ok,ret=0;
1255 unsigned long n,nc,l;
1256 unsigned int llen,ctype_num,i;
1257 X509_NAME *xn=NULL;
1258 unsigned char *p,*d,*q;
1259 STACK_OF(X509_NAME) *ca_sk=NULL;
1260
1261 n=ssl3_get_message(s,
1262 SSL3_ST_CR_CERT_REQ_A,
1263 SSL3_ST_CR_CERT_REQ_B,
1264 -1,
1265 s->max_cert_list,
1266 &ok);
1267
1268 if (!ok) return((int)n);
1269
1270 s->s3->tmp.cert_req=0;
1271
1272 if (s->s3->tmp.message_type == SSL3_MT_SERVER_DONE)
1273 {
1274 s->s3->tmp.reuse_message=1;
1275 return(1);
1276 }
1277
1278 if (s->s3->tmp.message_type != SSL3_MT_CERTIFICATE_REQUEST)
1279 {
1280 ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_UNEXPECTED_MESSAGE);
1281 SSLerr(SSL_F_SSL3_GET_CERTIFICATE_REQUEST,SSL_R_WRONG_MESSAGE_TYPE);
1282 goto err;
1283 }
1284
1285 /* TLS does not like anon-DH with client cert */
1286 if (s->version > SSL3_VERSION)
1287 {
1288 l=s->s3->tmp.new_cipher->algorithms;
1289 if (l & SSL_aNULL)
1290 {
1291 ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_UNEXPECTED_MESSAGE);
1292 SSLerr(SSL_F_SSL3_GET_CERTIFICATE_REQUEST,SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER);
1293 goto err;
1294 }
1295 }
1296
1297 d=p=(unsigned char *)s->init_msg;
1298
1299 if ((ca_sk=sk_X509_NAME_new(ca_dn_cmp)) == NULL)
1300 {
1301 SSLerr(SSL_F_SSL3_GET_CERTIFICATE_REQUEST,ERR_R_MALLOC_FAILURE);
1302 goto err;
1303 }
1304
1305 /* get the certificate types */
1306 ctype_num= *(p++);
1307 if (ctype_num > SSL3_CT_NUMBER)
1308 ctype_num=SSL3_CT_NUMBER;
1309 for (i=0; i<ctype_num; i++)
1310 s->s3->tmp.ctype[i]= p[i];
1311 p+=ctype_num;
1312
1313 /* get the CA RDNs */
1314 n2s(p,llen);
1315#if 0
1316{
1317FILE *out;
1318out=fopen("/tmp/vsign.der","w");
1319fwrite(p,1,llen,out);
1320fclose(out);
1321}
1322#endif
1323
1324 if ((llen+ctype_num+2+1) != n)
1325 {
1326 ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_DECODE_ERROR);
1327 SSLerr(SSL_F_SSL3_GET_CERTIFICATE_REQUEST,SSL_R_LENGTH_MISMATCH);
1328 goto err;
1329 }
1330
1331 for (nc=0; nc<llen; )
1332 {
1333 n2s(p,l);
1334 if ((l+nc+2) > llen)
1335 {
1336 if ((s->options & SSL_OP_NETSCAPE_CA_DN_BUG))
1337 goto cont; /* netscape bugs */
1338 ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_DECODE_ERROR);
1339 SSLerr(SSL_F_SSL3_GET_CERTIFICATE_REQUEST,SSL_R_CA_DN_TOO_LONG);
1340 goto err;
1341 }
1342
1343 q=p;
1344
1345 if ((xn=d2i_X509_NAME(NULL,&q,l)) == NULL)
1346 {
1347 /* If netscape tolerance is on, ignore errors */
1348 if (s->options & SSL_OP_NETSCAPE_CA_DN_BUG)
1349 goto cont;
1350 else
1351 {
1352 ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_DECODE_ERROR);
1353 SSLerr(SSL_F_SSL3_GET_CERTIFICATE_REQUEST,ERR_R_ASN1_LIB);
1354 goto err;
1355 }
1356 }
1357
1358 if (q != (p+l))
1359 {
1360 ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_DECODE_ERROR);
1361 SSLerr(SSL_F_SSL3_GET_CERTIFICATE_REQUEST,SSL_R_CA_DN_LENGTH_MISMATCH);
1362 goto err;
1363 }
1364 if (!sk_X509_NAME_push(ca_sk,xn))
1365 {
1366 SSLerr(SSL_F_SSL3_GET_CERTIFICATE_REQUEST,ERR_R_MALLOC_FAILURE);
1367 goto err;
1368 }
1369
1370 p+=l;
1371 nc+=l+2;
1372 }
1373
1374 if (0)
1375 {
1376cont:
1377 ERR_clear_error();
1378 }
1379
1380 /* we should setup a certificate to return.... */
1381 s->s3->tmp.cert_req=1;
1382 s->s3->tmp.ctype_num=ctype_num;
1383 if (s->s3->tmp.ca_names != NULL)
1384 sk_X509_NAME_pop_free(s->s3->tmp.ca_names,X509_NAME_free);
1385 s->s3->tmp.ca_names=ca_sk;
1386 ca_sk=NULL;
1387
1388 ret=1;
1389err:
1390 if (ca_sk != NULL) sk_X509_NAME_pop_free(ca_sk,X509_NAME_free);
1391 return(ret);
1392 }
1393
1394static int ca_dn_cmp(const X509_NAME * const *a, const X509_NAME * const *b)
1395 {
1396 return(X509_NAME_cmp(*a,*b));
1397 }
1398
1399static int ssl3_get_server_done(SSL *s)
1400 {
1401 int ok,ret=0;
1402 long n;
1403
1404 n=ssl3_get_message(s,
1405 SSL3_ST_CR_SRVR_DONE_A,
1406 SSL3_ST_CR_SRVR_DONE_B,
1407 SSL3_MT_SERVER_DONE,
1408 30, /* should be very small, like 0 :-) */
1409 &ok);
1410
1411 if (!ok) return((int)n);
1412 if (n > 0)
1413 {
1414 /* should contain no data */
1415 ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_DECODE_ERROR);
1416 SSLerr(SSL_F_SSL3_GET_SERVER_DONE,SSL_R_LENGTH_MISMATCH);
1417 return -1;
1418 }
1419 ret=1;
1420 return(ret);
1421 }
1422
1423static int ssl3_send_client_key_exchange(SSL *s)
1424 {
1425 unsigned char *p,*d;
1426 int n;
1427 unsigned long l;
1428#ifndef OPENSSL_NO_RSA
1429 unsigned char *q;
1430 EVP_PKEY *pkey=NULL;
1431#endif
1432#ifndef OPENSSL_NO_KRB5
1433 KSSL_ERR kssl_err;
1434#endif /* OPENSSL_NO_KRB5 */
1435
1436 if (s->state == SSL3_ST_CW_KEY_EXCH_A)
1437 {
1438 d=(unsigned char *)s->init_buf->data;
1439 p= &(d[4]);
1440
1441 l=s->s3->tmp.new_cipher->algorithms;
1442
1443 /* Fool emacs indentation */
1444 if (0) {}
1445#ifndef OPENSSL_NO_RSA
1446 else if (l & SSL_kRSA)
1447 {
1448 RSA *rsa;
1449 unsigned char tmp_buf[SSL_MAX_MASTER_KEY_LENGTH];
1450
1451 if (s->session->sess_cert->peer_rsa_tmp != NULL)
1452 rsa=s->session->sess_cert->peer_rsa_tmp;
1453 else
1454 {
1455 pkey=X509_get_pubkey(s->session->sess_cert->peer_pkeys[SSL_PKEY_RSA_ENC].x509);
1456 if ((pkey == NULL) ||
1457 (pkey->type != EVP_PKEY_RSA) ||
1458 (pkey->pkey.rsa == NULL))
1459 {
1460 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,ERR_R_INTERNAL_ERROR);
1461 goto err;
1462 }
1463 rsa=pkey->pkey.rsa;
1464 EVP_PKEY_free(pkey);
1465 }
1466
1467 tmp_buf[0]=s->client_version>>8;
1468 tmp_buf[1]=s->client_version&0xff;
1469 if (RAND_bytes(&(tmp_buf[2]),sizeof tmp_buf-2) <= 0)
1470 goto err;
1471
1472 s->session->master_key_length=sizeof tmp_buf;
1473
1474 q=p;
1475 /* Fix buf for TLS and beyond */
1476 if (s->version > SSL3_VERSION)
1477 p+=2;
1478 n=RSA_public_encrypt(sizeof tmp_buf,
1479 tmp_buf,p,rsa,RSA_PKCS1_PADDING);
1480#ifdef PKCS1_CHECK
1481 if (s->options & SSL_OP_PKCS1_CHECK_1) p[1]++;
1482 if (s->options & SSL_OP_PKCS1_CHECK_2) tmp_buf[0]=0x70;
1483#endif
1484 if (n <= 0)
1485 {
1486 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,SSL_R_BAD_RSA_ENCRYPT);
1487 goto err;
1488 }
1489
1490 /* Fix buf for TLS and beyond */
1491 if (s->version > SSL3_VERSION)
1492 {
1493 s2n(n,q);
1494 n+=2;
1495 }
1496
1497 s->session->master_key_length=
1498 s->method->ssl3_enc->generate_master_secret(s,
1499 s->session->master_key,
1500 tmp_buf,sizeof tmp_buf);
1501 OPENSSL_cleanse(tmp_buf,sizeof tmp_buf);
1502 }
1503#endif
1504#ifndef OPENSSL_NO_KRB5
1505 else if (l & SSL_kKRB5)
1506 {
1507 krb5_error_code krb5rc;
1508 KSSL_CTX *kssl_ctx = s->kssl_ctx;
1509 /* krb5_data krb5_ap_req; */
1510 krb5_data *enc_ticket;
1511 krb5_data authenticator, *authp = NULL;
1512 EVP_CIPHER_CTX ciph_ctx;
1513 EVP_CIPHER *enc = NULL;
1514 unsigned char iv[EVP_MAX_IV_LENGTH];
1515 unsigned char tmp_buf[SSL_MAX_MASTER_KEY_LENGTH];
1516 unsigned char epms[SSL_MAX_MASTER_KEY_LENGTH
1517 + EVP_MAX_IV_LENGTH];
1518 int padl, outl = sizeof(epms);
1519
1520 EVP_CIPHER_CTX_init(&ciph_ctx);
1521
1522#ifdef KSSL_DEBUG
1523 printf("ssl3_send_client_key_exchange(%lx & %lx)\n",
1524 l, SSL_kKRB5);
1525#endif /* KSSL_DEBUG */
1526
1527 authp = NULL;
1528#ifdef KRB5SENDAUTH
1529 if (KRB5SENDAUTH) authp = &authenticator;
1530#endif /* KRB5SENDAUTH */
1531
1532 krb5rc = kssl_cget_tkt(kssl_ctx, &enc_ticket, authp,
1533 &kssl_err);
1534 enc = kssl_map_enc(kssl_ctx->enctype);
1535 if (enc == NULL)
1536 goto err;
1537#ifdef KSSL_DEBUG
1538 {
1539 printf("kssl_cget_tkt rtn %d\n", krb5rc);
1540 if (krb5rc && kssl_err.text)
1541 printf("kssl_cget_tkt kssl_err=%s\n", kssl_err.text);
1542 }
1543#endif /* KSSL_DEBUG */
1544
1545 if (krb5rc)
1546 {
1547 ssl3_send_alert(s,SSL3_AL_FATAL,
1548 SSL_AD_HANDSHAKE_FAILURE);
1549 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,
1550 kssl_err.reason);
1551 goto err;
1552 }
1553
1554 /* 20010406 VRS - Earlier versions used KRB5 AP_REQ
1555 ** in place of RFC 2712 KerberosWrapper, as in:
1556 **
1557 ** Send ticket (copy to *p, set n = length)
1558 ** n = krb5_ap_req.length;
1559 ** memcpy(p, krb5_ap_req.data, krb5_ap_req.length);
1560 ** if (krb5_ap_req.data)
1561 ** kssl_krb5_free_data_contents(NULL,&krb5_ap_req);
1562 **
1563 ** Now using real RFC 2712 KerberosWrapper
1564 ** (Thanks to Simon Wilkinson <sxw@sxw.org.uk>)
1565 ** Note: 2712 "opaque" types are here replaced
1566 ** with a 2-byte length followed by the value.
1567 ** Example:
1568 ** KerberosWrapper= xx xx asn1ticket 0 0 xx xx encpms
1569 ** Where "xx xx" = length bytes. Shown here with
1570 ** optional authenticator omitted.
1571 */
1572
1573 /* KerberosWrapper.Ticket */
1574 s2n(enc_ticket->length,p);
1575 memcpy(p, enc_ticket->data, enc_ticket->length);
1576 p+= enc_ticket->length;
1577 n = enc_ticket->length + 2;
1578
1579 /* KerberosWrapper.Authenticator */
1580 if (authp && authp->length)
1581 {
1582 s2n(authp->length,p);
1583 memcpy(p, authp->data, authp->length);
1584 p+= authp->length;
1585 n+= authp->length + 2;
1586
1587 free(authp->data);
1588 authp->data = NULL;
1589 authp->length = 0;
1590 }
1591 else
1592 {
1593 s2n(0,p);/* null authenticator length */
1594 n+=2;
1595 }
1596
1597 if (RAND_bytes(tmp_buf,sizeof tmp_buf) <= 0)
1598 goto err;
1599
1600 /* 20010420 VRS. Tried it this way; failed.
1601 ** EVP_EncryptInit_ex(&ciph_ctx,enc, NULL,NULL);
1602 ** EVP_CIPHER_CTX_set_key_length(&ciph_ctx,
1603 ** kssl_ctx->length);
1604 ** EVP_EncryptInit_ex(&ciph_ctx,NULL, key,iv);
1605 */
1606
1607 memset(iv, 0, sizeof iv); /* per RFC 1510 */
1608 EVP_EncryptInit_ex(&ciph_ctx,enc, NULL,
1609 kssl_ctx->key,iv);
1610 EVP_EncryptUpdate(&ciph_ctx,epms,&outl,tmp_buf,
1611 sizeof tmp_buf);
1612 EVP_EncryptFinal_ex(&ciph_ctx,&(epms[outl]),&padl);
1613 outl += padl;
1614 if (outl > sizeof epms)
1615 {
1616 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE, ERR_R_INTERNAL_ERROR);
1617 goto err;
1618 }
1619 EVP_CIPHER_CTX_cleanup(&ciph_ctx);
1620
1621 /* KerberosWrapper.EncryptedPreMasterSecret */
1622 s2n(outl,p);
1623 memcpy(p, epms, outl);
1624 p+=outl;
1625 n+=outl + 2;
1626
1627 s->session->master_key_length=
1628 s->method->ssl3_enc->generate_master_secret(s,
1629 s->session->master_key,
1630 tmp_buf, sizeof tmp_buf);
1631
1632 OPENSSL_cleanse(tmp_buf, sizeof tmp_buf);
1633 OPENSSL_cleanse(epms, outl);
1634 }
1635#endif
1636#ifndef OPENSSL_NO_DH
1637 else if (l & (SSL_kEDH|SSL_kDHr|SSL_kDHd))
1638 {
1639 DH *dh_srvr,*dh_clnt;
1640
1641 if (s->session->sess_cert->peer_dh_tmp != NULL)
1642 dh_srvr=s->session->sess_cert->peer_dh_tmp;
1643 else
1644 {
1645 /* we get them from the cert */
1646 ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_HANDSHAKE_FAILURE);
1647 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,SSL_R_UNABLE_TO_FIND_DH_PARAMETERS);
1648 goto err;
1649 }
1650
1651 /* generate a new random key */
1652 if ((dh_clnt=DHparams_dup(dh_srvr)) == NULL)
1653 {
1654 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,ERR_R_DH_LIB);
1655 goto err;
1656 }
1657 if (!DH_generate_key(dh_clnt))
1658 {
1659 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,ERR_R_DH_LIB);
1660 goto err;
1661 }
1662
1663 /* use the 'p' output buffer for the DH key, but
1664 * make sure to clear it out afterwards */
1665
1666 n=DH_compute_key(p,dh_srvr->pub_key,dh_clnt);
1667
1668 if (n <= 0)
1669 {
1670 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,ERR_R_DH_LIB);
1671 goto err;
1672 }
1673
1674 /* generate master key from the result */
1675 s->session->master_key_length=
1676 s->method->ssl3_enc->generate_master_secret(s,
1677 s->session->master_key,p,n);
1678 /* clean up */
1679 memset(p,0,n);
1680
1681 /* send off the data */
1682 n=BN_num_bytes(dh_clnt->pub_key);
1683 s2n(n,p);
1684 BN_bn2bin(dh_clnt->pub_key,p);
1685 n+=2;
1686
1687 DH_free(dh_clnt);
1688
1689 /* perhaps clean things up a bit EAY EAY EAY EAY*/
1690 }
1691#endif
1692 else
1693 {
1694 ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_HANDSHAKE_FAILURE);
1695 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,ERR_R_INTERNAL_ERROR);
1696 goto err;
1697 }
1698
1699 *(d++)=SSL3_MT_CLIENT_KEY_EXCHANGE;
1700 l2n3(n,d);
1701
1702 s->state=SSL3_ST_CW_KEY_EXCH_B;
1703 /* number of bytes to write */
1704 s->init_num=n+4;
1705 s->init_off=0;
1706 }
1707
1708 /* SSL3_ST_CW_KEY_EXCH_B */
1709 return(ssl3_do_write(s,SSL3_RT_HANDSHAKE));
1710err:
1711 return(-1);
1712 }
1713
1714static int ssl3_send_client_verify(SSL *s)
1715 {
1716 unsigned char *p,*d;
1717 unsigned char data[MD5_DIGEST_LENGTH+SHA_DIGEST_LENGTH];
1718 EVP_PKEY *pkey;
1719#ifndef OPENSSL_NO_RSA
1720 unsigned u=0;
1721#endif
1722 unsigned long n;
1723#ifndef OPENSSL_NO_DSA
1724 int j;
1725#endif
1726
1727 if (s->state == SSL3_ST_CW_CERT_VRFY_A)
1728 {
1729 d=(unsigned char *)s->init_buf->data;
1730 p= &(d[4]);
1731 pkey=s->cert->key->privatekey;
1732
1733 s->method->ssl3_enc->cert_verify_mac(s,&(s->s3->finish_dgst2),
1734 &(data[MD5_DIGEST_LENGTH]));
1735
1736#ifndef OPENSSL_NO_RSA
1737 if (pkey->type == EVP_PKEY_RSA)
1738 {
1739 s->method->ssl3_enc->cert_verify_mac(s,
1740 &(s->s3->finish_dgst1),&(data[0]));
1741 if (RSA_sign(NID_md5_sha1, data,
1742 MD5_DIGEST_LENGTH+SHA_DIGEST_LENGTH,
1743 &(p[2]), &u, pkey->pkey.rsa) <= 0 )
1744 {
1745 SSLerr(SSL_F_SSL3_SEND_CLIENT_VERIFY,ERR_R_RSA_LIB);
1746 goto err;
1747 }
1748 s2n(u,p);
1749 n=u+2;
1750 }
1751 else
1752#endif
1753#ifndef OPENSSL_NO_DSA
1754 if (pkey->type == EVP_PKEY_DSA)
1755 {
1756 if (!DSA_sign(pkey->save_type,
1757 &(data[MD5_DIGEST_LENGTH]),
1758 SHA_DIGEST_LENGTH,&(p[2]),
1759 (unsigned int *)&j,pkey->pkey.dsa))
1760 {
1761 SSLerr(SSL_F_SSL3_SEND_CLIENT_VERIFY,ERR_R_DSA_LIB);
1762 goto err;
1763 }
1764 s2n(j,p);
1765 n=j+2;
1766 }
1767 else
1768#endif
1769 {
1770 SSLerr(SSL_F_SSL3_SEND_CLIENT_VERIFY,ERR_R_INTERNAL_ERROR);
1771 goto err;
1772 }
1773 *(d++)=SSL3_MT_CERTIFICATE_VERIFY;
1774 l2n3(n,d);
1775
1776 s->state=SSL3_ST_CW_CERT_VRFY_B;
1777 s->init_num=(int)n+4;
1778 s->init_off=0;
1779 }
1780 return(ssl3_do_write(s,SSL3_RT_HANDSHAKE));
1781err:
1782 return(-1);
1783 }
1784
1785static int ssl3_send_client_certificate(SSL *s)
1786 {
1787 X509 *x509=NULL;
1788 EVP_PKEY *pkey=NULL;
1789 int i;
1790 unsigned long l;
1791
1792 if (s->state == SSL3_ST_CW_CERT_A)
1793 {
1794 if ((s->cert == NULL) ||
1795 (s->cert->key->x509 == NULL) ||
1796 (s->cert->key->privatekey == NULL))
1797 s->state=SSL3_ST_CW_CERT_B;
1798 else
1799 s->state=SSL3_ST_CW_CERT_C;
1800 }
1801
1802 /* We need to get a client cert */
1803 if (s->state == SSL3_ST_CW_CERT_B)
1804 {
1805 /* If we get an error, we need to
1806 * ssl->rwstate=SSL_X509_LOOKUP; return(-1);
1807 * We then get retied later */
1808 i=0;
1809 if (s->ctx->client_cert_cb != NULL)
1810 i=s->ctx->client_cert_cb(s,&(x509),&(pkey));
1811 if (i < 0)
1812 {
1813 s->rwstate=SSL_X509_LOOKUP;
1814 return(-1);
1815 }
1816 s->rwstate=SSL_NOTHING;
1817 if ((i == 1) && (pkey != NULL) && (x509 != NULL))
1818 {
1819 s->state=SSL3_ST_CW_CERT_B;
1820 if ( !SSL_use_certificate(s,x509) ||
1821 !SSL_use_PrivateKey(s,pkey))
1822 i=0;
1823 }
1824 else if (i == 1)
1825 {
1826 i=0;
1827 SSLerr(SSL_F_SSL3_SEND_CLIENT_CERTIFICATE,SSL_R_BAD_DATA_RETURNED_BY_CALLBACK);
1828 }
1829
1830 if (x509 != NULL) X509_free(x509);
1831 if (pkey != NULL) EVP_PKEY_free(pkey);
1832 if (i == 0)
1833 {
1834 if (s->version == SSL3_VERSION)
1835 {
1836 s->s3->tmp.cert_req=0;
1837 ssl3_send_alert(s,SSL3_AL_WARNING,SSL_AD_NO_CERTIFICATE);
1838 return(1);
1839 }
1840 else
1841 {
1842 s->s3->tmp.cert_req=2;
1843 }
1844 }
1845
1846 /* Ok, we have a cert */
1847 s->state=SSL3_ST_CW_CERT_C;
1848 }
1849
1850 if (s->state == SSL3_ST_CW_CERT_C)
1851 {
1852 s->state=SSL3_ST_CW_CERT_D;
1853 l=ssl3_output_cert_chain(s,
1854 (s->s3->tmp.cert_req == 2)?NULL:s->cert->key->x509);
1855 s->init_num=(int)l;
1856 s->init_off=0;
1857 }
1858 /* SSL3_ST_CW_CERT_D */
1859 return(ssl3_do_write(s,SSL3_RT_HANDSHAKE));
1860 }
1861
1862#define has_bits(i,m) (((i)&(m)) == (m))
1863
1864static int ssl3_check_cert_and_algorithm(SSL *s)
1865 {
1866 int i,idx;
1867 long algs;
1868 EVP_PKEY *pkey=NULL;
1869 SESS_CERT *sc;
1870#ifndef OPENSSL_NO_RSA
1871 RSA *rsa;
1872#endif
1873#ifndef OPENSSL_NO_DH
1874 DH *dh;
1875#endif
1876
1877 sc=s->session->sess_cert;
1878
1879 if (sc == NULL)
1880 {
1881 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,ERR_R_INTERNAL_ERROR);
1882 goto err;
1883 }
1884
1885 algs=s->s3->tmp.new_cipher->algorithms;
1886
1887 /* we don't have a certificate */
1888 if (algs & (SSL_aDH|SSL_aNULL|SSL_aKRB5))
1889 return(1);
1890
1891#ifndef OPENSSL_NO_RSA
1892 rsa=s->session->sess_cert->peer_rsa_tmp;
1893#endif
1894#ifndef OPENSSL_NO_DH
1895 dh=s->session->sess_cert->peer_dh_tmp;
1896#endif
1897
1898 /* This is the passed certificate */
1899
1900 idx=sc->peer_cert_type;
1901 pkey=X509_get_pubkey(sc->peer_pkeys[idx].x509);
1902 i=X509_certificate_type(sc->peer_pkeys[idx].x509,pkey);
1903 EVP_PKEY_free(pkey);
1904
1905
1906 /* Check that we have a certificate if we require one */
1907 if ((algs & SSL_aRSA) && !has_bits(i,EVP_PK_RSA|EVP_PKT_SIGN))
1908 {
1909 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_RSA_SIGNING_CERT);
1910 goto f_err;
1911 }
1912#ifndef OPENSSL_NO_DSA
1913 else if ((algs & SSL_aDSS) && !has_bits(i,EVP_PK_DSA|EVP_PKT_SIGN))
1914 {
1915 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_DSA_SIGNING_CERT);
1916 goto f_err;
1917 }
1918#endif
1919#ifndef OPENSSL_NO_RSA
1920 if ((algs & SSL_kRSA) &&
1921 !(has_bits(i,EVP_PK_RSA|EVP_PKT_ENC) || (rsa != NULL)))
1922 {
1923 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_RSA_ENCRYPTING_CERT);
1924 goto f_err;
1925 }
1926#endif
1927#ifndef OPENSSL_NO_DH
1928 if ((algs & SSL_kEDH) &&
1929 !(has_bits(i,EVP_PK_DH|EVP_PKT_EXCH) || (dh != NULL)))
1930 {
1931 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_DH_KEY);
1932 goto f_err;
1933 }
1934 else if ((algs & SSL_kDHr) && !has_bits(i,EVP_PK_DH|EVP_PKS_RSA))
1935 {
1936 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_DH_RSA_CERT);
1937 goto f_err;
1938 }
1939#ifndef OPENSSL_NO_DSA
1940 else if ((algs & SSL_kDHd) && !has_bits(i,EVP_PK_DH|EVP_PKS_DSA))
1941 {
1942 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_DH_DSA_CERT);
1943 goto f_err;
1944 }
1945#endif
1946#endif
1947
1948 if (SSL_C_IS_EXPORT(s->s3->tmp.new_cipher) && !has_bits(i,EVP_PKT_EXP))
1949 {
1950#ifndef OPENSSL_NO_RSA
1951 if (algs & SSL_kRSA)
1952 {
1953 if (rsa == NULL
1954 || RSA_size(rsa)*8 > SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher))
1955 {
1956 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_EXPORT_TMP_RSA_KEY);
1957 goto f_err;
1958 }
1959 }
1960 else
1961#endif
1962#ifndef OPENSSL_NO_DH
1963 if (algs & (SSL_kEDH|SSL_kDHr|SSL_kDHd))
1964 {
1965 if (dh == NULL
1966 || DH_size(dh)*8 > SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher))
1967 {
1968 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_EXPORT_TMP_DH_KEY);
1969 goto f_err;
1970 }
1971 }
1972 else
1973#endif
1974 {
1975 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE);
1976 goto f_err;
1977 }
1978 }
1979 return(1);
1980f_err:
1981 ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_HANDSHAKE_FAILURE);
1982err:
1983 return(0);
1984 }
1985
diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c
new file mode 100644
index 0000000000..9bf1dbec06
--- /dev/null
+++ b/src/lib/libssl/s3_lib.c
@@ -0,0 +1,1799 @@
1/* ssl/s3_lib.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58/* ====================================================================
59 * Copyright (c) 1998-2002 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#include <stdio.h>
113#include <openssl/objects.h>
114#include "ssl_locl.h"
115#include "kssl_lcl.h"
116#include <openssl/md5.h>
117
118const char *ssl3_version_str="SSLv3" OPENSSL_VERSION_PTEXT;
119
120#define SSL3_NUM_CIPHERS (sizeof(ssl3_ciphers)/sizeof(SSL_CIPHER))
121
122static long ssl3_default_timeout(void );
123
124OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
125/* The RSA ciphers */
126/* Cipher 01 */
127 {
128 1,
129 SSL3_TXT_RSA_NULL_MD5,
130 SSL3_CK_RSA_NULL_MD5,
131 SSL_kRSA|SSL_aRSA|SSL_eNULL |SSL_MD5|SSL_SSLV3,
132 SSL_NOT_EXP|SSL_STRONG_NONE,
133 0,
134 0,
135 0,
136 SSL_ALL_CIPHERS,
137 SSL_ALL_STRENGTHS,
138 },
139/* Cipher 02 */
140 {
141 1,
142 SSL3_TXT_RSA_NULL_SHA,
143 SSL3_CK_RSA_NULL_SHA,
144 SSL_kRSA|SSL_aRSA|SSL_eNULL |SSL_SHA1|SSL_SSLV3,
145 SSL_NOT_EXP|SSL_STRONG_NONE|SSL_FIPS,
146 0,
147 0,
148 0,
149 SSL_ALL_CIPHERS,
150 SSL_ALL_STRENGTHS,
151 },
152
153/* anon DH */
154/* Cipher 17 */
155 {
156 1,
157 SSL3_TXT_ADH_RC4_40_MD5,
158 SSL3_CK_ADH_RC4_40_MD5,
159 SSL_kEDH |SSL_aNULL|SSL_RC4 |SSL_MD5 |SSL_SSLV3,
160 SSL_EXPORT|SSL_EXP40,
161 0,
162 40,
163 128,
164 SSL_ALL_CIPHERS,
165 SSL_ALL_STRENGTHS,
166 },
167/* Cipher 18 */
168 {
169 1,
170 SSL3_TXT_ADH_RC4_128_MD5,
171 SSL3_CK_ADH_RC4_128_MD5,
172 SSL_kEDH |SSL_aNULL|SSL_RC4 |SSL_MD5 |SSL_SSLV3,
173 SSL_NOT_EXP|SSL_MEDIUM,
174 0,
175 128,
176 128,
177 SSL_ALL_CIPHERS,
178 SSL_ALL_STRENGTHS,
179 },
180/* Cipher 19 */
181 {
182 1,
183 SSL3_TXT_ADH_DES_40_CBC_SHA,
184 SSL3_CK_ADH_DES_40_CBC_SHA,
185 SSL_kEDH |SSL_aNULL|SSL_DES|SSL_SHA1|SSL_SSLV3,
186 SSL_EXPORT|SSL_EXP40|SSL_FIPS,
187 0,
188 40,
189 128,
190 SSL_ALL_CIPHERS,
191 SSL_ALL_STRENGTHS,
192 },
193/* Cipher 1A */
194 {
195 1,
196 SSL3_TXT_ADH_DES_64_CBC_SHA,
197 SSL3_CK_ADH_DES_64_CBC_SHA,
198 SSL_kEDH |SSL_aNULL|SSL_DES |SSL_SHA1|SSL_SSLV3,
199 SSL_NOT_EXP|SSL_LOW|SSL_FIPS,
200 0,
201 56,
202 56,
203 SSL_ALL_CIPHERS,
204 SSL_ALL_STRENGTHS,
205 },
206/* Cipher 1B */
207 {
208 1,
209 SSL3_TXT_ADH_DES_192_CBC_SHA,
210 SSL3_CK_ADH_DES_192_CBC_SHA,
211 SSL_kEDH |SSL_aNULL|SSL_3DES |SSL_SHA1|SSL_SSLV3,
212 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
213 0,
214 168,
215 168,
216 SSL_ALL_CIPHERS,
217 SSL_ALL_STRENGTHS,
218 },
219
220/* RSA again */
221/* Cipher 03 */
222 {
223 1,
224 SSL3_TXT_RSA_RC4_40_MD5,
225 SSL3_CK_RSA_RC4_40_MD5,
226 SSL_kRSA|SSL_aRSA|SSL_RC4 |SSL_MD5 |SSL_SSLV3,
227 SSL_EXPORT|SSL_EXP40,
228 0,
229 40,
230 128,
231 SSL_ALL_CIPHERS,
232 SSL_ALL_STRENGTHS,
233 },
234/* Cipher 04 */
235 {
236 1,
237 SSL3_TXT_RSA_RC4_128_MD5,
238 SSL3_CK_RSA_RC4_128_MD5,
239 SSL_kRSA|SSL_aRSA|SSL_RC4 |SSL_MD5|SSL_SSLV3,
240 SSL_NOT_EXP|SSL_MEDIUM,
241 0,
242 128,
243 128,
244 SSL_ALL_CIPHERS,
245 SSL_ALL_STRENGTHS,
246 },
247/* Cipher 05 */
248 {
249 1,
250 SSL3_TXT_RSA_RC4_128_SHA,
251 SSL3_CK_RSA_RC4_128_SHA,
252 SSL_kRSA|SSL_aRSA|SSL_RC4 |SSL_SHA1|SSL_SSLV3,
253 SSL_NOT_EXP|SSL_MEDIUM,
254 0,
255 128,
256 128,
257 SSL_ALL_CIPHERS,
258 SSL_ALL_STRENGTHS,
259 },
260/* Cipher 06 */
261 {
262 1,
263 SSL3_TXT_RSA_RC2_40_MD5,
264 SSL3_CK_RSA_RC2_40_MD5,
265 SSL_kRSA|SSL_aRSA|SSL_RC2 |SSL_MD5 |SSL_SSLV3,
266 SSL_EXPORT|SSL_EXP40,
267 0,
268 40,
269 128,
270 SSL_ALL_CIPHERS,
271 SSL_ALL_STRENGTHS,
272 },
273/* Cipher 07 */
274#ifndef OPENSSL_NO_IDEA
275 {
276 1,
277 SSL3_TXT_RSA_IDEA_128_SHA,
278 SSL3_CK_RSA_IDEA_128_SHA,
279 SSL_kRSA|SSL_aRSA|SSL_IDEA |SSL_SHA1|SSL_SSLV3,
280 SSL_NOT_EXP|SSL_MEDIUM,
281 0,
282 128,
283 128,
284 SSL_ALL_CIPHERS,
285 SSL_ALL_STRENGTHS,
286 },
287#endif
288/* Cipher 08 */
289 {
290 1,
291 SSL3_TXT_RSA_DES_40_CBC_SHA,
292 SSL3_CK_RSA_DES_40_CBC_SHA,
293 SSL_kRSA|SSL_aRSA|SSL_DES|SSL_SHA1|SSL_SSLV3,
294 SSL_EXPORT|SSL_EXP40|SSL_FIPS,
295 0,
296 40,
297 56,
298 SSL_ALL_CIPHERS,
299 SSL_ALL_STRENGTHS,
300 },
301/* Cipher 09 */
302 {
303 1,
304 SSL3_TXT_RSA_DES_64_CBC_SHA,
305 SSL3_CK_RSA_DES_64_CBC_SHA,
306 SSL_kRSA|SSL_aRSA|SSL_DES |SSL_SHA1|SSL_SSLV3,
307 SSL_NOT_EXP|SSL_LOW|SSL_FIPS,
308 0,
309 56,
310 56,
311 SSL_ALL_CIPHERS,
312 SSL_ALL_STRENGTHS,
313 },
314/* Cipher 0A */
315 {
316 1,
317 SSL3_TXT_RSA_DES_192_CBC3_SHA,
318 SSL3_CK_RSA_DES_192_CBC3_SHA,
319 SSL_kRSA|SSL_aRSA|SSL_3DES |SSL_SHA1|SSL_SSLV3,
320 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
321 0,
322 168,
323 168,
324 SSL_ALL_CIPHERS,
325 SSL_ALL_STRENGTHS,
326 },
327
328/* The DH ciphers */
329/* Cipher 0B */
330 {
331 0,
332 SSL3_TXT_DH_DSS_DES_40_CBC_SHA,
333 SSL3_CK_DH_DSS_DES_40_CBC_SHA,
334 SSL_kDHd |SSL_aDH|SSL_DES|SSL_SHA1|SSL_SSLV3,
335 SSL_EXPORT|SSL_EXP40|SSL_FIPS,
336 0,
337 40,
338 56,
339 SSL_ALL_CIPHERS,
340 SSL_ALL_STRENGTHS,
341 },
342/* Cipher 0C */
343 {
344 0,
345 SSL3_TXT_DH_DSS_DES_64_CBC_SHA,
346 SSL3_CK_DH_DSS_DES_64_CBC_SHA,
347 SSL_kDHd |SSL_aDH|SSL_DES |SSL_SHA1|SSL_SSLV3,
348 SSL_NOT_EXP|SSL_LOW|SSL_FIPS,
349 0,
350 56,
351 56,
352 SSL_ALL_CIPHERS,
353 SSL_ALL_STRENGTHS,
354 },
355/* Cipher 0D */
356 {
357 0,
358 SSL3_TXT_DH_DSS_DES_192_CBC3_SHA,
359 SSL3_CK_DH_DSS_DES_192_CBC3_SHA,
360 SSL_kDHd |SSL_aDH|SSL_3DES |SSL_SHA1|SSL_SSLV3,
361 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
362 0,
363 168,
364 168,
365 SSL_ALL_CIPHERS,
366 SSL_ALL_STRENGTHS,
367 },
368/* Cipher 0E */
369 {
370 0,
371 SSL3_TXT_DH_RSA_DES_40_CBC_SHA,
372 SSL3_CK_DH_RSA_DES_40_CBC_SHA,
373 SSL_kDHr |SSL_aDH|SSL_DES|SSL_SHA1|SSL_SSLV3,
374 SSL_EXPORT|SSL_EXP40|SSL_FIPS,
375 0,
376 40,
377 56,
378 SSL_ALL_CIPHERS,
379 SSL_ALL_STRENGTHS,
380 },
381/* Cipher 0F */
382 {
383 0,
384 SSL3_TXT_DH_RSA_DES_64_CBC_SHA,
385 SSL3_CK_DH_RSA_DES_64_CBC_SHA,
386 SSL_kDHr |SSL_aDH|SSL_DES |SSL_SHA1|SSL_SSLV3,
387 SSL_NOT_EXP|SSL_LOW|SSL_FIPS,
388 0,
389 56,
390 56,
391 SSL_ALL_CIPHERS,
392 SSL_ALL_STRENGTHS,
393 },
394/* Cipher 10 */
395 {
396 0,
397 SSL3_TXT_DH_RSA_DES_192_CBC3_SHA,
398 SSL3_CK_DH_RSA_DES_192_CBC3_SHA,
399 SSL_kDHr |SSL_aDH|SSL_3DES |SSL_SHA1|SSL_SSLV3,
400 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
401 0,
402 168,
403 168,
404 SSL_ALL_CIPHERS,
405 SSL_ALL_STRENGTHS,
406 },
407
408/* The Ephemeral DH ciphers */
409/* Cipher 11 */
410 {
411 1,
412 SSL3_TXT_EDH_DSS_DES_40_CBC_SHA,
413 SSL3_CK_EDH_DSS_DES_40_CBC_SHA,
414 SSL_kEDH|SSL_aDSS|SSL_DES|SSL_SHA1|SSL_SSLV3,
415 SSL_EXPORT|SSL_EXP40|SSL_FIPS,
416 0,
417 40,
418 56,
419 SSL_ALL_CIPHERS,
420 SSL_ALL_STRENGTHS,
421 },
422/* Cipher 12 */
423 {
424 1,
425 SSL3_TXT_EDH_DSS_DES_64_CBC_SHA,
426 SSL3_CK_EDH_DSS_DES_64_CBC_SHA,
427 SSL_kEDH|SSL_aDSS|SSL_DES |SSL_SHA1|SSL_SSLV3,
428 SSL_NOT_EXP|SSL_LOW|SSL_FIPS,
429 0,
430 56,
431 56,
432 SSL_ALL_CIPHERS,
433 SSL_ALL_STRENGTHS,
434 },
435/* Cipher 13 */
436 {
437 1,
438 SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA,
439 SSL3_CK_EDH_DSS_DES_192_CBC3_SHA,
440 SSL_kEDH|SSL_aDSS|SSL_3DES |SSL_SHA1|SSL_SSLV3,
441 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
442 0,
443 168,
444 168,
445 SSL_ALL_CIPHERS,
446 SSL_ALL_STRENGTHS,
447 },
448/* Cipher 14 */
449 {
450 1,
451 SSL3_TXT_EDH_RSA_DES_40_CBC_SHA,
452 SSL3_CK_EDH_RSA_DES_40_CBC_SHA,
453 SSL_kEDH|SSL_aRSA|SSL_DES|SSL_SHA1|SSL_SSLV3,
454 SSL_EXPORT|SSL_EXP40|SSL_FIPS,
455 0,
456 40,
457 56,
458 SSL_ALL_CIPHERS,
459 SSL_ALL_STRENGTHS,
460 },
461/* Cipher 15 */
462 {
463 1,
464 SSL3_TXT_EDH_RSA_DES_64_CBC_SHA,
465 SSL3_CK_EDH_RSA_DES_64_CBC_SHA,
466 SSL_kEDH|SSL_aRSA|SSL_DES |SSL_SHA1|SSL_SSLV3,
467 SSL_NOT_EXP|SSL_LOW|SSL_FIPS,
468 0,
469 56,
470 56,
471 SSL_ALL_CIPHERS,
472 SSL_ALL_STRENGTHS,
473 },
474/* Cipher 16 */
475 {
476 1,
477 SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA,
478 SSL3_CK_EDH_RSA_DES_192_CBC3_SHA,
479 SSL_kEDH|SSL_aRSA|SSL_3DES |SSL_SHA1|SSL_SSLV3,
480 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
481 0,
482 168,
483 168,
484 SSL_ALL_CIPHERS,
485 SSL_ALL_STRENGTHS,
486 },
487
488/* Fortezza */
489/* Cipher 1C */
490 {
491 0,
492 SSL3_TXT_FZA_DMS_NULL_SHA,
493 SSL3_CK_FZA_DMS_NULL_SHA,
494 SSL_kFZA|SSL_aFZA |SSL_eNULL |SSL_SHA1|SSL_SSLV3,
495 SSL_NOT_EXP|SSL_STRONG_NONE,
496 0,
497 0,
498 0,
499 SSL_ALL_CIPHERS,
500 SSL_ALL_STRENGTHS,
501 },
502
503/* Cipher 1D */
504 {
505 0,
506 SSL3_TXT_FZA_DMS_FZA_SHA,
507 SSL3_CK_FZA_DMS_FZA_SHA,
508 SSL_kFZA|SSL_aFZA |SSL_eFZA |SSL_SHA1|SSL_SSLV3,
509 SSL_NOT_EXP|SSL_STRONG_NONE,
510 0,
511 0,
512 0,
513 SSL_ALL_CIPHERS,
514 SSL_ALL_STRENGTHS,
515 },
516
517#if 0
518/* Cipher 1E */
519 {
520 0,
521 SSL3_TXT_FZA_DMS_RC4_SHA,
522 SSL3_CK_FZA_DMS_RC4_SHA,
523 SSL_kFZA|SSL_aFZA |SSL_RC4 |SSL_SHA1|SSL_SSLV3,
524 SSL_NOT_EXP|SSL_MEDIUM,
525 0,
526 128,
527 128,
528 SSL_ALL_CIPHERS,
529 SSL_ALL_STRENGTHS,
530 },
531#endif
532
533#ifndef OPENSSL_NO_KRB5
534/* The Kerberos ciphers
535** 20000107 VRS: And the first shall be last,
536** in hopes of avoiding the lynx ssl renegotiation problem.
537*/
538/* Cipher 1E VRS */
539 {
540 1,
541 SSL3_TXT_KRB5_DES_64_CBC_SHA,
542 SSL3_CK_KRB5_DES_64_CBC_SHA,
543 SSL_kKRB5|SSL_aKRB5| SSL_DES|SSL_SHA1 |SSL_SSLV3,
544 SSL_NOT_EXP|SSL_LOW|SSL_FIPS,
545 0,
546 56,
547 56,
548 SSL_ALL_CIPHERS,
549 SSL_ALL_STRENGTHS,
550 },
551
552/* Cipher 1F VRS */
553 {
554 1,
555 SSL3_TXT_KRB5_DES_192_CBC3_SHA,
556 SSL3_CK_KRB5_DES_192_CBC3_SHA,
557 SSL_kKRB5|SSL_aKRB5| SSL_3DES|SSL_SHA1 |SSL_SSLV3,
558 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
559 0,
560 112,
561 168,
562 SSL_ALL_CIPHERS,
563 SSL_ALL_STRENGTHS,
564 },
565
566/* Cipher 20 VRS */
567 {
568 1,
569 SSL3_TXT_KRB5_RC4_128_SHA,
570 SSL3_CK_KRB5_RC4_128_SHA,
571 SSL_kKRB5|SSL_aKRB5| SSL_RC4|SSL_SHA1 |SSL_SSLV3,
572 SSL_NOT_EXP|SSL_MEDIUM,
573 0,
574 128,
575 128,
576 SSL_ALL_CIPHERS,
577 SSL_ALL_STRENGTHS,
578 },
579
580/* Cipher 21 VRS */
581 {
582 1,
583 SSL3_TXT_KRB5_IDEA_128_CBC_SHA,
584 SSL3_CK_KRB5_IDEA_128_CBC_SHA,
585 SSL_kKRB5|SSL_aKRB5| SSL_IDEA|SSL_SHA1 |SSL_SSLV3,
586 SSL_NOT_EXP|SSL_MEDIUM,
587 0,
588 128,
589 128,
590 SSL_ALL_CIPHERS,
591 SSL_ALL_STRENGTHS,
592 },
593
594/* Cipher 22 VRS */
595 {
596 1,
597 SSL3_TXT_KRB5_DES_64_CBC_MD5,
598 SSL3_CK_KRB5_DES_64_CBC_MD5,
599 SSL_kKRB5|SSL_aKRB5| SSL_DES|SSL_MD5 |SSL_SSLV3,
600 SSL_NOT_EXP|SSL_LOW,
601 0,
602 56,
603 56,
604 SSL_ALL_CIPHERS,
605 SSL_ALL_STRENGTHS,
606 },
607
608/* Cipher 23 VRS */
609 {
610 1,
611 SSL3_TXT_KRB5_DES_192_CBC3_MD5,
612 SSL3_CK_KRB5_DES_192_CBC3_MD5,
613 SSL_kKRB5|SSL_aKRB5| SSL_3DES|SSL_MD5 |SSL_SSLV3,
614 SSL_NOT_EXP|SSL_HIGH,
615 0,
616 112,
617 168,
618 SSL_ALL_CIPHERS,
619 SSL_ALL_STRENGTHS,
620 },
621
622/* Cipher 24 VRS */
623 {
624 1,
625 SSL3_TXT_KRB5_RC4_128_MD5,
626 SSL3_CK_KRB5_RC4_128_MD5,
627 SSL_kKRB5|SSL_aKRB5| SSL_RC4|SSL_MD5 |SSL_SSLV3,
628 SSL_NOT_EXP|SSL_MEDIUM,
629 0,
630 128,
631 128,
632 SSL_ALL_CIPHERS,
633 SSL_ALL_STRENGTHS,
634 },
635
636/* Cipher 25 VRS */
637 {
638 1,
639 SSL3_TXT_KRB5_IDEA_128_CBC_MD5,
640 SSL3_CK_KRB5_IDEA_128_CBC_MD5,
641 SSL_kKRB5|SSL_aKRB5| SSL_IDEA|SSL_MD5 |SSL_SSLV3,
642 SSL_NOT_EXP|SSL_MEDIUM,
643 0,
644 128,
645 128,
646 SSL_ALL_CIPHERS,
647 SSL_ALL_STRENGTHS,
648 },
649
650/* Cipher 26 VRS */
651 {
652 1,
653 SSL3_TXT_KRB5_DES_40_CBC_SHA,
654 SSL3_CK_KRB5_DES_40_CBC_SHA,
655 SSL_kKRB5|SSL_aKRB5| SSL_DES|SSL_SHA1 |SSL_SSLV3,
656 SSL_EXPORT|SSL_EXP40|SSL_FIPS,
657 0,
658 40,
659 56,
660 SSL_ALL_CIPHERS,
661 SSL_ALL_STRENGTHS,
662 },
663
664/* Cipher 27 VRS */
665 {
666 1,
667 SSL3_TXT_KRB5_RC2_40_CBC_SHA,
668 SSL3_CK_KRB5_RC2_40_CBC_SHA,
669 SSL_kKRB5|SSL_aKRB5| SSL_RC2|SSL_SHA1 |SSL_SSLV3,
670 SSL_EXPORT|SSL_EXP40,
671 0,
672 40,
673 128,
674 SSL_ALL_CIPHERS,
675 SSL_ALL_STRENGTHS,
676 },
677
678/* Cipher 28 VRS */
679 {
680 1,
681 SSL3_TXT_KRB5_RC4_40_SHA,
682 SSL3_CK_KRB5_RC4_40_SHA,
683 SSL_kKRB5|SSL_aKRB5| SSL_RC4|SSL_SHA1 |SSL_SSLV3,
684 SSL_EXPORT|SSL_EXP40,
685 0,
686 128,
687 128,
688 SSL_ALL_CIPHERS,
689 SSL_ALL_STRENGTHS,
690 },
691
692/* Cipher 29 VRS */
693 {
694 1,
695 SSL3_TXT_KRB5_DES_40_CBC_MD5,
696 SSL3_CK_KRB5_DES_40_CBC_MD5,
697 SSL_kKRB5|SSL_aKRB5| SSL_DES|SSL_MD5 |SSL_SSLV3,
698 SSL_EXPORT|SSL_EXP40,
699 0,
700 40,
701 56,
702 SSL_ALL_CIPHERS,
703 SSL_ALL_STRENGTHS,
704 },
705
706/* Cipher 2A VRS */
707 {
708 1,
709 SSL3_TXT_KRB5_RC2_40_CBC_MD5,
710 SSL3_CK_KRB5_RC2_40_CBC_MD5,
711 SSL_kKRB5|SSL_aKRB5| SSL_RC2|SSL_MD5 |SSL_SSLV3,
712 SSL_EXPORT|SSL_EXP40,
713 0,
714 40,
715 128,
716 SSL_ALL_CIPHERS,
717 SSL_ALL_STRENGTHS,
718 },
719
720/* Cipher 2B VRS */
721 {
722 1,
723 SSL3_TXT_KRB5_RC4_40_MD5,
724 SSL3_CK_KRB5_RC4_40_MD5,
725 SSL_kKRB5|SSL_aKRB5| SSL_RC4|SSL_MD5 |SSL_SSLV3,
726 SSL_EXPORT|SSL_EXP40,
727 0,
728 128,
729 128,
730 SSL_ALL_CIPHERS,
731 SSL_ALL_STRENGTHS,
732 },
733#endif /* OPENSSL_NO_KRB5 */
734
735
736#if TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES
737 /* New TLS Export CipherSuites */
738 /* Cipher 60 */
739 {
740 1,
741 TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_MD5,
742 TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_MD5,
743 SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_MD5|SSL_TLSV1,
744 SSL_EXPORT|SSL_EXP56,
745 0,
746 56,
747 128,
748 SSL_ALL_CIPHERS,
749 SSL_ALL_STRENGTHS,
750 },
751 /* Cipher 61 */
752 {
753 1,
754 TLS1_TXT_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5,
755 TLS1_CK_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5,
756 SSL_kRSA|SSL_aRSA|SSL_RC2|SSL_MD5|SSL_TLSV1,
757 SSL_EXPORT|SSL_EXP56,
758 0,
759 56,
760 128,
761 SSL_ALL_CIPHERS,
762 SSL_ALL_STRENGTHS,
763 },
764 /* Cipher 62 */
765 {
766 1,
767 TLS1_TXT_RSA_EXPORT1024_WITH_DES_CBC_SHA,
768 TLS1_CK_RSA_EXPORT1024_WITH_DES_CBC_SHA,
769 SSL_kRSA|SSL_aRSA|SSL_DES|SSL_SHA|SSL_TLSV1,
770 SSL_EXPORT|SSL_EXP56|SSL_FIPS,
771 0,
772 56,
773 56,
774 SSL_ALL_CIPHERS,
775 SSL_ALL_STRENGTHS,
776 },
777 /* Cipher 63 */
778 {
779 1,
780 TLS1_TXT_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA,
781 TLS1_CK_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA,
782 SSL_kEDH|SSL_aDSS|SSL_DES|SSL_SHA|SSL_TLSV1,
783 SSL_EXPORT|SSL_EXP56|SSL_FIPS,
784 0,
785 56,
786 56,
787 SSL_ALL_CIPHERS,
788 SSL_ALL_STRENGTHS,
789 },
790 /* Cipher 64 */
791 {
792 1,
793 TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_SHA,
794 TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_SHA,
795 SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_SHA|SSL_TLSV1,
796 SSL_EXPORT|SSL_EXP56,
797 0,
798 56,
799 128,
800 SSL_ALL_CIPHERS,
801 SSL_ALL_STRENGTHS,
802 },
803 /* Cipher 65 */
804 {
805 1,
806 TLS1_TXT_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA,
807 TLS1_CK_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA,
808 SSL_kEDH|SSL_aDSS|SSL_RC4|SSL_SHA|SSL_TLSV1,
809 SSL_EXPORT|SSL_EXP56,
810 0,
811 56,
812 128,
813 SSL_ALL_CIPHERS,
814 SSL_ALL_STRENGTHS,
815 },
816 /* Cipher 66 */
817 {
818 1,
819 TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA,
820 TLS1_CK_DHE_DSS_WITH_RC4_128_SHA,
821 SSL_kEDH|SSL_aDSS|SSL_RC4|SSL_SHA|SSL_TLSV1,
822 SSL_NOT_EXP|SSL_MEDIUM,
823 0,
824 128,
825 128,
826 SSL_ALL_CIPHERS,
827 SSL_ALL_STRENGTHS
828 },
829#endif
830 /* New AES ciphersuites */
831
832 /* Cipher 2F */
833 {
834 1,
835 TLS1_TXT_RSA_WITH_AES_128_SHA,
836 TLS1_CK_RSA_WITH_AES_128_SHA,
837 SSL_kRSA|SSL_aRSA|SSL_AES|SSL_SHA |SSL_TLSV1,
838 SSL_NOT_EXP|SSL_MEDIUM|SSL_FIPS,
839 0,
840 128,
841 128,
842 SSL_ALL_CIPHERS,
843 SSL_ALL_STRENGTHS,
844 },
845 /* Cipher 30 */
846 {
847 0,
848 TLS1_TXT_DH_DSS_WITH_AES_128_SHA,
849 TLS1_CK_DH_DSS_WITH_AES_128_SHA,
850 SSL_kDHd|SSL_aDH|SSL_AES|SSL_SHA|SSL_TLSV1,
851 SSL_NOT_EXP|SSL_MEDIUM|SSL_FIPS,
852 0,
853 128,
854 128,
855 SSL_ALL_CIPHERS,
856 SSL_ALL_STRENGTHS,
857 },
858 /* Cipher 31 */
859 {
860 0,
861 TLS1_TXT_DH_RSA_WITH_AES_128_SHA,
862 TLS1_CK_DH_RSA_WITH_AES_128_SHA,
863 SSL_kDHr|SSL_aDH|SSL_AES|SSL_SHA|SSL_TLSV1,
864 SSL_NOT_EXP|SSL_MEDIUM|SSL_FIPS,
865 0,
866 128,
867 128,
868 SSL_ALL_CIPHERS,
869 SSL_ALL_STRENGTHS,
870 },
871 /* Cipher 32 */
872 {
873 1,
874 TLS1_TXT_DHE_DSS_WITH_AES_128_SHA,
875 TLS1_CK_DHE_DSS_WITH_AES_128_SHA,
876 SSL_kEDH|SSL_aDSS|SSL_AES|SSL_SHA|SSL_TLSV1,
877 SSL_NOT_EXP|SSL_MEDIUM|SSL_FIPS,
878 0,
879 128,
880 128,
881 SSL_ALL_CIPHERS,
882 SSL_ALL_STRENGTHS,
883 },
884 /* Cipher 33 */
885 {
886 1,
887 TLS1_TXT_DHE_RSA_WITH_AES_128_SHA,
888 TLS1_CK_DHE_RSA_WITH_AES_128_SHA,
889 SSL_kEDH|SSL_aRSA|SSL_AES|SSL_SHA|SSL_TLSV1,
890 SSL_NOT_EXP|SSL_MEDIUM|SSL_FIPS,
891 0,
892 128,
893 128,
894 SSL_ALL_CIPHERS,
895 SSL_ALL_STRENGTHS,
896 },
897 /* Cipher 34 */
898 {
899 1,
900 TLS1_TXT_ADH_WITH_AES_128_SHA,
901 TLS1_CK_ADH_WITH_AES_128_SHA,
902 SSL_kEDH|SSL_aNULL|SSL_AES|SSL_SHA|SSL_TLSV1,
903 SSL_NOT_EXP|SSL_MEDIUM|SSL_FIPS,
904 0,
905 128,
906 128,
907 SSL_ALL_CIPHERS,
908 SSL_ALL_STRENGTHS,
909 },
910
911 /* Cipher 35 */
912 {
913 1,
914 TLS1_TXT_RSA_WITH_AES_256_SHA,
915 TLS1_CK_RSA_WITH_AES_256_SHA,
916 SSL_kRSA|SSL_aRSA|SSL_AES|SSL_SHA |SSL_TLSV1,
917 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
918 0,
919 256,
920 256,
921 SSL_ALL_CIPHERS,
922 SSL_ALL_STRENGTHS,
923 },
924 /* Cipher 36 */
925 {
926 0,
927 TLS1_TXT_DH_DSS_WITH_AES_256_SHA,
928 TLS1_CK_DH_DSS_WITH_AES_256_SHA,
929 SSL_kDHd|SSL_aDH|SSL_AES|SSL_SHA|SSL_TLSV1,
930 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
931 0,
932 256,
933 256,
934 SSL_ALL_CIPHERS,
935 SSL_ALL_STRENGTHS,
936 },
937 /* Cipher 37 */
938 {
939 0,
940 TLS1_TXT_DH_RSA_WITH_AES_256_SHA,
941 TLS1_CK_DH_RSA_WITH_AES_256_SHA,
942 SSL_kDHr|SSL_aDH|SSL_AES|SSL_SHA|SSL_TLSV1,
943 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
944 0,
945 256,
946 256,
947 SSL_ALL_CIPHERS,
948 SSL_ALL_STRENGTHS,
949 },
950 /* Cipher 38 */
951 {
952 1,
953 TLS1_TXT_DHE_DSS_WITH_AES_256_SHA,
954 TLS1_CK_DHE_DSS_WITH_AES_256_SHA,
955 SSL_kEDH|SSL_aDSS|SSL_AES|SSL_SHA|SSL_TLSV1,
956 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
957 0,
958 256,
959 256,
960 SSL_ALL_CIPHERS,
961 SSL_ALL_STRENGTHS,
962 },
963 /* Cipher 39 */
964 {
965 1,
966 TLS1_TXT_DHE_RSA_WITH_AES_256_SHA,
967 TLS1_CK_DHE_RSA_WITH_AES_256_SHA,
968 SSL_kEDH|SSL_aRSA|SSL_AES|SSL_SHA|SSL_TLSV1,
969 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
970 0,
971 256,
972 256,
973 SSL_ALL_CIPHERS,
974 SSL_ALL_STRENGTHS,
975 },
976 /* Cipher 3A */
977 {
978 1,
979 TLS1_TXT_ADH_WITH_AES_256_SHA,
980 TLS1_CK_ADH_WITH_AES_256_SHA,
981 SSL_kEDH|SSL_aNULL|SSL_AES|SSL_SHA|SSL_TLSV1,
982 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
983 0,
984 256,
985 256,
986 SSL_ALL_CIPHERS,
987 SSL_ALL_STRENGTHS,
988 },
989
990/* end of list */
991 };
992
993static SSL3_ENC_METHOD SSLv3_enc_data={
994 ssl3_enc,
995 ssl3_mac,
996 ssl3_setup_key_block,
997 ssl3_generate_master_secret,
998 ssl3_change_cipher_state,
999 ssl3_final_finish_mac,
1000 MD5_DIGEST_LENGTH+SHA_DIGEST_LENGTH,
1001 ssl3_cert_verify_mac,
1002 SSL3_MD_CLIENT_FINISHED_CONST,4,
1003 SSL3_MD_SERVER_FINISHED_CONST,4,
1004 ssl3_alert_code,
1005 };
1006
1007static SSL_METHOD SSLv3_data= {
1008 SSL3_VERSION,
1009 ssl3_new,
1010 ssl3_clear,
1011 ssl3_free,
1012 ssl_undefined_function,
1013 ssl_undefined_function,
1014 ssl3_read,
1015 ssl3_peek,
1016 ssl3_write,
1017 ssl3_shutdown,
1018 ssl3_renegotiate,
1019 ssl3_renegotiate_check,
1020 ssl3_ctrl,
1021 ssl3_ctx_ctrl,
1022 ssl3_get_cipher_by_char,
1023 ssl3_put_cipher_by_char,
1024 ssl3_pending,
1025 ssl3_num_ciphers,
1026 ssl3_get_cipher,
1027 ssl_bad_method,
1028 ssl3_default_timeout,
1029 &SSLv3_enc_data,
1030 ssl_undefined_function,
1031 ssl3_callback_ctrl,
1032 ssl3_ctx_callback_ctrl,
1033 };
1034
1035static long ssl3_default_timeout(void)
1036 {
1037 /* 2 hours, the 24 hours mentioned in the SSLv3 spec
1038 * is way too long for http, the cache would over fill */
1039 return(60*60*2);
1040 }
1041
1042SSL_METHOD *sslv3_base_method(void)
1043 {
1044 return(&SSLv3_data);
1045 }
1046
1047int ssl3_num_ciphers(void)
1048 {
1049 return(SSL3_NUM_CIPHERS);
1050 }
1051
1052SSL_CIPHER *ssl3_get_cipher(unsigned int u)
1053 {
1054 if (u < SSL3_NUM_CIPHERS)
1055 return(&(ssl3_ciphers[SSL3_NUM_CIPHERS-1-u]));
1056 else
1057 return(NULL);
1058 }
1059
1060int ssl3_pending(const SSL *s)
1061 {
1062 if (s->rstate == SSL_ST_READ_BODY)
1063 return 0;
1064
1065 return (s->s3->rrec.type == SSL3_RT_APPLICATION_DATA) ? s->s3->rrec.length : 0;
1066 }
1067
1068int ssl3_new(SSL *s)
1069 {
1070 SSL3_STATE *s3;
1071
1072 if ((s3=OPENSSL_malloc(sizeof *s3)) == NULL) goto err;
1073 memset(s3,0,sizeof *s3);
1074 EVP_MD_CTX_init(&s3->finish_dgst1);
1075 EVP_MD_CTX_init(&s3->finish_dgst2);
1076
1077 s->s3=s3;
1078
1079 s->method->ssl_clear(s);
1080 return(1);
1081err:
1082 return(0);
1083 }
1084
1085void ssl3_free(SSL *s)
1086 {
1087 if(s == NULL)
1088 return;
1089
1090 ssl3_cleanup_key_block(s);
1091 if (s->s3->rbuf.buf != NULL)
1092 OPENSSL_free(s->s3->rbuf.buf);
1093 if (s->s3->wbuf.buf != NULL)
1094 OPENSSL_free(s->s3->wbuf.buf);
1095 if (s->s3->rrec.comp != NULL)
1096 OPENSSL_free(s->s3->rrec.comp);
1097#ifndef OPENSSL_NO_DH
1098 if (s->s3->tmp.dh != NULL)
1099 DH_free(s->s3->tmp.dh);
1100#endif
1101 if (s->s3->tmp.ca_names != NULL)
1102 sk_X509_NAME_pop_free(s->s3->tmp.ca_names,X509_NAME_free);
1103 EVP_MD_CTX_cleanup(&s->s3->finish_dgst1);
1104 EVP_MD_CTX_cleanup(&s->s3->finish_dgst2);
1105 OPENSSL_cleanse(s->s3,sizeof *s->s3);
1106 OPENSSL_free(s->s3);
1107 s->s3=NULL;
1108 }
1109
1110void ssl3_clear(SSL *s)
1111 {
1112 unsigned char *rp,*wp;
1113 size_t rlen, wlen;
1114
1115 ssl3_cleanup_key_block(s);
1116 if (s->s3->tmp.ca_names != NULL)
1117 sk_X509_NAME_pop_free(s->s3->tmp.ca_names,X509_NAME_free);
1118
1119 if (s->s3->rrec.comp != NULL)
1120 {
1121 OPENSSL_free(s->s3->rrec.comp);
1122 s->s3->rrec.comp=NULL;
1123 }
1124#ifndef OPENSSL_NO_DH
1125 if (s->s3->tmp.dh != NULL)
1126 DH_free(s->s3->tmp.dh);
1127#endif
1128
1129 rp = s->s3->rbuf.buf;
1130 wp = s->s3->wbuf.buf;
1131 rlen = s->s3->rbuf.len;
1132 wlen = s->s3->wbuf.len;
1133
1134 EVP_MD_CTX_cleanup(&s->s3->finish_dgst1);
1135 EVP_MD_CTX_cleanup(&s->s3->finish_dgst2);
1136
1137 memset(s->s3,0,sizeof *s->s3);
1138 s->s3->rbuf.buf = rp;
1139 s->s3->wbuf.buf = wp;
1140 s->s3->rbuf.len = rlen;
1141 s->s3->wbuf.len = wlen;
1142
1143 ssl_free_wbio_buffer(s);
1144
1145 s->packet_length=0;
1146 s->s3->renegotiate=0;
1147 s->s3->total_renegotiations=0;
1148 s->s3->num_renegotiations=0;
1149 s->s3->in_read_app_data=0;
1150 s->version=SSL3_VERSION;
1151 }
1152
1153long ssl3_ctrl(SSL *s, int cmd, long larg, void *parg)
1154 {
1155 int ret=0;
1156
1157#if !defined(OPENSSL_NO_DSA) || !defined(OPENSSL_NO_RSA)
1158 if (
1159#ifndef OPENSSL_NO_RSA
1160 cmd == SSL_CTRL_SET_TMP_RSA ||
1161 cmd == SSL_CTRL_SET_TMP_RSA_CB ||
1162#endif
1163#ifndef OPENSSL_NO_DSA
1164 cmd == SSL_CTRL_SET_TMP_DH ||
1165 cmd == SSL_CTRL_SET_TMP_DH_CB ||
1166#endif
1167 0)
1168 {
1169 if (!ssl_cert_inst(&s->cert))
1170 {
1171 SSLerr(SSL_F_SSL3_CTRL, ERR_R_MALLOC_FAILURE);
1172 return(0);
1173 }
1174 }
1175#endif
1176
1177 switch (cmd)
1178 {
1179 case SSL_CTRL_GET_SESSION_REUSED:
1180 ret=s->hit;
1181 break;
1182 case SSL_CTRL_GET_CLIENT_CERT_REQUEST:
1183 break;
1184 case SSL_CTRL_GET_NUM_RENEGOTIATIONS:
1185 ret=s->s3->num_renegotiations;
1186 break;
1187 case SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS:
1188 ret=s->s3->num_renegotiations;
1189 s->s3->num_renegotiations=0;
1190 break;
1191 case SSL_CTRL_GET_TOTAL_RENEGOTIATIONS:
1192 ret=s->s3->total_renegotiations;
1193 break;
1194 case SSL_CTRL_GET_FLAGS:
1195 ret=(int)(s->s3->flags);
1196 break;
1197#ifndef OPENSSL_NO_RSA
1198 case SSL_CTRL_NEED_TMP_RSA:
1199 if ((s->cert != NULL) && (s->cert->rsa_tmp == NULL) &&
1200 ((s->cert->pkeys[SSL_PKEY_RSA_ENC].privatekey == NULL) ||
1201 (EVP_PKEY_size(s->cert->pkeys[SSL_PKEY_RSA_ENC].privatekey) > (512/8))))
1202 ret = 1;
1203 break;
1204 case SSL_CTRL_SET_TMP_RSA:
1205 {
1206 RSA *rsa = (RSA *)parg;
1207 if (rsa == NULL)
1208 {
1209 SSLerr(SSL_F_SSL3_CTRL, ERR_R_PASSED_NULL_PARAMETER);
1210 return(ret);
1211 }
1212 if ((rsa = RSAPrivateKey_dup(rsa)) == NULL)
1213 {
1214 SSLerr(SSL_F_SSL3_CTRL, ERR_R_RSA_LIB);
1215 return(ret);
1216 }
1217 if (s->cert->rsa_tmp != NULL)
1218 RSA_free(s->cert->rsa_tmp);
1219 s->cert->rsa_tmp = rsa;
1220 ret = 1;
1221 }
1222 break;
1223 case SSL_CTRL_SET_TMP_RSA_CB:
1224 {
1225 SSLerr(SSL_F_SSL3_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
1226 return(ret);
1227 }
1228 break;
1229#endif
1230#ifndef OPENSSL_NO_DH
1231 case SSL_CTRL_SET_TMP_DH:
1232 {
1233 DH *dh = (DH *)parg;
1234 if (dh == NULL)
1235 {
1236 SSLerr(SSL_F_SSL3_CTRL, ERR_R_PASSED_NULL_PARAMETER);
1237 return(ret);
1238 }
1239 if ((dh = DHparams_dup(dh)) == NULL)
1240 {
1241 SSLerr(SSL_F_SSL3_CTRL, ERR_R_DH_LIB);
1242 return(ret);
1243 }
1244 if (!(s->options & SSL_OP_SINGLE_DH_USE))
1245 {
1246 if (!DH_generate_key(dh))
1247 {
1248 DH_free(dh);
1249 SSLerr(SSL_F_SSL3_CTRL, ERR_R_DH_LIB);
1250 return(ret);
1251 }
1252 }
1253 if (s->cert->dh_tmp != NULL)
1254 DH_free(s->cert->dh_tmp);
1255 s->cert->dh_tmp = dh;
1256 ret = 1;
1257 }
1258 break;
1259 case SSL_CTRL_SET_TMP_DH_CB:
1260 {
1261 SSLerr(SSL_F_SSL3_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
1262 return(ret);
1263 }
1264 break;
1265#endif
1266 default:
1267 break;
1268 }
1269 return(ret);
1270 }
1271
1272long ssl3_callback_ctrl(SSL *s, int cmd, void (*fp)())
1273 {
1274 int ret=0;
1275
1276#if !defined(OPENSSL_NO_DSA) || !defined(OPENSSL_NO_RSA)
1277 if (
1278#ifndef OPENSSL_NO_RSA
1279 cmd == SSL_CTRL_SET_TMP_RSA_CB ||
1280#endif
1281#ifndef OPENSSL_NO_DSA
1282 cmd == SSL_CTRL_SET_TMP_DH_CB ||
1283#endif
1284 0)
1285 {
1286 if (!ssl_cert_inst(&s->cert))
1287 {
1288 SSLerr(SSL_F_SSL3_CALLBACK_CTRL, ERR_R_MALLOC_FAILURE);
1289 return(0);
1290 }
1291 }
1292#endif
1293
1294 switch (cmd)
1295 {
1296#ifndef OPENSSL_NO_RSA
1297 case SSL_CTRL_SET_TMP_RSA_CB:
1298 {
1299 s->cert->rsa_tmp_cb = (RSA *(*)(SSL *, int, int))fp;
1300 }
1301 break;
1302#endif
1303#ifndef OPENSSL_NO_DH
1304 case SSL_CTRL_SET_TMP_DH_CB:
1305 {
1306 s->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp;
1307 }
1308 break;
1309#endif
1310 default:
1311 break;
1312 }
1313 return(ret);
1314 }
1315
1316long ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg)
1317 {
1318 CERT *cert;
1319
1320 cert=ctx->cert;
1321
1322 switch (cmd)
1323 {
1324#ifndef OPENSSL_NO_RSA
1325 case SSL_CTRL_NEED_TMP_RSA:
1326 if ( (cert->rsa_tmp == NULL) &&
1327 ((cert->pkeys[SSL_PKEY_RSA_ENC].privatekey == NULL) ||
1328 (EVP_PKEY_size(cert->pkeys[SSL_PKEY_RSA_ENC].privatekey) > (512/8)))
1329 )
1330 return(1);
1331 else
1332 return(0);
1333 /* break; */
1334 case SSL_CTRL_SET_TMP_RSA:
1335 {
1336 RSA *rsa;
1337 int i;
1338
1339 rsa=(RSA *)parg;
1340 i=1;
1341 if (rsa == NULL)
1342 i=0;
1343 else
1344 {
1345 if ((rsa=RSAPrivateKey_dup(rsa)) == NULL)
1346 i=0;
1347 }
1348 if (!i)
1349 {
1350 SSLerr(SSL_F_SSL3_CTX_CTRL,ERR_R_RSA_LIB);
1351 return(0);
1352 }
1353 else
1354 {
1355 if (cert->rsa_tmp != NULL)
1356 RSA_free(cert->rsa_tmp);
1357 cert->rsa_tmp=rsa;
1358 return(1);
1359 }
1360 }
1361 /* break; */
1362 case SSL_CTRL_SET_TMP_RSA_CB:
1363 {
1364 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
1365 return(0);
1366 }
1367 break;
1368#endif
1369#ifndef OPENSSL_NO_DH
1370 case SSL_CTRL_SET_TMP_DH:
1371 {
1372 DH *new=NULL,*dh;
1373
1374 dh=(DH *)parg;
1375 if ((new=DHparams_dup(dh)) == NULL)
1376 {
1377 SSLerr(SSL_F_SSL3_CTX_CTRL,ERR_R_DH_LIB);
1378 return 0;
1379 }
1380 if (!(ctx->options & SSL_OP_SINGLE_DH_USE))
1381 {
1382 if (!DH_generate_key(new))
1383 {
1384 SSLerr(SSL_F_SSL3_CTX_CTRL,ERR_R_DH_LIB);
1385 DH_free(new);
1386 return 0;
1387 }
1388 }
1389 if (cert->dh_tmp != NULL)
1390 DH_free(cert->dh_tmp);
1391 cert->dh_tmp=new;
1392 return 1;
1393 }
1394 /*break; */
1395 case SSL_CTRL_SET_TMP_DH_CB:
1396 {
1397 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
1398 return(0);
1399 }
1400 break;
1401#endif
1402 /* A Thawte special :-) */
1403 case SSL_CTRL_EXTRA_CHAIN_CERT:
1404 if (ctx->extra_certs == NULL)
1405 {
1406 if ((ctx->extra_certs=sk_X509_new_null()) == NULL)
1407 return(0);
1408 }
1409 sk_X509_push(ctx->extra_certs,(X509 *)parg);
1410 break;
1411
1412 default:
1413 return(0);
1414 }
1415 return(1);
1416 }
1417
1418long ssl3_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp)())
1419 {
1420 CERT *cert;
1421
1422 cert=ctx->cert;
1423
1424 switch (cmd)
1425 {
1426#ifndef OPENSSL_NO_RSA
1427 case SSL_CTRL_SET_TMP_RSA_CB:
1428 {
1429 cert->rsa_tmp_cb = (RSA *(*)(SSL *, int, int))fp;
1430 }
1431 break;
1432#endif
1433#ifndef OPENSSL_NO_DH
1434 case SSL_CTRL_SET_TMP_DH_CB:
1435 {
1436 cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp;
1437 }
1438 break;
1439#endif
1440 default:
1441 return(0);
1442 }
1443 return(1);
1444 }
1445
1446/* This function needs to check if the ciphers required are actually
1447 * available */
1448SSL_CIPHER *ssl3_get_cipher_by_char(const unsigned char *p)
1449 {
1450 static int init=1;
1451 static SSL_CIPHER *sorted[SSL3_NUM_CIPHERS];
1452 SSL_CIPHER c,*cp= &c,**cpp;
1453 unsigned long id;
1454 int i;
1455
1456 if (init)
1457 {
1458 CRYPTO_w_lock(CRYPTO_LOCK_SSL);
1459
1460 if (init)
1461 {
1462 for (i=0; i<SSL3_NUM_CIPHERS; i++)
1463 sorted[i]= &(ssl3_ciphers[i]);
1464
1465 qsort(sorted,
1466 SSL3_NUM_CIPHERS,sizeof(SSL_CIPHER *),
1467 FP_ICC ssl_cipher_ptr_id_cmp);
1468
1469 init=0;
1470 }
1471
1472 CRYPTO_w_unlock(CRYPTO_LOCK_SSL);
1473 }
1474
1475 id=0x03000000L|((unsigned long)p[0]<<8L)|(unsigned long)p[1];
1476 c.id=id;
1477 cpp=(SSL_CIPHER **)OBJ_bsearch((char *)&cp,
1478 (char *)sorted,
1479 SSL3_NUM_CIPHERS,sizeof(SSL_CIPHER *),
1480 FP_ICC ssl_cipher_ptr_id_cmp);
1481 if ((cpp == NULL) || !(*cpp)->valid)
1482 return(NULL);
1483 else
1484 return(*cpp);
1485 }
1486
1487int ssl3_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p)
1488 {
1489 long l;
1490
1491 if (p != NULL)
1492 {
1493 l=c->id;
1494 if ((l & 0xff000000) != 0x03000000) return(0);
1495 p[0]=((unsigned char)(l>> 8L))&0xFF;
1496 p[1]=((unsigned char)(l ))&0xFF;
1497 }
1498 return(2);
1499 }
1500
1501SSL_CIPHER *ssl3_choose_cipher(SSL *s, STACK_OF(SSL_CIPHER) *clnt,
1502 STACK_OF(SSL_CIPHER) *srvr)
1503 {
1504 SSL_CIPHER *c,*ret=NULL;
1505 STACK_OF(SSL_CIPHER) *prio, *allow;
1506 int i,j,ok;
1507 CERT *cert;
1508 unsigned long alg,mask,emask;
1509
1510 /* Let's see which ciphers we can support */
1511 cert=s->cert;
1512
1513#if 0
1514 /* Do not set the compare functions, because this may lead to a
1515 * reordering by "id". We want to keep the original ordering.
1516 * We may pay a price in performance during sk_SSL_CIPHER_find(),
1517 * but would have to pay with the price of sk_SSL_CIPHER_dup().
1518 */
1519 sk_SSL_CIPHER_set_cmp_func(srvr, ssl_cipher_ptr_id_cmp);
1520 sk_SSL_CIPHER_set_cmp_func(clnt, ssl_cipher_ptr_id_cmp);
1521#endif
1522
1523#ifdef CIPHER_DEBUG
1524 printf("Server has %d from %p:\n", sk_SSL_CIPHER_num(srvr), srvr);
1525 for(i=0 ; i < sk_SSL_CIPHER_num(srvr) ; ++i)
1526 {
1527 c=sk_SSL_CIPHER_value(srvr,i);
1528 printf("%p:%s\n",c,c->name);
1529 }
1530 printf("Client sent %d from %p:\n", sk_SSL_CIPHER_num(clnt), clnt);
1531 for(i=0 ; i < sk_SSL_CIPHER_num(clnt) ; ++i)
1532 {
1533 c=sk_SSL_CIPHER_value(clnt,i);
1534 printf("%p:%s\n",c,c->name);
1535 }
1536#endif
1537
1538 if (s->options & SSL_OP_CIPHER_SERVER_PREFERENCE)
1539 {
1540 prio = srvr;
1541 allow = clnt;
1542 }
1543 else
1544 {
1545 prio = clnt;
1546 allow = srvr;
1547 }
1548
1549 for (i=0; i<sk_SSL_CIPHER_num(prio); i++)
1550 {
1551 c=sk_SSL_CIPHER_value(prio,i);
1552
1553 ssl_set_cert_masks(cert,c);
1554 mask=cert->mask;
1555 emask=cert->export_mask;
1556
1557#ifdef KSSL_DEBUG
1558 printf("ssl3_choose_cipher %d alg= %lx\n", i,c->algorithms);
1559#endif /* KSSL_DEBUG */
1560
1561 alg=c->algorithms&(SSL_MKEY_MASK|SSL_AUTH_MASK);
1562#ifndef OPENSSL_NO_KRB5
1563 if (alg & SSL_KRB5)
1564 {
1565 if ( !kssl_keytab_is_available(s->kssl_ctx) )
1566 continue;
1567 }
1568#endif /* OPENSSL_NO_KRB5 */
1569 if (SSL_C_IS_EXPORT(c))
1570 {
1571 ok=((alg & emask) == alg)?1:0;
1572#ifdef CIPHER_DEBUG
1573 printf("%d:[%08lX:%08lX]%p:%s (export)\n",ok,alg,emask,
1574 c,c->name);
1575#endif
1576 }
1577 else
1578 {
1579 ok=((alg & mask) == alg)?1:0;
1580#ifdef CIPHER_DEBUG
1581 printf("%d:[%08lX:%08lX]%p:%s\n",ok,alg,mask,c,
1582 c->name);
1583#endif
1584 }
1585
1586 if (!ok) continue;
1587
1588 j=sk_SSL_CIPHER_find(allow,c);
1589 if (j >= 0)
1590 {
1591 ret=sk_SSL_CIPHER_value(allow,j);
1592 break;
1593 }
1594 }
1595 return(ret);
1596 }
1597
1598int ssl3_get_req_cert_type(SSL *s, unsigned char *p)
1599 {
1600 int ret=0;
1601 unsigned long alg;
1602
1603 alg=s->s3->tmp.new_cipher->algorithms;
1604
1605#ifndef OPENSSL_NO_DH
1606 if (alg & (SSL_kDHr|SSL_kEDH))
1607 {
1608# ifndef OPENSSL_NO_RSA
1609 p[ret++]=SSL3_CT_RSA_FIXED_DH;
1610# endif
1611# ifndef OPENSSL_NO_DSA
1612 p[ret++]=SSL3_CT_DSS_FIXED_DH;
1613# endif
1614 }
1615 if ((s->version == SSL3_VERSION) &&
1616 (alg & (SSL_kEDH|SSL_kDHd|SSL_kDHr)))
1617 {
1618# ifndef OPENSSL_NO_RSA
1619 p[ret++]=SSL3_CT_RSA_EPHEMERAL_DH;
1620# endif
1621# ifndef OPENSSL_NO_DSA
1622 p[ret++]=SSL3_CT_DSS_EPHEMERAL_DH;
1623# endif
1624 }
1625#endif /* !OPENSSL_NO_DH */
1626#ifndef OPENSSL_NO_RSA
1627 p[ret++]=SSL3_CT_RSA_SIGN;
1628#endif
1629#ifndef OPENSSL_NO_DSA
1630 p[ret++]=SSL3_CT_DSS_SIGN;
1631#endif
1632 return(ret);
1633 }
1634
1635int ssl3_shutdown(SSL *s)
1636 {
1637
1638 /* Don't do anything much if we have not done the handshake or
1639 * we don't want to send messages :-) */
1640 if ((s->quiet_shutdown) || (s->state == SSL_ST_BEFORE))
1641 {
1642 s->shutdown=(SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN);
1643 return(1);
1644 }
1645
1646 if (!(s->shutdown & SSL_SENT_SHUTDOWN))
1647 {
1648 s->shutdown|=SSL_SENT_SHUTDOWN;
1649#if 1
1650 ssl3_send_alert(s,SSL3_AL_WARNING,SSL_AD_CLOSE_NOTIFY);
1651#endif
1652 /* our shutdown alert has been sent now, and if it still needs
1653 * to be written, s->s3->alert_dispatch will be true */
1654 }
1655 else if (s->s3->alert_dispatch)
1656 {
1657 /* resend it if not sent */
1658#if 1
1659 ssl3_dispatch_alert(s);
1660#endif
1661 }
1662 else if (!(s->shutdown & SSL_RECEIVED_SHUTDOWN))
1663 {
1664 /* If we are waiting for a close from our peer, we are closed */
1665 ssl3_read_bytes(s,0,NULL,0,0);
1666 }
1667
1668 if ((s->shutdown == (SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN)) &&
1669 !s->s3->alert_dispatch)
1670 return(1);
1671 else
1672 return(0);
1673 }
1674
1675int ssl3_write(SSL *s, const void *buf, int len)
1676 {
1677 int ret,n;
1678
1679#if 0
1680 if (s->shutdown & SSL_SEND_SHUTDOWN)
1681 {
1682 s->rwstate=SSL_NOTHING;
1683 return(0);
1684 }
1685#endif
1686 clear_sys_error();
1687 if (s->s3->renegotiate) ssl3_renegotiate_check(s);
1688
1689 /* This is an experimental flag that sends the
1690 * last handshake message in the same packet as the first
1691 * use data - used to see if it helps the TCP protocol during
1692 * session-id reuse */
1693 /* The second test is because the buffer may have been removed */
1694 if ((s->s3->flags & SSL3_FLAGS_POP_BUFFER) && (s->wbio == s->bbio))
1695 {
1696 /* First time through, we write into the buffer */
1697 if (s->s3->delay_buf_pop_ret == 0)
1698 {
1699 ret=ssl3_write_bytes(s,SSL3_RT_APPLICATION_DATA,
1700 buf,len);
1701 if (ret <= 0) return(ret);
1702
1703 s->s3->delay_buf_pop_ret=ret;
1704 }
1705
1706 s->rwstate=SSL_WRITING;
1707 n=BIO_flush(s->wbio);
1708 if (n <= 0) return(n);
1709 s->rwstate=SSL_NOTHING;
1710
1711 /* We have flushed the buffer, so remove it */
1712 ssl_free_wbio_buffer(s);
1713 s->s3->flags&= ~SSL3_FLAGS_POP_BUFFER;
1714
1715 ret=s->s3->delay_buf_pop_ret;
1716 s->s3->delay_buf_pop_ret=0;
1717 }
1718 else
1719 {
1720 ret=ssl3_write_bytes(s,SSL3_RT_APPLICATION_DATA,
1721 buf,len);
1722 if (ret <= 0) return(ret);
1723 }
1724
1725 return(ret);
1726 }
1727
1728static int ssl3_read_internal(SSL *s, void *buf, int len, int peek)
1729 {
1730 int ret;
1731
1732 clear_sys_error();
1733 if (s->s3->renegotiate) ssl3_renegotiate_check(s);
1734 s->s3->in_read_app_data=1;
1735 ret=ssl3_read_bytes(s,SSL3_RT_APPLICATION_DATA,buf,len,peek);
1736 if ((ret == -1) && (s->s3->in_read_app_data == 2))
1737 {
1738 /* ssl3_read_bytes decided to call s->handshake_func, which
1739 * called ssl3_read_bytes to read handshake data.
1740 * However, ssl3_read_bytes actually found application data
1741 * and thinks that application data makes sense here; so disable
1742 * handshake processing and try to read application data again. */
1743 s->in_handshake++;
1744 ret=ssl3_read_bytes(s,SSL3_RT_APPLICATION_DATA,buf,len,peek);
1745 s->in_handshake--;
1746 }
1747 else
1748 s->s3->in_read_app_data=0;
1749
1750 return(ret);
1751 }
1752
1753int ssl3_read(SSL *s, void *buf, int len)
1754 {
1755 return ssl3_read_internal(s, buf, len, 0);
1756 }
1757
1758int ssl3_peek(SSL *s, void *buf, int len)
1759 {
1760 return ssl3_read_internal(s, buf, len, 1);
1761 }
1762
1763int ssl3_renegotiate(SSL *s)
1764 {
1765 if (s->handshake_func == NULL)
1766 return(1);
1767
1768 if (s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS)
1769 return(0);
1770
1771 s->s3->renegotiate=1;
1772 return(1);
1773 }
1774
1775int ssl3_renegotiate_check(SSL *s)
1776 {
1777 int ret=0;
1778
1779 if (s->s3->renegotiate)
1780 {
1781 if ( (s->s3->rbuf.left == 0) &&
1782 (s->s3->wbuf.left == 0) &&
1783 !SSL_in_init(s))
1784 {
1785/*
1786if we are the server, and we have sent a 'RENEGOTIATE' message, we
1787need to go to SSL_ST_ACCEPT.
1788*/
1789 /* SSL_ST_ACCEPT */
1790 s->state=SSL_ST_RENEGOTIATE;
1791 s->s3->renegotiate=0;
1792 s->s3->num_renegotiations++;
1793 s->s3->total_renegotiations++;
1794 ret=1;
1795 }
1796 }
1797 return(ret);
1798 }
1799
diff --git a/src/lib/libssl/s3_pkt.c b/src/lib/libssl/s3_pkt.c
new file mode 100644
index 0000000000..cb0b12b400
--- /dev/null
+++ b/src/lib/libssl/s3_pkt.c
@@ -0,0 +1,1310 @@
1/* ssl/s3_pkt.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58/* ====================================================================
59 * Copyright (c) 1998-2002 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#include <stdio.h>
113#include <errno.h>
114#define USE_SOCKETS
115#include "ssl_locl.h"
116#include <openssl/evp.h>
117#include <openssl/buffer.h>
118
119static int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
120 unsigned int len, int create_empty_fragment);
121static int ssl3_write_pending(SSL *s, int type, const unsigned char *buf,
122 unsigned int len);
123static int ssl3_get_record(SSL *s);
124static int do_compress(SSL *ssl);
125static int do_uncompress(SSL *ssl);
126static int do_change_cipher_spec(SSL *ssl);
127
128/* used only by ssl3_get_record */
129static int ssl3_read_n(SSL *s, int n, int max, int extend)
130 {
131 /* If extend == 0, obtain new n-byte packet; if extend == 1, increase
132 * packet by another n bytes.
133 * The packet will be in the sub-array of s->s3->rbuf.buf specified
134 * by s->packet and s->packet_length.
135 * (If s->read_ahead is set, 'max' bytes may be stored in rbuf
136 * [plus s->packet_length bytes if extend == 1].)
137 */
138 int i,off,newb;
139
140 if (!extend)
141 {
142 /* start with empty packet ... */
143 if (s->s3->rbuf.left == 0)
144 s->s3->rbuf.offset = 0;
145 s->packet = s->s3->rbuf.buf + s->s3->rbuf.offset;
146 s->packet_length = 0;
147 /* ... now we can act as if 'extend' was set */
148 }
149
150 /* if there is enough in the buffer from a previous read, take some */
151 if (s->s3->rbuf.left >= (int)n)
152 {
153 s->packet_length+=n;
154 s->s3->rbuf.left-=n;
155 s->s3->rbuf.offset+=n;
156 return(n);
157 }
158
159 /* else we need to read more data */
160 if (!s->read_ahead)
161 max=n;
162
163 {
164 /* avoid buffer overflow */
165 int max_max = s->s3->rbuf.len - s->packet_length;
166 if (max > max_max)
167 max = max_max;
168 }
169 if (n > max) /* does not happen */
170 {
171 SSLerr(SSL_F_SSL3_READ_N,ERR_R_INTERNAL_ERROR);
172 return -1;
173 }
174
175 off = s->packet_length;
176 newb = s->s3->rbuf.left;
177 /* Move any available bytes to front of buffer:
178 * 'off' bytes already pointed to by 'packet',
179 * 'newb' extra ones at the end */
180 if (s->packet != s->s3->rbuf.buf)
181 {
182 /* off > 0 */
183 memmove(s->s3->rbuf.buf, s->packet, off+newb);
184 s->packet = s->s3->rbuf.buf;
185 }
186
187 while (newb < n)
188 {
189 /* Now we have off+newb bytes at the front of s->s3->rbuf.buf and need
190 * to read in more until we have off+n (up to off+max if possible) */
191
192 clear_sys_error();
193 if (s->rbio != NULL)
194 {
195 s->rwstate=SSL_READING;
196 i=BIO_read(s->rbio, &(s->s3->rbuf.buf[off+newb]), max-newb);
197 }
198 else
199 {
200 SSLerr(SSL_F_SSL3_READ_N,SSL_R_READ_BIO_NOT_SET);
201 i = -1;
202 }
203
204 if (i <= 0)
205 {
206 s->s3->rbuf.left = newb;
207 return(i);
208 }
209 newb+=i;
210 }
211
212 /* done reading, now the book-keeping */
213 s->s3->rbuf.offset = off + n;
214 s->s3->rbuf.left = newb - n;
215 s->packet_length += n;
216 s->rwstate=SSL_NOTHING;
217 return(n);
218 }
219
220/* Call this to get a new input record.
221 * It will return <= 0 if more data is needed, normally due to an error
222 * or non-blocking IO.
223 * When it finishes, one packet has been decoded and can be found in
224 * ssl->s3->rrec.type - is the type of record
225 * ssl->s3->rrec.data, - data
226 * ssl->s3->rrec.length, - number of bytes
227 */
228/* used only by ssl3_read_bytes */
229static int ssl3_get_record(SSL *s)
230 {
231 int ssl_major,ssl_minor,al;
232 int enc_err,n,i,ret= -1;
233 SSL3_RECORD *rr;
234 SSL_SESSION *sess;
235 unsigned char *p;
236 unsigned char md[EVP_MAX_MD_SIZE];
237 short version;
238 unsigned int mac_size;
239 int clear=0;
240 size_t extra;
241 int decryption_failed_or_bad_record_mac = 0;
242 unsigned char *mac = NULL;
243
244 rr= &(s->s3->rrec);
245 sess=s->session;
246
247 if (s->options & SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER)
248 extra=SSL3_RT_MAX_EXTRA;
249 else
250 extra=0;
251 if (extra != s->s3->rbuf.len - SSL3_RT_MAX_PACKET_SIZE)
252 {
253 /* actually likely an application error: SLS_OP_MICROSOFT_BIG_SSLV3_BUFFER
254 * set after ssl3_setup_buffers() was done */
255 SSLerr(SSL_F_SSL3_GET_RECORD, ERR_R_INTERNAL_ERROR);
256 return -1;
257 }
258
259again:
260 /* check if we have the header */
261 if ( (s->rstate != SSL_ST_READ_BODY) ||
262 (s->packet_length < SSL3_RT_HEADER_LENGTH))
263 {
264 n=ssl3_read_n(s, SSL3_RT_HEADER_LENGTH, s->s3->rbuf.len, 0);
265 if (n <= 0) return(n); /* error or non-blocking */
266 s->rstate=SSL_ST_READ_BODY;
267
268 p=s->packet;
269
270 /* Pull apart the header into the SSL3_RECORD */
271 rr->type= *(p++);
272 ssl_major= *(p++);
273 ssl_minor= *(p++);
274 version=(ssl_major<<8)|ssl_minor;
275 n2s(p,rr->length);
276
277 /* Lets check version */
278 if (s->first_packet)
279 {
280 s->first_packet=0;
281 }
282 else
283 {
284 if (version != s->version)
285 {
286 SSLerr(SSL_F_SSL3_GET_RECORD,SSL_R_WRONG_VERSION_NUMBER);
287 /* Send back error using their
288 * version number :-) */
289 s->version=version;
290 al=SSL_AD_PROTOCOL_VERSION;
291 goto f_err;
292 }
293 }
294
295 if ((version>>8) != SSL3_VERSION_MAJOR)
296 {
297 SSLerr(SSL_F_SSL3_GET_RECORD,SSL_R_WRONG_VERSION_NUMBER);
298 goto err;
299 }
300
301 if (rr->length > SSL3_RT_MAX_ENCRYPTED_LENGTH+extra)
302 {
303 al=SSL_AD_RECORD_OVERFLOW;
304 SSLerr(SSL_F_SSL3_GET_RECORD,SSL_R_PACKET_LENGTH_TOO_LONG);
305 goto f_err;
306 }
307
308 /* now s->rstate == SSL_ST_READ_BODY */
309 }
310
311 /* s->rstate == SSL_ST_READ_BODY, get and decode the data */
312
313 if (rr->length > s->packet_length-SSL3_RT_HEADER_LENGTH)
314 {
315 /* now s->packet_length == SSL3_RT_HEADER_LENGTH */
316 i=rr->length;
317 n=ssl3_read_n(s,i,i,1);
318 if (n <= 0) return(n); /* error or non-blocking io */
319 /* now n == rr->length,
320 * and s->packet_length == SSL3_RT_HEADER_LENGTH + rr->length */
321 }
322
323 s->rstate=SSL_ST_READ_HEADER; /* set state for later operations */
324
325 /* At this point, s->packet_length == SSL3_RT_HEADER_LNGTH + rr->length,
326 * and we have that many bytes in s->packet
327 */
328 rr->input= &(s->packet[SSL3_RT_HEADER_LENGTH]);
329
330 /* ok, we can now read from 's->packet' data into 'rr'
331 * rr->input points at rr->length bytes, which
332 * need to be copied into rr->data by either
333 * the decryption or by the decompression
334 * When the data is 'copied' into the rr->data buffer,
335 * rr->input will be pointed at the new buffer */
336
337 /* We now have - encrypted [ MAC [ compressed [ plain ] ] ]
338 * rr->length bytes of encrypted compressed stuff. */
339
340 /* check is not needed I believe */
341 if (rr->length > SSL3_RT_MAX_ENCRYPTED_LENGTH+extra)
342 {
343 al=SSL_AD_RECORD_OVERFLOW;
344 SSLerr(SSL_F_SSL3_GET_RECORD,SSL_R_ENCRYPTED_LENGTH_TOO_LONG);
345 goto f_err;
346 }
347
348 /* decrypt in place in 'rr->input' */
349 rr->data=rr->input;
350
351 enc_err = s->method->ssl3_enc->enc(s,0);
352 if (enc_err <= 0)
353 {
354 if (enc_err == 0)
355 /* SSLerr() and ssl3_send_alert() have been called */
356 goto err;
357
358 /* Otherwise enc_err == -1, which indicates bad padding
359 * (rec->length has not been changed in this case).
360 * To minimize information leaked via timing, we will perform
361 * the MAC computation anyway. */
362 decryption_failed_or_bad_record_mac = 1;
363 }
364
365#ifdef TLS_DEBUG
366printf("dec %d\n",rr->length);
367{ unsigned int z; for (z=0; z<rr->length; z++) printf("%02X%c",rr->data[z],((z+1)%16)?' ':'\n'); }
368printf("\n");
369#endif
370
371 /* r->length is now the compressed data plus mac */
372 if ( (sess == NULL) ||
373 (s->enc_read_ctx == NULL) ||
374 (s->read_hash == NULL))
375 clear=1;
376
377 if (!clear)
378 {
379 mac_size=EVP_MD_size(s->read_hash);
380
381 if (rr->length > SSL3_RT_MAX_COMPRESSED_LENGTH+extra+mac_size)
382 {
383#if 0 /* OK only for stream ciphers (then rr->length is visible from ciphertext anyway) */
384 al=SSL_AD_RECORD_OVERFLOW;
385 SSLerr(SSL_F_SSL3_GET_RECORD,SSL_R_PRE_MAC_LENGTH_TOO_LONG);
386 goto f_err;
387#else
388 decryption_failed_or_bad_record_mac = 1;
389#endif
390 }
391 /* check the MAC for rr->input (it's in mac_size bytes at the tail) */
392 if (rr->length >= mac_size)
393 {
394 rr->length -= mac_size;
395 mac = &rr->data[rr->length];
396 }
397 else
398 {
399 /* record (minus padding) is too short to contain a MAC */
400#if 0 /* OK only for stream ciphers */
401 al=SSL_AD_DECODE_ERROR;
402 SSLerr(SSL_F_SSL3_GET_RECORD,SSL_R_LENGTH_TOO_SHORT);
403 goto f_err;
404#else
405 decryption_failed_or_bad_record_mac = 1;
406 rr->length = 0;
407#endif
408 }
409 i=s->method->ssl3_enc->mac(s,md,0);
410 if (mac == NULL || memcmp(md, mac, mac_size) != 0)
411 {
412 decryption_failed_or_bad_record_mac = 1;
413 }
414 }
415
416 if (decryption_failed_or_bad_record_mac)
417 {
418 /* A separate 'decryption_failed' alert was introduced with TLS 1.0,
419 * SSL 3.0 only has 'bad_record_mac'. But unless a decryption
420 * failure is directly visible from the ciphertext anyway,
421 * we should not reveal which kind of error occured -- this
422 * might become visible to an attacker (e.g. via a logfile) */
423 al=SSL_AD_BAD_RECORD_MAC;
424 SSLerr(SSL_F_SSL3_GET_RECORD,SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC);
425 goto f_err;
426 }
427
428 /* r->length is now just compressed */
429 if (s->expand != NULL)
430 {
431 if (rr->length > SSL3_RT_MAX_COMPRESSED_LENGTH+extra)
432 {
433 al=SSL_AD_RECORD_OVERFLOW;
434 SSLerr(SSL_F_SSL3_GET_RECORD,SSL_R_COMPRESSED_LENGTH_TOO_LONG);
435 goto f_err;
436 }
437 if (!do_uncompress(s))
438 {
439 al=SSL_AD_DECOMPRESSION_FAILURE;
440 SSLerr(SSL_F_SSL3_GET_RECORD,SSL_R_BAD_DECOMPRESSION);
441 goto f_err;
442 }
443 }
444
445 if (rr->length > SSL3_RT_MAX_PLAIN_LENGTH+extra)
446 {
447 al=SSL_AD_RECORD_OVERFLOW;
448 SSLerr(SSL_F_SSL3_GET_RECORD,SSL_R_DATA_LENGTH_TOO_LONG);
449 goto f_err;
450 }
451
452 rr->off=0;
453 /* So at this point the following is true
454 * ssl->s3->rrec.type is the type of record
455 * ssl->s3->rrec.length == number of bytes in record
456 * ssl->s3->rrec.off == offset to first valid byte
457 * ssl->s3->rrec.data == where to take bytes from, increment
458 * after use :-).
459 */
460
461 /* we have pulled in a full packet so zero things */
462 s->packet_length=0;
463
464 /* just read a 0 length packet */
465 if (rr->length == 0) goto again;
466
467 return(1);
468
469f_err:
470 ssl3_send_alert(s,SSL3_AL_FATAL,al);
471err:
472 return(ret);
473 }
474
475static int do_uncompress(SSL *ssl)
476 {
477 int i;
478 SSL3_RECORD *rr;
479
480 rr= &(ssl->s3->rrec);
481 i=COMP_expand_block(ssl->expand,rr->comp,
482 SSL3_RT_MAX_PLAIN_LENGTH,rr->data,(int)rr->length);
483 if (i < 0)
484 return(0);
485 else
486 rr->length=i;
487 rr->data=rr->comp;
488
489 return(1);
490 }
491
492static int do_compress(SSL *ssl)
493 {
494 int i;
495 SSL3_RECORD *wr;
496
497 wr= &(ssl->s3->wrec);
498 i=COMP_compress_block(ssl->compress,wr->data,
499 SSL3_RT_MAX_COMPRESSED_LENGTH,
500 wr->input,(int)wr->length);
501 if (i < 0)
502 return(0);
503 else
504 wr->length=i;
505
506 wr->input=wr->data;
507 return(1);
508 }
509
510/* Call this to write data in records of type 'type'
511 * It will return <= 0 if not all data has been sent or non-blocking IO.
512 */
513int ssl3_write_bytes(SSL *s, int type, const void *buf_, int len)
514 {
515 const unsigned char *buf=buf_;
516 unsigned int tot,n,nw;
517 int i;
518
519 s->rwstate=SSL_NOTHING;
520 tot=s->s3->wnum;
521 s->s3->wnum=0;
522
523 if (SSL_in_init(s) && !s->in_handshake)
524 {
525 i=s->handshake_func(s);
526 if (i < 0) return(i);
527 if (i == 0)
528 {
529 SSLerr(SSL_F_SSL3_WRITE_BYTES,SSL_R_SSL_HANDSHAKE_FAILURE);
530 return -1;
531 }
532 }
533
534 n=(len-tot);
535 for (;;)
536 {
537 if (n > SSL3_RT_MAX_PLAIN_LENGTH)
538 nw=SSL3_RT_MAX_PLAIN_LENGTH;
539 else
540 nw=n;
541
542 i=do_ssl3_write(s, type, &(buf[tot]), nw, 0);
543 if (i <= 0)
544 {
545 s->s3->wnum=tot;
546 return i;
547 }
548
549 if ((i == (int)n) ||
550 (type == SSL3_RT_APPLICATION_DATA &&
551 (s->mode & SSL_MODE_ENABLE_PARTIAL_WRITE)))
552 {
553 /* next chunk of data should get another prepended empty fragment
554 * in ciphersuites with known-IV weakness: */
555 s->s3->empty_fragment_done = 0;
556
557 return tot+i;
558 }
559
560 n-=i;
561 tot+=i;
562 }
563 }
564
565static int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
566 unsigned int len, int create_empty_fragment)
567 {
568 unsigned char *p,*plen;
569 int i,mac_size,clear=0;
570 int prefix_len = 0;
571 SSL3_RECORD *wr;
572 SSL3_BUFFER *wb;
573 SSL_SESSION *sess;
574
575 /* first check if there is a SSL3_BUFFER still being written
576 * out. This will happen with non blocking IO */
577 if (s->s3->wbuf.left != 0)
578 return(ssl3_write_pending(s,type,buf,len));
579
580 /* If we have an alert to send, lets send it */
581 if (s->s3->alert_dispatch)
582 {
583 i=ssl3_dispatch_alert(s);
584 if (i <= 0)
585 return(i);
586 /* if it went, fall through and send more stuff */
587 }
588
589 if (len == 0 && !create_empty_fragment)
590 return 0;
591
592 wr= &(s->s3->wrec);
593 wb= &(s->s3->wbuf);
594 sess=s->session;
595
596 if ( (sess == NULL) ||
597 (s->enc_write_ctx == NULL) ||
598 (s->write_hash == NULL))
599 clear=1;
600
601 if (clear)
602 mac_size=0;
603 else
604 mac_size=EVP_MD_size(s->write_hash);
605
606 /* 'create_empty_fragment' is true only when this function calls itself */
607 if (!clear && !create_empty_fragment && !s->s3->empty_fragment_done)
608 {
609 /* countermeasure against known-IV weakness in CBC ciphersuites
610 * (see http://www.openssl.org/~bodo/tls-cbc.txt) */
611
612 if (s->s3->need_empty_fragments && type == SSL3_RT_APPLICATION_DATA)
613 {
614 /* recursive function call with 'create_empty_fragment' set;
615 * this prepares and buffers the data for an empty fragment
616 * (these 'prefix_len' bytes are sent out later
617 * together with the actual payload) */
618 prefix_len = do_ssl3_write(s, type, buf, 0, 1);
619 if (prefix_len <= 0)
620 goto err;
621
622 if (s->s3->wbuf.len < (size_t)prefix_len + SSL3_RT_MAX_PACKET_SIZE)
623 {
624 /* insufficient space */
625 SSLerr(SSL_F_DO_SSL3_WRITE, ERR_R_INTERNAL_ERROR);
626 goto err;
627 }
628 }
629
630 s->s3->empty_fragment_done = 1;
631 }
632
633 p = wb->buf + prefix_len;
634
635 /* write the header */
636
637 *(p++)=type&0xff;
638 wr->type=type;
639
640 *(p++)=(s->version>>8);
641 *(p++)=s->version&0xff;
642
643 /* field where we are to write out packet length */
644 plen=p;
645 p+=2;
646
647 /* lets setup the record stuff. */
648 wr->data=p;
649 wr->length=(int)len;
650 wr->input=(unsigned char *)buf;
651
652 /* we now 'read' from wr->input, wr->length bytes into
653 * wr->data */
654
655 /* first we compress */
656 if (s->compress != NULL)
657 {
658 if (!do_compress(s))
659 {
660 SSLerr(SSL_F_DO_SSL3_WRITE,SSL_R_COMPRESSION_FAILURE);
661 goto err;
662 }
663 }
664 else
665 {
666 memcpy(wr->data,wr->input,wr->length);
667 wr->input=wr->data;
668 }
669
670 /* we should still have the output to wr->data and the input
671 * from wr->input. Length should be wr->length.
672 * wr->data still points in the wb->buf */
673
674 if (mac_size != 0)
675 {
676 s->method->ssl3_enc->mac(s,&(p[wr->length]),1);
677 wr->length+=mac_size;
678 wr->input=p;
679 wr->data=p;
680 }
681
682 /* ssl3_enc can only have an error on read */
683 s->method->ssl3_enc->enc(s,1);
684
685 /* record length after mac and block padding */
686 s2n(wr->length,plen);
687
688 /* we should now have
689 * wr->data pointing to the encrypted data, which is
690 * wr->length long */
691 wr->type=type; /* not needed but helps for debugging */
692 wr->length+=SSL3_RT_HEADER_LENGTH;
693
694 if (create_empty_fragment)
695 {
696 /* we are in a recursive call;
697 * just return the length, don't write out anything here
698 */
699 return wr->length;
700 }
701
702 /* now let's set up wb */
703 wb->left = prefix_len + wr->length;
704 wb->offset = 0;
705
706 /* memorize arguments so that ssl3_write_pending can detect bad write retries later */
707 s->s3->wpend_tot=len;
708 s->s3->wpend_buf=buf;
709 s->s3->wpend_type=type;
710 s->s3->wpend_ret=len;
711
712 /* we now just need to write the buffer */
713 return ssl3_write_pending(s,type,buf,len);
714err:
715 return -1;
716 }
717
718/* if s->s3->wbuf.left != 0, we need to call this */
719static int ssl3_write_pending(SSL *s, int type, const unsigned char *buf,
720 unsigned int len)
721 {
722 int i;
723
724/* XXXX */
725 if ((s->s3->wpend_tot > (int)len)
726 || ((s->s3->wpend_buf != buf) &&
727 !(s->mode & SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER))
728 || (s->s3->wpend_type != type))
729 {
730 SSLerr(SSL_F_SSL3_WRITE_PENDING,SSL_R_BAD_WRITE_RETRY);
731 return(-1);
732 }
733
734 for (;;)
735 {
736 clear_sys_error();
737 if (s->wbio != NULL)
738 {
739 s->rwstate=SSL_WRITING;
740 i=BIO_write(s->wbio,
741 (char *)&(s->s3->wbuf.buf[s->s3->wbuf.offset]),
742 (unsigned int)s->s3->wbuf.left);
743 }
744 else
745 {
746 SSLerr(SSL_F_SSL3_WRITE_PENDING,SSL_R_BIO_NOT_SET);
747 i= -1;
748 }
749 if (i == s->s3->wbuf.left)
750 {
751 s->s3->wbuf.left=0;
752 s->rwstate=SSL_NOTHING;
753 return(s->s3->wpend_ret);
754 }
755 else if (i <= 0)
756 return(i);
757 s->s3->wbuf.offset+=i;
758 s->s3->wbuf.left-=i;
759 }
760 }
761
762/* Return up to 'len' payload bytes received in 'type' records.
763 * 'type' is one of the following:
764 *
765 * - SSL3_RT_HANDSHAKE (when ssl3_get_message calls us)
766 * - SSL3_RT_APPLICATION_DATA (when ssl3_read calls us)
767 * - 0 (during a shutdown, no data has to be returned)
768 *
769 * If we don't have stored data to work from, read a SSL/TLS record first
770 * (possibly multiple records if we still don't have anything to return).
771 *
772 * This function must handle any surprises the peer may have for us, such as
773 * Alert records (e.g. close_notify), ChangeCipherSpec records (not really
774 * a surprise, but handled as if it were), or renegotiation requests.
775 * Also if record payloads contain fragments too small to process, we store
776 * them until there is enough for the respective protocol (the record protocol
777 * may use arbitrary fragmentation and even interleaving):
778 * Change cipher spec protocol
779 * just 1 byte needed, no need for keeping anything stored
780 * Alert protocol
781 * 2 bytes needed (AlertLevel, AlertDescription)
782 * Handshake protocol
783 * 4 bytes needed (HandshakeType, uint24 length) -- we just have
784 * to detect unexpected Client Hello and Hello Request messages
785 * here, anything else is handled by higher layers
786 * Application data protocol
787 * none of our business
788 */
789int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek)
790 {
791 int al,i,j,ret;
792 unsigned int n;
793 SSL3_RECORD *rr;
794 void (*cb)(const SSL *ssl,int type2,int val)=NULL;
795
796 if (s->s3->rbuf.buf == NULL) /* Not initialized yet */
797 if (!ssl3_setup_buffers(s))
798 return(-1);
799
800 if ((type && (type != SSL3_RT_APPLICATION_DATA) && (type != SSL3_RT_HANDSHAKE) && type) ||
801 (peek && (type != SSL3_RT_APPLICATION_DATA)))
802 {
803 SSLerr(SSL_F_SSL3_READ_BYTES, ERR_R_INTERNAL_ERROR);
804 return -1;
805 }
806
807 if ((type == SSL3_RT_HANDSHAKE) && (s->s3->handshake_fragment_len > 0))
808 /* (partially) satisfy request from storage */
809 {
810 unsigned char *src = s->s3->handshake_fragment;
811 unsigned char *dst = buf;
812 unsigned int k;
813
814 /* peek == 0 */
815 n = 0;
816 while ((len > 0) && (s->s3->handshake_fragment_len > 0))
817 {
818 *dst++ = *src++;
819 len--; s->s3->handshake_fragment_len--;
820 n++;
821 }
822 /* move any remaining fragment bytes: */
823 for (k = 0; k < s->s3->handshake_fragment_len; k++)
824 s->s3->handshake_fragment[k] = *src++;
825 return n;
826 }
827
828 /* Now s->s3->handshake_fragment_len == 0 if type == SSL3_RT_HANDSHAKE. */
829
830 if (!s->in_handshake && SSL_in_init(s))
831 {
832 /* type == SSL3_RT_APPLICATION_DATA */
833 i=s->handshake_func(s);
834 if (i < 0) return(i);
835 if (i == 0)
836 {
837 SSLerr(SSL_F_SSL3_READ_BYTES,SSL_R_SSL_HANDSHAKE_FAILURE);
838 return(-1);
839 }
840 }
841start:
842 s->rwstate=SSL_NOTHING;
843
844 /* s->s3->rrec.type - is the type of record
845 * s->s3->rrec.data, - data
846 * s->s3->rrec.off, - offset into 'data' for next read
847 * s->s3->rrec.length, - number of bytes. */
848 rr = &(s->s3->rrec);
849
850 /* get new packet if necessary */
851 if ((rr->length == 0) || (s->rstate == SSL_ST_READ_BODY))
852 {
853 ret=ssl3_get_record(s);
854 if (ret <= 0) return(ret);
855 }
856
857 /* we now have a packet which can be read and processed */
858
859 if (s->s3->change_cipher_spec /* set when we receive ChangeCipherSpec,
860 * reset by ssl3_get_finished */
861 && (rr->type != SSL3_RT_HANDSHAKE))
862 {
863 al=SSL_AD_UNEXPECTED_MESSAGE;
864 SSLerr(SSL_F_SSL3_READ_BYTES,SSL_R_DATA_BETWEEN_CCS_AND_FINISHED);
865 goto f_err;
866 }
867
868 /* If the other end has shut down, throw anything we read away
869 * (even in 'peek' mode) */
870 if (s->shutdown & SSL_RECEIVED_SHUTDOWN)
871 {
872 rr->length=0;
873 s->rwstate=SSL_NOTHING;
874 return(0);
875 }
876
877
878 if (type == rr->type) /* SSL3_RT_APPLICATION_DATA or SSL3_RT_HANDSHAKE */
879 {
880 /* make sure that we are not getting application data when we
881 * are doing a handshake for the first time */
882 if (SSL_in_init(s) && (type == SSL3_RT_APPLICATION_DATA) &&
883 (s->enc_read_ctx == NULL))
884 {
885 al=SSL_AD_UNEXPECTED_MESSAGE;
886 SSLerr(SSL_F_SSL3_READ_BYTES,SSL_R_APP_DATA_IN_HANDSHAKE);
887 goto f_err;
888 }
889
890 if (len <= 0) return(len);
891
892 if ((unsigned int)len > rr->length)
893 n = rr->length;
894 else
895 n = (unsigned int)len;
896
897 memcpy(buf,&(rr->data[rr->off]),n);
898 if (!peek)
899 {
900 rr->length-=n;
901 rr->off+=n;
902 if (rr->length == 0)
903 {
904 s->rstate=SSL_ST_READ_HEADER;
905 rr->off=0;
906 }
907 }
908 return(n);
909 }
910
911
912 /* If we get here, then type != rr->type; if we have a handshake
913 * message, then it was unexpected (Hello Request or Client Hello). */
914
915 /* In case of record types for which we have 'fragment' storage,
916 * fill that so that we can process the data at a fixed place.
917 */
918 {
919 unsigned int dest_maxlen = 0;
920 unsigned char *dest = NULL;
921 unsigned int *dest_len = NULL;
922
923 if (rr->type == SSL3_RT_HANDSHAKE)
924 {
925 dest_maxlen = sizeof s->s3->handshake_fragment;
926 dest = s->s3->handshake_fragment;
927 dest_len = &s->s3->handshake_fragment_len;
928 }
929 else if (rr->type == SSL3_RT_ALERT)
930 {
931 dest_maxlen = sizeof s->s3->alert_fragment;
932 dest = s->s3->alert_fragment;
933 dest_len = &s->s3->alert_fragment_len;
934 }
935
936 if (dest_maxlen > 0)
937 {
938 n = dest_maxlen - *dest_len; /* available space in 'dest' */
939 if (rr->length < n)
940 n = rr->length; /* available bytes */
941
942 /* now move 'n' bytes: */
943 while (n-- > 0)
944 {
945 dest[(*dest_len)++] = rr->data[rr->off++];
946 rr->length--;
947 }
948
949 if (*dest_len < dest_maxlen)
950 goto start; /* fragment was too small */
951 }
952 }
953
954 /* s->s3->handshake_fragment_len == 4 iff rr->type == SSL3_RT_HANDSHAKE;
955 * s->s3->alert_fragment_len == 2 iff rr->type == SSL3_RT_ALERT.
956 * (Possibly rr is 'empty' now, i.e. rr->length may be 0.) */
957
958 /* If we are a client, check for an incoming 'Hello Request': */
959 if ((!s->server) &&
960 (s->s3->handshake_fragment_len >= 4) &&
961 (s->s3->handshake_fragment[0] == SSL3_MT_HELLO_REQUEST) &&
962 (s->session != NULL) && (s->session->cipher != NULL))
963 {
964 s->s3->handshake_fragment_len = 0;
965
966 if ((s->s3->handshake_fragment[1] != 0) ||
967 (s->s3->handshake_fragment[2] != 0) ||
968 (s->s3->handshake_fragment[3] != 0))
969 {
970 al=SSL_AD_DECODE_ERROR;
971 SSLerr(SSL_F_SSL3_READ_BYTES,SSL_R_BAD_HELLO_REQUEST);
972 goto f_err;
973 }
974
975 if (s->msg_callback)
976 s->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, s->s3->handshake_fragment, 4, s, s->msg_callback_arg);
977
978 if (SSL_is_init_finished(s) &&
979 !(s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS) &&
980 !s->s3->renegotiate)
981 {
982 ssl3_renegotiate(s);
983 if (ssl3_renegotiate_check(s))
984 {
985 i=s->handshake_func(s);
986 if (i < 0) return(i);
987 if (i == 0)
988 {
989 SSLerr(SSL_F_SSL3_READ_BYTES,SSL_R_SSL_HANDSHAKE_FAILURE);
990 return(-1);
991 }
992
993 if (!(s->mode & SSL_MODE_AUTO_RETRY))
994 {
995 if (s->s3->rbuf.left == 0) /* no read-ahead left? */
996 {
997 BIO *bio;
998 /* In the case where we try to read application data,
999 * but we trigger an SSL handshake, we return -1 with
1000 * the retry option set. Otherwise renegotiation may
1001 * cause nasty problems in the blocking world */
1002 s->rwstate=SSL_READING;
1003 bio=SSL_get_rbio(s);
1004 BIO_clear_retry_flags(bio);
1005 BIO_set_retry_read(bio);
1006 return(-1);
1007 }
1008 }
1009 }
1010 }
1011 /* we either finished a handshake or ignored the request,
1012 * now try again to obtain the (application) data we were asked for */
1013 goto start;
1014 }
1015
1016 if (s->s3->alert_fragment_len >= 2)
1017 {
1018 int alert_level = s->s3->alert_fragment[0];
1019 int alert_descr = s->s3->alert_fragment[1];
1020
1021 s->s3->alert_fragment_len = 0;
1022
1023 if (s->msg_callback)
1024 s->msg_callback(0, s->version, SSL3_RT_ALERT, s->s3->alert_fragment, 2, s, s->msg_callback_arg);
1025
1026 if (s->info_callback != NULL)
1027 cb=s->info_callback;
1028 else if (s->ctx->info_callback != NULL)
1029 cb=s->ctx->info_callback;
1030
1031 if (cb != NULL)
1032 {
1033 j = (alert_level << 8) | alert_descr;
1034 cb(s, SSL_CB_READ_ALERT, j);
1035 }
1036
1037 if (alert_level == 1) /* warning */
1038 {
1039 s->s3->warn_alert = alert_descr;
1040 if (alert_descr == SSL_AD_CLOSE_NOTIFY)
1041 {
1042 s->shutdown |= SSL_RECEIVED_SHUTDOWN;
1043 return(0);
1044 }
1045 }
1046 else if (alert_level == 2) /* fatal */
1047 {
1048 char tmp[16];
1049
1050 s->rwstate=SSL_NOTHING;
1051 s->s3->fatal_alert = alert_descr;
1052 SSLerr(SSL_F_SSL3_READ_BYTES, SSL_AD_REASON_OFFSET + alert_descr);
1053 BIO_snprintf(tmp,sizeof tmp,"%d",alert_descr);
1054 ERR_add_error_data(2,"SSL alert number ",tmp);
1055 s->shutdown|=SSL_RECEIVED_SHUTDOWN;
1056 SSL_CTX_remove_session(s->ctx,s->session);
1057 return(0);
1058 }
1059 else
1060 {
1061 al=SSL_AD_ILLEGAL_PARAMETER;
1062 SSLerr(SSL_F_SSL3_READ_BYTES,SSL_R_UNKNOWN_ALERT_TYPE);
1063 goto f_err;
1064 }
1065
1066 goto start;
1067 }
1068
1069 if (s->shutdown & SSL_SENT_SHUTDOWN) /* but we have not received a shutdown */
1070 {
1071 s->rwstate=SSL_NOTHING;
1072 rr->length=0;
1073 return(0);
1074 }
1075
1076 if (rr->type == SSL3_RT_CHANGE_CIPHER_SPEC)
1077 {
1078 /* 'Change Cipher Spec' is just a single byte, so we know
1079 * exactly what the record payload has to look like */
1080 if ( (rr->length != 1) || (rr->off != 0) ||
1081 (rr->data[0] != SSL3_MT_CCS))
1082 {
1083 al=SSL_AD_ILLEGAL_PARAMETER;
1084 SSLerr(SSL_F_SSL3_READ_BYTES,SSL_R_BAD_CHANGE_CIPHER_SPEC);
1085 goto f_err;
1086 }
1087
1088 /* Check we have a cipher to change to */
1089 if (s->s3->tmp.new_cipher == NULL)
1090 {
1091 al=SSL_AD_UNEXPECTED_MESSAGE;
1092 SSLerr(SSL_F_SSL3_GET_CERT_VERIFY,SSL_R_CCS_RECEIVED_EARLY);
1093 goto f_err;
1094 }
1095
1096 rr->length=0;
1097
1098 if (s->msg_callback)
1099 s->msg_callback(0, s->version, SSL3_RT_CHANGE_CIPHER_SPEC, rr->data, 1, s, s->msg_callback_arg);
1100
1101 s->s3->change_cipher_spec=1;
1102 if (!do_change_cipher_spec(s))
1103 goto err;
1104 else
1105 goto start;
1106 }
1107
1108 /* Unexpected handshake message (Client Hello, or protocol violation) */
1109 if ((s->s3->handshake_fragment_len >= 4) && !s->in_handshake)
1110 {
1111 if (((s->state&SSL_ST_MASK) == SSL_ST_OK) &&
1112 !(s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS))
1113 {
1114#if 0 /* worked only because C operator preferences are not as expected (and
1115 * because this is not really needed for clients except for detecting
1116 * protocol violations): */
1117 s->state=SSL_ST_BEFORE|(s->server)
1118 ?SSL_ST_ACCEPT
1119 :SSL_ST_CONNECT;
1120#else
1121 s->state = s->server ? SSL_ST_ACCEPT : SSL_ST_CONNECT;
1122#endif
1123 s->new_session=1;
1124 }
1125 i=s->handshake_func(s);
1126 if (i < 0) return(i);
1127 if (i == 0)
1128 {
1129 SSLerr(SSL_F_SSL3_READ_BYTES,SSL_R_SSL_HANDSHAKE_FAILURE);
1130 return(-1);
1131 }
1132
1133 if (!(s->mode & SSL_MODE_AUTO_RETRY))
1134 {
1135 if (s->s3->rbuf.left == 0) /* no read-ahead left? */
1136 {
1137 BIO *bio;
1138 /* In the case where we try to read application data,
1139 * but we trigger an SSL handshake, we return -1 with
1140 * the retry option set. Otherwise renegotiation may
1141 * cause nasty problems in the blocking world */
1142 s->rwstate=SSL_READING;
1143 bio=SSL_get_rbio(s);
1144 BIO_clear_retry_flags(bio);
1145 BIO_set_retry_read(bio);
1146 return(-1);
1147 }
1148 }
1149 goto start;
1150 }
1151
1152 switch (rr->type)
1153 {
1154 default:
1155#ifndef OPENSSL_NO_TLS
1156 /* TLS just ignores unknown message types */
1157 if (s->version == TLS1_VERSION)
1158 {
1159 rr->length = 0;
1160 goto start;
1161 }
1162#endif
1163 al=SSL_AD_UNEXPECTED_MESSAGE;
1164 SSLerr(SSL_F_SSL3_READ_BYTES,SSL_R_UNEXPECTED_RECORD);
1165 goto f_err;
1166 case SSL3_RT_CHANGE_CIPHER_SPEC:
1167 case SSL3_RT_ALERT:
1168 case SSL3_RT_HANDSHAKE:
1169 /* we already handled all of these, with the possible exception
1170 * of SSL3_RT_HANDSHAKE when s->in_handshake is set, but that
1171 * should not happen when type != rr->type */
1172 al=SSL_AD_UNEXPECTED_MESSAGE;
1173 SSLerr(SSL_F_SSL3_READ_BYTES,ERR_R_INTERNAL_ERROR);
1174 goto f_err;
1175 case SSL3_RT_APPLICATION_DATA:
1176 /* At this point, we were expecting handshake data,
1177 * but have application data. If the library was
1178 * running inside ssl3_read() (i.e. in_read_app_data
1179 * is set) and it makes sense to read application data
1180 * at this point (session renegotiation not yet started),
1181 * we will indulge it.
1182 */
1183 if (s->s3->in_read_app_data &&
1184 (s->s3->total_renegotiations != 0) &&
1185 ((
1186 (s->state & SSL_ST_CONNECT) &&
1187 (s->state >= SSL3_ST_CW_CLNT_HELLO_A) &&
1188 (s->state <= SSL3_ST_CR_SRVR_HELLO_A)
1189 ) || (
1190 (s->state & SSL_ST_ACCEPT) &&
1191 (s->state <= SSL3_ST_SW_HELLO_REQ_A) &&
1192 (s->state >= SSL3_ST_SR_CLNT_HELLO_A)
1193 )
1194 ))
1195 {
1196 s->s3->in_read_app_data=2;
1197 return(-1);
1198 }
1199 else
1200 {
1201 al=SSL_AD_UNEXPECTED_MESSAGE;
1202 SSLerr(SSL_F_SSL3_READ_BYTES,SSL_R_UNEXPECTED_RECORD);
1203 goto f_err;
1204 }
1205 }
1206 /* not reached */
1207
1208f_err:
1209 ssl3_send_alert(s,SSL3_AL_FATAL,al);
1210err:
1211 return(-1);
1212 }
1213
1214static int do_change_cipher_spec(SSL *s)
1215 {
1216 int i;
1217 const char *sender;
1218 int slen;
1219
1220 if (s->state & SSL_ST_ACCEPT)
1221 i=SSL3_CHANGE_CIPHER_SERVER_READ;
1222 else
1223 i=SSL3_CHANGE_CIPHER_CLIENT_READ;
1224
1225 if (s->s3->tmp.key_block == NULL)
1226 {
1227 s->session->cipher=s->s3->tmp.new_cipher;
1228 if (!s->method->ssl3_enc->setup_key_block(s)) return(0);
1229 }
1230
1231 if (!s->method->ssl3_enc->change_cipher_state(s,i))
1232 return(0);
1233
1234 /* we have to record the message digest at
1235 * this point so we can get it before we read
1236 * the finished message */
1237 if (s->state & SSL_ST_CONNECT)
1238 {
1239 sender=s->method->ssl3_enc->server_finished_label;
1240 slen=s->method->ssl3_enc->server_finished_label_len;
1241 }
1242 else
1243 {
1244 sender=s->method->ssl3_enc->client_finished_label;
1245 slen=s->method->ssl3_enc->client_finished_label_len;
1246 }
1247
1248 s->s3->tmp.peer_finish_md_len = s->method->ssl3_enc->final_finish_mac(s,
1249 &(s->s3->finish_dgst1),
1250 &(s->s3->finish_dgst2),
1251 sender,slen,s->s3->tmp.peer_finish_md);
1252
1253 return(1);
1254 }
1255
1256void ssl3_send_alert(SSL *s, int level, int desc)
1257 {
1258 /* Map tls/ssl alert value to correct one */
1259 desc=s->method->ssl3_enc->alert_value(desc);
1260 if (s->version == SSL3_VERSION && desc == SSL_AD_PROTOCOL_VERSION)
1261 desc = SSL_AD_HANDSHAKE_FAILURE; /* SSL 3.0 does not have protocol_version alerts */
1262 if (desc < 0) return;
1263 /* If a fatal one, remove from cache */
1264 if ((level == 2) && (s->session != NULL))
1265 SSL_CTX_remove_session(s->ctx,s->session);
1266
1267 s->s3->alert_dispatch=1;
1268 s->s3->send_alert[0]=level;
1269 s->s3->send_alert[1]=desc;
1270 if (s->s3->wbuf.left == 0) /* data still being written out? */
1271 ssl3_dispatch_alert(s);
1272 /* else data is still being written out, we will get written
1273 * some time in the future */
1274 }
1275
1276int ssl3_dispatch_alert(SSL *s)
1277 {
1278 int i,j;
1279 void (*cb)(const SSL *ssl,int type,int val)=NULL;
1280
1281 s->s3->alert_dispatch=0;
1282 i = do_ssl3_write(s, SSL3_RT_ALERT, &s->s3->send_alert[0], 2, 0);
1283 if (i <= 0)
1284 {
1285 s->s3->alert_dispatch=1;
1286 }
1287 else
1288 {
1289 /* Alert sent to BIO. If it is important, flush it now.
1290 * If the message does not get sent due to non-blocking IO,
1291 * we will not worry too much. */
1292 if (s->s3->send_alert[0] == SSL3_AL_FATAL)
1293 (void)BIO_flush(s->wbio);
1294
1295 if (s->msg_callback)
1296 s->msg_callback(1, s->version, SSL3_RT_ALERT, s->s3->send_alert, 2, s, s->msg_callback_arg);
1297
1298 if (s->info_callback != NULL)
1299 cb=s->info_callback;
1300 else if (s->ctx->info_callback != NULL)
1301 cb=s->ctx->info_callback;
1302
1303 if (cb != NULL)
1304 {
1305 j=(s->s3->send_alert[0]<<8)|s->s3->send_alert[1];
1306 cb(s,SSL_CB_WRITE_ALERT,j);
1307 }
1308 }
1309 return(i);
1310 }
diff --git a/src/lib/libssl/s3_srvr.c b/src/lib/libssl/s3_srvr.c
new file mode 100644
index 0000000000..c4a1a71523
--- /dev/null
+++ b/src/lib/libssl/s3_srvr.c
@@ -0,0 +1,2082 @@
1/* ssl/s3_srvr.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58/* ====================================================================
59 * Copyright (c) 1998-2002 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#define REUSE_CIPHER_BUG
113#define NETSCAPE_HANG_BUG
114
115
116#include <stdio.h>
117#include "ssl_locl.h"
118#include "kssl_lcl.h"
119#include <openssl/buffer.h>
120#include <openssl/rand.h>
121#include <openssl/objects.h>
122#include <openssl/evp.h>
123#include <openssl/x509.h>
124#ifndef OPENSSL_NO_KRB5
125#include <openssl/krb5_asn.h>
126#endif
127#include <openssl/md5.h>
128#include <openssl/fips.h>
129
130static SSL_METHOD *ssl3_get_server_method(int ver);
131static int ssl3_get_client_hello(SSL *s);
132static int ssl3_check_client_hello(SSL *s);
133static int ssl3_send_server_hello(SSL *s);
134static int ssl3_send_server_key_exchange(SSL *s);
135static int ssl3_send_certificate_request(SSL *s);
136static int ssl3_send_server_done(SSL *s);
137static int ssl3_get_client_key_exchange(SSL *s);
138static int ssl3_get_client_certificate(SSL *s);
139static int ssl3_get_cert_verify(SSL *s);
140static int ssl3_send_hello_request(SSL *s);
141
142static SSL_METHOD *ssl3_get_server_method(int ver)
143 {
144 if (ver == SSL3_VERSION)
145 return(SSLv3_server_method());
146 else
147 return(NULL);
148 }
149
150SSL_METHOD *SSLv3_server_method(void)
151 {
152 static int init=1;
153 static SSL_METHOD SSLv3_server_data;
154
155 if (init)
156 {
157 CRYPTO_w_lock(CRYPTO_LOCK_SSL_METHOD);
158
159 if (init)
160 {
161 memcpy((char *)&SSLv3_server_data,(char *)sslv3_base_method(),
162 sizeof(SSL_METHOD));
163 SSLv3_server_data.ssl_accept=ssl3_accept;
164 SSLv3_server_data.get_ssl_method=ssl3_get_server_method;
165 init=0;
166 }
167
168 CRYPTO_w_unlock(CRYPTO_LOCK_SSL_METHOD);
169 }
170 return(&SSLv3_server_data);
171 }
172
173int ssl3_accept(SSL *s)
174 {
175 BUF_MEM *buf;
176 unsigned long l,Time=time(NULL);
177 void (*cb)(const SSL *ssl,int type,int val)=NULL;
178 long num1;
179 int ret= -1;
180 int new_state,state,skip=0;
181
182 RAND_add(&Time,sizeof(Time),0);
183 ERR_clear_error();
184 clear_sys_error();
185
186 if (s->info_callback != NULL)
187 cb=s->info_callback;
188 else if (s->ctx->info_callback != NULL)
189 cb=s->ctx->info_callback;
190
191 /* init things to blank */
192 s->in_handshake++;
193 if (!SSL_in_init(s) || SSL_in_before(s)) SSL_clear(s);
194
195 if (s->cert == NULL)
196 {
197 SSLerr(SSL_F_SSL3_ACCEPT,SSL_R_NO_CERTIFICATE_SET);
198 return(-1);
199 }
200
201 for (;;)
202 {
203 state=s->state;
204
205 switch (s->state)
206 {
207 case SSL_ST_RENEGOTIATE:
208 s->new_session=1;
209 /* s->state=SSL_ST_ACCEPT; */
210
211 case SSL_ST_BEFORE:
212 case SSL_ST_ACCEPT:
213 case SSL_ST_BEFORE|SSL_ST_ACCEPT:
214 case SSL_ST_OK|SSL_ST_ACCEPT:
215
216 s->server=1;
217 if (cb != NULL) cb(s,SSL_CB_HANDSHAKE_START,1);
218
219 if ((s->version>>8) != 3)
220 {
221 SSLerr(SSL_F_SSL3_ACCEPT, ERR_R_INTERNAL_ERROR);
222 return -1;
223 }
224 s->type=SSL_ST_ACCEPT;
225
226 if (s->init_buf == NULL)
227 {
228 if ((buf=BUF_MEM_new()) == NULL)
229 {
230 ret= -1;
231 goto end;
232 }
233 if (!BUF_MEM_grow(buf,SSL3_RT_MAX_PLAIN_LENGTH))
234 {
235 ret= -1;
236 goto end;
237 }
238 s->init_buf=buf;
239 }
240
241 if (!ssl3_setup_buffers(s))
242 {
243 ret= -1;
244 goto end;
245 }
246
247 s->init_num=0;
248
249 if (s->state != SSL_ST_RENEGOTIATE)
250 {
251 /* Ok, we now need to push on a buffering BIO so that
252 * the output is sent in a way that TCP likes :-)
253 */
254 if (!ssl_init_wbio_buffer(s,1)) { ret= -1; goto end; }
255
256 ssl3_init_finished_mac(s);
257 s->state=SSL3_ST_SR_CLNT_HELLO_A;
258 s->ctx->stats.sess_accept++;
259 }
260 else
261 {
262 /* s->state == SSL_ST_RENEGOTIATE,
263 * we will just send a HelloRequest */
264 s->ctx->stats.sess_accept_renegotiate++;
265 s->state=SSL3_ST_SW_HELLO_REQ_A;
266 }
267 break;
268
269 case SSL3_ST_SW_HELLO_REQ_A:
270 case SSL3_ST_SW_HELLO_REQ_B:
271
272 s->shutdown=0;
273 ret=ssl3_send_hello_request(s);
274 if (ret <= 0) goto end;
275 s->s3->tmp.next_state=SSL3_ST_SW_HELLO_REQ_C;
276 s->state=SSL3_ST_SW_FLUSH;
277 s->init_num=0;
278
279 ssl3_init_finished_mac(s);
280 break;
281
282 case SSL3_ST_SW_HELLO_REQ_C:
283 s->state=SSL_ST_OK;
284 break;
285
286 case SSL3_ST_SR_CLNT_HELLO_A:
287 case SSL3_ST_SR_CLNT_HELLO_B:
288 case SSL3_ST_SR_CLNT_HELLO_C:
289
290 s->shutdown=0;
291 ret=ssl3_get_client_hello(s);
292 if (ret <= 0) goto end;
293 s->new_session = 2;
294 s->state=SSL3_ST_SW_SRVR_HELLO_A;
295 s->init_num=0;
296 break;
297
298 case SSL3_ST_SW_SRVR_HELLO_A:
299 case SSL3_ST_SW_SRVR_HELLO_B:
300 ret=ssl3_send_server_hello(s);
301 if (ret <= 0) goto end;
302
303 if (s->hit)
304 s->state=SSL3_ST_SW_CHANGE_A;
305 else
306 s->state=SSL3_ST_SW_CERT_A;
307 s->init_num=0;
308 break;
309
310 case SSL3_ST_SW_CERT_A:
311 case SSL3_ST_SW_CERT_B:
312 /* Check if it is anon DH */
313 if (!(s->s3->tmp.new_cipher->algorithms & SSL_aNULL))
314 {
315 ret=ssl3_send_server_certificate(s);
316 if (ret <= 0) goto end;
317 }
318 else
319 skip=1;
320 s->state=SSL3_ST_SW_KEY_EXCH_A;
321 s->init_num=0;
322 break;
323
324 case SSL3_ST_SW_KEY_EXCH_A:
325 case SSL3_ST_SW_KEY_EXCH_B:
326 l=s->s3->tmp.new_cipher->algorithms;
327
328 /* clear this, it may get reset by
329 * send_server_key_exchange */
330 if ((s->options & SSL_OP_EPHEMERAL_RSA)
331#ifndef OPENSSL_NO_KRB5
332 && !(l & SSL_KRB5)
333#endif /* OPENSSL_NO_KRB5 */
334 )
335 /* option SSL_OP_EPHEMERAL_RSA sends temporary RSA key
336 * even when forbidden by protocol specs
337 * (handshake may fail as clients are not required to
338 * be able to handle this) */
339 s->s3->tmp.use_rsa_tmp=1;
340 else
341 s->s3->tmp.use_rsa_tmp=0;
342
343 /* only send if a DH key exchange, fortezza or
344 * RSA but we have a sign only certificate */
345 if (s->s3->tmp.use_rsa_tmp
346 || (l & (SSL_DH|SSL_kFZA))
347 || ((l & SSL_kRSA)
348 && (s->cert->pkeys[SSL_PKEY_RSA_ENC].privatekey == NULL
349 || (SSL_C_IS_EXPORT(s->s3->tmp.new_cipher)
350 && EVP_PKEY_size(s->cert->pkeys[SSL_PKEY_RSA_ENC].privatekey)*8 > SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher)
351 )
352 )
353 )
354 )
355 {
356 ret=ssl3_send_server_key_exchange(s);
357 if (ret <= 0) goto end;
358 }
359 else
360 skip=1;
361
362 s->state=SSL3_ST_SW_CERT_REQ_A;
363 s->init_num=0;
364 break;
365
366 case SSL3_ST_SW_CERT_REQ_A:
367 case SSL3_ST_SW_CERT_REQ_B:
368 if (/* don't request cert unless asked for it: */
369 !(s->verify_mode & SSL_VERIFY_PEER) ||
370 /* if SSL_VERIFY_CLIENT_ONCE is set,
371 * don't request cert during re-negotiation: */
372 ((s->session->peer != NULL) &&
373 (s->verify_mode & SSL_VERIFY_CLIENT_ONCE)) ||
374 /* never request cert in anonymous ciphersuites
375 * (see section "Certificate request" in SSL 3 drafts
376 * and in RFC 2246): */
377 ((s->s3->tmp.new_cipher->algorithms & SSL_aNULL) &&
378 /* ... except when the application insists on verification
379 * (against the specs, but s3_clnt.c accepts this for SSL 3) */
380 !(s->verify_mode & SSL_VERIFY_FAIL_IF_NO_PEER_CERT)) ||
381 /* never request cert in Kerberos ciphersuites */
382 (s->s3->tmp.new_cipher->algorithms & SSL_aKRB5))
383 {
384 /* no cert request */
385 skip=1;
386 s->s3->tmp.cert_request=0;
387 s->state=SSL3_ST_SW_SRVR_DONE_A;
388 }
389 else
390 {
391 s->s3->tmp.cert_request=1;
392 ret=ssl3_send_certificate_request(s);
393 if (ret <= 0) goto end;
394#ifndef NETSCAPE_HANG_BUG
395 s->state=SSL3_ST_SW_SRVR_DONE_A;
396#else
397 s->state=SSL3_ST_SW_FLUSH;
398 s->s3->tmp.next_state=SSL3_ST_SR_CERT_A;
399#endif
400 s->init_num=0;
401 }
402 break;
403
404 case SSL3_ST_SW_SRVR_DONE_A:
405 case SSL3_ST_SW_SRVR_DONE_B:
406 ret=ssl3_send_server_done(s);
407 if (ret <= 0) goto end;
408 s->s3->tmp.next_state=SSL3_ST_SR_CERT_A;
409 s->state=SSL3_ST_SW_FLUSH;
410 s->init_num=0;
411 break;
412
413 case SSL3_ST_SW_FLUSH:
414 /* number of bytes to be flushed */
415 num1=BIO_ctrl(s->wbio,BIO_CTRL_INFO,0,NULL);
416 if (num1 > 0)
417 {
418 s->rwstate=SSL_WRITING;
419 num1=BIO_flush(s->wbio);
420 if (num1 <= 0) { ret= -1; goto end; }
421 s->rwstate=SSL_NOTHING;
422 }
423
424 s->state=s->s3->tmp.next_state;
425 break;
426
427 case SSL3_ST_SR_CERT_A:
428 case SSL3_ST_SR_CERT_B:
429 /* Check for second client hello (MS SGC) */
430 ret = ssl3_check_client_hello(s);
431 if (ret <= 0)
432 goto end;
433 if (ret == 2)
434 s->state = SSL3_ST_SR_CLNT_HELLO_C;
435 else {
436 if (s->s3->tmp.cert_request)
437 {
438 ret=ssl3_get_client_certificate(s);
439 if (ret <= 0) goto end;
440 }
441 s->init_num=0;
442 s->state=SSL3_ST_SR_KEY_EXCH_A;
443 }
444 break;
445
446 case SSL3_ST_SR_KEY_EXCH_A:
447 case SSL3_ST_SR_KEY_EXCH_B:
448 ret=ssl3_get_client_key_exchange(s);
449 if (ret <= 0) goto end;
450 s->state=SSL3_ST_SR_CERT_VRFY_A;
451 s->init_num=0;
452
453 /* We need to get hashes here so if there is
454 * a client cert, it can be verified */
455 s->method->ssl3_enc->cert_verify_mac(s,
456 &(s->s3->finish_dgst1),
457 &(s->s3->tmp.cert_verify_md[0]));
458 s->method->ssl3_enc->cert_verify_mac(s,
459 &(s->s3->finish_dgst2),
460 &(s->s3->tmp.cert_verify_md[MD5_DIGEST_LENGTH]));
461
462 break;
463
464 case SSL3_ST_SR_CERT_VRFY_A:
465 case SSL3_ST_SR_CERT_VRFY_B:
466
467 /* we should decide if we expected this one */
468 ret=ssl3_get_cert_verify(s);
469 if (ret <= 0) goto end;
470
471 s->state=SSL3_ST_SR_FINISHED_A;
472 s->init_num=0;
473 break;
474
475 case SSL3_ST_SR_FINISHED_A:
476 case SSL3_ST_SR_FINISHED_B:
477 ret=ssl3_get_finished(s,SSL3_ST_SR_FINISHED_A,
478 SSL3_ST_SR_FINISHED_B);
479 if (ret <= 0) goto end;
480 if (s->hit)
481 s->state=SSL_ST_OK;
482 else
483 s->state=SSL3_ST_SW_CHANGE_A;
484 s->init_num=0;
485 break;
486
487 case SSL3_ST_SW_CHANGE_A:
488 case SSL3_ST_SW_CHANGE_B:
489
490 s->session->cipher=s->s3->tmp.new_cipher;
491 if (!s->method->ssl3_enc->setup_key_block(s))
492 { ret= -1; goto end; }
493
494 ret=ssl3_send_change_cipher_spec(s,
495 SSL3_ST_SW_CHANGE_A,SSL3_ST_SW_CHANGE_B);
496
497 if (ret <= 0) goto end;
498 s->state=SSL3_ST_SW_FINISHED_A;
499 s->init_num=0;
500
501 if (!s->method->ssl3_enc->change_cipher_state(s,
502 SSL3_CHANGE_CIPHER_SERVER_WRITE))
503 {
504 ret= -1;
505 goto end;
506 }
507
508 break;
509
510 case SSL3_ST_SW_FINISHED_A:
511 case SSL3_ST_SW_FINISHED_B:
512 ret=ssl3_send_finished(s,
513 SSL3_ST_SW_FINISHED_A,SSL3_ST_SW_FINISHED_B,
514 s->method->ssl3_enc->server_finished_label,
515 s->method->ssl3_enc->server_finished_label_len);
516 if (ret <= 0) goto end;
517 s->state=SSL3_ST_SW_FLUSH;
518 if (s->hit)
519 s->s3->tmp.next_state=SSL3_ST_SR_FINISHED_A;
520 else
521 s->s3->tmp.next_state=SSL_ST_OK;
522 s->init_num=0;
523 break;
524
525 case SSL_ST_OK:
526 /* clean a few things up */
527 ssl3_cleanup_key_block(s);
528
529 BUF_MEM_free(s->init_buf);
530 s->init_buf=NULL;
531
532 /* remove buffering on output */
533 ssl_free_wbio_buffer(s);
534
535 s->init_num=0;
536
537 if (s->new_session == 2) /* skipped if we just sent a HelloRequest */
538 {
539 /* actually not necessarily a 'new' session unless
540 * SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION is set */
541
542 s->new_session=0;
543
544 ssl_update_cache(s,SSL_SESS_CACHE_SERVER);
545
546 s->ctx->stats.sess_accept_good++;
547 /* s->server=1; */
548 s->handshake_func=ssl3_accept;
549
550 if (cb != NULL) cb(s,SSL_CB_HANDSHAKE_DONE,1);
551 }
552
553 ret = 1;
554 goto end;
555 /* break; */
556
557 default:
558 SSLerr(SSL_F_SSL3_ACCEPT,SSL_R_UNKNOWN_STATE);
559 ret= -1;
560 goto end;
561 /* break; */
562 }
563
564 if (!s->s3->tmp.reuse_message && !skip)
565 {
566 if (s->debug)
567 {
568 if ((ret=BIO_flush(s->wbio)) <= 0)
569 goto end;
570 }
571
572
573 if ((cb != NULL) && (s->state != state))
574 {
575 new_state=s->state;
576 s->state=state;
577 cb(s,SSL_CB_ACCEPT_LOOP,1);
578 s->state=new_state;
579 }
580 }
581 skip=0;
582 }
583end:
584 /* BIO_flush(s->wbio); */
585
586 s->in_handshake--;
587 if (cb != NULL)
588 cb(s,SSL_CB_ACCEPT_EXIT,ret);
589 return(ret);
590 }
591
592static int ssl3_send_hello_request(SSL *s)
593 {
594 unsigned char *p;
595
596 if (s->state == SSL3_ST_SW_HELLO_REQ_A)
597 {
598 p=(unsigned char *)s->init_buf->data;
599 *(p++)=SSL3_MT_HELLO_REQUEST;
600 *(p++)=0;
601 *(p++)=0;
602 *(p++)=0;
603
604 s->state=SSL3_ST_SW_HELLO_REQ_B;
605 /* number of bytes to write */
606 s->init_num=4;
607 s->init_off=0;
608 }
609
610 /* SSL3_ST_SW_HELLO_REQ_B */
611 return(ssl3_do_write(s,SSL3_RT_HANDSHAKE));
612 }
613
614static int ssl3_check_client_hello(SSL *s)
615 {
616 int ok;
617 long n;
618
619 /* this function is called when we really expect a Certificate message,
620 * so permit appropriate message length */
621 n=ssl3_get_message(s,
622 SSL3_ST_SR_CERT_A,
623 SSL3_ST_SR_CERT_B,
624 -1,
625 s->max_cert_list,
626 &ok);
627 if (!ok) return((int)n);
628 s->s3->tmp.reuse_message = 1;
629 if (s->s3->tmp.message_type == SSL3_MT_CLIENT_HELLO)
630 {
631 /* Throw away what we have done so far in the current handshake,
632 * which will now be aborted. (A full SSL_clear would be too much.)
633 * I hope that tmp.dh is the only thing that may need to be cleared
634 * when a handshake is not completed ... */
635#ifndef OPENSSL_NO_DH
636 if (s->s3->tmp.dh != NULL)
637 {
638 DH_free(s->s3->tmp.dh);
639 s->s3->tmp.dh = NULL;
640 }
641#endif
642 return 2;
643 }
644 return 1;
645}
646
647static int ssl3_get_client_hello(SSL *s)
648 {
649 int i,j,ok,al,ret= -1;
650 long n;
651 unsigned long id;
652 unsigned char *p,*d,*q;
653 SSL_CIPHER *c;
654 SSL_COMP *comp=NULL;
655 STACK_OF(SSL_CIPHER) *ciphers=NULL;
656
657 /* We do this so that we will respond with our native type.
658 * If we are TLSv1 and we get SSLv3, we will respond with TLSv1,
659 * This down switching should be handled by a different method.
660 * If we are SSLv3, we will respond with SSLv3, even if prompted with
661 * TLSv1.
662 */
663 if (s->state == SSL3_ST_SR_CLNT_HELLO_A)
664 {
665 s->first_packet=1;
666 s->state=SSL3_ST_SR_CLNT_HELLO_B;
667 }
668 n=ssl3_get_message(s,
669 SSL3_ST_SR_CLNT_HELLO_B,
670 SSL3_ST_SR_CLNT_HELLO_C,
671 SSL3_MT_CLIENT_HELLO,
672 SSL3_RT_MAX_PLAIN_LENGTH,
673 &ok);
674
675 if (!ok) return((int)n);
676 d=p=(unsigned char *)s->init_msg;
677
678 /* use version from inside client hello, not from record header
679 * (may differ: see RFC 2246, Appendix E, second paragraph) */
680 s->client_version=(((int)p[0])<<8)|(int)p[1];
681 p+=2;
682
683 if (s->client_version < s->version)
684 {
685 SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO, SSL_R_WRONG_VERSION_NUMBER);
686 if ((s->client_version>>8) == SSL3_VERSION_MAJOR)
687 {
688 /* similar to ssl3_get_record, send alert using remote version number */
689 s->version = s->client_version;
690 }
691 al = SSL_AD_PROTOCOL_VERSION;
692 goto f_err;
693 }
694
695 /* load the client random */
696 memcpy(s->s3->client_random,p,SSL3_RANDOM_SIZE);
697 p+=SSL3_RANDOM_SIZE;
698
699 /* get the session-id */
700 j= *(p++);
701
702 s->hit=0;
703 /* Versions before 0.9.7 always allow session reuse during renegotiation
704 * (i.e. when s->new_session is true), option
705 * SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION is new with 0.9.7.
706 * Maybe this optional behaviour should always have been the default,
707 * but we cannot safely change the default behaviour (or new applications
708 * might be written that become totally unsecure when compiled with
709 * an earlier library version)
710 */
711 if (j == 0 || (s->new_session && (s->options & SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION)))
712 {
713 if (!ssl_get_new_session(s,1))
714 goto err;
715 }
716 else
717 {
718 i=ssl_get_prev_session(s,p,j);
719 if (i == 1)
720 { /* previous session */
721 s->hit=1;
722 }
723 else if (i == -1)
724 goto err;
725 else /* i == 0 */
726 {
727 if (!ssl_get_new_session(s,1))
728 goto err;
729 }
730 }
731
732 p+=j;
733 n2s(p,i);
734 if ((i == 0) && (j != 0))
735 {
736 /* we need a cipher if we are not resuming a session */
737 al=SSL_AD_ILLEGAL_PARAMETER;
738 SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO,SSL_R_NO_CIPHERS_SPECIFIED);
739 goto f_err;
740 }
741 if ((p+i) >= (d+n))
742 {
743 /* not enough data */
744 al=SSL_AD_DECODE_ERROR;
745 SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO,SSL_R_LENGTH_MISMATCH);
746 goto f_err;
747 }
748 if ((i > 0) && (ssl_bytes_to_cipher_list(s,p,i,&(ciphers))
749 == NULL))
750 {
751 goto err;
752 }
753 p+=i;
754
755 /* If it is a hit, check that the cipher is in the list */
756 if ((s->hit) && (i > 0))
757 {
758 j=0;
759 id=s->session->cipher->id;
760
761#ifdef CIPHER_DEBUG
762 printf("client sent %d ciphers\n",sk_num(ciphers));
763#endif
764 for (i=0; i<sk_SSL_CIPHER_num(ciphers); i++)
765 {
766 c=sk_SSL_CIPHER_value(ciphers,i);
767#ifdef CIPHER_DEBUG
768 printf("client [%2d of %2d]:%s\n",
769 i,sk_num(ciphers),SSL_CIPHER_get_name(c));
770#endif
771 if (c->id == id)
772 {
773 j=1;
774 break;
775 }
776 }
777 if (j == 0)
778 {
779 if ((s->options & SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG) && (sk_SSL_CIPHER_num(ciphers) == 1))
780 {
781 /* Very bad for multi-threading.... */
782 s->session->cipher=sk_SSL_CIPHER_value(ciphers,
783 0);
784 }
785 else
786 {
787 /* we need to have the cipher in the cipher
788 * list if we are asked to reuse it */
789 al=SSL_AD_ILLEGAL_PARAMETER;
790 SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO,SSL_R_REQUIRED_CIPHER_MISSING);
791 goto f_err;
792 }
793 }
794 }
795
796 /* compression */
797 i= *(p++);
798 if ((p+i) > (d+n))
799 {
800 /* not enough data */
801 al=SSL_AD_DECODE_ERROR;
802 SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO,SSL_R_LENGTH_MISMATCH);
803 goto f_err;
804 }
805 q=p;
806 for (j=0; j<i; j++)
807 {
808 if (p[j] == 0) break;
809 }
810
811 p+=i;
812 if (j >= i)
813 {
814 /* no compress */
815 al=SSL_AD_DECODE_ERROR;
816 SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO,SSL_R_NO_COMPRESSION_SPECIFIED);
817 goto f_err;
818 }
819
820 /* Worst case, we will use the NULL compression, but if we have other
821 * options, we will now look for them. We have i-1 compression
822 * algorithms from the client, starting at q. */
823 s->s3->tmp.new_compression=NULL;
824 if (s->ctx->comp_methods != NULL)
825 { /* See if we have a match */
826 int m,nn,o,v,done=0;
827
828 nn=sk_SSL_COMP_num(s->ctx->comp_methods);
829 for (m=0; m<nn; m++)
830 {
831 comp=sk_SSL_COMP_value(s->ctx->comp_methods,m);
832 v=comp->id;
833 for (o=0; o<i; o++)
834 {
835 if (v == q[o])
836 {
837 done=1;
838 break;
839 }
840 }
841 if (done) break;
842 }
843 if (done)
844 s->s3->tmp.new_compression=comp;
845 else
846 comp=NULL;
847 }
848
849 /* TLS does not mind if there is extra stuff */
850#if 0 /* SSL 3.0 does not mind either, so we should disable this test
851 * (was enabled in 0.9.6d through 0.9.6j and 0.9.7 through 0.9.7b,
852 * in earlier SSLeay/OpenSSL releases this test existed but was buggy) */
853 if (s->version == SSL3_VERSION)
854 {
855 if (p < (d+n))
856 {
857 /* wrong number of bytes,
858 * there could be more to follow */
859 al=SSL_AD_DECODE_ERROR;
860 SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO,SSL_R_LENGTH_MISMATCH);
861 goto f_err;
862 }
863 }
864#endif
865
866 /* Given s->session->ciphers and SSL_get_ciphers, we must
867 * pick a cipher */
868
869 if (!s->hit)
870 {
871 s->session->compress_meth=(comp == NULL)?0:comp->id;
872 if (s->session->ciphers != NULL)
873 sk_SSL_CIPHER_free(s->session->ciphers);
874 s->session->ciphers=ciphers;
875 if (ciphers == NULL)
876 {
877 al=SSL_AD_ILLEGAL_PARAMETER;
878 SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO,SSL_R_NO_CIPHERS_PASSED);
879 goto f_err;
880 }
881 ciphers=NULL;
882 c=ssl3_choose_cipher(s,s->session->ciphers,
883 SSL_get_ciphers(s));
884
885 if (c == NULL)
886 {
887 al=SSL_AD_HANDSHAKE_FAILURE;
888 SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO,SSL_R_NO_SHARED_CIPHER);
889 goto f_err;
890 }
891 s->s3->tmp.new_cipher=c;
892 }
893 else
894 {
895 /* Session-id reuse */
896#ifdef REUSE_CIPHER_BUG
897 STACK_OF(SSL_CIPHER) *sk;
898 SSL_CIPHER *nc=NULL;
899 SSL_CIPHER *ec=NULL;
900
901 if (s->options & SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG)
902 {
903 sk=s->session->ciphers;
904 for (i=0; i<sk_SSL_CIPHER_num(sk); i++)
905 {
906 c=sk_SSL_CIPHER_value(sk,i);
907 if (c->algorithms & SSL_eNULL)
908 nc=c;
909 if (SSL_C_IS_EXPORT(c))
910 ec=c;
911 }
912 if (nc != NULL)
913 s->s3->tmp.new_cipher=nc;
914 else if (ec != NULL)
915 s->s3->tmp.new_cipher=ec;
916 else
917 s->s3->tmp.new_cipher=s->session->cipher;
918 }
919 else
920#endif
921 s->s3->tmp.new_cipher=s->session->cipher;
922 }
923
924 /* we now have the following setup.
925 * client_random
926 * cipher_list - our prefered list of ciphers
927 * ciphers - the clients prefered list of ciphers
928 * compression - basically ignored right now
929 * ssl version is set - sslv3
930 * s->session - The ssl session has been setup.
931 * s->hit - session reuse flag
932 * s->tmp.new_cipher - the new cipher to use.
933 */
934
935 ret=1;
936 if (0)
937 {
938f_err:
939 ssl3_send_alert(s,SSL3_AL_FATAL,al);
940 }
941err:
942 if (ciphers != NULL) sk_SSL_CIPHER_free(ciphers);
943 return(ret);
944 }
945
946static int ssl3_send_server_hello(SSL *s)
947 {
948 unsigned char *buf;
949 unsigned char *p,*d;
950 int i,sl;
951 unsigned long l,Time;
952
953 if (s->state == SSL3_ST_SW_SRVR_HELLO_A)
954 {
955 buf=(unsigned char *)s->init_buf->data;
956 p=s->s3->server_random;
957 Time=time(NULL); /* Time */
958 l2n(Time,p);
959 if(RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE-4) <= 0)
960 return -1;
961 /* Do the message type and length last */
962 d=p= &(buf[4]);
963
964 *(p++)=s->version>>8;
965 *(p++)=s->version&0xff;
966
967 /* Random stuff */
968 memcpy(p,s->s3->server_random,SSL3_RANDOM_SIZE);
969 p+=SSL3_RANDOM_SIZE;
970
971 /* now in theory we have 3 options to sending back the
972 * session id. If it is a re-use, we send back the
973 * old session-id, if it is a new session, we send
974 * back the new session-id or we send back a 0 length
975 * session-id if we want it to be single use.
976 * Currently I will not implement the '0' length session-id
977 * 12-Jan-98 - I'll now support the '0' length stuff.
978 */
979 if (!(s->ctx->session_cache_mode & SSL_SESS_CACHE_SERVER))
980 s->session->session_id_length=0;
981
982 sl=s->session->session_id_length;
983 if (sl > sizeof s->session->session_id)
984 {
985 SSLerr(SSL_F_SSL3_SEND_SERVER_HELLO, ERR_R_INTERNAL_ERROR);
986 return -1;
987 }
988 *(p++)=sl;
989 memcpy(p,s->session->session_id,sl);
990 p+=sl;
991
992 /* put the cipher */
993 i=ssl3_put_cipher_by_char(s->s3->tmp.new_cipher,p);
994 p+=i;
995
996 /* put the compression method */
997 if (s->s3->tmp.new_compression == NULL)
998 *(p++)=0;
999 else
1000 *(p++)=s->s3->tmp.new_compression->id;
1001
1002 /* do the header */
1003 l=(p-d);
1004 d=buf;
1005 *(d++)=SSL3_MT_SERVER_HELLO;
1006 l2n3(l,d);
1007
1008 s->state=SSL3_ST_CW_CLNT_HELLO_B;
1009 /* number of bytes to write */
1010 s->init_num=p-buf;
1011 s->init_off=0;
1012 }
1013
1014 /* SSL3_ST_CW_CLNT_HELLO_B */
1015 return(ssl3_do_write(s,SSL3_RT_HANDSHAKE));
1016 }
1017
1018static int ssl3_send_server_done(SSL *s)
1019 {
1020 unsigned char *p;
1021
1022 if (s->state == SSL3_ST_SW_SRVR_DONE_A)
1023 {
1024 p=(unsigned char *)s->init_buf->data;
1025
1026 /* do the header */
1027 *(p++)=SSL3_MT_SERVER_DONE;
1028 *(p++)=0;
1029 *(p++)=0;
1030 *(p++)=0;
1031
1032 s->state=SSL3_ST_SW_SRVR_DONE_B;
1033 /* number of bytes to write */
1034 s->init_num=4;
1035 s->init_off=0;
1036 }
1037
1038 /* SSL3_ST_CW_CLNT_HELLO_B */
1039 return(ssl3_do_write(s,SSL3_RT_HANDSHAKE));
1040 }
1041
1042static int ssl3_send_server_key_exchange(SSL *s)
1043 {
1044#ifndef OPENSSL_NO_RSA
1045 unsigned char *q;
1046 int j,num;
1047 RSA *rsa;
1048 unsigned char md_buf[MD5_DIGEST_LENGTH+SHA_DIGEST_LENGTH];
1049 unsigned int u;
1050#endif
1051#ifndef OPENSSL_NO_DH
1052 DH *dh=NULL,*dhp;
1053#endif
1054 EVP_PKEY *pkey;
1055 unsigned char *p,*d;
1056 int al,i;
1057 unsigned long type;
1058 int n;
1059 CERT *cert;
1060 BIGNUM *r[4];
1061 int nr[4],kn;
1062 BUF_MEM *buf;
1063 EVP_MD_CTX md_ctx;
1064
1065 EVP_MD_CTX_init(&md_ctx);
1066 if (s->state == SSL3_ST_SW_KEY_EXCH_A)
1067 {
1068 type=s->s3->tmp.new_cipher->algorithms & SSL_MKEY_MASK;
1069 cert=s->cert;
1070
1071 buf=s->init_buf;
1072
1073 r[0]=r[1]=r[2]=r[3]=NULL;
1074 n=0;
1075#ifndef OPENSSL_NO_RSA
1076 if (type & SSL_kRSA)
1077 {
1078 rsa=cert->rsa_tmp;
1079 if ((rsa == NULL) && (s->cert->rsa_tmp_cb != NULL))
1080 {
1081 rsa=s->cert->rsa_tmp_cb(s,
1082 SSL_C_IS_EXPORT(s->s3->tmp.new_cipher),
1083 SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher));
1084 if(rsa == NULL)
1085 {
1086 al=SSL_AD_HANDSHAKE_FAILURE;
1087 SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,SSL_R_ERROR_GENERATING_TMP_RSA_KEY);
1088 goto f_err;
1089 }
1090 RSA_up_ref(rsa);
1091 cert->rsa_tmp=rsa;
1092 }
1093 if (rsa == NULL)
1094 {
1095 al=SSL_AD_HANDSHAKE_FAILURE;
1096 SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,SSL_R_MISSING_TMP_RSA_KEY);
1097 goto f_err;
1098 }
1099 r[0]=rsa->n;
1100 r[1]=rsa->e;
1101 s->s3->tmp.use_rsa_tmp=1;
1102 }
1103 else
1104#endif
1105#ifndef OPENSSL_NO_DH
1106 if (type & SSL_kEDH)
1107 {
1108 dhp=cert->dh_tmp;
1109 if ((dhp == NULL) && (s->cert->dh_tmp_cb != NULL))
1110 dhp=s->cert->dh_tmp_cb(s,
1111 SSL_C_IS_EXPORT(s->s3->tmp.new_cipher),
1112 SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher));
1113 if (dhp == NULL)
1114 {
1115 al=SSL_AD_HANDSHAKE_FAILURE;
1116 SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,SSL_R_MISSING_TMP_DH_KEY);
1117 goto f_err;
1118 }
1119
1120 if (s->s3->tmp.dh != NULL)
1121 {
1122 DH_free(dh);
1123 SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE, ERR_R_INTERNAL_ERROR);
1124 goto err;
1125 }
1126
1127 if ((dh=DHparams_dup(dhp)) == NULL)
1128 {
1129 SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,ERR_R_DH_LIB);
1130 goto err;
1131 }
1132
1133 s->s3->tmp.dh=dh;
1134 if ((dhp->pub_key == NULL ||
1135 dhp->priv_key == NULL ||
1136 (s->options & SSL_OP_SINGLE_DH_USE)))
1137 {
1138 if(!DH_generate_key(dh))
1139 {
1140 SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,
1141 ERR_R_DH_LIB);
1142 goto err;
1143 }
1144 }
1145 else
1146 {
1147 dh->pub_key=BN_dup(dhp->pub_key);
1148 dh->priv_key=BN_dup(dhp->priv_key);
1149 if ((dh->pub_key == NULL) ||
1150 (dh->priv_key == NULL))
1151 {
1152 SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,ERR_R_DH_LIB);
1153 goto err;
1154 }
1155 }
1156 r[0]=dh->p;
1157 r[1]=dh->g;
1158 r[2]=dh->pub_key;
1159 }
1160 else
1161#endif
1162 {
1163 al=SSL_AD_HANDSHAKE_FAILURE;
1164 SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE);
1165 goto f_err;
1166 }
1167 for (i=0; r[i] != NULL; i++)
1168 {
1169 nr[i]=BN_num_bytes(r[i]);
1170 n+=2+nr[i];
1171 }
1172
1173 if (!(s->s3->tmp.new_cipher->algorithms & SSL_aNULL))
1174 {
1175 if ((pkey=ssl_get_sign_pkey(s,s->s3->tmp.new_cipher))
1176 == NULL)
1177 {
1178 al=SSL_AD_DECODE_ERROR;
1179 goto f_err;
1180 }
1181 kn=EVP_PKEY_size(pkey);
1182 }
1183 else
1184 {
1185 pkey=NULL;
1186 kn=0;
1187 }
1188
1189 if (!BUF_MEM_grow_clean(buf,n+4+kn))
1190 {
1191 SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,ERR_LIB_BUF);
1192 goto err;
1193 }
1194 d=(unsigned char *)s->init_buf->data;
1195 p= &(d[4]);
1196
1197 for (i=0; r[i] != NULL; i++)
1198 {
1199 s2n(nr[i],p);
1200 BN_bn2bin(r[i],p);
1201 p+=nr[i];
1202 }
1203
1204 /* not anonymous */
1205 if (pkey != NULL)
1206 {
1207 /* n is the length of the params, they start at &(d[4])
1208 * and p points to the space at the end. */
1209#ifndef OPENSSL_NO_RSA
1210 if (pkey->type == EVP_PKEY_RSA)
1211 {
1212 q=md_buf;
1213 j=0;
1214 for (num=2; num > 0; num--)
1215 {
1216 EVP_MD_CTX_set_flags(&md_ctx,
1217 EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
1218 EVP_DigestInit_ex(&md_ctx,(num == 2)
1219 ?s->ctx->md5:s->ctx->sha1, NULL);
1220 EVP_DigestUpdate(&md_ctx,&(s->s3->client_random[0]),SSL3_RANDOM_SIZE);
1221 EVP_DigestUpdate(&md_ctx,&(s->s3->server_random[0]),SSL3_RANDOM_SIZE);
1222 EVP_DigestUpdate(&md_ctx,&(d[4]),n);
1223 EVP_DigestFinal_ex(&md_ctx,q,
1224 (unsigned int *)&i);
1225 q+=i;
1226 j+=i;
1227 }
1228 if (RSA_sign(NID_md5_sha1, md_buf, j,
1229 &(p[2]), &u, pkey->pkey.rsa) <= 0)
1230 {
1231 SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,ERR_LIB_RSA);
1232 goto err;
1233 }
1234 s2n(u,p);
1235 n+=u+2;
1236 }
1237 else
1238#endif
1239#if !defined(OPENSSL_NO_DSA)
1240 if (pkey->type == EVP_PKEY_DSA)
1241 {
1242 /* lets do DSS */
1243 EVP_SignInit_ex(&md_ctx,EVP_dss1(), NULL);
1244 EVP_SignUpdate(&md_ctx,&(s->s3->client_random[0]),SSL3_RANDOM_SIZE);
1245 EVP_SignUpdate(&md_ctx,&(s->s3->server_random[0]),SSL3_RANDOM_SIZE);
1246 EVP_SignUpdate(&md_ctx,&(d[4]),n);
1247 if (!EVP_SignFinal(&md_ctx,&(p[2]),
1248 (unsigned int *)&i,pkey))
1249 {
1250 SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,ERR_LIB_DSA);
1251 goto err;
1252 }
1253 s2n(i,p);
1254 n+=i+2;
1255 }
1256 else
1257#endif
1258 {
1259 /* Is this error check actually needed? */
1260 al=SSL_AD_HANDSHAKE_FAILURE;
1261 SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,SSL_R_UNKNOWN_PKEY_TYPE);
1262 goto f_err;
1263 }
1264 }
1265
1266 *(d++)=SSL3_MT_SERVER_KEY_EXCHANGE;
1267 l2n3(n,d);
1268
1269 /* we should now have things packed up, so lets send
1270 * it off */
1271 s->init_num=n+4;
1272 s->init_off=0;
1273 }
1274
1275 s->state = SSL3_ST_SW_KEY_EXCH_B;
1276 EVP_MD_CTX_cleanup(&md_ctx);
1277 return(ssl3_do_write(s,SSL3_RT_HANDSHAKE));
1278f_err:
1279 ssl3_send_alert(s,SSL3_AL_FATAL,al);
1280err:
1281 EVP_MD_CTX_cleanup(&md_ctx);
1282 return(-1);
1283 }
1284
1285static int ssl3_send_certificate_request(SSL *s)
1286 {
1287 unsigned char *p,*d;
1288 int i,j,nl,off,n;
1289 STACK_OF(X509_NAME) *sk=NULL;
1290 X509_NAME *name;
1291 BUF_MEM *buf;
1292
1293 if (s->state == SSL3_ST_SW_CERT_REQ_A)
1294 {
1295 buf=s->init_buf;
1296
1297 d=p=(unsigned char *)&(buf->data[4]);
1298
1299 /* get the list of acceptable cert types */
1300 p++;
1301 n=ssl3_get_req_cert_type(s,p);
1302 d[0]=n;
1303 p+=n;
1304 n++;
1305
1306 off=n;
1307 p+=2;
1308 n+=2;
1309
1310 sk=SSL_get_client_CA_list(s);
1311 nl=0;
1312 if (sk != NULL)
1313 {
1314 for (i=0; i<sk_X509_NAME_num(sk); i++)
1315 {
1316 name=sk_X509_NAME_value(sk,i);
1317 j=i2d_X509_NAME(name,NULL);
1318 if (!BUF_MEM_grow_clean(buf,4+n+j+2))
1319 {
1320 SSLerr(SSL_F_SSL3_SEND_CERTIFICATE_REQUEST,ERR_R_BUF_LIB);
1321 goto err;
1322 }
1323 p=(unsigned char *)&(buf->data[4+n]);
1324 if (!(s->options & SSL_OP_NETSCAPE_CA_DN_BUG))
1325 {
1326 s2n(j,p);
1327 i2d_X509_NAME(name,&p);
1328 n+=2+j;
1329 nl+=2+j;
1330 }
1331 else
1332 {
1333 d=p;
1334 i2d_X509_NAME(name,&p);
1335 j-=2; s2n(j,d); j+=2;
1336 n+=j;
1337 nl+=j;
1338 }
1339 }
1340 }
1341 /* else no CA names */
1342 p=(unsigned char *)&(buf->data[4+off]);
1343 s2n(nl,p);
1344
1345 d=(unsigned char *)buf->data;
1346 *(d++)=SSL3_MT_CERTIFICATE_REQUEST;
1347 l2n3(n,d);
1348
1349 /* we should now have things packed up, so lets send
1350 * it off */
1351
1352 s->init_num=n+4;
1353 s->init_off=0;
1354#ifdef NETSCAPE_HANG_BUG
1355 p=(unsigned char *)s->init_buf->data + s->init_num;
1356
1357 /* do the header */
1358 *(p++)=SSL3_MT_SERVER_DONE;
1359 *(p++)=0;
1360 *(p++)=0;
1361 *(p++)=0;
1362 s->init_num += 4;
1363#endif
1364
1365 s->state = SSL3_ST_SW_CERT_REQ_B;
1366 }
1367
1368 /* SSL3_ST_SW_CERT_REQ_B */
1369 return(ssl3_do_write(s,SSL3_RT_HANDSHAKE));
1370err:
1371 return(-1);
1372 }
1373
1374static int ssl3_get_client_key_exchange(SSL *s)
1375 {
1376 int i,al,ok;
1377 long n;
1378 unsigned long l;
1379 unsigned char *p;
1380#ifndef OPENSSL_NO_RSA
1381 RSA *rsa=NULL;
1382 EVP_PKEY *pkey=NULL;
1383#endif
1384#ifndef OPENSSL_NO_DH
1385 BIGNUM *pub=NULL;
1386 DH *dh_srvr;
1387#endif
1388#ifndef OPENSSL_NO_KRB5
1389 KSSL_ERR kssl_err;
1390#endif /* OPENSSL_NO_KRB5 */
1391
1392 n=ssl3_get_message(s,
1393 SSL3_ST_SR_KEY_EXCH_A,
1394 SSL3_ST_SR_KEY_EXCH_B,
1395 SSL3_MT_CLIENT_KEY_EXCHANGE,
1396 2048, /* ??? */
1397 &ok);
1398
1399 if (!ok) return((int)n);
1400 p=(unsigned char *)s->init_msg;
1401
1402 l=s->s3->tmp.new_cipher->algorithms;
1403
1404#ifndef OPENSSL_NO_RSA
1405 if (l & SSL_kRSA)
1406 {
1407 /* FIX THIS UP EAY EAY EAY EAY */
1408 if (s->s3->tmp.use_rsa_tmp)
1409 {
1410 if ((s->cert != NULL) && (s->cert->rsa_tmp != NULL))
1411 rsa=s->cert->rsa_tmp;
1412 /* Don't do a callback because rsa_tmp should
1413 * be sent already */
1414 if (rsa == NULL)
1415 {
1416 al=SSL_AD_HANDSHAKE_FAILURE;
1417 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,SSL_R_MISSING_TMP_RSA_PKEY);
1418 goto f_err;
1419
1420 }
1421 }
1422 else
1423 {
1424 pkey=s->cert->pkeys[SSL_PKEY_RSA_ENC].privatekey;
1425 if ( (pkey == NULL) ||
1426 (pkey->type != EVP_PKEY_RSA) ||
1427 (pkey->pkey.rsa == NULL))
1428 {
1429 al=SSL_AD_HANDSHAKE_FAILURE;
1430 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,SSL_R_MISSING_RSA_CERTIFICATE);
1431 goto f_err;
1432 }
1433 rsa=pkey->pkey.rsa;
1434 }
1435
1436 /* TLS */
1437 if (s->version > SSL3_VERSION)
1438 {
1439 n2s(p,i);
1440 if (n != i+2)
1441 {
1442 if (!(s->options & SSL_OP_TLS_D5_BUG))
1443 {
1444 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG);
1445 goto err;
1446 }
1447 else
1448 p-=2;
1449 }
1450 else
1451 n=i;
1452 }
1453
1454 i=RSA_private_decrypt((int)n,p,p,rsa,RSA_PKCS1_PADDING);
1455
1456 al = -1;
1457
1458 if (i != SSL_MAX_MASTER_KEY_LENGTH)
1459 {
1460 al=SSL_AD_DECODE_ERROR;
1461 /* SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,SSL_R_BAD_RSA_DECRYPT); */
1462 }
1463
1464 if ((al == -1) && !((p[0] == (s->client_version>>8)) && (p[1] == (s->client_version & 0xff))))
1465 {
1466 /* The premaster secret must contain the same version number as the
1467 * ClientHello to detect version rollback attacks (strangely, the
1468 * protocol does not offer such protection for DH ciphersuites).
1469 * However, buggy clients exist that send the negotiated protocol
1470 * version instead if the server does not support the requested
1471 * protocol version.
1472 * If SSL_OP_TLS_ROLLBACK_BUG is set, tolerate such clients. */
1473 if (!((s->options & SSL_OP_TLS_ROLLBACK_BUG) &&
1474 (p[0] == (s->version>>8)) && (p[1] == (s->version & 0xff))))
1475 {
1476 al=SSL_AD_DECODE_ERROR;
1477 /* SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,SSL_R_BAD_PROTOCOL_VERSION_NUMBER); */
1478
1479 /* The Klima-Pokorny-Rosa extension of Bleichenbacher's attack
1480 * (http://eprint.iacr.org/2003/052/) exploits the version
1481 * number check as a "bad version oracle" -- an alert would
1482 * reveal that the plaintext corresponding to some ciphertext
1483 * made up by the adversary is properly formatted except
1484 * that the version number is wrong. To avoid such attacks,
1485 * we should treat this just like any other decryption error. */
1486 }
1487 }
1488
1489 if (al != -1)
1490 {
1491 /* Some decryption failure -- use random value instead as countermeasure
1492 * against Bleichenbacher's attack on PKCS #1 v1.5 RSA padding
1493 * (see RFC 2246, section 7.4.7.1). */
1494 ERR_clear_error();
1495 i = SSL_MAX_MASTER_KEY_LENGTH;
1496 p[0] = s->client_version >> 8;
1497 p[1] = s->client_version & 0xff;
1498 if(RAND_pseudo_bytes(p+2, i-2) <= 0) /* should be RAND_bytes, but we cannot work around a failure */
1499 goto err;
1500 }
1501
1502 s->session->master_key_length=
1503 s->method->ssl3_enc->generate_master_secret(s,
1504 s->session->master_key,
1505 p,i);
1506 OPENSSL_cleanse(p,i);
1507 }
1508 else
1509#endif
1510#ifndef OPENSSL_NO_DH
1511 if (l & (SSL_kEDH|SSL_kDHr|SSL_kDHd))
1512 {
1513 n2s(p,i);
1514 if (n != i+2)
1515 {
1516 if (!(s->options & SSL_OP_SSLEAY_080_CLIENT_DH_BUG))
1517 {
1518 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG);
1519 goto err;
1520 }
1521 else
1522 {
1523 p-=2;
1524 i=(int)n;
1525 }
1526 }
1527
1528 if (n == 0L) /* the parameters are in the cert */
1529 {
1530 al=SSL_AD_HANDSHAKE_FAILURE;
1531 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,SSL_R_UNABLE_TO_DECODE_DH_CERTS);
1532 goto f_err;
1533 }
1534 else
1535 {
1536 if (s->s3->tmp.dh == NULL)
1537 {
1538 al=SSL_AD_HANDSHAKE_FAILURE;
1539 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,SSL_R_MISSING_TMP_DH_KEY);
1540 goto f_err;
1541 }
1542 else
1543 dh_srvr=s->s3->tmp.dh;
1544 }
1545
1546 pub=BN_bin2bn(p,i,NULL);
1547 if (pub == NULL)
1548 {
1549 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,SSL_R_BN_LIB);
1550 goto err;
1551 }
1552
1553 i=DH_compute_key(p,pub,dh_srvr);
1554
1555 if (i <= 0)
1556 {
1557 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,ERR_R_DH_LIB);
1558 goto err;
1559 }
1560
1561 DH_free(s->s3->tmp.dh);
1562 s->s3->tmp.dh=NULL;
1563
1564 BN_clear_free(pub);
1565 pub=NULL;
1566 s->session->master_key_length=
1567 s->method->ssl3_enc->generate_master_secret(s,
1568 s->session->master_key,p,i);
1569 OPENSSL_cleanse(p,i);
1570 }
1571 else
1572#endif
1573#ifndef OPENSSL_NO_KRB5
1574 if (l & SSL_kKRB5)
1575 {
1576 krb5_error_code krb5rc;
1577 krb5_data enc_ticket;
1578 krb5_data authenticator;
1579 krb5_data enc_pms;
1580 KSSL_CTX *kssl_ctx = s->kssl_ctx;
1581 EVP_CIPHER_CTX ciph_ctx;
1582 EVP_CIPHER *enc = NULL;
1583 unsigned char iv[EVP_MAX_IV_LENGTH];
1584 unsigned char pms[SSL_MAX_MASTER_KEY_LENGTH
1585 + EVP_MAX_BLOCK_LENGTH];
1586 int padl, outl;
1587 krb5_timestamp authtime = 0;
1588 krb5_ticket_times ttimes;
1589
1590 EVP_CIPHER_CTX_init(&ciph_ctx);
1591
1592 if (!kssl_ctx) kssl_ctx = kssl_ctx_new();
1593
1594 n2s(p,i);
1595 enc_ticket.length = i;
1596
1597 if (n < (long)enc_ticket.length + 6)
1598 {
1599 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
1600 SSL_R_DATA_LENGTH_TOO_LONG);
1601 goto err;
1602 }
1603
1604 enc_ticket.data = (char *)p;
1605 p+=enc_ticket.length;
1606
1607 n2s(p,i);
1608 authenticator.length = i;
1609
1610 if (n < (long)(enc_ticket.length + authenticator.length + 6))
1611 {
1612 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
1613 SSL_R_DATA_LENGTH_TOO_LONG);
1614 goto err;
1615 }
1616
1617 authenticator.data = (char *)p;
1618 p+=authenticator.length;
1619
1620 n2s(p,i);
1621 enc_pms.length = i;
1622 enc_pms.data = (char *)p;
1623 p+=enc_pms.length;
1624
1625 /* Note that the length is checked again below,
1626 ** after decryption
1627 */
1628 if(enc_pms.length > sizeof pms)
1629 {
1630 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
1631 SSL_R_DATA_LENGTH_TOO_LONG);
1632 goto err;
1633 }
1634
1635 if (n != (long)(enc_ticket.length + authenticator.length +
1636 enc_pms.length + 6))
1637 {
1638 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
1639 SSL_R_DATA_LENGTH_TOO_LONG);
1640 goto err;
1641 }
1642
1643 if ((krb5rc = kssl_sget_tkt(kssl_ctx, &enc_ticket, &ttimes,
1644 &kssl_err)) != 0)
1645 {
1646#ifdef KSSL_DEBUG
1647 printf("kssl_sget_tkt rtn %d [%d]\n",
1648 krb5rc, kssl_err.reason);
1649 if (kssl_err.text)
1650 printf("kssl_err text= %s\n", kssl_err.text);
1651#endif /* KSSL_DEBUG */
1652 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,
1653 kssl_err.reason);
1654 goto err;
1655 }
1656
1657 /* Note: no authenticator is not considered an error,
1658 ** but will return authtime == 0.
1659 */
1660 if ((krb5rc = kssl_check_authent(kssl_ctx, &authenticator,
1661 &authtime, &kssl_err)) != 0)
1662 {
1663#ifdef KSSL_DEBUG
1664 printf("kssl_check_authent rtn %d [%d]\n",
1665 krb5rc, kssl_err.reason);
1666 if (kssl_err.text)
1667 printf("kssl_err text= %s\n", kssl_err.text);
1668#endif /* KSSL_DEBUG */
1669 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,
1670 kssl_err.reason);
1671 goto err;
1672 }
1673
1674 if ((krb5rc = kssl_validate_times(authtime, &ttimes)) != 0)
1675 {
1676 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE, krb5rc);
1677 goto err;
1678 }
1679
1680#ifdef KSSL_DEBUG
1681 kssl_ctx_show(kssl_ctx);
1682#endif /* KSSL_DEBUG */
1683
1684 enc = kssl_map_enc(kssl_ctx->enctype);
1685 if (enc == NULL)
1686 goto err;
1687
1688 memset(iv, 0, sizeof iv); /* per RFC 1510 */
1689
1690 if (!EVP_DecryptInit_ex(&ciph_ctx,enc,NULL,kssl_ctx->key,iv))
1691 {
1692 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
1693 SSL_R_DECRYPTION_FAILED);
1694 goto err;
1695 }
1696 if (!EVP_DecryptUpdate(&ciph_ctx, pms,&outl,
1697 (unsigned char *)enc_pms.data, enc_pms.length))
1698 {
1699 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
1700 SSL_R_DECRYPTION_FAILED);
1701 goto err;
1702 }
1703 if (outl > SSL_MAX_MASTER_KEY_LENGTH)
1704 {
1705 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
1706 SSL_R_DATA_LENGTH_TOO_LONG);
1707 goto err;
1708 }
1709 if (!EVP_DecryptFinal_ex(&ciph_ctx,&(pms[outl]),&padl))
1710 {
1711 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
1712 SSL_R_DECRYPTION_FAILED);
1713 goto err;
1714 }
1715 outl += padl;
1716 if (outl > SSL_MAX_MASTER_KEY_LENGTH)
1717 {
1718 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
1719 SSL_R_DATA_LENGTH_TOO_LONG);
1720 goto err;
1721 }
1722 EVP_CIPHER_CTX_cleanup(&ciph_ctx);
1723
1724 s->session->master_key_length=
1725 s->method->ssl3_enc->generate_master_secret(s,
1726 s->session->master_key, pms, outl);
1727
1728 if (kssl_ctx->client_princ)
1729 {
1730 int len = strlen(kssl_ctx->client_princ);
1731 if ( len < SSL_MAX_KRB5_PRINCIPAL_LENGTH )
1732 {
1733 s->session->krb5_client_princ_len = len;
1734 memcpy(s->session->krb5_client_princ,kssl_ctx->client_princ,len);
1735 }
1736 }
1737
1738
1739 /* Was doing kssl_ctx_free() here,
1740 ** but it caused problems for apache.
1741 ** kssl_ctx = kssl_ctx_free(kssl_ctx);
1742 ** if (s->kssl_ctx) s->kssl_ctx = NULL;
1743 */
1744 }
1745 else
1746#endif /* OPENSSL_NO_KRB5 */
1747 {
1748 al=SSL_AD_HANDSHAKE_FAILURE;
1749 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
1750 SSL_R_UNKNOWN_CIPHER_TYPE);
1751 goto f_err;
1752 }
1753
1754 return(1);
1755f_err:
1756 ssl3_send_alert(s,SSL3_AL_FATAL,al);
1757#if !defined(OPENSSL_NO_DH) || !defined(OPENSSL_NO_RSA)
1758err:
1759#endif
1760 return(-1);
1761 }
1762
1763static int ssl3_get_cert_verify(SSL *s)
1764 {
1765 EVP_PKEY *pkey=NULL;
1766 unsigned char *p;
1767 int al,ok,ret=0;
1768 long n;
1769 int type=0,i,j;
1770 X509 *peer;
1771
1772 n=ssl3_get_message(s,
1773 SSL3_ST_SR_CERT_VRFY_A,
1774 SSL3_ST_SR_CERT_VRFY_B,
1775 -1,
1776 514, /* 514? */
1777 &ok);
1778
1779 if (!ok) return((int)n);
1780
1781 if (s->session->peer != NULL)
1782 {
1783 peer=s->session->peer;
1784 pkey=X509_get_pubkey(peer);
1785 type=X509_certificate_type(peer,pkey);
1786 }
1787 else
1788 {
1789 peer=NULL;
1790 pkey=NULL;
1791 }
1792
1793 if (s->s3->tmp.message_type != SSL3_MT_CERTIFICATE_VERIFY)
1794 {
1795 s->s3->tmp.reuse_message=1;
1796 if ((peer != NULL) && (type | EVP_PKT_SIGN))
1797 {
1798 al=SSL_AD_UNEXPECTED_MESSAGE;
1799 SSLerr(SSL_F_SSL3_GET_CERT_VERIFY,SSL_R_MISSING_VERIFY_MESSAGE);
1800 goto f_err;
1801 }
1802 ret=1;
1803 goto end;
1804 }
1805
1806 if (peer == NULL)
1807 {
1808 SSLerr(SSL_F_SSL3_GET_CERT_VERIFY,SSL_R_NO_CLIENT_CERT_RECEIVED);
1809 al=SSL_AD_UNEXPECTED_MESSAGE;
1810 goto f_err;
1811 }
1812
1813 if (!(type & EVP_PKT_SIGN))
1814 {
1815 SSLerr(SSL_F_SSL3_GET_CERT_VERIFY,SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE);
1816 al=SSL_AD_ILLEGAL_PARAMETER;
1817 goto f_err;
1818 }
1819
1820 if (s->s3->change_cipher_spec)
1821 {
1822 SSLerr(SSL_F_SSL3_GET_CERT_VERIFY,SSL_R_CCS_RECEIVED_EARLY);
1823 al=SSL_AD_UNEXPECTED_MESSAGE;
1824 goto f_err;
1825 }
1826
1827 /* we now have a signature that we need to verify */
1828 p=(unsigned char *)s->init_msg;
1829 n2s(p,i);
1830 n-=2;
1831 if (i > n)
1832 {
1833 SSLerr(SSL_F_SSL3_GET_CERT_VERIFY,SSL_R_LENGTH_MISMATCH);
1834 al=SSL_AD_DECODE_ERROR;
1835 goto f_err;
1836 }
1837
1838 j=EVP_PKEY_size(pkey);
1839 if ((i > j) || (n > j) || (n <= 0))
1840 {
1841 SSLerr(SSL_F_SSL3_GET_CERT_VERIFY,SSL_R_WRONG_SIGNATURE_SIZE);
1842 al=SSL_AD_DECODE_ERROR;
1843 goto f_err;
1844 }
1845
1846#ifndef OPENSSL_NO_RSA
1847 if (pkey->type == EVP_PKEY_RSA)
1848 {
1849 i=RSA_verify(NID_md5_sha1, s->s3->tmp.cert_verify_md,
1850 MD5_DIGEST_LENGTH+SHA_DIGEST_LENGTH, p, i,
1851 pkey->pkey.rsa);
1852 if (i < 0)
1853 {
1854 al=SSL_AD_DECRYPT_ERROR;
1855 SSLerr(SSL_F_SSL3_GET_CERT_VERIFY,SSL_R_BAD_RSA_DECRYPT);
1856 goto f_err;
1857 }
1858 if (i == 0)
1859 {
1860 al=SSL_AD_DECRYPT_ERROR;
1861 SSLerr(SSL_F_SSL3_GET_CERT_VERIFY,SSL_R_BAD_RSA_SIGNATURE);
1862 goto f_err;
1863 }
1864 }
1865 else
1866#endif
1867#ifndef OPENSSL_NO_DSA
1868 if (pkey->type == EVP_PKEY_DSA)
1869 {
1870 j=DSA_verify(pkey->save_type,
1871 &(s->s3->tmp.cert_verify_md[MD5_DIGEST_LENGTH]),
1872 SHA_DIGEST_LENGTH,p,i,pkey->pkey.dsa);
1873 if (j <= 0)
1874 {
1875 /* bad signature */
1876 al=SSL_AD_DECRYPT_ERROR;
1877 SSLerr(SSL_F_SSL3_GET_CERT_VERIFY,SSL_R_BAD_DSA_SIGNATURE);
1878 goto f_err;
1879 }
1880 }
1881 else
1882#endif
1883 {
1884 SSLerr(SSL_F_SSL3_GET_CERT_VERIFY,ERR_R_INTERNAL_ERROR);
1885 al=SSL_AD_UNSUPPORTED_CERTIFICATE;
1886 goto f_err;
1887 }
1888
1889
1890 ret=1;
1891 if (0)
1892 {
1893f_err:
1894 ssl3_send_alert(s,SSL3_AL_FATAL,al);
1895 }
1896end:
1897 EVP_PKEY_free(pkey);
1898 return(ret);
1899 }
1900
1901static int ssl3_get_client_certificate(SSL *s)
1902 {
1903 int i,ok,al,ret= -1;
1904 X509 *x=NULL;
1905 unsigned long l,nc,llen,n;
1906 unsigned char *p,*d,*q;
1907 STACK_OF(X509) *sk=NULL;
1908
1909 n=ssl3_get_message(s,
1910 SSL3_ST_SR_CERT_A,
1911 SSL3_ST_SR_CERT_B,
1912 -1,
1913 s->max_cert_list,
1914 &ok);
1915
1916 if (!ok) return((int)n);
1917
1918 if (s->s3->tmp.message_type == SSL3_MT_CLIENT_KEY_EXCHANGE)
1919 {
1920 if ( (s->verify_mode & SSL_VERIFY_PEER) &&
1921 (s->verify_mode & SSL_VERIFY_FAIL_IF_NO_PEER_CERT))
1922 {
1923 SSLerr(SSL_F_SSL3_GET_CLIENT_CERTIFICATE,SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE);
1924 al=SSL_AD_HANDSHAKE_FAILURE;
1925 goto f_err;
1926 }
1927 /* If tls asked for a client cert, the client must return a 0 list */
1928 if ((s->version > SSL3_VERSION) && s->s3->tmp.cert_request)
1929 {
1930 SSLerr(SSL_F_SSL3_GET_CLIENT_CERTIFICATE,SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST);
1931 al=SSL_AD_UNEXPECTED_MESSAGE;
1932 goto f_err;
1933 }
1934 s->s3->tmp.reuse_message=1;
1935 return(1);
1936 }
1937
1938 if (s->s3->tmp.message_type != SSL3_MT_CERTIFICATE)
1939 {
1940 al=SSL_AD_UNEXPECTED_MESSAGE;
1941 SSLerr(SSL_F_SSL3_GET_CLIENT_CERTIFICATE,SSL_R_WRONG_MESSAGE_TYPE);
1942 goto f_err;
1943 }
1944 d=p=(unsigned char *)s->init_msg;
1945
1946 if ((sk=sk_X509_new_null()) == NULL)
1947 {
1948 SSLerr(SSL_F_SSL3_GET_CLIENT_CERTIFICATE,ERR_R_MALLOC_FAILURE);
1949 goto err;
1950 }
1951
1952 n2l3(p,llen);
1953 if (llen+3 != n)
1954 {
1955 al=SSL_AD_DECODE_ERROR;
1956 SSLerr(SSL_F_SSL3_GET_CLIENT_CERTIFICATE,SSL_R_LENGTH_MISMATCH);
1957 goto f_err;
1958 }
1959 for (nc=0; nc<llen; )
1960 {
1961 n2l3(p,l);
1962 if ((l+nc+3) > llen)
1963 {
1964 al=SSL_AD_DECODE_ERROR;
1965 SSLerr(SSL_F_SSL3_GET_CLIENT_CERTIFICATE,SSL_R_CERT_LENGTH_MISMATCH);
1966 goto f_err;
1967 }
1968
1969 q=p;
1970 x=d2i_X509(NULL,&p,l);
1971 if (x == NULL)
1972 {
1973 SSLerr(SSL_F_SSL3_GET_CLIENT_CERTIFICATE,ERR_R_ASN1_LIB);
1974 goto err;
1975 }
1976 if (p != (q+l))
1977 {
1978 al=SSL_AD_DECODE_ERROR;
1979 SSLerr(SSL_F_SSL3_GET_CLIENT_CERTIFICATE,SSL_R_CERT_LENGTH_MISMATCH);
1980 goto f_err;
1981 }
1982 if (!sk_X509_push(sk,x))
1983 {
1984 SSLerr(SSL_F_SSL3_GET_CLIENT_CERTIFICATE,ERR_R_MALLOC_FAILURE);
1985 goto err;
1986 }
1987 x=NULL;
1988 nc+=l+3;
1989 }
1990
1991 if (sk_X509_num(sk) <= 0)
1992 {
1993 /* TLS does not mind 0 certs returned */
1994 if (s->version == SSL3_VERSION)
1995 {
1996 al=SSL_AD_HANDSHAKE_FAILURE;
1997 SSLerr(SSL_F_SSL3_GET_CLIENT_CERTIFICATE,SSL_R_NO_CERTIFICATES_RETURNED);
1998 goto f_err;
1999 }
2000 /* Fail for TLS only if we required a certificate */
2001 else if ((s->verify_mode & SSL_VERIFY_PEER) &&
2002 (s->verify_mode & SSL_VERIFY_FAIL_IF_NO_PEER_CERT))
2003 {
2004 SSLerr(SSL_F_SSL3_GET_CLIENT_CERTIFICATE,SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE);
2005 al=SSL_AD_HANDSHAKE_FAILURE;
2006 goto f_err;
2007 }
2008 }
2009 else
2010 {
2011 i=ssl_verify_cert_chain(s,sk);
2012 if (!i)
2013 {
2014 al=ssl_verify_alarm_type(s->verify_result);
2015 SSLerr(SSL_F_SSL3_GET_CLIENT_CERTIFICATE,SSL_R_NO_CERTIFICATE_RETURNED);
2016 goto f_err;
2017 }
2018 }
2019
2020 if (s->session->peer != NULL) /* This should not be needed */
2021 X509_free(s->session->peer);
2022 s->session->peer=sk_X509_shift(sk);
2023 s->session->verify_result = s->verify_result;
2024
2025 /* With the current implementation, sess_cert will always be NULL
2026 * when we arrive here. */
2027 if (s->session->sess_cert == NULL)
2028 {
2029 s->session->sess_cert = ssl_sess_cert_new();
2030 if (s->session->sess_cert == NULL)
2031 {
2032 SSLerr(SSL_F_SSL3_GET_CLIENT_CERTIFICATE, ERR_R_MALLOC_FAILURE);
2033 goto err;
2034 }
2035 }
2036 if (s->session->sess_cert->cert_chain != NULL)
2037 sk_X509_pop_free(s->session->sess_cert->cert_chain, X509_free);
2038 s->session->sess_cert->cert_chain=sk;
2039 /* Inconsistency alert: cert_chain does *not* include the
2040 * peer's own certificate, while we do include it in s3_clnt.c */
2041
2042 sk=NULL;
2043
2044 ret=1;
2045 if (0)
2046 {
2047f_err:
2048 ssl3_send_alert(s,SSL3_AL_FATAL,al);
2049 }
2050err:
2051 if (x != NULL) X509_free(x);
2052 if (sk != NULL) sk_X509_pop_free(sk,X509_free);
2053 return(ret);
2054 }
2055
2056int ssl3_send_server_certificate(SSL *s)
2057 {
2058 unsigned long l;
2059 X509 *x;
2060
2061 if (s->state == SSL3_ST_SW_CERT_A)
2062 {
2063 x=ssl_get_server_send_cert(s);
2064 if (x == NULL &&
2065 /* VRS: allow null cert if auth == KRB5 */
2066 (s->s3->tmp.new_cipher->algorithms
2067 & (SSL_MKEY_MASK|SSL_AUTH_MASK))
2068 != (SSL_aKRB5|SSL_kKRB5))
2069 {
2070 SSLerr(SSL_F_SSL3_SEND_SERVER_CERTIFICATE,ERR_R_INTERNAL_ERROR);
2071 return(0);
2072 }
2073
2074 l=ssl3_output_cert_chain(s,x);
2075 s->state=SSL3_ST_SW_CERT_B;
2076 s->init_num=(int)l;
2077 s->init_off=0;
2078 }
2079
2080 /* SSL3_ST_SW_CERT_B */
2081 return(ssl3_do_write(s,SSL3_RT_HANDSHAKE));
2082 }
diff --git a/src/lib/libssl/shlib_version b/src/lib/libssl/shlib_version
new file mode 100644
index 0000000000..c10074d52a
--- /dev/null
+++ b/src/lib/libssl/shlib_version
@@ -0,0 +1,2 @@
1major=10
2minor=0
diff --git a/src/lib/libssl/src/CHANGES b/src/lib/libssl/src/CHANGES
index 2840a36a6d..cccc4f812f 100644
--- a/src/lib/libssl/src/CHANGES
+++ b/src/lib/libssl/src/CHANGES
@@ -2,94 +2,8 @@
2 OpenSSL CHANGES 2 OpenSSL CHANGES
3 _______________ 3 _______________
4 4
5 Changes between 0.9.7i and 0.9.7j [04 May 2006]
6
7 *) Adapt fipsld and the build system to link against the validated FIPS
8 module in FIPS mode.
9 [Steve Henson]
10
11 *) Fixes for VC++ 2005 build under Windows.
12 [Steve Henson]
13
14 *) Add new Windows build target VC-32-GMAKE for VC++. This uses GNU make
15 from a Windows bash shell such as MSYS. It is autodetected from the
16 "config" script when run from a VC++ environment. Modify standard VC++
17 build to use fipscanister.o from the GNU make build.
18 [Steve Henson]
19
20 Changes between 0.9.7h and 0.9.7i [14 Oct 2005]
21
22 *) Wrapped the definition of EVP_MAX_MD_SIZE in a #ifdef OPENSSL_FIPS.
23 The value now differs depending on if you build for FIPS or not.
24 BEWARE! A program linked with a shared FIPSed libcrypto can't be
25 safely run with a non-FIPSed libcrypto, as it may crash because of
26 the difference induced by this change.
27 [Andy Polyakov]
28
29 Changes between 0.9.7g and 0.9.7h [11 Oct 2005]
30
31 *) Remove the functionality of SSL_OP_MSIE_SSLV2_RSA_PADDING
32 (part of SSL_OP_ALL). This option used to disable the
33 countermeasure against man-in-the-middle protocol-version
34 rollback in the SSL 2.0 server implementation, which is a bad
35 idea. (CVE-2005-2969)
36
37 [Bodo Moeller; problem pointed out by Yutaka Oiwa (Research Center
38 for Information Security, National Institute of Advanced Industrial
39 Science and Technology [AIST], Japan)]
40
41 *) Minimal support for X9.31 signatures and PSS padding modes. This is
42 mainly for FIPS compliance and not fully integrated at this stage.
43 [Steve Henson]
44
45 *) For DSA signing, unless DSA_FLAG_NO_EXP_CONSTTIME is set, perform
46 the exponentiation using a fixed-length exponent. (Otherwise,
47 the information leaked through timing could expose the secret key
48 after many signatures; cf. Bleichenbacher's attack on DSA with
49 biased k.)
50 [Bodo Moeller]
51
52 *) Make a new fixed-window mod_exp implementation the default for
53 RSA, DSA, and DH private-key operations so that the sequence of
54 squares and multiplies and the memory access pattern are
55 independent of the particular secret key. This will mitigate
56 cache-timing and potential related attacks.
57
58 BN_mod_exp_mont_consttime() is the new exponentiation implementation,
59 and this is automatically used by BN_mod_exp_mont() if the new flag
60 BN_FLG_EXP_CONSTTIME is set for the exponent. RSA, DSA, and DH
61 will use this BN flag for private exponents unless the flag
62 RSA_FLAG_NO_EXP_CONSTTIME, DSA_FLAG_NO_EXP_CONSTTIME, or
63 DH_FLAG_NO_EXP_CONSTTIME, respectively, is set.
64
65 [Matthew D Wood (Intel Corp), with some changes by Bodo Moeller]
66
67 *) Change the client implementation for SSLv23_method() and
68 SSLv23_client_method() so that is uses the SSL 3.0/TLS 1.0
69 Client Hello message format if the SSL_OP_NO_SSLv2 option is set.
70 (Previously, the SSL 2.0 backwards compatible Client Hello
71 message format would be used even with SSL_OP_NO_SSLv2.)
72 [Bodo Moeller]
73
74 *) Add support for smime-type MIME parameter in S/MIME messages which some
75 clients need.
76 [Steve Henson]
77
78 *) New function BN_MONT_CTX_set_locked() to set montgomery parameters in
79 a threadsafe manner. Modify rsa code to use new function and add calls
80 to dsa and dh code (which had race conditions before).
81 [Steve Henson]
82
83 *) Include the fixed error library code in the C error file definitions
84 instead of fixing them up at runtime. This keeps the error code
85 structures constant.
86 [Steve Henson]
87
88 Changes between 0.9.7f and 0.9.7g [11 Apr 2005] 5 Changes between 0.9.7f and 0.9.7g [11 Apr 2005]
89 6
90 [NB: OpenSSL 0.9.7h and later 0.9.7 patch levels were released after
91 OpenSSL 0.9.8.]
92
93 *) Fixes for newer kerberos headers. NB: the casts are needed because 7 *) Fixes for newer kerberos headers. NB: the casts are needed because
94 the 'length' field is signed on one version and unsigned on another 8 the 'length' field is signed on one version and unsigned on another
95 with no (?) obvious way to tell the difference, without these VC++ 9 with no (?) obvious way to tell the difference, without these VC++
@@ -197,11 +111,11 @@
197 Changes between 0.9.7c and 0.9.7d [17 Mar 2004] 111 Changes between 0.9.7c and 0.9.7d [17 Mar 2004]
198 112
199 *) Fix null-pointer assignment in do_change_cipher_spec() revealed 113 *) Fix null-pointer assignment in do_change_cipher_spec() revealed
200 by using the Codenomicon TLS Test Tool (CVE-2004-0079) 114 by using the Codenomicon TLS Test Tool (CAN-2004-0079)
201 [Joe Orton, Steve Henson] 115 [Joe Orton, Steve Henson]
202 116
203 *) Fix flaw in SSL/TLS handshaking when using Kerberos ciphersuites 117 *) Fix flaw in SSL/TLS handshaking when using Kerberos ciphersuites
204 (CVE-2004-0112) 118 (CAN-2004-0112)
205 [Joe Orton, Steve Henson] 119 [Joe Orton, Steve Henson]
206 120
207 *) Make it possible to have multiple active certificates with the same 121 *) Make it possible to have multiple active certificates with the same
@@ -244,9 +158,9 @@
244 *) Fix various bugs revealed by running the NISCC test suite: 158 *) Fix various bugs revealed by running the NISCC test suite:
245 159
246 Stop out of bounds reads in the ASN1 code when presented with 160 Stop out of bounds reads in the ASN1 code when presented with
247 invalid tags (CVE-2003-0543 and CVE-2003-0544). 161 invalid tags (CAN-2003-0543 and CAN-2003-0544).
248 162
249 Free up ASN1_TYPE correctly if ANY type is invalid (CVE-2003-0545). 163 Free up ASN1_TYPE correctly if ANY type is invalid (CAN-2003-0545).
250 164
251 If verify callback ignores invalid public key errors don't try to check 165 If verify callback ignores invalid public key errors don't try to check
252 certificate signature with the NULL public key. 166 certificate signature with the NULL public key.
@@ -331,7 +245,7 @@
331 via timing by performing a MAC computation even if incorrrect 245 via timing by performing a MAC computation even if incorrrect
332 block cipher padding has been found. This is a countermeasure 246 block cipher padding has been found. This is a countermeasure
333 against active attacks where the attacker has to distinguish 247 against active attacks where the attacker has to distinguish
334 between bad padding and a MAC verification error. (CVE-2003-0078) 248 between bad padding and a MAC verification error. (CAN-2003-0078)
335 249
336 [Bodo Moeller; problem pointed out by Brice Canvel (EPFL), 250 [Bodo Moeller; problem pointed out by Brice Canvel (EPFL),
337 Alain Hiltgen (UBS), Serge Vaudenay (EPFL), and 251 Alain Hiltgen (UBS), Serge Vaudenay (EPFL), and
@@ -548,7 +462,7 @@
548 462
549 Remote buffer overflow in SSL3 protocol - an attacker could 463 Remote buffer overflow in SSL3 protocol - an attacker could
550 supply an oversized master key in Kerberos-enabled versions. 464 supply an oversized master key in Kerberos-enabled versions.
551 (CVE-2002-0657) 465 (CAN-2002-0657)
552 [Ben Laurie (CHATS)] 466 [Ben Laurie (CHATS)]
553 467
554 *) Change the SSL kerb5 codes to match RFC 2712. 468 *) Change the SSL kerb5 codes to match RFC 2712.
@@ -2232,7 +2146,7 @@ des-cbc 3624.96k 5258.21k 5530.91k 5624.30k 5628.26k
2232 Changes between 0.9.6l and 0.9.6m [17 Mar 2004] 2146 Changes between 0.9.6l and 0.9.6m [17 Mar 2004]
2233 2147
2234 *) Fix null-pointer assignment in do_change_cipher_spec() revealed 2148 *) Fix null-pointer assignment in do_change_cipher_spec() revealed
2235 by using the Codenomicon TLS Test Tool (CVE-2004-0079) 2149 by using the Codenomicon TLS Test Tool (CAN-2004-0079)
2236 [Joe Orton, Steve Henson] 2150 [Joe Orton, Steve Henson]
2237 2151
2238 Changes between 0.9.6k and 0.9.6l [04 Nov 2003] 2152 Changes between 0.9.6k and 0.9.6l [04 Nov 2003]
@@ -2240,7 +2154,7 @@ des-cbc 3624.96k 5258.21k 5530.91k 5624.30k 5628.26k
2240 *) Fix additional bug revealed by the NISCC test suite: 2154 *) Fix additional bug revealed by the NISCC test suite:
2241 2155
2242 Stop bug triggering large recursion when presented with 2156 Stop bug triggering large recursion when presented with
2243 certain ASN.1 tags (CVE-2003-0851) 2157 certain ASN.1 tags (CAN-2003-0851)
2244 [Steve Henson] 2158 [Steve Henson]
2245 2159
2246 Changes between 0.9.6j and 0.9.6k [30 Sep 2003] 2160 Changes between 0.9.6j and 0.9.6k [30 Sep 2003]
@@ -2248,7 +2162,7 @@ des-cbc 3624.96k 5258.21k 5530.91k 5624.30k 5628.26k
2248 *) Fix various bugs revealed by running the NISCC test suite: 2162 *) Fix various bugs revealed by running the NISCC test suite:
2249 2163
2250 Stop out of bounds reads in the ASN1 code when presented with 2164 Stop out of bounds reads in the ASN1 code when presented with
2251 invalid tags (CVE-2003-0543 and CVE-2003-0544). 2165 invalid tags (CAN-2003-0543 and CAN-2003-0544).
2252 2166
2253 If verify callback ignores invalid public key errors don't try to check 2167 If verify callback ignores invalid public key errors don't try to check
2254 certificate signature with the NULL public key. 2168 certificate signature with the NULL public key.
@@ -2300,7 +2214,7 @@ des-cbc 3624.96k 5258.21k 5530.91k 5624.30k 5628.26k
2300 via timing by performing a MAC computation even if incorrrect 2214 via timing by performing a MAC computation even if incorrrect
2301 block cipher padding has been found. This is a countermeasure 2215 block cipher padding has been found. This is a countermeasure
2302 against active attacks where the attacker has to distinguish 2216 against active attacks where the attacker has to distinguish
2303 between bad padding and a MAC verification error. (CVE-2003-0078) 2217 between bad padding and a MAC verification error. (CAN-2003-0078)
2304 2218
2305 [Bodo Moeller; problem pointed out by Brice Canvel (EPFL), 2219 [Bodo Moeller; problem pointed out by Brice Canvel (EPFL),
2306 Alain Hiltgen (UBS), Serge Vaudenay (EPFL), and 2220 Alain Hiltgen (UBS), Serge Vaudenay (EPFL), and
@@ -2433,7 +2347,7 @@ des-cbc 3624.96k 5258.21k 5530.91k 5624.30k 5628.26k
2433 *) Add various sanity checks to asn1_get_length() to reject 2347 *) Add various sanity checks to asn1_get_length() to reject
2434 the ASN1 length bytes if they exceed sizeof(long), will appear 2348 the ASN1 length bytes if they exceed sizeof(long), will appear
2435 negative or the content length exceeds the length of the 2349 negative or the content length exceeds the length of the
2436 supplied buffer. (CVE-2002-0659) 2350 supplied buffer. (CAN-2002-0659)
2437 [Steve Henson, Adi Stav <stav@mercury.co.il>, James Yonan <jim@ntlp.com>] 2351 [Steve Henson, Adi Stav <stav@mercury.co.il>, James Yonan <jim@ntlp.com>]
2438 2352
2439 *) Assertions for various potential buffer overflows, not known to 2353 *) Assertions for various potential buffer overflows, not known to
@@ -2441,15 +2355,15 @@ des-cbc 3624.96k 5258.21k 5530.91k 5624.30k 5628.26k
2441 [Ben Laurie (CHATS)] 2355 [Ben Laurie (CHATS)]
2442 2356
2443 *) Various temporary buffers to hold ASCII versions of integers were 2357 *) Various temporary buffers to hold ASCII versions of integers were
2444 too small for 64 bit platforms. (CVE-2002-0655) 2358 too small for 64 bit platforms. (CAN-2002-0655)
2445 [Matthew Byng-Maddick <mbm@aldigital.co.uk> and Ben Laurie (CHATS)> 2359 [Matthew Byng-Maddick <mbm@aldigital.co.uk> and Ben Laurie (CHATS)>
2446 2360
2447 *) Remote buffer overflow in SSL3 protocol - an attacker could 2361 *) Remote buffer overflow in SSL3 protocol - an attacker could
2448 supply an oversized session ID to a client. (CVE-2002-0656) 2362 supply an oversized session ID to a client. (CAN-2002-0656)
2449 [Ben Laurie (CHATS)] 2363 [Ben Laurie (CHATS)]
2450 2364
2451 *) Remote buffer overflow in SSL2 protocol - an attacker could 2365 *) Remote buffer overflow in SSL2 protocol - an attacker could
2452 supply an oversized client master key. (CVE-2002-0656) 2366 supply an oversized client master key. (CAN-2002-0656)
2453 [Ben Laurie (CHATS)] 2367 [Ben Laurie (CHATS)]
2454 2368
2455 Changes between 0.9.6c and 0.9.6d [9 May 2002] 2369 Changes between 0.9.6c and 0.9.6d [9 May 2002]
diff --git a/src/lib/libssl/src/Configure b/src/lib/libssl/src/Configure
index a38783dd98..e0e732c445 100644
--- a/src/lib/libssl/src/Configure
+++ b/src/lib/libssl/src/Configure
@@ -177,11 +177,11 @@ my %table=(
177# actually recommend to consider using gcc shared build even with vendor 177# actually recommend to consider using gcc shared build even with vendor
178# compiler:-) 178# compiler:-)
179# <appro@fy.chalmers.se> 179# <appro@fy.chalmers.se>
180"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 RC4_CHAR BF_PTR2 DES_INT DES_UNROLL:asm/x86_64-gcc.o::::::asm/rc4-x86_64.o:::dlfcn:solaris-shared:-fPIC:-m64 -shared -static-libgcc:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 180"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:asm/x86_64-gcc.o::::::asm/rc4-amd64.o:::dlfcn:solaris-shared:-fPIC:-m64 -shared -static-libgcc:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
181 181
182#### Solaris x86 with Sun C setups 182#### Solaris x86 with Sun C setups
183"solaris-x86-cc","cc:-fast -O -Xa::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL BF_PTR::::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 183"solaris-x86-cc","cc:-fast -O -Xa::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL BF_PTR::::::::::dlfcn:solaris-shared:-KPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
184"solaris64-x86_64-cc","cc:-fast -xarch=amd64 -xstrconst -Xa -DL_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK RC4_CHAR BF_PTR2 DES_INT DES_UNROLL::::::::::dlfcn:solaris-shared:-KPIC:-xarch=amd64 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 184"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::::::::::dlfcn:solaris-shared:-KPIC:-xarch=amd64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
185 185
186#### SPARC Solaris with GNU C setups 186#### SPARC Solaris with GNU C setups
187"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::::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 187"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::::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
@@ -200,17 +200,17 @@ my %table=(
200 200
201#### SPARC Solaris with Sun C setups 201#### SPARC Solaris with Sun C setups
202# DO NOT use /xO[34] on sparc with SC3.0. It is broken, and will not pass the tests 202# DO NOT use /xO[34] on sparc with SC3.0. It is broken, and will not pass the tests
203"solaris-sparc-sc3","cc:-fast -O -Xa -DB_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL BF_PTR::::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 203"solaris-sparc-sc3","cc:-fast -O -Xa -DB_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL BF_PTR::::::::::dlfcn:solaris-shared:-KPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
204# SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2. 204# SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2.
205# SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8 205# SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8
206# SC5.0 note: Compiler common patch 107357-01 or later is required! 206# SC5.0 note: Compiler common patch 107357-01 or later is required!
207"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::::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 207"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::::::::::dlfcn:solaris-shared:-KPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
208"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:asm/sparcv8.o:::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 208"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:asm/sparcv8.o:::::::::dlfcn:solaris-shared:-KPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
209"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:asm/sparcv8plus.o:::asm/md5-sparcv8plus.o::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 209"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:asm/sparcv8plus.o:::asm/md5-sparcv8plus.o::::::dlfcn:solaris-shared:-KPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
210"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::::asm/md5-sparcv9.o::::::dlfcn:solaris-shared:-KPIC:-xarch=v9 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):/usr/ccs/bin/ar rs", 210"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::::asm/md5-sparcv9.o::::::dlfcn:solaris-shared:-KPIC:-xarch=v9:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):/usr/ccs/bin/ar rs",
211#### 211####
212"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:asm/sparcv8.o:::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 212"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:asm/sparcv8.o:::::::::dlfcn:solaris-shared:-KPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
213"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:asm/sparcv8plus.o:::asm/md5-sparcv8plus.o::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 213"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:asm/sparcv8plus.o:::asm/md5-sparcv8plus.o::::::dlfcn:solaris-shared:-KPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
214 214
215#### SPARC Linux setups 215#### SPARC Linux setups
216"linux-sparcv7","gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::", 216"linux-sparcv7","gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::",
@@ -271,56 +271,56 @@ my %table=(
271# 271#
272#!#"hpux-parisc-cc","cc:-Ae +O3 +ESlit -z -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::::-ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl", 272#!#"hpux-parisc-cc","cc:-Ae +O3 +ESlit -z -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::::-ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl",
273# Since there is mention of this in shlib/hpux10-cc.sh 273# Since there is mention of this in shlib/hpux10-cc.sh
274"hpux-parisc-cc-o4","cc:-Ae +O4 +ESlit -z -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::::-Wl,+cdp,../%3a,+cdp,./%3a,+s,+b,\$(INSTALLTOP)/lib -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 274"hpux-parisc-cc-o4","cc:-Ae +O4 +ESlit -z -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::::-ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:+Z::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
275"hpux-parisc-gcc","gcc:-O3 -DB_ENDIAN -DBN_DIV2W::::-Wl,+cdp,../%3a,+cdp,./%3a,+s,+b,\$(INSTALLTOP)/lib -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 275"hpux-parisc-gcc","gcc:-O3 -DB_ENDIAN -DBN_DIV2W::::-Wl,+s -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:-fPIC::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
276"hpux64-parisc-cc","cc:-Ae +DD64 +O3 +ESlit -z -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::::::::::dlfcn:hpux-shared:+Z:+DD64 -b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 276"hpux64-parisc-cc","cc:-Ae +DD64 +O3 +ESlit -z -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::::::::::dlfcn:hpux64-shared:+Z::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
277# 64bit PARISC for GCC without optimization, which seems to make problems. 277# 64bit PARISC for GCC without optimization, which seems to make problems.
278# Submitted by <ross.alexander@uk.neceur.com> 278# Submitted by <ross.alexander@uk.neceur.com>
279"hpux64-parisc-gcc","gcc:-DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::::::::::dlfcn:hpux-shared:-fpic:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 279"hpux64-parisc-gcc","gcc:-DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::::::::::dlfcn:hpux64-shared:-fpic::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
280"hpux64-parisc2-gcc","gcc:-O3 -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:asm/pa-risc2W.o:::::::::dlfcn:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 280"hpux64-parisc2-gcc","gcc:-O3 -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:asm/pa-risc2W.o:::::::::dlfcn:hpux64-shared:-fpic::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
281 281
282# IA-64 targets 282# IA-64 targets
283"hpux-ia64-cc","cc:-Ae +DD32 +O3 +Olit=all -z -DB_ENDIAN::-D_REENTRANT::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:asm/ia64-cpp.o::::asm/sha1-ia64.o::asm/rc4-ia64.o:::dlfcn:hpux-shared:+Z:-b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 283"hpux-ia64-cc","cc:-Ae +DD32 +O3 +Olit=all -z -DB_ENDIAN::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:asm/ia64-cpp.o::::asm/sha1-ia64.o::asm/rc4-ia64.o:::dlfcn:hpux-shared:+Z::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
284# Frank Geurts <frank.geurts@nl.abnamro.com> has patiently assisted with 284# Frank Geurts <frank.geurts@nl.abnamro.com> has patiently assisted with
285# with debugging of the following config. 285# with debugging of the following config.
286"hpux64-ia64-cc","cc:-Ae +DD64 +O3 +Olit=all -z -DB_ENDIAN::-D_REENTRANT::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:asm/ia64-cpp.o::::asm/sha1-ia64.o::asm/rc4-ia64.o:::dlfcn:hpux-shared:+Z:+DD64 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 286"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:asm/ia64-cpp.o::::asm/sha1-ia64.o::asm/rc4-ia64.o:::dlfcn:hpux64-shared:+Z::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
287 287
288# More attempts at unified 10.X and 11.X targets for HP C compiler. 288# More attempts at unified 10.X and 11.X targets for HP C compiler.
289# 289#
290# Chris Ruemmler <ruemmler@cup.hp.com> 290# Chris Ruemmler <ruemmler@cup.hp.com>
291# Kevin Steves <ks@hp.se> 291# Kevin Steves <ks@hp.se>
292"hpux-parisc-cc","cc:+O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-Wl,+cdp,../%3a,+cdp,./%3a,+s,+b,\$(INSTALLTOP)/lib -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 292"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::::::::::dl:hpux-shared:+Z::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
293"hpux-parisc2-cc","cc:+DA2.0 +DS2.0 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+cdp,../%3a,+cdp,./%3a,+s,+b,\$(INSTALLTOP)/lib -ldld:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:asm/pa-risc2.o:::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 293"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:asm/pa-risc2.o:::::::::dl:hpux-shared:+Z::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
294"hpux64-parisc2-cc","cc:+DD64 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:asm/pa-risc2W.o:::::::::dlfcn:hpux-shared:+Z:+DD64 -b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 294"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:asm/pa-risc2W.o:::::::::dlfcn:hpux64-shared:+Z::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
295# Isn't the line below meaningless? HP-UX cc optimizes for host by default. 295# Isn't the line below meaningless? HP-UX cc optimizes for host by default.
296# hpux-parisc1_0-cc with +DAportable flag would make more sense. <appro> 296# hpux-parisc1_0-cc with +DAportable flag would make more sense. <appro>
297"hpux-parisc1_1-cc","cc:+DA1.1 +DS1.1 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+cdp,../%3a,+cdp,./%3a,+s,+b,\$(INSTALLTOP)/lib -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 297"hpux-parisc1_1-cc","cc:+DA1.1 +DS1.1 +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::::::::::dl:hpux-shared:+Z::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
298 298
299# HPUX 9.X config. 299# HPUX 9.X config.
300# Don't use the bundled cc. It is broken. Use HP ANSI C if possible, or 300# Don't use the bundled cc. It is broken. Use HP ANSI C if possible, or
301# egcs. gcc 2.8.1 is also broken. 301# egcs. gcc 2.8.1 is also broken.
302 302
303"hpux-cc", "cc:-DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY -Ae +ESlit +O3 -z::(unknown)::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 303"hpux-cc", "cc:-DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY -Ae +ESlit +O3 -z::(unknown)::-Wl,+s -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:+Z::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
304# If hpux-cc fails (e.g. during "make test"), try the next one; otherwise, 304# If hpux-cc fails (e.g. during "make test"), try the next one; otherwise,
305# please report your OS and compiler version to the openssl-bugs@openssl.org 305# please report your OS and compiler version to the openssl-bugs@openssl.org
306# mailing list. 306# mailing list.
307"hpux-brokencc", "cc:-DB_ENDIAN -DBN_DIV2W -Ae +ESlit +O2 -z::(unknown)::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldld:DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 307"hpux-brokencc", "cc:-DB_ENDIAN -DBN_DIV2W -Ae +ESlit +O2 -z::(unknown)::-Wl,+s -ldld:DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:+Z::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
308 308
309"hpux-gcc", "gcc:-DB_ENDIAN -DBN_DIV2W -O3::(unknown)::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 309"hpux-gcc", "gcc:-DB_ENDIAN -DBN_DIV2W -O3::(unknown)::-Wl,+s -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:-fPIC::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
310# If hpux-gcc fails, try this one: 310# If hpux-gcc fails, try this one:
311"hpux-brokengcc", "gcc:-DB_ENDIAN -DBN_DIV2W -O3::(unknown)::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldld:DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 311"hpux-brokengcc", "gcc:-DB_ENDIAN -DBN_DIV2W -O3::(unknown)::-Wl,+s -ldld:DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:-fPIC::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
312 312
313# HPUX 9.X on Motorola 68k platforms with gcc 313# HPUX 9.X on Motorola 68k platforms with gcc
314"hpux-m68k-gcc", "gcc:-DB_ENDIAN -DBN_DIV2W -O3::(unknown):::BN_LLONG DES_PTR DES_UNROLL:::::::::::::", 314"hpux-m68k-gcc", "gcc:-DB_ENDIAN -DBN_DIV2W -O3::(unknown):::BN_LLONG DES_PTR DES_UNROLL:::::::::::::",
315 315
316# HPUX 10.X config. Supports threads. 316# HPUX 10.X config. Supports threads.
317"hpux10-cc", "cc:-DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY -Ae +ESlit +O3 -z::-D_REENTRANT::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 317"hpux10-cc", "cc:-DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY -Ae +ESlit +O3 -z::-D_REENTRANT::-Wl,+s -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:+Z::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
318# If hpux10-cc fails, try this one (if still fails, try deleting BN_LLONG): 318# If hpux10-cc fails, try this one (if still fails, try deleting BN_LLONG):
319"hpux10-brokencc", "cc:-DB_ENDIAN -DBN_DIV2W -Ae +ESlit +O2 -z::-D_REENTRANT::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 319"hpux10-brokencc", "cc:-DB_ENDIAN -DBN_DIV2W -Ae +ESlit +O2 -z::-D_REENTRANT::-Wl,+s -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:+Z::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
320 320
321"hpux10-gcc", "gcc:-DB_ENDIAN -DBN_DIV2W -O3::-D_REENTRANT::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 321"hpux10-gcc", "gcc:-DB_ENDIAN -DBN_DIV2W -O3::-D_REENTRANT::-Wl,+s -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:-fPIC::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
322# If hpux10-gcc fails, try this one: 322# If hpux10-gcc fails, try this one:
323"hpux10-brokengcc", "gcc:-DB_ENDIAN -DBN_DIV2W -O3::-D_REENTRANT::-Wl,+s,+b,\$(INSTALLTOP)/lib -ldld:DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 323"hpux10-brokengcc", "gcc:-DB_ENDIAN -DBN_DIV2W -O3::-D_REENTRANT::-Wl,+s -ldld:DES_PTR DES_UNROLL DES_RISC1::::::::::dl:hpux-shared:-fPIC::.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
324 324
325# HPUX 11.X from www.globus.org. 325# HPUX 11.X from www.globus.org.
326# Only works on PA-RISC 2.0 cpus, and not optimized. Why? 326# Only works on PA-RISC 2.0 cpus, and not optimized. Why?
@@ -409,9 +409,10 @@ my %table=(
409"linux-m68k", "gcc:-DB_ENDIAN -DTERMIO -O2 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG::", 409"linux-m68k", "gcc:-DB_ENDIAN -DTERMIO -O2 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG::",
410"linux-s390", "gcc:-DB_ENDIAN -DTERMIO -DNO_ASM -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 410"linux-s390", "gcc:-DB_ENDIAN -DTERMIO -DNO_ASM -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
411"linux-s390x", "gcc:-DB_ENDIAN -DTERMIO -DNO_ASM -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 411"linux-s390x", "gcc:-DB_ENDIAN -DTERMIO -DNO_ASM -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
412"linux-ia64", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK RC4_CHAR:asm/ia64.o::::asm/sha1-ia64.o::asm/rc4-ia64.o:::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 412"linux-ia64", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:asm/ia64.o::::asm/sha1-ia64.o::asm/rc4-ia64.o:::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
413"linux-ia64-ecc", "ecc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK RC4_CHAR:asm/ia64.o::::asm/sha1-ia64.o::asm/rc4-ia64.o:::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 413"linux-ia64-ecc", "ecc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:asm/ia64.o::::asm/sha1-ia64.o::asm/rc4-ia64.o:::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
414"linux-x86_64", "gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK RC4_CHAR BF_PTR2 DES_INT DES_UNROLL:asm/x86_64-gcc.o::::::asm/rc4-x86_64.o:::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 414"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:asm/x86_64-gcc.o::::::asm/rc4-amd64.o:::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
415"linux-em64t", "gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK RC4_CHAR BF_PTR2 DES_INT DES_UNROLL:asm/x86_64-gcc.o:::::::::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
415"NetBSD-sparc", "gcc:-DTERMIOS -O3 -fomit-frame-pointer -mv8 -Wall -DB_ENDIAN::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 416"NetBSD-sparc", "gcc:-DTERMIOS -O3 -fomit-frame-pointer -mv8 -Wall -DB_ENDIAN::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
416"NetBSD-m68", "gcc:-DTERMIOS -O3 -fomit-frame-pointer -Wall -DB_ENDIAN::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 417"NetBSD-m68", "gcc:-DTERMIOS -O3 -fomit-frame-pointer -Wall -DB_ENDIAN::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
417"NetBSD-x86", "gcc:-DTERMIOS -O3 -fomit-frame-pointer -m486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 418"NetBSD-x86", "gcc:-DTERMIOS -O3 -fomit-frame-pointer -m486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
@@ -529,17 +530,17 @@ my %table=(
529"BC-16","bcc:::(unknown):WIN16::BN_LLONG DES_PTR RC4_INDEX SIXTEEN_BIT:::", 530"BC-16","bcc:::(unknown):WIN16::BN_LLONG DES_PTR RC4_INDEX SIXTEEN_BIT:::",
530 531
531# MinGW 532# MinGW
532"mingw", "gcc:-DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -mno-cygwin -Wall -D_WIN32_WINNT=0x333:::MINGW32:-lwsock32 -lgdi32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_out_asm}:win32:cygwin-shared:-D_WINDLL:-mno-cygwin:.dll.a", 533"mingw", "gcc:-DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -mno-cygwin -Wall:::MINGW32:-lwsock32 -lgdi32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:win32:cygwin-shared:-D_WINDLL:-mno-cygwin:.dll",
533 534
534# UWIN 535# UWIN
535"UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::win32", 536"UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::win32",
536 537
537# Cygwin 538# Cygwin
538"Cygwin-pre1.3", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown):CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::win32", 539"Cygwin-pre1.3", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown):CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::win32",
539"Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall:::CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:dlfcn:cygwin-shared:-D_WINDLL::.dll.a", 540"Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall:::CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:dlfcn:cygwin-shared:-D_WINDLL::.dll",
540 541
541# DJGPP 542# DJGPP
542"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}::::::::::", 543"DJGPP", "gcc:-I/dev/env/WATT_ROOT/inc -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2 -Wall -DDEVRANDOM=\"/dev/urandom\\x24\":::MSDOS:-L/dev/env/WATT_ROOT/lib -lwatt:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::",
543 544
544# Ultrix from Bernhard Simon <simon@zid.tuwien.ac.at> 545# Ultrix from Bernhard Simon <simon@zid.tuwien.ac.at>
545"ultrix-cc","cc:-std1 -O -Olimit 2500 -DL_ENDIAN::(unknown):::::::", 546"ultrix-cc","cc:-std1 -O -Olimit 2500 -DL_ENDIAN::(unknown):::::::",
@@ -562,8 +563,8 @@ my %table=(
562 563
563##### MacOS X (a.k.a. Rhapsody or Darwin) setup 564##### MacOS X (a.k.a. Rhapsody or Darwin) setup
564"rhapsody-ppc-cc","cc:-O3 -DB_ENDIAN::(unknown):MACOSX_RHAPSODY::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::", 565"rhapsody-ppc-cc","cc:-O3 -DB_ENDIAN::(unknown):MACOSX_RHAPSODY::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::",
565"darwin-ppc-cc","cc:-O3 -fomit-frame-pointer -DB_ENDIAN::-D_REENTRANT:MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/osx_ppc32.o:::::::::dlfcn:darwin-shared:-fPIC -fno-common::.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib", 566"darwin-ppc-cc","cc:-O3 -fomit-frame-pointer -fno-common -DB_ENDIAN::-D_REENTRANT:MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/osx_ppc32.o::::::::::darwin-shared:-fPIC::.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
566"darwin-i386-cc","cc:-O3 -fomit-frame-pointer -fno-common::-D_REENTRANT:MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::::::::::darwin-shared:-fPIC::.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib", 567"darwin-i386-cc","cc:-O3 -fomit-frame-pointer -fno-common -DB_ENDIAN::-D_REENTRANT:MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::::::::::darwin-shared:-fPIC::.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
567 568
568##### A/UX 569##### A/UX
569"aux3-gcc","gcc:-O2 -DTERMIO::(unknown):AUX:-lbsd:RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::", 570"aux3-gcc","gcc:-O2 -DTERMIO::(unknown):AUX:-lbsd:RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::",
@@ -621,8 +622,6 @@ my $prefix="";
621my $openssldir=""; 622my $openssldir="";
622my $exe_ext=""; 623my $exe_ext="";
623my $install_prefix=""; 624my $install_prefix="";
624my $fipslibdir="/usr/local/ssl/lib";
625my $baseaddr="0xFB00000";
626my $no_threads=0; 625my $no_threads=0;
627my $no_shared=1; 626my $no_shared=1;
628my $zlib=0; 627my $zlib=0;
@@ -808,7 +807,7 @@ PROCESS_ARGS:
808 { 807 {
809 while (<IN>) 808 while (<IN>)
810 { 809 {
811 chomp; 810 chop;
812 if (/^CONFIGURE_ARGS=(.*)/) 811 if (/^CONFIGURE_ARGS=(.*)/)
813 { 812 {
814 $argvstring=$1; 813 $argvstring=$1;
@@ -867,22 +866,6 @@ PROCESS_ARGS:
867 { 866 {
868 $withargs{"krb5-".$1}=$2; 867 $withargs{"krb5-".$1}=$2;
869 } 868 }
870 elsif (/^--with-zlib-lib=(.*)$/)
871 {
872 $withargs{"zlib-lib"}=$1;
873 }
874 elsif (/^--with-fipslibdir=(.*)$/)
875 {
876 $fipslibdir="$1";
877 }
878 elsif (/^--with-baseaddr=(.*)$/)
879 {
880 $baseaddr="$1";
881 }
882 elsif (/^--with-zlib-include=(.*)$/)
883 {
884 $withargs{"zlib-include"}="-I$1";
885 }
886 else 869 else
887 { 870 {
888 print STDERR $usage; 871 print STDERR $usage;
@@ -896,7 +879,7 @@ PROCESS_ARGS:
896 } 879 }
897 else 880 else
898 { 881 {
899 die "target already defined - $target (offending arg: $_)\n" if ($target ne ""); 882 die "target already defined - $target\n" if ($target ne "");
900 $target=$_; 883 $target=$_;
901 } 884 }
902 unless ($_ eq $target) { 885 unless ($_ eq $target) {
@@ -982,26 +965,10 @@ chop $prefix if $prefix =~ /\/$/;
982$openssldir=$prefix . "/ssl" if $openssldir eq ""; 965$openssldir=$prefix . "/ssl" if $openssldir eq "";
983$openssldir=$prefix . "/" . $openssldir if $openssldir !~ /(^\/|^[a-zA-Z]:[\\\/])/; 966$openssldir=$prefix . "/" . $openssldir if $openssldir !~ /(^\/|^[a-zA-Z]:[\\\/])/;
984 967
985if ($fips && ! -f "$fipslibdir/fipscanister.o")
986 {
987 my $fipswinerr = "";
988 $fipswinerr = <<EOF if $IsWindows;
989 Ensure that the correct path to the FIPS module directory
990has been given to the --with-fipslibdir option.
991EOF
992 print STDERR <<EOF;
993The file fipscanister.o could not be located. Please build and install the
994FIPS module using the instructions in the user guide before compiling OpenSSL
995in FIPS mode.$fipswinerr
996EOF
997 exit 1;
998 }
999
1000 968
1001print "IsWindows=$IsWindows\n"; 969print "IsWindows=$IsWindows\n";
1002 970
1003my @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1); 971my @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
1004for (@fields) { s/%([\dA-Fa-f]{2})/chr(hex($1))/eg; }
1005my $cc = $fields[$idx_cc]; 972my $cc = $fields[$idx_cc];
1006my $cflags = $fields[$idx_cflags]; 973my $cflags = $fields[$idx_cflags];
1007my $unistd = $fields[$idx_unistd]; 974my $unistd = $fields[$idx_unistd];
@@ -1060,7 +1027,7 @@ else
1060 if $withargs{"krb5-dir"} eq ""; 1027 if $withargs{"krb5-dir"} eq "";
1061 $withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}. 1028 $withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}.
1062 "/lib -lgssapi -lkrb5 -lcom_err" 1029 "/lib -lgssapi -lkrb5 -lcom_err"
1063 if $withargs{"krb5-lib"} eq "" && !$IsWindows; 1030 if $withargs{"krb5-lib"} eq "";
1064 $cflags="-DKRB5_HEIMDAL $cflags"; 1031 $cflags="-DKRB5_HEIMDAL $cflags";
1065 } 1032 }
1066 if ($withargs{"krb5-flavor"} =~ /^[Mm][Ii][Tt]/) 1033 if ($withargs{"krb5-flavor"} =~ /^[Mm][Ii][Tt]/)
@@ -1069,7 +1036,7 @@ else
1069 if $withargs{"krb5-dir"} eq ""; 1036 if $withargs{"krb5-dir"} eq "";
1070 $withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}. 1037 $withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}.
1071 "/lib -lgssapi_krb5 -lkrb5 -lcom_err -lk5crypto" 1038 "/lib -lgssapi_krb5 -lkrb5 -lcom_err -lk5crypto"
1072 if $withargs{"krb5-lib"} eq "" && !$IsWindows; 1039 if $withargs{"krb5-lib"} eq "";
1073 $cflags="-DKRB5_MIT $cflags"; 1040 $cflags="-DKRB5_MIT $cflags";
1074 $withargs{"krb5-flavor"} =~ s/^[Mm][Ii][Tt][._-]*//; 1041 $withargs{"krb5-flavor"} =~ s/^[Mm][Ii][Tt][._-]*//;
1075 if ($withargs{"krb5-flavor"} =~ /^1[._-]*[01]/) 1042 if ($withargs{"krb5-flavor"} =~ /^1[._-]*[01]/)
@@ -1088,7 +1055,7 @@ else
1088 } 1055 }
1089 } 1056 }
1090 $withargs{"krb5-lib"} .= " -lresolv" 1057 $withargs{"krb5-lib"} .= " -lresolv"
1091 if ("$lresolv" ne "" && !$IsWindows); 1058 if ("$lresolv" ne "");
1092 $withargs{"krb5-include"} = "-I".$withargs{"krb5-dir"}."/include" 1059 $withargs{"krb5-include"} = "-I".$withargs{"krb5-dir"}."/include"
1093 if $withargs{"krb5-include"} eq "" && 1060 if $withargs{"krb5-include"} eq "" &&
1094 $withargs{"krb5-dir"} ne ""; 1061 $withargs{"krb5-dir"} ne "";
@@ -1184,8 +1151,7 @@ if (!$no_shared)
1184 { 1151 {
1185 if ($shared_cflag ne "") 1152 if ($shared_cflag ne "")
1186 { 1153 {
1187 $cflags = "$shared_cflag -DOPENSSL_PIC $cflags"; 1154 $cflags = "$shared_cflag $cflags";
1188 $shared_ldflag = "$shared_ldflag $shared_cflag" if($fips);
1189 } 1155 }
1190 } 1156 }
1191 1157
@@ -1208,22 +1174,16 @@ if ($ranlib eq "")
1208$bn_obj = $bn_asm unless $bn_obj ne ""; 1174$bn_obj = $bn_asm unless $bn_obj ne "";
1209 1175
1210my $fips_des_obj; 1176my $fips_des_obj;
1211my $fips_aes_obj;
1212my $fips_sha1_obj; 1177my $fips_sha1_obj;
1213if ($fips) 1178if ($fips)
1214 { 1179 {
1215 if ($des_obj =~ /\-elf\.o$/) 1180 if ($des_obj =~ /\-elf\.o$/ && $no_shared) # FIPS DES module is not PIC
1216 { 1181 {
1217 $fips_des_obj='asm/fips-dx86-elf.o'; 1182 $fips_des_obj='asm/fips-dx86-elf.o';
1218 $openssl_other_defines.="#define OPENSSL_FIPS_DES_ASM\n"; 1183 $openssl_other_defines.="#define OPENSSL_FIPS_DES_ASM\n";
1219 $fips_aes_obj='asm/fips-ax86-elf.o';
1220 $openssl_other_defines.="#define OPENSSL_FIPS_AES_ASM\n";
1221 }
1222 else {
1223 $fips_des_obj=$fips_des_enc;
1224 $fips_aes_obj='fips_aes_core.o';
1225 } 1184 }
1226 $fips_sha1_obj='asm/fips-sx86-elf.o' if ($sha1_obj =~ /\-elf\.o$/); 1185 else { $fips_des_obj=$fips_des_enc; }
1186 $fips_sha1_obj='asm/sx86-elf.o' if ($sha1_obj =~ /\-elf\.o$/);
1227 $des_obj=$sha1_obj=""; 1187 $des_obj=$sha1_obj="";
1228 $openssl_other_defines.="#define OPENSSL_FIPS\n"; 1188 $openssl_other_defines.="#define OPENSSL_FIPS\n";
1229 } 1189 }
@@ -1295,7 +1255,7 @@ print OUT "### Generated automatically from Makefile.org by Configure.\n\n";
1295my $sdirs=0; 1255my $sdirs=0;
1296while (<IN>) 1256while (<IN>)
1297 { 1257 {
1298 chomp; 1258 chop;
1299 $sdirs = 1 if /^SDIRS=/; 1259 $sdirs = 1 if /^SDIRS=/;
1300 if ($sdirs) { 1260 if ($sdirs) {
1301 my $dir; 1261 my $dir;
@@ -1327,7 +1287,6 @@ while (<IN>)
1327 s/^BN_ASM=.*$/BN_ASM= $bn_obj/; 1287 s/^BN_ASM=.*$/BN_ASM= $bn_obj/;
1328 s/^DES_ENC=.*$/DES_ENC= $des_obj/; 1288 s/^DES_ENC=.*$/DES_ENC= $des_obj/;
1329 s/^FIPS_DES_ENC=.*$/FIPS_DES_ENC= $fips_des_obj/; 1289 s/^FIPS_DES_ENC=.*$/FIPS_DES_ENC= $fips_des_obj/;
1330 s/^FIPS_AES_ENC=.*$/FIPS_AES_ENC= $fips_aes_obj/;
1331 s/^BF_ENC=.*$/BF_ENC= $bf_obj/; 1290 s/^BF_ENC=.*$/BF_ENC= $bf_obj/;
1332 s/^CAST_ENC=.*$/CAST_ENC= $cast_obj/; 1291 s/^CAST_ENC=.*$/CAST_ENC= $cast_obj/;
1333 s/^RC4_ENC=.*$/RC4_ENC= $rc4_obj/; 1292 s/^RC4_ENC=.*$/RC4_ENC= $rc4_obj/;
@@ -1342,10 +1301,6 @@ while (<IN>)
1342 s/^PERL=.*/PERL= $perl/; 1301 s/^PERL=.*/PERL= $perl/;
1343 s/^KRB5_INCLUDES=.*/KRB5_INCLUDES=$withargs{"krb5-include"}/; 1302 s/^KRB5_INCLUDES=.*/KRB5_INCLUDES=$withargs{"krb5-include"}/;
1344 s/^LIBKRB5=.*/LIBKRB5=$withargs{"krb5-lib"}/; 1303 s/^LIBKRB5=.*/LIBKRB5=$withargs{"krb5-lib"}/;
1345 s/^LIBZLIB=.*/LIBZLIB=$withargs{"zlib-lib"}/;
1346 s/^FIPSLIBDIR=.*/FIPSLIBDIR=$fipslibdir/;
1347 s/^BASEADDR=.*/BASEADDR=$baseaddr/;
1348 s/^ZLIB_INCLUDE=.*/ZLIB_INCLUDE=$withargs{"zlib-include"}/;
1349 s/^SHLIB_TARGET=.*/SHLIB_TARGET=$shared_target/; 1304 s/^SHLIB_TARGET=.*/SHLIB_TARGET=$shared_target/;
1350 s/^SHLIB_MARK=.*/SHLIB_MARK=$shared_mark/; 1305 s/^SHLIB_MARK=.*/SHLIB_MARK=$shared_mark/;
1351 s/^SHARED_LIBS=.*/SHARED_LIBS=\$(SHARED_CRYPTO) \$(SHARED_SSL)/ if (!$no_shared); 1306 s/^SHARED_LIBS=.*/SHARED_LIBS=\$(SHARED_CRYPTO) \$(SHARED_SSL)/ if (!$no_shared);
@@ -1699,13 +1654,12 @@ sub print_table_entry
1699 { 1654 {
1700 my $target = shift; 1655 my $target = shift;
1701 1656
1702 my @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
1703 for (@fields) { s/%([\dA-Fa-f]{2})/chr(hex($1))/eg; }
1704 (my $cc,my $cflags,my $unistd,my $thread_cflag,my $sys_id,my $lflags, 1657 (my $cc,my $cflags,my $unistd,my $thread_cflag,my $sys_id,my $lflags,
1705 my $bn_ops,my $bn_obj,my $des_obj,my $bf_obj, 1658 my $bn_ops,my $bn_obj,my $des_obj,my $bf_obj,
1706 my $md5_obj,my $sha1_obj,my $cast_obj,my $rc4_obj,my $rmd160_obj, 1659 my $md5_obj,my $sha1_obj,my $cast_obj,my $rc4_obj,my $rmd160_obj,
1707 my $rc5_obj,my $dso_scheme,my $shared_target,my $shared_cflag, 1660 my $rc5_obj,my $dso_scheme,my $shared_target,my $shared_cflag,
1708 my $shared_ldflag,my $shared_extension,my $ranlib,my $arflags)=@fields; 1661 my $shared_ldflag,my $shared_extension,my $ranlib,my $arflags)=
1662 split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
1709 1663
1710 print <<EOF 1664 print <<EOF
1711 1665
@@ -1748,7 +1702,6 @@ sub test_sanity
1748 foreach $target (sort keys %table) 1702 foreach $target (sort keys %table)
1749 { 1703 {
1750 @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1); 1704 @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
1751 for (@fields) { s/%([\dA-Fa-f]{2})/chr(hex($1))/eg; }
1752 1705
1753 if ($fields[$idx_dso_scheme-1] =~ /^(dl|dlfcn|win32|vms)$/) 1706 if ($fields[$idx_dso_scheme-1] =~ /^(dl|dlfcn|win32|vms)$/)
1754 { 1707 {
diff --git a/src/lib/libssl/src/FAQ b/src/lib/libssl/src/FAQ
index 6545cd72aa..943fc9d4a3 100644
--- a/src/lib/libssl/src/FAQ
+++ b/src/lib/libssl/src/FAQ
@@ -70,7 +70,7 @@ OpenSSL - Frequently Asked Questions
70* Which is the current version of OpenSSL? 70* Which is the current version of OpenSSL?
71 71
72The current version is available from <URL: http://www.openssl.org>. 72The current version is available from <URL: http://www.openssl.org>.
73OpenSSL 0.9.7j was released on May 4, 2006. 73OpenSSL 0.9.7g was released on April 11, 2005.
74 74
75In addition to the current stable release, you can also access daily 75In addition to the current stable release, you can also access daily
76snapshots of the OpenSSL development version at <URL: 76snapshots of the OpenSSL development version at <URL:
@@ -141,8 +141,8 @@ less Unix-centric, it might have been used much earlier.
141 141
142With version 0.9.6 OpenSSL was extended to interface to external crypto 142With version 0.9.6 OpenSSL was extended to interface to external crypto
143hardware. This was realized in a special release '0.9.6-engine'. With 143hardware. This was realized in a special release '0.9.6-engine'. With
144version 0.9.7 the changes were merged into the main development line, 144version 0.9.7 (not yet released) the changes were merged into the main
145so that the special release is no longer necessary. 145development line, so that the special release is no longer necessary.
146 146
147* How do I check the authenticity of the OpenSSL distribution? 147* How do I check the authenticity of the OpenSSL distribution?
148 148
diff --git a/src/lib/libssl/src/LICENSE b/src/lib/libssl/src/LICENSE
index e6afecc724..40277883a5 100644
--- a/src/lib/libssl/src/LICENSE
+++ b/src/lib/libssl/src/LICENSE
@@ -12,7 +12,7 @@
12 --------------- 12 ---------------
13 13
14/* ==================================================================== 14/* ====================================================================
15 * Copyright (c) 1998-2005 The OpenSSL Project. All rights reserved. 15 * Copyright (c) 1998-2004 The OpenSSL Project. All rights reserved.
16 * 16 *
17 * Redistribution and use in source and binary forms, with or without 17 * Redistribution and use in source and binary forms, with or without
18 * modification, are permitted provided that the following conditions 18 * modification, are permitted provided that the following conditions
diff --git a/src/lib/libssl/src/Makefile.org b/src/lib/libssl/src/Makefile.org
index b9db0dd57d..cc4000b148 100644
--- a/src/lib/libssl/src/Makefile.org
+++ b/src/lib/libssl/src/Makefile.org
@@ -102,7 +102,6 @@ PROCESSOR=
102# Set DES_ENC to des_enc.o if you want to use the C version 102# Set DES_ENC to des_enc.o if you want to use the C version
103#There are 4 x86 assember options. 103#There are 4 x86 assember options.
104FIPS_DES_ENC= des_enc.o fcrypt_b.o 104FIPS_DES_ENC= des_enc.o fcrypt_b.o
105FIPS_AES_ENC= fips_aes_core.o
106DES_ENC= asm/dx86-out.o asm/yx86-out.o 105DES_ENC= asm/dx86-out.o asm/yx86-out.o
107#DES_ENC= des_enc.o fcrypt_b.o # C 106#DES_ENC= des_enc.o fcrypt_b.o # C
108#DES_ENC= asm/dx86-elf.o asm/yx86-elf.o # elf 107#DES_ENC= asm/dx86-elf.o asm/yx86-elf.o # elf
@@ -172,29 +171,11 @@ RMD160_ASM_OBJ= asm/rm86-out.o
172KRB5_INCLUDES= 171KRB5_INCLUDES=
173LIBKRB5= 172LIBKRB5=
174 173
175# Zlib stuff
176ZLIB_INCLUDE=
177LIBZLIB=
178
179# This is the location of fipscanister.o and friends.
180# The FIPS module build will place it $(INSTALLTOP)/lib
181# but since $(INSTALLTOP) can only take the default value
182# when the module is built it will be in /usr/local/ssl/lib
183# $(INSTALLTOP) for this build make be different so hard
184# code the path.
185
186FIPSLIBDIR=/usr/local/ssl/lib
187
188# Shared library base address. Currently only used on Windows.
189#
190
191BASEADDR=
192
193# When we're prepared to use shared libraries in the programs we link here 174# When we're prepared to use shared libraries in the programs we link here
194# we might set SHLIB_MARK to '$(SHARED_LIBS)'. 175# we might set SHLIB_MARK to '$(SHARED_LIBS)'.
195SHLIB_MARK= 176SHLIB_MARK=
196 177
197DIRS= crypto fips-1.0 ssl $(SHLIB_MARK) apps test tools 178DIRS= crypto fips ssl $(SHLIB_MARK) sigs apps test tools
198SHLIBDIRS= crypto ssl 179SHLIBDIRS= crypto ssl
199 180
200# dirs in crypto to build 181# dirs in crypto to build
@@ -205,7 +186,7 @@ SDIRS= objects \
205 buffer bio stack lhash rand err \ 186 buffer bio stack lhash rand err \
206 evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5 187 evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5
207 188
208FDIRS= sha rand des aes dsa rsa dh hmac 189FDIRS= sha1 rand des aes dsa rsa dh
209 190
210# tests to perform. "alltests" is a special word indicating that all tests 191# tests to perform. "alltests" is a special word indicating that all tests
211# should be performed. 192# should be performed.
@@ -224,6 +205,7 @@ ONEDIRS=out tmp
224EDIRS= times doc bugs util include certs ms shlib mt demos perl sf dep VMS 205EDIRS= times doc bugs util include certs ms shlib mt demos perl sf dep VMS
225WDIRS= windows 206WDIRS= windows
226LIBS= libcrypto.a libssl.a 207LIBS= libcrypto.a libssl.a
208SIGS= libcrypto.a.sha1
227SHARED_CRYPTO=libcrypto$(SHLIB_EXT) 209SHARED_CRYPTO=libcrypto$(SHLIB_EXT)
228SHARED_SSL=libssl$(SHLIB_EXT) 210SHARED_SSL=libssl$(SHLIB_EXT)
229SHARED_LIBS= 211SHARED_LIBS=
@@ -243,12 +225,19 @@ HEADER= e_os.h
243 225
244all: Makefile sub_all openssl.pc 226all: Makefile sub_all openssl.pc
245 227
228sigs: $(SIGS)
229libcrypto.a.sha1: libcrypto.a
230 @if egrep 'define OPENSSL_FIPS' $(TOP)/include/openssl/opensslconf.h > /dev/null; then \
231 $(RANLIB) libcrypto.a; \
232 fips/sha1/fips_standalone_sha1 libcrypto.a > libcrypto.a.sha1; \
233 fi
234
246sub_all: 235sub_all:
247 @for i in $(DIRS); \ 236 @for i in $(DIRS); \
248 do \ 237 do \
249 if [ -d "$$i" ]; then \ 238 if [ -d "$$i" ]; then \
250 (cd $$i && echo "making all in $$i..." && \ 239 (cd $$i && echo "making all in $$i..." && \
251 $(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' AS='${AS}' ASFLAG='${ASFLAG}' SDIRS='$(SDIRS)' FDIRS='$(FDIRS)' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' FIPS_DES_ENC='${FIPS_DES_ENC}' FIPS_AES_ENC='${FIPS_AES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' FIPS_SHA1_ASM_OBJ='${FIPS_SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' EXE_EXT='${EXE_EXT}' SHARED_LIBS='${SHARED_LIBS}' SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}' FIPSLIBDIR='${FIPSLIBDIR}' all ) || exit 1; \ 240 $(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' AS='${AS}' ASFLAG='${ASFLAG}' SDIRS='$(SDIRS)' FDIRS='$(FDIRS)' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' FIPS_DES_ENC='${FIPS_DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' FIPS_SHA1_ASM_OBJ='${FIPS_SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' EXE_EXT='${EXE_EXT}' SHARED_LIBS='${SHARED_LIBS}' SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}' all ) || exit 1; \
252 else \ 241 else \
253 $(MAKE) $$i; \ 242 $(MAKE) $$i; \
254 fi; \ 243 fi; \
@@ -259,7 +248,7 @@ sub_target:
259 do \ 248 do \
260 if [ -d "$$i" ]; then \ 249 if [ -d "$$i" ]; then \
261 (cd $$i && echo "making $(TARGET) in $$i..." && \ 250 (cd $$i && echo "making $(TARGET) in $$i..." && \
262 $(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' AS='${AS}' ASFLAG='${ASFLAG}' SDIRS='$(SDIRS)' FDIRS='$(FDIRS)' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' FIPS_DES_ENC='${FIPS_DES_ENC}' FIPS_AES_ENC='${FIPS_AES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' FIPS_SHA1_ASM_OBJ='${FIPS_SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' EXE_EXT='${EXE_EXT}' SHARED_LIBS='${SHARED_LIBS}' SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}' TARGET='$(TARGET)' sub_target ) || exit 1; \ 251 $(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' AS='${AS}' ASFLAG='${ASFLAG}' SDIRS='$(SDIRS)' FDIRS='$(FDIRS)' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' FIPS_DES_ENC='${FIPS_DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' FIPS_SHA1_ASM_OBJ='${FIPS_SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' EXE_EXT='${EXE_EXT}' SHARED_LIBS='${SHARED_LIBS}' SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}' TARGET='$(TARGET)' sub_target ) || exit 1; \
263 else \ 252 else \
264 $(MAKE) $$i; \ 253 $(MAKE) $$i; \
265 fi; \ 254 fi; \
@@ -315,12 +304,12 @@ do_gnu-shared:
315 if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \ 304 if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
316 libs="$(LIBKRB5) $$libs"; \ 305 libs="$(LIBKRB5) $$libs"; \
317 fi; \ 306 fi; \
318 ( set -x; $${FIPSLD:-${CC}} ${SHARED_LDFLAGS} \ 307 ( set -x; ${CC} ${SHARED_LDFLAGS} \
319 -shared -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ 308 -shared -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
320 -Wl,-soname=lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ 309 -Wl,-soname=lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
321 -Wl,-Bsymbolic \ 310 -Wl,-Bsymbolic \
322 -Wl,--whole-archive lib$$i.a \ 311 -Wl,--whole-archive lib$$i.a \
323 -Wl,--no-whole-archive $$libs ${EX_LIBS} ) || exit 1; \ 312 -Wl,--no-whole-archive $$libs ${EX_LIBS} -lc ) || exit 1; \
324 libs="-l$$i $$libs"; \ 313 libs="-l$$i $$libs"; \
325 done 314 done
326 315
@@ -332,8 +321,7 @@ do_darwin-shared:
332 if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \ 321 if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
333 libs="$(LIBKRB5) $$libs"; \ 322 libs="$(LIBKRB5) $$libs"; \
334 fi; \ 323 fi; \
335 ( set -x; $${FIPSLD:-${CC}} ${SHARED_LDFLAGS} \ 324 ( set -x; ${CC} --verbose -dynamiclib -o lib$$i${SHLIB_EXT} \
336 --verbose -dynamiclib -o lib$$i${SHLIB_EXT} \
337 lib$$i.a $$libs -all_load -current_version ${SHLIB_MAJOR}.${SHLIB_MINOR} \ 325 lib$$i.a $$libs -all_load -current_version ${SHLIB_MAJOR}.${SHLIB_MINOR} \
338 -compatibility_version ${SHLIB_MAJOR}.`echo ${SHLIB_MINOR} | cut -d. -f1` \ 326 -compatibility_version ${SHLIB_MAJOR}.`echo ${SHLIB_MINOR} | cut -d. -f1` \
339 -install_name ${INSTALLTOP}/lib/lib$$i${SHLIB_EXT} ) || exit 1; \ 327 -install_name ${INSTALLTOP}/lib/lib$$i${SHLIB_EXT} ) || exit 1; \
@@ -350,15 +338,14 @@ do_cygwin-shared:
350 [ "$(PLATFORM)" = "mingw" ] && shlib=$${i}eay32.dll; \ 338 [ "$(PLATFORM)" = "mingw" ] && shlib=$${i}eay32.dll; \
351 [ -f apps/$$shlib ] && rm apps/$$shlib; \ 339 [ -f apps/$$shlib ] && rm apps/$$shlib; \
352 [ -f test/$$shlib ] && rm test/$$shlib; \ 340 [ -f test/$$shlib ] && rm test/$$shlib; \
353 base=; [ $$i = "crypto" ] && base=-Wl,--image-base,0x63000000; \ 341 base=; [ $$i = "crypto" ] && base=-Wl,--image-base,0xFE00000; \
354 ( set -x; $${FIPSLD:-${CC}} ${SHARED_LDFLAGS} \ 342 ( set -x; ${CC} ${SHARED_LDFLAGS} \
355 -shared $$base -o $$shlib \ 343 -shared $$base -o $$shlib \
356 -Wl,-Bsymbolic \ 344 -Wl,-Bsymbolic \
357 -Wl,--whole-archive lib$$i.a \ 345 -Wl,--whole-archive lib$$i.a \
358 -Wl,--out-implib,lib$$i.dll.a \ 346 -Wl,--out-implib,lib$$i.dll.a \
359 -Wl,--no-whole-archive $$libs ${EX_LIBS} ) || exit 1; \ 347 -Wl,--no-whole-archive $$libs ${EX_LIBS} ) || exit 1; \
360 cp -p $$shlib apps/; cp -p $$shlib test/; \ 348 cp -p $$shlib apps/; cp -p $$shlib test/; \
361 touch -c lib$$i.dll.a; \
362 libs="-l$$i $$libs"; \ 349 libs="-l$$i $$libs"; \
363 done 350 done
364 351
@@ -371,10 +358,10 @@ do_alpha-osf1-shared:
371 if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \ 358 if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
372 libs="$(LIBKRB5) $$libs"; \ 359 libs="$(LIBKRB5) $$libs"; \
373 fi; \ 360 fi; \
374 ( set -x; $${FIPSLD:-${CC}} ${SHARED_LDFLAGS} \ 361 ( set -x; ${CC} ${SHARED_LDFLAGS} \
375 -shared -o lib$$i.so \ 362 -shared -o lib$$i.so \
376 -set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}" \ 363 -set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}" \
377 -all lib$$i.a -none $$libs ${EX_LIBS} ) || exit 1; \ 364 -all lib$$i.a -none $$libs ${EX_LIBS} -lc ) || exit 1; \
378 libs="-l$$i $$libs"; \ 365 libs="-l$$i $$libs"; \
379 done; \ 366 done; \
380 fi 367 fi
@@ -390,10 +377,10 @@ do_tru64-shared:
390 if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \ 377 if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
391 libs="$(LIBKRB5) $$libs"; \ 378 libs="$(LIBKRB5) $$libs"; \
392 fi; \ 379 fi; \
393 ( set -x; $${FIPSLD:-${CC}} ${SHARED_LDFLAGS} \ 380 ( set -x; ${CC} ${SHARED_LDFLAGS} \
394 -shared -msym -o lib$$i.so \ 381 -shared -msym -o lib$$i.so \
395 -set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}" \ 382 -set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}" \
396 -all lib$$i.a -none $$libs ${EX_LIBS} ) || exit 1; \ 383 -all lib$$i.a -none $$libs ${EX_LIBS} -lc ) || exit 1; \
397 libs="-l$$i $$libs"; \ 384 libs="-l$$i $$libs"; \
398 done; \ 385 done; \
399 fi 386 fi
@@ -409,11 +396,11 @@ do_tru64-shared-rpath:
409 if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \ 396 if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
410 libs="$(LIBKRB5) $$libs"; \ 397 libs="$(LIBKRB5) $$libs"; \
411 fi; \ 398 fi; \
412 ( set -x; $${FIPSLD:-${CC}} ${SHARED_LDFLAGS} \ 399 ( set -x; ${CC} ${SHARED_LDFLAGS} \
413 -shared -msym -o lib$$i.so \ 400 -shared -msym -o lib$$i.so \
414 -rpath ${INSTALLTOP}/lib \ 401 -rpath ${INSTALLTOP}/lib \
415 -set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}" \ 402 -set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}" \
416 -all lib$$i.a -none $$libs ${EX_LIBS} ) || exit 1; \ 403 -all lib$$i.a -none $$libs ${EX_LIBS} -lc ) || exit 1; \
417 libs="-l$$i $$libs"; \ 404 libs="-l$$i $$libs"; \
418 done; \ 405 done; \
419 fi 406 fi
@@ -431,12 +418,12 @@ do_solaris-shared:
431 ( PATH=/usr/ccs/bin:$$PATH ; export PATH; \ 418 ( PATH=/usr/ccs/bin:$$PATH ; export PATH; \
432 MINUSZ='-z '; \ 419 MINUSZ='-z '; \
433 (${CC} -v 2>&1 | grep gcc) > /dev/null && MINUSZ='-Wl,-z,'; \ 420 (${CC} -v 2>&1 | grep gcc) > /dev/null && MINUSZ='-Wl,-z,'; \
434 set -x; $${FIPSLD:-${CC}} ${SHARED_LDFLAGS} \ 421 set -x; ${CC} ${SHARED_LDFLAGS} -G -dy -z text \
435 -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ 422 -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
436 -h lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ 423 -h lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
437 -Wl,-Bsymbolic \ 424 -Wl,-Bsymbolic \
438 $${MINUSZ}allextract lib$$i.a $${MINUSZ}defaultextract \ 425 $${MINUSZ}allextract lib$$i.a $${MINUSZ}defaultextract \
439 $$libs ${EX_LIBS} ) || exit 1; \ 426 $$libs ${EX_LIBS} -lc ) || exit 1; \
440 libs="-l$$i $$libs"; \ 427 libs="-l$$i $$libs"; \
441 done; \ 428 done; \
442 fi 429 fi
@@ -456,7 +443,7 @@ do_svr3-shared:
456 for obj in `ar t lib$$i.a` ; do \ 443 for obj in `ar t lib$$i.a` ; do \
457 OBJS="$${OBJS} `grep /$$obj allobjs`" ; \ 444 OBJS="$${OBJS} `grep /$$obj allobjs`" ; \
458 done ; \ 445 done ; \
459 set -x; $${FIPSLD:-${CC}} ${SHARED_LDFLAGS} \ 446 set -x; ${CC} ${SHARED_LDFLAGS} \
460 -G -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ 447 -G -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
461 -h lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ 448 -h lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
462 $${OBJS} $$libs ${EX_LIBS} ) || exit 1; \ 449 $${OBJS} $$libs ${EX_LIBS} ) || exit 1; \
@@ -482,7 +469,7 @@ do_svr5-shared:
482 OBJS="$${OBJS} `grep /$$obj allobjs`" ; \ 469 OBJS="$${OBJS} `grep /$$obj allobjs`" ; \
483 done ; \ 470 done ; \
484 set -x; LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH \ 471 set -x; LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH \
485 $${FIPSLD:-${CC}} ${SHARED_LDFLAGS} \ 472 ${CC} ${SHARED_LDFLAGS} \
486 $${SHARE_FLAG} -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ 473 $${SHARE_FLAG} -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
487 -h lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ 474 -h lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
488 $${OBJS} $$libs ${EX_LIBS} ) || exit 1; \ 475 $${OBJS} $$libs ${EX_LIBS} ) || exit 1; \
@@ -501,15 +488,24 @@ do_irix-shared:
501 fi; \ 488 fi; \
502 ( WHOLELIB="-all lib$$i.a -none"; \ 489 ( WHOLELIB="-all lib$$i.a -none"; \
503 (${CC} -v 2>&1 | grep gcc) > /dev/null && WHOLELIB="-Wl,-all,lib$$i.a,-none"; \ 490 (${CC} -v 2>&1 | grep gcc) > /dev/null && WHOLELIB="-Wl,-all,lib$$i.a,-none"; \
504 set -x; $${FIPSLD:-${CC}} ${SHARED_LDFLAGS} \ 491 set -x; ${CC} ${SHARED_LDFLAGS} \
505 -shared -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ 492 -shared -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
506 -Wl,-soname,lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ 493 -Wl,-soname,lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
507 $${WHOLELIB} $$libs ${EX_LIBS}) || exit 1; \ 494 $${WHOLELIB} $$libs ${EX_LIBS} -lc) || exit 1; \
508 libs="-l$$i $$libs"; \ 495 libs="-l$$i $$libs"; \
509 done; \ 496 done; \
510 fi 497 fi
511 498
512# This assumes that GNU utilities are *not* used 499# This assumes that GNU utilities are *not* used
500# HP-UX includes the full pathname of libs we depend on, so we would get
501# ./libcrypto (with ./ as path information) compiled into libssl, hence
502# we omit the SHLIBDEPS. Applications must be linked with -lssl -lcrypto
503# anyway.
504# The object modules are loaded from lib$i.a using the undocumented -Fl
505# option.
506#
507# WARNING: Until DSO is fixed to support a search path, we support SHLIB_PATH
508# by temporarily specifying "+s"!
513# 509#
514do_hpux-shared: 510do_hpux-shared:
515 for i in ${SHLIBDIRS}; do \ 511 for i in ${SHLIBDIRS}; do \
@@ -522,11 +518,38 @@ do_hpux-shared:
522 shlib=lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR}; \ 518 shlib=lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR}; \
523 fi; \ 519 fi; \
524 [ -f $$shlib ] && rm -f $$shlib; \ 520 [ -f $$shlib ] && rm -f $$shlib; \
525 ALLSYMSFLAGS='-Wl,-Fl'; \ 521 ( set -x; /usr/ccs/bin/ld ${SHARED_LDFLAGS} \
526 expr $(PLATFORM) : 'hpux64' > /dev/null && ALLSYMSFLAGS='-Wl,+forceload'; \ 522 +vnocompatwarnings \
527 ( set -x; $${FIPSLD:-${CC}} ${SHARED_LDFLAGS} \ 523 -b -z +s \
528 -Wl,-B,symbolic,+vnocompatwarnings,-z,+h,$$shlib \ 524 -o $$shlib +h $$shlib \
529 -o $$shlib $$ALLSYMSFLAGS,lib$$i.a -ldld ) || exit 1; \ 525 -Fl lib$$i.a -ldld -lc ) || exit 1; \
526 chmod a=rx $$shlib; \
527 done
528
529# This assumes that GNU utilities are *not* used
530# HP-UX includes the full pathname of libs we depend on, so we would get
531# ./libcrypto (with ./ as path information) compiled into libssl, hence
532# we omit the SHLIBDEPS. Applications must be linked with -lssl -lcrypto
533# anyway.
534#
535# HP-UX in 64bit mode has "+s" enabled by default; it will search for
536# shared libraries along LD_LIBRARY_PATH _and_ SHLIB_PATH.
537#
538do_hpux64-shared:
539 for i in ${SHLIBDIRS}; do \
540 if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
541 libs="$(LIBKRB5) $$libs"; \
542 fi; \
543 if expr $(PLATFORM) : '.*ia64' > /dev/null; then \
544 shlib=lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR}; \
545 else \
546 shlib=lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR}; \
547 fi; \
548 [ -f $$shlib ] && rm -f $$shlib; \
549 ( set -x; /usr/ccs/bin/ld ${SHARED_LDFLAGS} \
550 -b -z \
551 -o $$shlib +h $$shlib \
552 +forceload lib$$i.a -ldl -lc ) || exit 1; \
530 chmod a=rx $$shlib; \ 553 chmod a=rx $$shlib; \
531 done 554 done
532 555
@@ -572,7 +595,7 @@ do_aix-shared:
572 OBJECT_MODE=$${OBJECT_MODE:-32}; export OBJECT_MODE; \ 595 OBJECT_MODE=$${OBJECT_MODE:-32}; export OBJECT_MODE; \
573 ld -r -o lib$$i.o $(ALLSYMSFLAG) lib$$i.a && \ 596 ld -r -o lib$$i.o $(ALLSYMSFLAG) lib$$i.a && \
574 ( nm -Pg lib$$i.o | grep ' [BD] ' | cut -f1 -d' ' > lib$$i.exp; \ 597 ( nm -Pg lib$$i.o | grep ' [BD] ' | cut -f1 -d' ' > lib$$i.exp; \
575 $${FIPSLD:-${CC}} $(SHAREDFLAGS) \ 598 $(SHAREDCMD) $(SHAREDFLAGS) \
576 -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} lib$$i.o \ 599 -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} lib$$i.o \
577 $$libs ${EX_LIBS} ) ) \ 600 $$libs ${EX_LIBS} ) ) \
578 || exit 1; \ 601 || exit 1; \
@@ -588,7 +611,7 @@ do_reliantunix-shared:
588 ( set -x; \ 611 ( set -x; \
589 ( Opwd=`pwd` ; mkdir $$tmpdir || exit 1; \ 612 ( Opwd=`pwd` ; mkdir $$tmpdir || exit 1; \
590 cd $$tmpdir || exit 1 ; ar x $$Opwd/lib$$i.a ; \ 613 cd $$tmpdir || exit 1 ; ar x $$Opwd/lib$$i.a ; \
591 $${FIPSLD:-${CC}} -G -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} *.o \ 614 ${CC} -G -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} *.o \
592 ) || exit 1; \ 615 ) || exit 1; \
593 cp $$tmpdir/lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} . ; \ 616 cp $$tmpdir/lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} . ; \
594 ) || exit 1; \ 617 ) || exit 1; \
@@ -734,15 +757,11 @@ crypto/objects/obj_mac.h: crypto/objects/objects.pl crypto/objects/objects.txt c
734apps/openssl-vms.cnf: apps/openssl.cnf 757apps/openssl-vms.cnf: apps/openssl.cnf
735 $(PERL) VMS/VMSify-conf.pl < apps/openssl.cnf > apps/openssl-vms.cnf 758 $(PERL) VMS/VMSify-conf.pl < apps/openssl.cnf > apps/openssl-vms.cnf
736 759
737crypto/bn/bn_prime.h: crypto/bn/bn_prime.pl
738 $(PERL) crypto/bn/bn_prime.pl >crypto/bn/bn_prime.h
739
740
741TABLE: Configure 760TABLE: Configure
742 (echo 'Output of `Configure TABLE'"':"; \ 761 (echo 'Output of `Configure TABLE'"':"; \
743 $(PERL) Configure TABLE) > TABLE 762 $(PERL) Configure TABLE) > TABLE
744 763
745update: errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h apps/openssl-vms.cnf crypto/bn/bn_prime.h TABLE depend 764update: depend errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h apps/openssl-vms.cnf TABLE
746 765
747# Build distribution tar-file. As the list of files returned by "find" is 766# Build distribution tar-file. As the list of files returned by "find" is
748# pretty long, on several platforms a "too many arguments" error or similar 767# pretty long, on several platforms a "too many arguments" error or similar
@@ -847,6 +866,15 @@ install_sw:
847 sed -e '1,/^$$/d' doc/openssl-shared.txt; \ 866 sed -e '1,/^$$/d' doc/openssl-shared.txt; \
848 fi; \ 867 fi; \
849 fi 868 fi
869 @for i in $(SIGS) ;\
870 do \
871 if [ -f "$$i" ]; then \
872 ( echo installing $$i; \
873 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
874 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
875 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \
876 fi; \
877 done;
850 cp openssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig 878 cp openssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig
851 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig/openssl.pc 879 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig/openssl.pc
852 880
@@ -872,8 +900,8 @@ install_docs:
872 --release=$(VERSION) `basename $$i`") \ 900 --release=$(VERSION) `basename $$i`") \
873 > $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$${sec}$(MANSUFFIX); \ 901 > $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$${sec}$(MANSUFFIX); \
874 $(PERL) util/extract-names.pl < $$i | \ 902 $(PERL) util/extract-names.pl < $$i | \
875 (grep -v $$filecase "^$$fn\$$"; true) | \ 903 grep -v $$filecase "^$$fn\$$" | \
876 (grep -v "[ ]"; true) | \ 904 grep -v "[ ]" | \
877 (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \ 905 (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
878 while read n; do \ 906 while read n; do \
879 $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \ 907 $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \
@@ -889,8 +917,8 @@ install_docs:
889 --release=$(VERSION) `basename $$i`") \ 917 --release=$(VERSION) `basename $$i`") \
890 > $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$${sec}$(MANSUFFIX); \ 918 > $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$${sec}$(MANSUFFIX); \
891 $(PERL) util/extract-names.pl < $$i | \ 919 $(PERL) util/extract-names.pl < $$i | \
892 (grep -v $$filecase "^$$fn\$$"; true) | \ 920 grep -v $$filecase "^$$fn\$$" | \
893 (grep -v "[ ]"; true) | \ 921 grep -v "[ ]" | \
894 (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \ 922 (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
895 while read n; do \ 923 while read n; do \
896 $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \ 924 $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \
diff --git a/src/lib/libssl/src/NEWS b/src/lib/libssl/src/NEWS
index 49b443ed4d..8e1ce65a5f 100644
--- a/src/lib/libssl/src/NEWS
+++ b/src/lib/libssl/src/NEWS
@@ -5,20 +5,6 @@
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 0.9.7i and OpenSSL 0.9.7j:
9
10 o Update Windows build system for FIPS.
11
12 Major changes between OpenSSL 0.9.7h and OpenSSL 0.9.7i:
13
14 o Give EVP_MAX_MD_SIZE it's old value, except for a FIPS build.
15
16 Major changes between OpenSSL 0.9.7g and OpenSSL 0.9.7h:
17
18 o Fix SSL 2.0 Rollback, CAN-2005-2969
19 o Allow use of fixed-length exponent on DSA signing
20 o Default fixed-window RSA, DSA, DH private-key operations
21
22 Major changes between OpenSSL 0.9.7f and OpenSSL 0.9.7g: 8 Major changes between OpenSSL 0.9.7f and OpenSSL 0.9.7g:
23 9
24 o More compilation issues fixed. 10 o More compilation issues fixed.
diff --git a/src/lib/libssl/src/PROBLEMS b/src/lib/libssl/src/PROBLEMS
deleted file mode 100644
index 6f39eb345d..0000000000
--- a/src/lib/libssl/src/PROBLEMS
+++ /dev/null
@@ -1,164 +0,0 @@
1* System libcrypto.dylib and libssl.dylib are used by system ld on MacOS X.
2
3
4 NOTE: The problem described here only applies when OpenSSL isn't built
5 with shared library support (i.e. without the "shared" configuration
6 option). If you build with shared library support, you will have no
7 problems as long as you set up DYLD_LIBRARY_PATH properly at all times.
8
9
10This is really a misfeature in ld, which seems to look for .dylib libraries
11along the whole library path before it bothers looking for .a libraries. This
12means that -L switches won't matter unless OpenSSL is built with shared
13library support.
14
15The workaround may be to change the following lines in apps/Makefile and
16test/Makefile:
17
18 LIBCRYPTO=-L.. -lcrypto
19 LIBSSL=-L.. -lssl
20
21to:
22
23 LIBCRYPTO=../libcrypto.a
24 LIBSSL=../libssl.a
25
26It's possible that something similar is needed for shared library support
27as well. That hasn't been well tested yet.
28
29
30Another solution that many seem to recommend is to move the libraries
31/usr/lib/libcrypto.0.9.dylib, /usr/lib/libssl.0.9.dylib to a different
32directory, build and install OpenSSL and anything that depends on your
33build, then move libcrypto.0.9.dylib and libssl.0.9.dylib back to their
34original places. Note that the version numbers on those two libraries
35may differ on your machine.
36
37
38As long as Apple doesn't fix the problem with ld, this problem building
39OpenSSL will remain as is.
40
41
42* Parallell make leads to errors
43
44While running tests, running a parallell make is a bad idea. Many test
45scripts use the same name for output and input files, which means different
46will interfere with each other and lead to test failure.
47
48The solution is simple for now: don't run parallell make when testing.
49
50
51* Bugs in gcc triggered
52
53- According to a problem report, there are bugs in gcc 3.0 that are
54 triggered by some of the code in OpenSSL, more specifically in
55 PEM_get_EVP_CIPHER_INFO(). The triggering code is the following:
56
57 header+=11;
58 if (*header != '4') return(0); header++;
59 if (*header != ',') return(0); header++;
60
61 What happens is that gcc might optimize a little too agressively, and
62 you end up with an extra incrementation when *header != '4'.
63
64 We recommend that you upgrade gcc to as high a 3.x version as you can.
65
66- According to multiple problem reports, some of our message digest
67 implementations trigger bug[s] in code optimizer in gcc 3.3 for sparc64
68 and gcc 2.96 for ppc. Former fails to complete RIPEMD160 test, while
69 latter - SHA one.
70
71 The recomendation is to upgrade your compiler. This naturally applies to
72 other similar cases.
73
74* solaris64-sparcv9-cc SHA-1 performance with WorkShop 6 compiler.
75
76As subject suggests SHA-1 might perform poorly (4 times slower)
77if compiled with WorkShop 6 compiler and -xarch=v9. The cause for
78this seems to be the fact that compiler emits multiplication to
79perform shift operations:-( To work the problem around configure
80with './Configure solaris64-sparcv9-cc -DMD32_REG_T=int'.
81
82* Problems with hp-parisc2-cc target when used with "no-asm" flag
83
84When using the hp-parisc2-cc target, wrong bignum code is generated.
85This is due to the SIXTY_FOUR_BIT build being compiled with the +O3
86aggressive optimization.
87The problem manifests itself by the BN_kronecker test hanging in an
88endless loop. Reason: the BN_kronecker test calls BN_generate_prime()
89which itself hangs. The reason could be tracked down to the bn_mul_comba8()
90function in bn_asm.c. At some occasions the higher 32bit value of r[7]
91is off by 1 (meaning: calculated=shouldbe+1). Further analysis failed,
92as no debugger support possible at +O3 and additional fprintf()'s
93introduced fixed the bug, therefore it is most likely a bug in the
94optimizer.
95The bug was found in the BN_kronecker test but may also lead to
96failures in other parts of the code.
97(See Ticket #426.)
98
99Workaround: modify the target to +O2 when building with no-asm.
100
101* Problems building shared libraries on SCO OpenServer Release 5.0.6
102 with gcc 2.95.3
103
104The symptoms appear when running the test suite, more specifically
105test/ectest, with the following result:
106
107OSSL_LIBPATH="`cd ..; pwd`"; LD_LIBRARY_PATH="$OSSL_LIBPATH:$LD_LIBRARY_PATH"; DYLD_LIBRARY_PATH="$OSSL_LIBPATH:$DYLD_LIBRARY_PATH"; SHLIB_PATH="$OSSL_LIBPATH:$SHLIB_PATH"; LIBPATH="$OSSL_LIBPATH:$LIBPATH"; if [ "debug-sco5-gcc" = "Cygwin" ]; then PATH="${LIBPATH}:$PATH"; fi; export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH PATH; ./ectest
108ectest.c:186: ABORT
109
110The cause of the problem seems to be that isxdigit(), called from
111BN_hex2bn(), returns 0 on a perfectly legitimate hex digit. Further
112investigation shows that any of the isxxx() macros return 0 on any
113input. A direct look in the information array that the isxxx() use,
114called __ctype, shows that it contains all zeroes...
115
116Taking a look at the newly created libcrypto.so with nm, one can see
117that the variable __ctype is defined in libcrypto's .bss (which
118explains why it is filled with zeroes):
119
120$ nm -Pg libcrypto.so | grep __ctype
121__ctype B 0011659c
122__ctype2 U
123
124Curiously, __ctype2 is undefined, in spite of being declared in
125/usr/include/ctype.h in exactly the same way as __ctype.
126
127Any information helping to solve this issue would be deeply
128appreciated.
129
130NOTE: building non-shared doesn't come with this problem.
131
132* ULTRIX build fails with shell errors, such as "bad substitution"
133 and "test: argument expected"
134
135The problem is caused by ULTRIX /bin/sh supporting only original
136Bourne shell syntax/semantics, and the trouble is that the vast
137majority is so accustomed to more modern syntax, that very few
138people [if any] would recognize the ancient syntax even as valid.
139This inevitably results in non-trivial scripts breaking on ULTRIX,
140and OpenSSL isn't an exclusion. Fortunately there is workaround,
141hire /bin/ksh to do the job /bin/sh fails to do.
142
1431. Trick make(1) to use /bin/ksh by setting up following environ-
144 ment variables *prior* you execute ./Configure and make:
145
146 PROG_ENV=POSIX
147 MAKESHELL=/bin/ksh
148 export PROG_ENV MAKESHELL
149
150 or if your shell is csh-compatible:
151
152 setenv PROG_ENV POSIX
153 setenv MAKESHELL /bin/ksh
154
1552. Trick /bin/sh to use alternative expression evaluator. Create
156 following 'test' script for example in /tmp:
157
158 #!/bin/ksh
159 ${0##*/} "$@"
160
161 Then 'chmod a+x /tmp/test; ln /tmp/test /tmp/[' and *prepend*
162 your $PATH with chosen location, e.g. PATH=/tmp:$PATH. Alter-
163 natively just replace system /bin/test and /bin/[ with the
164 above script.
diff --git a/src/lib/libssl/src/README b/src/lib/libssl/src/README
index a6a97c8858..c52c2d94bd 100644
--- a/src/lib/libssl/src/README
+++ b/src/lib/libssl/src/README
@@ -1,5 +1,5 @@
1 1
2 OpenSSL 0.9.7j 04 May 2006 2 OpenSSL 0.9.7g 11 April 2005
3 3
4 Copyright (c) 1998-2005 The OpenSSL Project 4 Copyright (c) 1998-2005 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
@@ -14,13 +14,13 @@
14 protocols as well as a full-strength general purpose cryptography library. 14 protocols as well as a full-strength general purpose cryptography library.
15 The project is managed by a worldwide community of volunteers that use the 15 The project is managed by a worldwide community of volunteers that use the
16 Internet to communicate, plan, and develop the OpenSSL toolkit and its 16 Internet to communicate, plan, and develop the OpenSSL toolkit and its
17 related documentation. 17 related documentation.
18 18
19 OpenSSL is based on the excellent SSLeay library developed from Eric A. Young 19 OpenSSL is based on the excellent SSLeay library developed from Eric A. Young
20 and Tim J. Hudson. The OpenSSL toolkit is licensed under a dual-license (the 20 and Tim J. Hudson. The OpenSSL toolkit is licensed under a dual-license (the
21 OpenSSL license plus the SSLeay license) situation, which basically means 21 OpenSSL license plus the SSLeay license) situation, which basically means
22 that you are free to get and use it for commercial and non-commercial 22 that you are free to get and use it for commercial and non-commercial
23 purposes as long as you fulfill the conditions of both licenses. 23 purposes as long as you fulfill the conditions of both licenses.
24 24
25 OVERVIEW 25 OVERVIEW
26 -------- 26 --------
@@ -53,11 +53,11 @@
53 MDC2 message digest. A DES based hash that is popular on smart cards. 53 MDC2 message digest. A DES based hash that is popular on smart cards.
54 54
55 Public Key 55 Public Key
56 RSA encryption/decryption/generation. 56 RSA encryption/decryption/generation.
57 There is no limit on the number of bits. 57 There is no limit on the number of bits.
58 DSA encryption/decryption/generation. 58 DSA encryption/decryption/generation.
59 There is no limit on the number of bits. 59 There is no limit on the number of bits.
60 Diffie-Hellman key-exchange/key generation. 60 Diffie-Hellman key-exchange/key generation.
61 There is no limit on the number of bits. 61 There is no limit on the number of bits.
62 62
63 X.509v3 certificates 63 X.509v3 certificates
@@ -80,16 +80,16 @@
80 A simple stack. 80 A simple stack.
81 A Configuration loader that uses a format similar to MS .ini files. 81 A Configuration loader that uses a format similar to MS .ini files.
82 82
83 openssl: 83 openssl:
84 A command line tool that can be used for: 84 A command line tool that can be used for:
85 Creation of RSA, DH and DSA key parameters 85 Creation of RSA, DH and DSA key parameters
86 Creation of X.509 certificates, CSRs and CRLs 86 Creation of X.509 certificates, CSRs and CRLs
87 Calculation of Message Digests 87 Calculation of Message Digests
88 Encryption and Decryption with Ciphers 88 Encryption and Decryption with Ciphers
89 SSL/TLS Client and Server Tests 89 SSL/TLS Client and Server Tests
90 Handling of S/MIME signed or encrypted mail 90 Handling of S/MIME signed or encrypted mail
91 91
92 92
93 PATENTS 93 PATENTS
94 ------- 94 -------
95 95
@@ -104,15 +104,13 @@
104 licensing conditions. Their web page is http://www.rsasecurity.com/. 104 licensing conditions. Their web page is http://www.rsasecurity.com/.
105 105
106 RC4 is a trademark of RSA Security, so use of this label should perhaps 106 RC4 is a trademark of RSA Security, so use of this label should perhaps
107 only be used with RSA Security's permission. 107 only be used with RSA Security's permission.
108 108
109 The IDEA algorithm is patented by Ascom in Austria, France, Germany, Italy, 109 The IDEA algorithm is patented by Ascom in Austria, France, Germany, Italy,
110 Japan, the Netherlands, Spain, Sweden, Switzerland, UK and the USA. They 110 Japan, the Netherlands, Spain, Sweden, Switzerland, UK and the USA. They
111 should be contacted if that algorithm is to be used; their web page is 111 should be contacted if that algorithm is to be used; their web page is
112 http://www.ascom.ch/. 112 http://www.ascom.ch/.
113 113
114 The MDC2 algorithm is patented by IBM.
115
116 INSTALLATION 114 INSTALLATION
117 ------------ 115 ------------
118 116
@@ -131,7 +129,7 @@
131 or application author. We try to collect those in doc/PROBLEMS, with current 129 or application author. We try to collect those in doc/PROBLEMS, with current
132 thoughts on how they should be solved in a future of OpenSSL. 130 thoughts on how they should be solved in a future of OpenSSL.
133 131
134 SUPPORT 132 SUPPORT
135 ------- 133 -------
136 134
137 If you have any problems with OpenSSL then please take the following steps 135 If you have any problems with OpenSSL then please take the following steps
@@ -140,7 +138,7 @@
140 - Download the current snapshot from ftp://ftp.openssl.org/snapshot/ 138 - Download the current snapshot from ftp://ftp.openssl.org/snapshot/
141 to see if the problem has already been addressed 139 to see if the problem has already been addressed
142 - Remove ASM versions of libraries 140 - Remove ASM versions of libraries
143 - Remove compiler optimisation flags 141 - Remove compiler optimisation flags
144 142
145 If you wish to report a bug then please include the following information in 143 If you wish to report a bug then please include the following information in
146 any bug report: 144 any bug report:
@@ -193,4 +191,3 @@
193 # ./Configure dist; make clean 191 # ./Configure dist; make clean
194 # cd .. 192 # cd ..
195 # diff -ur openssl-orig openssl-work > mydiffs.patch 193 # diff -ur openssl-orig openssl-work > mydiffs.patch
196
diff --git a/src/lib/libssl/src/apps/CA.pl b/src/lib/libssl/src/apps/CA.pl
deleted file mode 100644
index 9f06cd0232..0000000000
--- a/src/lib/libssl/src/apps/CA.pl
+++ /dev/null
@@ -1,183 +0,0 @@
1#!/usr/bin/perl
2#
3# CA - wrapper around ca to make it easier to use ... basically ca requires
4# some setup stuff to be done before you can use it and this makes
5# things easier between now and when Eric is convinced to fix it :-)
6#
7# CA -newca ... will setup the right stuff
8# CA -newreq[-nodes] ... will generate a certificate request
9# CA -sign ... will sign the generated request and output
10#
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
13# you want/need ... I'll make even this a little cleaner later.
14#
15#
16# 12-Jan-96 tjh Added more things ... including CA -signcert which
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
19# environment variable so this can be driven from
20# a script.
21# 25-Jul-96 eay Cleaned up filenames some more.
22# 11-Jun-96 eay Fixed a few filename missmatches.
23# 03-May-96 eay Modified to use 'ssleay cmd' instead of 'cmd'.
24# 18-Apr-96 tjh Original hacking
25#
26# Tim Hudson
27# tjh@cryptsoft.com
28#
29
30# 27-Apr-98 snh Translation into perl, fix existing CA bug.
31#
32#
33# Steve Henson
34# shenson@bigfoot.com
35
36# default openssl.cnf file has setup as per the following
37# demoCA ... where everything is stored
38
39my $openssl;
40if(defined $ENV{OPENSSL}) {
41 $openssl = $ENV{OPENSSL};
42} else {
43 $openssl = "openssl";
44 $ENV{OPENSSL} = $openssl;
45}
46
47$SSLEAY_CONFIG=$ENV{"SSLEAY_CONFIG"};
48$DAYS="-days 365";
49$REQ="$openssl req $SSLEAY_CONFIG";
50$CA="$openssl ca $SSLEAY_CONFIG";
51$VERIFY="$openssl verify";
52$X509="$openssl x509";
53$PKCS12="$openssl pkcs12";
54
55$CATOP="./demoCA";
56$CAKEY="cakey.pem";
57$CACERT="cacert.pem";
58
59$DIRMODE = 0777;
60
61$RET = 0;
62
63foreach (@ARGV) {
64 if ( /^(-\?|-h|-help)$/ ) {
65 print STDERR "usage: CA -newcert|-newreq|-newreq-nodes|-newca|-sign|-verify\n";
66 exit 0;
67 } elsif (/^-newcert$/) {
68 # create a certificate
69 system ("$REQ -new -x509 -keyout newkey.pem -out newcert.pem $DAYS");
70 $RET=$?;
71 print "Certificate is in newcert.pem, private key is in newkey.pem\n"
72 } elsif (/^-newreq$/) {
73 # create a certificate request
74 system ("$REQ -new -keyout newkey.pem -out newreq.pem $DAYS");
75 $RET=$?;
76 print "Request is in newreq.pem, private key is in newkey.pem\n";
77 } elsif (/^-newreq-nodes$/) {
78 # create a certificate request
79 system ("$REQ -new -nodes -keyout newkey.pem -out newreq.pem $DAYS");
80 $RET=$?;
81 print "Request is in newreq.pem, private key is in newkey.pem\n";
82 } elsif (/^-newca$/) {
83 # if explicitly asked for or it doesn't exist then setup the
84 # directory structure that Eric likes to manage things
85 $NEW="1";
86 if ( "$NEW" || ! -f "${CATOP}/serial" ) {
87 # create the directory hierarchy
88 mkdir $CATOP, $DIRMODE;
89 mkdir "${CATOP}/certs", $DIRMODE;
90 mkdir "${CATOP}/crl", $DIRMODE ;
91 mkdir "${CATOP}/newcerts", $DIRMODE;
92 mkdir "${CATOP}/private", $DIRMODE;
93 open OUT, ">${CATOP}/index.txt";
94 close OUT;
95 }
96 if ( ! -f "${CATOP}/private/$CAKEY" ) {
97 print "CA certificate filename (or enter to create)\n";
98 $FILE = <STDIN>;
99
100 chop $FILE;
101
102 # ask user for existing CA certificate
103 if ($FILE) {
104 cp_pem($FILE,"${CATOP}/private/$CAKEY", "PRIVATE");
105 cp_pem($FILE,"${CATOP}/$CACERT", "CERTIFICATE");
106 $RET=$?;
107 } else {
108 print "Making CA certificate ...\n";
109 system ("$REQ -new -x509 -keyout " .
110 "${CATOP}/private/$CAKEY -out ${CATOP}/$CACERT $DAYS");
111 $RET=$?;
112 }
113 }
114 if (! -f "${CATOP}/serial" ) {
115 system ("$X509 -in ${CATOP}/$CACERT -noout "
116 . "-next_serial -out ${CATOP}/serial");
117 }
118 } elsif (/^-pkcs12$/) {
119 my $cname = $ARGV[1];
120 $cname = "My Certificate" unless defined $cname;
121 system ("$PKCS12 -in newcert.pem -inkey newkey.pem " .
122 "-certfile ${CATOP}/$CACERT -out newcert.p12 " .
123 "-export -name \"$cname\"");
124 $RET=$?;
125 print "PKCS #12 file is in newcert.p12\n";
126 exit $RET;
127 } elsif (/^-xsign$/) {
128 system ("$CA -policy policy_anything -infiles newreq.pem");
129 $RET=$?;
130 } elsif (/^(-sign|-signreq)$/) {
131 system ("$CA -policy policy_anything -out newcert.pem " .
132 "-infiles newreq.pem");
133 $RET=$?;
134 print "Signed certificate is in newcert.pem\n";
135 } elsif (/^(-signCA)$/) {
136 system ("$CA -policy policy_anything -out newcert.pem " .
137 "-extensions v3_ca -infiles newreq.pem");
138 $RET=$?;
139 print "Signed CA certificate is in newcert.pem\n";
140 } elsif (/^-signcert$/) {
141 system ("$X509 -x509toreq -in newreq.pem -signkey newreq.pem " .
142 "-out tmp.pem");
143 system ("$CA -policy policy_anything -out newcert.pem " .
144 "-infiles tmp.pem");
145 $RET = $?;
146 print "Signed certificate is in newcert.pem\n";
147 } elsif (/^-verify$/) {
148 if (shift) {
149 foreach $j (@ARGV) {
150 system ("$VERIFY -CAfile $CATOP/$CACERT $j");
151 $RET=$? if ($? != 0);
152 }
153 exit $RET;
154 } else {
155 system ("$VERIFY -CAfile $CATOP/$CACERT newcert.pem");
156 $RET=$?;
157 exit 0;
158 }
159 } else {
160 print STDERR "Unknown arg $_\n";
161 print STDERR "usage: CA -newcert|-newreq|-newreq-nodes|-newca|-sign|-verify\n";
162 exit 1;
163 }
164}
165
166exit $RET;
167
168sub cp_pem {
169my ($infile, $outfile, $bound) = @_;
170open IN, $infile;
171open OUT, ">$outfile";
172my $flag = 0;
173while (<IN>) {
174 $flag = 1 if (/^-----BEGIN.*$bound/) ;
175 print OUT $_ if ($flag);
176 if (/^-----END.*$bound/) {
177 close IN;
178 close OUT;
179 return;
180 }
181}
182}
183
diff --git a/src/lib/libssl/src/apps/CA.pl.in b/src/lib/libssl/src/apps/CA.pl.in
index 9c99739092..39f267d313 100644
--- a/src/lib/libssl/src/apps/CA.pl.in
+++ b/src/lib/libssl/src/apps/CA.pl.in
@@ -66,19 +66,19 @@ foreach (@ARGV) {
66 exit 0; 66 exit 0;
67 } elsif (/^-newcert$/) { 67 } elsif (/^-newcert$/) {
68 # create a certificate 68 # create a certificate
69 system ("$REQ -new -x509 -keyout newkey.pem -out newcert.pem $DAYS"); 69 system ("$REQ -new -x509 -keyout newreq.pem -out newreq.pem $DAYS");
70 $RET=$?; 70 $RET=$?;
71 print "Certificate is in newcert.pem, private key is in newkey.pem\n" 71 print "Certificate (and private key) is in newreq.pem\n"
72 } elsif (/^-newreq$/) { 72 } elsif (/^-newreq$/) {
73 # create a certificate request 73 # create a certificate request
74 system ("$REQ -new -keyout newkey.pem -out newreq.pem $DAYS"); 74 system ("$REQ -new -keyout newreq.pem -out newreq.pem $DAYS");
75 $RET=$?; 75 $RET=$?;
76 print "Request is in newreq.pem, private key is in newkey.pem\n"; 76 print "Request (and private key) is in newreq.pem\n";
77 } elsif (/^-newreq-nodes$/) { 77 } elsif (/^-newreq-nodes$/) {
78 # create a certificate request 78 # create a certificate request
79 system ("$REQ -new -nodes -keyout newkey.pem -out newreq.pem $DAYS"); 79 system ("$REQ -new -nodes -keyout newreq.pem -out newreq.pem $DAYS");
80 $RET=$?; 80 $RET=$?;
81 print "Request is in newreq.pem, private key is in newkey.pem\n"; 81 print "Request (and private key) is in newreq.pem\n";
82 } elsif (/^-newca$/) { 82 } elsif (/^-newca$/) {
83 # if explicitly asked for or it doesn't exist then setup the 83 # if explicitly asked for or it doesn't exist then setup the
84 # directory structure that Eric likes to manage things 84 # directory structure that Eric likes to manage things
@@ -118,11 +118,10 @@ foreach (@ARGV) {
118 } elsif (/^-pkcs12$/) { 118 } elsif (/^-pkcs12$/) {
119 my $cname = $ARGV[1]; 119 my $cname = $ARGV[1];
120 $cname = "My Certificate" unless defined $cname; 120 $cname = "My Certificate" unless defined $cname;
121 system ("$PKCS12 -in newcert.pem -inkey newkey.pem " . 121 system ("$PKCS12 -in newcert.pem -inkey newreq.pem " .
122 "-certfile ${CATOP}/$CACERT -out newcert.p12 " . 122 "-certfile ${CATOP}/$CACERT -out newcert.p12 " .
123 "-export -name \"$cname\""); 123 "-export -name \"$cname\"");
124 $RET=$?; 124 $RET=$?;
125 print "PKCS #12 file is in newcert.p12\n";
126 exit $RET; 125 exit $RET;
127 } elsif (/^-xsign$/) { 126 } elsif (/^-xsign$/) {
128 system ("$CA -policy policy_anything -infiles newreq.pem"); 127 system ("$CA -policy policy_anything -infiles newreq.pem");
diff --git a/src/lib/libssl/src/apps/CA.sh b/src/lib/libssl/src/apps/CA.sh
index 84d7ec0b33..030a11fc25 100644
--- a/src/lib/libssl/src/apps/CA.sh
+++ b/src/lib/libssl/src/apps/CA.sh
@@ -51,15 +51,15 @@ case $i in
51 ;; 51 ;;
52-newcert) 52-newcert)
53 # create a certificate 53 # create a certificate
54 $REQ -new -x509 -keyout newkey.pem -out newcert.pem $DAYS 54 $REQ -new -x509 -keyout newreq.pem -out newreq.pem $DAYS
55 RET=$? 55 RET=$?
56 echo "Certificate is in newcert.pem, private key is in newkey.pem" 56 echo "Certificate (and private key) is in newreq.pem"
57 ;; 57 ;;
58-newreq) 58-newreq)
59 # create a certificate request 59 # create a certificate request
60 $REQ -new -keyout newkey.pem -out newreq.pem $DAYS 60 $REQ -new -keyout newreq.pem -out newreq.pem $DAYS
61 RET=$? 61 RET=$?
62 echo "Request is in newreq.pem, private key is in newkey.pem" 62 echo "Request (and private key) is in newreq.pem"
63 ;; 63 ;;
64-newca) 64-newca)
65 # if explicitly asked for or it doesn't exist then setup the directory 65 # if explicitly asked for or it doesn't exist then setup the directory
diff --git a/src/lib/libssl/src/apps/Makefile.ssl b/src/lib/libssl/src/apps/Makefile.ssl
new file mode 100644
index 0000000000..7068286204
--- /dev/null
+++ b/src/lib/libssl/src/apps/Makefile.ssl
@@ -0,0 +1,1146 @@
1#
2# apps/Makefile.ssl
3#
4
5DIR= apps
6TOP= ..
7CC= cc
8INCLUDES= -I$(TOP) -I../include $(KRB5_INCLUDES)
9CFLAG= -g -static
10INSTALL_PREFIX=
11INSTALLTOP= /usr/local/ssl
12OPENSSLDIR= /usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17PERL= perl
18RM= rm -f
19# KRB5 stuff
20KRB5_INCLUDES=
21LIBKRB5=
22
23PEX_LIBS=
24EX_LIBS=
25EXE_EXT=
26
27SHLIB_TARGET=
28
29CFLAGS= -DMONOLITH $(INCLUDES) $(CFLAG)
30
31GENERAL=Makefile makeapps.com install.com
32
33DLIBCRYPTO=../libcrypto.a
34DLIBSSL=../libssl.a
35LIBCRYPTO=-L.. -lcrypto
36LIBSSL=-L.. -lssl
37
38PROGRAM= openssl
39
40SCRIPTS=CA.sh CA.pl der_chop
41
42EXE= $(PROGRAM)$(EXE_EXT)
43
44E_EXE= verify asn1pars req dgst dh dhparam enc passwd gendh errstr \
45 ca crl rsa rsautl dsa dsaparam \
46 x509 genrsa gendsa s_server s_client speed \
47 s_time version pkcs7 crl2pkcs7 sess_id ciphers nseq pkcs12 \
48 pkcs8 spkac smime rand engine ocsp
49
50PROGS= $(PROGRAM).c
51
52A_OBJ=apps.o
53A_SRC=apps.c
54S_OBJ= s_cb.o s_socket.o
55S_SRC= s_cb.c s_socket.c
56RAND_OBJ=app_rand.o
57RAND_SRC=app_rand.c
58
59E_OBJ= verify.o asn1pars.o req.o dgst.o dh.o dhparam.o enc.o passwd.o gendh.o errstr.o \
60 ca.o pkcs7.o crl2p7.o crl.o \
61 rsa.o rsautl.o dsa.o dsaparam.o \
62 x509.o genrsa.o gendsa.o s_server.o s_client.o speed.o \
63 s_time.o $(A_OBJ) $(S_OBJ) $(RAND_OBJ) version.o sess_id.o \
64 ciphers.o nseq.o pkcs12.o pkcs8.o spkac.o smime.o rand.o engine.o ocsp.o
65
66E_SRC= verify.c asn1pars.c req.c dgst.c dh.c enc.c passwd.c gendh.c errstr.c ca.c \
67 pkcs7.c crl2p7.c crl.c \
68 rsa.c rsautl.c dsa.c dsaparam.c \
69 x509.c genrsa.c gendsa.c s_server.c s_client.c speed.c \
70 s_time.c $(A_SRC) $(S_SRC) $(RAND_SRC) version.c sess_id.c \
71 ciphers.c nseq.c pkcs12.c pkcs8.c spkac.c smime.c rand.c engine.c ocsp.c
72
73SRC=$(E_SRC)
74
75EXHEADER=
76HEADER= apps.h progs.h s_apps.h \
77 testdsa.h testrsa.h \
78 $(EXHEADER)
79
80ALL= $(GENERAL) $(SRC) $(HEADER)
81
82top:
83 @(cd ..; $(MAKE) DIRS=$(DIR) all)
84
85all: exe
86
87exe: $(PROGRAM)
88
89req: sreq.o $(A_OBJ) $(DLIBCRYPTO)
90 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
91 $(CC) -o req $(CFLAG) sreq.o $(A_OBJ) $(RAND_OBJ) $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS)
92
93sreq.o: req.c
94 $(CC) -c $(INCLUDES) $(CFLAG) -o sreq.o req.c
95
96files:
97 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
98
99install:
100 @for i in $(EXE); \
101 do \
102 (echo installing $$i; \
103 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
104 chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
105 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i ); \
106 done;
107 @for i in $(SCRIPTS); \
108 do \
109 (echo installing $$i; \
110 cp $$i $(INSTALL_PREFIX)$(OPENSSLDIR)/misc/$$i.new; \
111 chmod 755 $(INSTALL_PREFIX)$(OPENSSLDIR)/misc/$$i.new; \
112 mv -f $(INSTALL_PREFIX)$(OPENSSLDIR)/misc/$$i.new $(INSTALL_PREFIX)$(OPENSSLDIR)/misc/$$i ); \
113 done
114 @cp openssl.cnf $(INSTALL_PREFIX)$(OPENSSLDIR)/openssl.cnf.new; \
115 chmod 644 $(INSTALL_PREFIX)$(OPENSSLDIR)/openssl.cnf.new; \
116 mv -f $(INSTALL_PREFIX)$(OPENSSLDIR)/openssl.cnf.new $(INSTALL_PREFIX)$(OPENSSLDIR)/openssl.cnf
117
118tags:
119 ctags $(SRC)
120
121tests:
122
123links:
124 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
125
126lint:
127 lint -DLINT $(INCLUDES) $(SRC)>fluff
128
129depend:
130 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(SRC)
131
132dclean:
133 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
134 mv -f Makefile.new $(MAKEFILE)
135
136clean:
137 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff $(EXE)
138 rm -f req
139
140$(DLIBSSL):
141 (cd ..; $(MAKE) DIRS=ssl all)
142
143$(DLIBCRYPTO):
144 (cd ..; $(MAKE) DIRS=crypto all)
145
146$(PROGRAM): progs.h $(E_OBJ) $(PROGRAM).o $(DLIBCRYPTO) $(DLIBSSL)
147 $(RM) $(PROGRAM)
148 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
149 $(CC) -o $(PROGRAM) $(CFLAGS) $(PROGRAM).o $(E_OBJ) $(PEX_LIBS) $(DLIBSSL) $(LIBKRB5) $(DLIBCRYPTO) $(EX_LIBS) ; \
150 else \
151 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
152 $(CC) -o $(PROGRAM) $(CFLAGS) $(PROGRAM).o $(E_OBJ) $(PEX_LIBS) $(LIBSSL) $(LIBKRB5) $(LIBCRYPTO) $(EX_LIBS) ; \
153 fi
154 -(cd ..; OPENSSL="`pwd`/apps/openssl"; export OPENSSL; \
155 LD_LIBRARY_PATH="`pwd`:$$LD_LIBRARY_PATH"; \
156 DYLD_LIBRARY_PATH="`pwd`:$$DYLD_LIBRARY_PATH"; \
157 SHLIB_PATH="`pwd`:$$SHLIB_PATH"; \
158 LIBPATH="`pwd`:$$LIBPATH"; \
159 if [ "$(PLATFORM)" = "Cygwin" ]; then PATH="`pwd`:$$PATH"; fi; \
160 export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH PATH; \
161 $(PERL) tools/c_rehash certs)
162
163progs.h: progs.pl
164 $(PERL) progs.pl $(E_EXE) >progs.h
165 $(RM) $(PROGRAM).o
166
167# DO NOT DELETE THIS LINE -- make depend depends on it.
168
169app_rand.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
170app_rand.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
171app_rand.o: ../include/openssl/bn.h ../include/openssl/buffer.h
172app_rand.o: ../include/openssl/cast.h ../include/openssl/conf.h
173app_rand.o: ../include/openssl/crypto.h ../include/openssl/des.h
174app_rand.o: ../include/openssl/des_old.h ../include/openssl/dh.h
175app_rand.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
176app_rand.o: ../include/openssl/engine.h ../include/openssl/err.h
177app_rand.o: ../include/openssl/evp.h ../include/openssl/idea.h
178app_rand.o: ../include/openssl/lhash.h ../include/openssl/md2.h
179app_rand.o: ../include/openssl/md4.h ../include/openssl/md5.h
180app_rand.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
181app_rand.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
182app_rand.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
183app_rand.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
184app_rand.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
185app_rand.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
186app_rand.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
187app_rand.o: ../include/openssl/sha.h ../include/openssl/stack.h
188app_rand.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
189app_rand.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
190app_rand.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h app_rand.c
191app_rand.o: apps.h
192apps.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
193apps.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
194apps.o: ../include/openssl/bn.h ../include/openssl/buffer.h
195apps.o: ../include/openssl/cast.h ../include/openssl/conf.h
196apps.o: ../include/openssl/crypto.h ../include/openssl/des.h
197apps.o: ../include/openssl/des_old.h ../include/openssl/dh.h
198apps.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
199apps.o: ../include/openssl/engine.h ../include/openssl/err.h
200apps.o: ../include/openssl/evp.h ../include/openssl/idea.h
201apps.o: ../include/openssl/lhash.h ../include/openssl/md2.h
202apps.o: ../include/openssl/md4.h ../include/openssl/md5.h
203apps.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
204apps.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
205apps.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
206apps.o: ../include/openssl/pem.h ../include/openssl/pem2.h
207apps.o: ../include/openssl/pkcs12.h ../include/openssl/pkcs7.h
208apps.o: ../include/openssl/rand.h ../include/openssl/rc2.h
209apps.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
210apps.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
211apps.o: ../include/openssl/safestack.h ../include/openssl/sha.h
212apps.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
213apps.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
214apps.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
215apps.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.c apps.h
216asn1pars.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
217asn1pars.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
218asn1pars.o: ../include/openssl/bn.h ../include/openssl/buffer.h
219asn1pars.o: ../include/openssl/cast.h ../include/openssl/conf.h
220asn1pars.o: ../include/openssl/crypto.h ../include/openssl/des.h
221asn1pars.o: ../include/openssl/des_old.h ../include/openssl/dh.h
222asn1pars.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
223asn1pars.o: ../include/openssl/engine.h ../include/openssl/err.h
224asn1pars.o: ../include/openssl/evp.h ../include/openssl/idea.h
225asn1pars.o: ../include/openssl/lhash.h ../include/openssl/md2.h
226asn1pars.o: ../include/openssl/md4.h ../include/openssl/md5.h
227asn1pars.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
228asn1pars.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
229asn1pars.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
230asn1pars.o: ../include/openssl/pem.h ../include/openssl/pem2.h
231asn1pars.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
232asn1pars.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
233asn1pars.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
234asn1pars.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
235asn1pars.o: ../include/openssl/sha.h ../include/openssl/stack.h
236asn1pars.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
237asn1pars.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
238asn1pars.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h apps.h
239asn1pars.o: asn1pars.c
240ca.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
241ca.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
242ca.o: ../include/openssl/bn.h ../include/openssl/buffer.h
243ca.o: ../include/openssl/cast.h ../include/openssl/conf.h
244ca.o: ../include/openssl/crypto.h ../include/openssl/des.h
245ca.o: ../include/openssl/des_old.h ../include/openssl/dh.h
246ca.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
247ca.o: ../include/openssl/engine.h ../include/openssl/err.h
248ca.o: ../include/openssl/evp.h ../include/openssl/idea.h
249ca.o: ../include/openssl/lhash.h ../include/openssl/md2.h
250ca.o: ../include/openssl/md4.h ../include/openssl/md5.h
251ca.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
252ca.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
253ca.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
254ca.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
255ca.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
256ca.o: ../include/openssl/rand.h ../include/openssl/rc2.h
257ca.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
258ca.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
259ca.o: ../include/openssl/safestack.h ../include/openssl/sha.h
260ca.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
261ca.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
262ca.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
263ca.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h ca.c
264ciphers.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
265ciphers.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
266ciphers.o: ../include/openssl/bn.h ../include/openssl/buffer.h
267ciphers.o: ../include/openssl/cast.h ../include/openssl/comp.h
268ciphers.o: ../include/openssl/conf.h ../include/openssl/crypto.h
269ciphers.o: ../include/openssl/des.h ../include/openssl/des_old.h
270ciphers.o: ../include/openssl/dh.h ../include/openssl/dsa.h
271ciphers.o: ../include/openssl/e_os2.h ../include/openssl/engine.h
272ciphers.o: ../include/openssl/err.h ../include/openssl/evp.h
273ciphers.o: ../include/openssl/idea.h ../include/openssl/kssl.h
274ciphers.o: ../include/openssl/lhash.h ../include/openssl/md2.h
275ciphers.o: ../include/openssl/md4.h ../include/openssl/md5.h
276ciphers.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
277ciphers.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
278ciphers.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
279ciphers.o: ../include/openssl/pem.h ../include/openssl/pem2.h
280ciphers.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
281ciphers.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
282ciphers.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
283ciphers.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
284ciphers.o: ../include/openssl/sha.h ../include/openssl/ssl.h
285ciphers.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
286ciphers.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
287ciphers.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
288ciphers.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
289ciphers.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
290ciphers.o: ../include/openssl/x509_vfy.h apps.h ciphers.c
291crl.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
292crl.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
293crl.o: ../include/openssl/bn.h ../include/openssl/buffer.h
294crl.o: ../include/openssl/cast.h ../include/openssl/conf.h
295crl.o: ../include/openssl/crypto.h ../include/openssl/des.h
296crl.o: ../include/openssl/des_old.h ../include/openssl/dh.h
297crl.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
298crl.o: ../include/openssl/engine.h ../include/openssl/err.h
299crl.o: ../include/openssl/evp.h ../include/openssl/idea.h
300crl.o: ../include/openssl/lhash.h ../include/openssl/md2.h
301crl.o: ../include/openssl/md4.h ../include/openssl/md5.h
302crl.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
303crl.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
304crl.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
305crl.o: ../include/openssl/pem.h ../include/openssl/pem2.h
306crl.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
307crl.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
308crl.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
309crl.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
310crl.o: ../include/openssl/sha.h ../include/openssl/stack.h
311crl.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
312crl.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
313crl.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
314crl.o: ../include/openssl/x509v3.h apps.h crl.c
315crl2p7.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
316crl2p7.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
317crl2p7.o: ../include/openssl/bn.h ../include/openssl/buffer.h
318crl2p7.o: ../include/openssl/cast.h ../include/openssl/conf.h
319crl2p7.o: ../include/openssl/crypto.h ../include/openssl/des.h
320crl2p7.o: ../include/openssl/des_old.h ../include/openssl/dh.h
321crl2p7.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
322crl2p7.o: ../include/openssl/engine.h ../include/openssl/err.h
323crl2p7.o: ../include/openssl/evp.h ../include/openssl/idea.h
324crl2p7.o: ../include/openssl/lhash.h ../include/openssl/md2.h
325crl2p7.o: ../include/openssl/md4.h ../include/openssl/md5.h
326crl2p7.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
327crl2p7.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
328crl2p7.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
329crl2p7.o: ../include/openssl/pem.h ../include/openssl/pem2.h
330crl2p7.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
331crl2p7.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
332crl2p7.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
333crl2p7.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
334crl2p7.o: ../include/openssl/sha.h ../include/openssl/stack.h
335crl2p7.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
336crl2p7.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
337crl2p7.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h apps.h
338crl2p7.o: crl2p7.c
339dgst.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
340dgst.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
341dgst.o: ../include/openssl/bn.h ../include/openssl/buffer.h
342dgst.o: ../include/openssl/cast.h ../include/openssl/conf.h
343dgst.o: ../include/openssl/crypto.h ../include/openssl/des.h
344dgst.o: ../include/openssl/des_old.h ../include/openssl/dh.h
345dgst.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
346dgst.o: ../include/openssl/engine.h ../include/openssl/err.h
347dgst.o: ../include/openssl/evp.h ../include/openssl/idea.h
348dgst.o: ../include/openssl/lhash.h ../include/openssl/md2.h
349dgst.o: ../include/openssl/md4.h ../include/openssl/md5.h
350dgst.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
351dgst.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
352dgst.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
353dgst.o: ../include/openssl/pem.h ../include/openssl/pem2.h
354dgst.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
355dgst.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
356dgst.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
357dgst.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
358dgst.o: ../include/openssl/sha.h ../include/openssl/stack.h
359dgst.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
360dgst.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
361dgst.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h apps.h dgst.c
362dh.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
363dh.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
364dh.o: ../include/openssl/bn.h ../include/openssl/buffer.h
365dh.o: ../include/openssl/cast.h ../include/openssl/conf.h
366dh.o: ../include/openssl/crypto.h ../include/openssl/des.h
367dh.o: ../include/openssl/des_old.h ../include/openssl/dh.h
368dh.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
369dh.o: ../include/openssl/engine.h ../include/openssl/err.h
370dh.o: ../include/openssl/evp.h ../include/openssl/idea.h
371dh.o: ../include/openssl/lhash.h ../include/openssl/md2.h
372dh.o: ../include/openssl/md4.h ../include/openssl/md5.h
373dh.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
374dh.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
375dh.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
376dh.o: ../include/openssl/pem.h ../include/openssl/pem2.h
377dh.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
378dh.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
379dh.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
380dh.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
381dh.o: ../include/openssl/sha.h ../include/openssl/stack.h
382dh.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
383dh.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
384dh.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h apps.h dh.c
385dsa.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
386dsa.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
387dsa.o: ../include/openssl/bn.h ../include/openssl/buffer.h
388dsa.o: ../include/openssl/cast.h ../include/openssl/conf.h
389dsa.o: ../include/openssl/crypto.h ../include/openssl/des.h
390dsa.o: ../include/openssl/des_old.h ../include/openssl/dh.h
391dsa.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
392dsa.o: ../include/openssl/engine.h ../include/openssl/err.h
393dsa.o: ../include/openssl/evp.h ../include/openssl/idea.h
394dsa.o: ../include/openssl/lhash.h ../include/openssl/md2.h
395dsa.o: ../include/openssl/md4.h ../include/openssl/md5.h
396dsa.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
397dsa.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
398dsa.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
399dsa.o: ../include/openssl/pem.h ../include/openssl/pem2.h
400dsa.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
401dsa.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
402dsa.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
403dsa.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
404dsa.o: ../include/openssl/sha.h ../include/openssl/stack.h
405dsa.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
406dsa.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
407dsa.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h apps.h dsa.c
408dsaparam.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
409dsaparam.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
410dsaparam.o: ../include/openssl/bn.h ../include/openssl/buffer.h
411dsaparam.o: ../include/openssl/cast.h ../include/openssl/conf.h
412dsaparam.o: ../include/openssl/crypto.h ../include/openssl/des.h
413dsaparam.o: ../include/openssl/des_old.h ../include/openssl/dh.h
414dsaparam.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
415dsaparam.o: ../include/openssl/engine.h ../include/openssl/err.h
416dsaparam.o: ../include/openssl/evp.h ../include/openssl/idea.h
417dsaparam.o: ../include/openssl/lhash.h ../include/openssl/md2.h
418dsaparam.o: ../include/openssl/md4.h ../include/openssl/md5.h
419dsaparam.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
420dsaparam.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
421dsaparam.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
422dsaparam.o: ../include/openssl/pem.h ../include/openssl/pem2.h
423dsaparam.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
424dsaparam.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
425dsaparam.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
426dsaparam.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
427dsaparam.o: ../include/openssl/sha.h ../include/openssl/stack.h
428dsaparam.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
429dsaparam.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
430dsaparam.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h apps.h
431dsaparam.o: dsaparam.c
432enc.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
433enc.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
434enc.o: ../include/openssl/bn.h ../include/openssl/buffer.h
435enc.o: ../include/openssl/cast.h ../include/openssl/conf.h
436enc.o: ../include/openssl/crypto.h ../include/openssl/des.h
437enc.o: ../include/openssl/des_old.h ../include/openssl/dh.h
438enc.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
439enc.o: ../include/openssl/engine.h ../include/openssl/err.h
440enc.o: ../include/openssl/evp.h ../include/openssl/idea.h
441enc.o: ../include/openssl/lhash.h ../include/openssl/md2.h
442enc.o: ../include/openssl/md4.h ../include/openssl/md5.h
443enc.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
444enc.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
445enc.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
446enc.o: ../include/openssl/pem.h ../include/openssl/pem2.h
447enc.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
448enc.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
449enc.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
450enc.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
451enc.o: ../include/openssl/sha.h ../include/openssl/stack.h
452enc.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
453enc.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
454enc.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h apps.h enc.c
455engine.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
456engine.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
457engine.o: ../include/openssl/bn.h ../include/openssl/buffer.h
458engine.o: ../include/openssl/cast.h ../include/openssl/comp.h
459engine.o: ../include/openssl/conf.h ../include/openssl/crypto.h
460engine.o: ../include/openssl/des.h ../include/openssl/des_old.h
461engine.o: ../include/openssl/dh.h ../include/openssl/dsa.h
462engine.o: ../include/openssl/e_os2.h ../include/openssl/engine.h
463engine.o: ../include/openssl/err.h ../include/openssl/evp.h
464engine.o: ../include/openssl/idea.h ../include/openssl/kssl.h
465engine.o: ../include/openssl/lhash.h ../include/openssl/md2.h
466engine.o: ../include/openssl/md4.h ../include/openssl/md5.h
467engine.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
468engine.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
469engine.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
470engine.o: ../include/openssl/pem.h ../include/openssl/pem2.h
471engine.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
472engine.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
473engine.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
474engine.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
475engine.o: ../include/openssl/sha.h ../include/openssl/ssl.h
476engine.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
477engine.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
478engine.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
479engine.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
480engine.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
481engine.o: ../include/openssl/x509_vfy.h apps.h engine.c
482errstr.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
483errstr.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
484errstr.o: ../include/openssl/bn.h ../include/openssl/buffer.h
485errstr.o: ../include/openssl/cast.h ../include/openssl/comp.h
486errstr.o: ../include/openssl/conf.h ../include/openssl/crypto.h
487errstr.o: ../include/openssl/des.h ../include/openssl/des_old.h
488errstr.o: ../include/openssl/dh.h ../include/openssl/dsa.h
489errstr.o: ../include/openssl/e_os2.h ../include/openssl/engine.h
490errstr.o: ../include/openssl/err.h ../include/openssl/evp.h
491errstr.o: ../include/openssl/idea.h ../include/openssl/kssl.h
492errstr.o: ../include/openssl/lhash.h ../include/openssl/md2.h
493errstr.o: ../include/openssl/md4.h ../include/openssl/md5.h
494errstr.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
495errstr.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
496errstr.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
497errstr.o: ../include/openssl/pem.h ../include/openssl/pem2.h
498errstr.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
499errstr.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
500errstr.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
501errstr.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
502errstr.o: ../include/openssl/sha.h ../include/openssl/ssl.h
503errstr.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
504errstr.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
505errstr.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
506errstr.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
507errstr.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
508errstr.o: ../include/openssl/x509_vfy.h apps.h errstr.c
509gendh.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
510gendh.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
511gendh.o: ../include/openssl/bn.h ../include/openssl/buffer.h
512gendh.o: ../include/openssl/cast.h ../include/openssl/conf.h
513gendh.o: ../include/openssl/crypto.h ../include/openssl/des.h
514gendh.o: ../include/openssl/des_old.h ../include/openssl/dh.h
515gendh.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
516gendh.o: ../include/openssl/engine.h ../include/openssl/err.h
517gendh.o: ../include/openssl/evp.h ../include/openssl/idea.h
518gendh.o: ../include/openssl/lhash.h ../include/openssl/md2.h
519gendh.o: ../include/openssl/md4.h ../include/openssl/md5.h
520gendh.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
521gendh.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
522gendh.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
523gendh.o: ../include/openssl/pem.h ../include/openssl/pem2.h
524gendh.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
525gendh.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
526gendh.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
527gendh.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
528gendh.o: ../include/openssl/sha.h ../include/openssl/stack.h
529gendh.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
530gendh.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
531gendh.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h apps.h gendh.c
532gendsa.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
533gendsa.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
534gendsa.o: ../include/openssl/bn.h ../include/openssl/buffer.h
535gendsa.o: ../include/openssl/cast.h ../include/openssl/conf.h
536gendsa.o: ../include/openssl/crypto.h ../include/openssl/des.h
537gendsa.o: ../include/openssl/des_old.h ../include/openssl/dh.h
538gendsa.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
539gendsa.o: ../include/openssl/engine.h ../include/openssl/err.h
540gendsa.o: ../include/openssl/evp.h ../include/openssl/idea.h
541gendsa.o: ../include/openssl/lhash.h ../include/openssl/md2.h
542gendsa.o: ../include/openssl/md4.h ../include/openssl/md5.h
543gendsa.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
544gendsa.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
545gendsa.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
546gendsa.o: ../include/openssl/pem.h ../include/openssl/pem2.h
547gendsa.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
548gendsa.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
549gendsa.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
550gendsa.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
551gendsa.o: ../include/openssl/sha.h ../include/openssl/stack.h
552gendsa.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
553gendsa.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
554gendsa.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h apps.h
555gendsa.o: gendsa.c
556genrsa.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
557genrsa.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
558genrsa.o: ../include/openssl/bn.h ../include/openssl/buffer.h
559genrsa.o: ../include/openssl/cast.h ../include/openssl/conf.h
560genrsa.o: ../include/openssl/crypto.h ../include/openssl/des.h
561genrsa.o: ../include/openssl/des_old.h ../include/openssl/dh.h
562genrsa.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
563genrsa.o: ../include/openssl/engine.h ../include/openssl/err.h
564genrsa.o: ../include/openssl/evp.h ../include/openssl/idea.h
565genrsa.o: ../include/openssl/lhash.h ../include/openssl/md2.h
566genrsa.o: ../include/openssl/md4.h ../include/openssl/md5.h
567genrsa.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
568genrsa.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
569genrsa.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
570genrsa.o: ../include/openssl/pem.h ../include/openssl/pem2.h
571genrsa.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
572genrsa.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
573genrsa.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
574genrsa.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
575genrsa.o: ../include/openssl/sha.h ../include/openssl/stack.h
576genrsa.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
577genrsa.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
578genrsa.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h apps.h
579genrsa.o: genrsa.c
580nseq.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
581nseq.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
582nseq.o: ../include/openssl/bn.h ../include/openssl/buffer.h
583nseq.o: ../include/openssl/cast.h ../include/openssl/conf.h
584nseq.o: ../include/openssl/crypto.h ../include/openssl/des.h
585nseq.o: ../include/openssl/des_old.h ../include/openssl/dh.h
586nseq.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
587nseq.o: ../include/openssl/engine.h ../include/openssl/err.h
588nseq.o: ../include/openssl/evp.h ../include/openssl/idea.h
589nseq.o: ../include/openssl/lhash.h ../include/openssl/md2.h
590nseq.o: ../include/openssl/md4.h ../include/openssl/md5.h
591nseq.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
592nseq.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
593nseq.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
594nseq.o: ../include/openssl/pem.h ../include/openssl/pem2.h
595nseq.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
596nseq.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
597nseq.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
598nseq.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
599nseq.o: ../include/openssl/sha.h ../include/openssl/stack.h
600nseq.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
601nseq.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
602nseq.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h apps.h nseq.c
603ocsp.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
604ocsp.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
605ocsp.o: ../include/openssl/bn.h ../include/openssl/buffer.h
606ocsp.o: ../include/openssl/cast.h ../include/openssl/comp.h
607ocsp.o: ../include/openssl/conf.h ../include/openssl/crypto.h
608ocsp.o: ../include/openssl/des.h ../include/openssl/des_old.h
609ocsp.o: ../include/openssl/dh.h ../include/openssl/dsa.h
610ocsp.o: ../include/openssl/e_os2.h ../include/openssl/engine.h
611ocsp.o: ../include/openssl/err.h ../include/openssl/evp.h
612ocsp.o: ../include/openssl/idea.h ../include/openssl/kssl.h
613ocsp.o: ../include/openssl/lhash.h ../include/openssl/md2.h
614ocsp.o: ../include/openssl/md4.h ../include/openssl/md5.h
615ocsp.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
616ocsp.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
617ocsp.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
618ocsp.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
619ocsp.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
620ocsp.o: ../include/openssl/rand.h ../include/openssl/rc2.h
621ocsp.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
622ocsp.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
623ocsp.o: ../include/openssl/safestack.h ../include/openssl/sha.h
624ocsp.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
625ocsp.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
626ocsp.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
627ocsp.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h
628ocsp.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
629ocsp.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
630ocsp.o: ../include/openssl/x509v3.h apps.h ocsp.c
631openssl.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
632openssl.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
633openssl.o: ../include/openssl/bn.h ../include/openssl/buffer.h
634openssl.o: ../include/openssl/cast.h ../include/openssl/comp.h
635openssl.o: ../include/openssl/conf.h ../include/openssl/crypto.h
636openssl.o: ../include/openssl/des.h ../include/openssl/des_old.h
637openssl.o: ../include/openssl/dh.h ../include/openssl/dsa.h
638openssl.o: ../include/openssl/e_os2.h ../include/openssl/engine.h
639openssl.o: ../include/openssl/err.h ../include/openssl/evp.h
640openssl.o: ../include/openssl/idea.h ../include/openssl/kssl.h
641openssl.o: ../include/openssl/lhash.h ../include/openssl/md2.h
642openssl.o: ../include/openssl/md4.h ../include/openssl/md5.h
643openssl.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
644openssl.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
645openssl.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
646openssl.o: ../include/openssl/pem.h ../include/openssl/pem2.h
647openssl.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
648openssl.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
649openssl.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
650openssl.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
651openssl.o: ../include/openssl/sha.h ../include/openssl/ssl.h
652openssl.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
653openssl.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
654openssl.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
655openssl.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
656openssl.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
657openssl.o: ../include/openssl/x509_vfy.h apps.h openssl.c progs.h s_apps.h
658passwd.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
659passwd.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
660passwd.o: ../include/openssl/bn.h ../include/openssl/buffer.h
661passwd.o: ../include/openssl/cast.h ../include/openssl/conf.h
662passwd.o: ../include/openssl/crypto.h ../include/openssl/des.h
663passwd.o: ../include/openssl/des_old.h ../include/openssl/dh.h
664passwd.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
665passwd.o: ../include/openssl/engine.h ../include/openssl/err.h
666passwd.o: ../include/openssl/evp.h ../include/openssl/idea.h
667passwd.o: ../include/openssl/lhash.h ../include/openssl/md2.h
668passwd.o: ../include/openssl/md4.h ../include/openssl/md5.h
669passwd.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
670passwd.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
671passwd.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
672passwd.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
673passwd.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
674passwd.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
675passwd.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
676passwd.o: ../include/openssl/sha.h ../include/openssl/stack.h
677passwd.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
678passwd.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
679passwd.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h apps.h
680passwd.o: passwd.c
681pkcs12.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
682pkcs12.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
683pkcs12.o: ../include/openssl/bn.h ../include/openssl/buffer.h
684pkcs12.o: ../include/openssl/cast.h ../include/openssl/conf.h
685pkcs12.o: ../include/openssl/crypto.h ../include/openssl/des.h
686pkcs12.o: ../include/openssl/des_old.h ../include/openssl/dh.h
687pkcs12.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
688pkcs12.o: ../include/openssl/engine.h ../include/openssl/err.h
689pkcs12.o: ../include/openssl/evp.h ../include/openssl/idea.h
690pkcs12.o: ../include/openssl/lhash.h ../include/openssl/md2.h
691pkcs12.o: ../include/openssl/md4.h ../include/openssl/md5.h
692pkcs12.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
693pkcs12.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
694pkcs12.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
695pkcs12.o: ../include/openssl/pem.h ../include/openssl/pem2.h
696pkcs12.o: ../include/openssl/pkcs12.h ../include/openssl/pkcs7.h
697pkcs12.o: ../include/openssl/rand.h ../include/openssl/rc2.h
698pkcs12.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
699pkcs12.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
700pkcs12.o: ../include/openssl/safestack.h ../include/openssl/sha.h
701pkcs12.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
702pkcs12.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
703pkcs12.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
704pkcs12.o: ../include/openssl/x509_vfy.h apps.h pkcs12.c
705pkcs7.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
706pkcs7.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
707pkcs7.o: ../include/openssl/bn.h ../include/openssl/buffer.h
708pkcs7.o: ../include/openssl/cast.h ../include/openssl/conf.h
709pkcs7.o: ../include/openssl/crypto.h ../include/openssl/des.h
710pkcs7.o: ../include/openssl/des_old.h ../include/openssl/dh.h
711pkcs7.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
712pkcs7.o: ../include/openssl/engine.h ../include/openssl/err.h
713pkcs7.o: ../include/openssl/evp.h ../include/openssl/idea.h
714pkcs7.o: ../include/openssl/lhash.h ../include/openssl/md2.h
715pkcs7.o: ../include/openssl/md4.h ../include/openssl/md5.h
716pkcs7.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
717pkcs7.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
718pkcs7.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
719pkcs7.o: ../include/openssl/pem.h ../include/openssl/pem2.h
720pkcs7.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
721pkcs7.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
722pkcs7.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
723pkcs7.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
724pkcs7.o: ../include/openssl/sha.h ../include/openssl/stack.h
725pkcs7.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
726pkcs7.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
727pkcs7.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h apps.h pkcs7.c
728pkcs8.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
729pkcs8.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
730pkcs8.o: ../include/openssl/bn.h ../include/openssl/buffer.h
731pkcs8.o: ../include/openssl/cast.h ../include/openssl/conf.h
732pkcs8.o: ../include/openssl/crypto.h ../include/openssl/des.h
733pkcs8.o: ../include/openssl/des_old.h ../include/openssl/dh.h
734pkcs8.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
735pkcs8.o: ../include/openssl/engine.h ../include/openssl/err.h
736pkcs8.o: ../include/openssl/evp.h ../include/openssl/idea.h
737pkcs8.o: ../include/openssl/lhash.h ../include/openssl/md2.h
738pkcs8.o: ../include/openssl/md4.h ../include/openssl/md5.h
739pkcs8.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
740pkcs8.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
741pkcs8.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
742pkcs8.o: ../include/openssl/pem.h ../include/openssl/pem2.h
743pkcs8.o: ../include/openssl/pkcs12.h ../include/openssl/pkcs7.h
744pkcs8.o: ../include/openssl/rand.h ../include/openssl/rc2.h
745pkcs8.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
746pkcs8.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
747pkcs8.o: ../include/openssl/safestack.h ../include/openssl/sha.h
748pkcs8.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
749pkcs8.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
750pkcs8.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
751pkcs8.o: ../include/openssl/x509_vfy.h apps.h pkcs8.c
752rand.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
753rand.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
754rand.o: ../include/openssl/bn.h ../include/openssl/buffer.h
755rand.o: ../include/openssl/cast.h ../include/openssl/conf.h
756rand.o: ../include/openssl/crypto.h ../include/openssl/des.h
757rand.o: ../include/openssl/des_old.h ../include/openssl/dh.h
758rand.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
759rand.o: ../include/openssl/engine.h ../include/openssl/err.h
760rand.o: ../include/openssl/evp.h ../include/openssl/idea.h
761rand.o: ../include/openssl/lhash.h ../include/openssl/md2.h
762rand.o: ../include/openssl/md4.h ../include/openssl/md5.h
763rand.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
764rand.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
765rand.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
766rand.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
767rand.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
768rand.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
769rand.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
770rand.o: ../include/openssl/sha.h ../include/openssl/stack.h
771rand.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
772rand.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
773rand.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h apps.h rand.c
774req.o: ../crypto/cryptlib.h ../e_os.h ../include/openssl/aes.h
775req.o: ../include/openssl/asn1.h ../include/openssl/bio.h
776req.o: ../include/openssl/blowfish.h ../include/openssl/bn.h
777req.o: ../include/openssl/buffer.h ../include/openssl/cast.h
778req.o: ../include/openssl/conf.h ../include/openssl/crypto.h
779req.o: ../include/openssl/des.h ../include/openssl/des_old.h
780req.o: ../include/openssl/dh.h ../include/openssl/dsa.h
781req.o: ../include/openssl/e_os2.h ../include/openssl/engine.h
782req.o: ../include/openssl/err.h ../include/openssl/evp.h
783req.o: ../include/openssl/idea.h ../include/openssl/lhash.h
784req.o: ../include/openssl/md2.h ../include/openssl/md4.h
785req.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
786req.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
787req.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
788req.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
789req.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
790req.o: ../include/openssl/rand.h ../include/openssl/rc2.h
791req.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
792req.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
793req.o: ../include/openssl/safestack.h ../include/openssl/sha.h
794req.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
795req.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
796req.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
797req.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h req.c
798rsa.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
799rsa.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
800rsa.o: ../include/openssl/bn.h ../include/openssl/buffer.h
801rsa.o: ../include/openssl/cast.h ../include/openssl/conf.h
802rsa.o: ../include/openssl/crypto.h ../include/openssl/des.h
803rsa.o: ../include/openssl/des_old.h ../include/openssl/dh.h
804rsa.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
805rsa.o: ../include/openssl/engine.h ../include/openssl/err.h
806rsa.o: ../include/openssl/evp.h ../include/openssl/idea.h
807rsa.o: ../include/openssl/lhash.h ../include/openssl/md2.h
808rsa.o: ../include/openssl/md4.h ../include/openssl/md5.h
809rsa.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
810rsa.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
811rsa.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
812rsa.o: ../include/openssl/pem.h ../include/openssl/pem2.h
813rsa.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
814rsa.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
815rsa.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
816rsa.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
817rsa.o: ../include/openssl/sha.h ../include/openssl/stack.h
818rsa.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
819rsa.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
820rsa.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h apps.h rsa.c
821rsautl.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
822rsautl.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
823rsautl.o: ../include/openssl/bn.h ../include/openssl/buffer.h
824rsautl.o: ../include/openssl/cast.h ../include/openssl/conf.h
825rsautl.o: ../include/openssl/crypto.h ../include/openssl/des.h
826rsautl.o: ../include/openssl/des_old.h ../include/openssl/dh.h
827rsautl.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
828rsautl.o: ../include/openssl/engine.h ../include/openssl/err.h
829rsautl.o: ../include/openssl/evp.h ../include/openssl/idea.h
830rsautl.o: ../include/openssl/lhash.h ../include/openssl/md2.h
831rsautl.o: ../include/openssl/md4.h ../include/openssl/md5.h
832rsautl.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
833rsautl.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
834rsautl.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
835rsautl.o: ../include/openssl/pem.h ../include/openssl/pem2.h
836rsautl.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
837rsautl.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
838rsautl.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
839rsautl.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
840rsautl.o: ../include/openssl/sha.h ../include/openssl/stack.h
841rsautl.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
842rsautl.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
843rsautl.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h apps.h
844rsautl.o: rsautl.c
845s_cb.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
846s_cb.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
847s_cb.o: ../include/openssl/bn.h ../include/openssl/buffer.h
848s_cb.o: ../include/openssl/cast.h ../include/openssl/comp.h
849s_cb.o: ../include/openssl/conf.h ../include/openssl/crypto.h
850s_cb.o: ../include/openssl/des.h ../include/openssl/des_old.h
851s_cb.o: ../include/openssl/dh.h ../include/openssl/dsa.h
852s_cb.o: ../include/openssl/e_os2.h ../include/openssl/engine.h
853s_cb.o: ../include/openssl/err.h ../include/openssl/evp.h
854s_cb.o: ../include/openssl/idea.h ../include/openssl/kssl.h
855s_cb.o: ../include/openssl/lhash.h ../include/openssl/md2.h
856s_cb.o: ../include/openssl/md4.h ../include/openssl/md5.h
857s_cb.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
858s_cb.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
859s_cb.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
860s_cb.o: ../include/openssl/pem.h ../include/openssl/pem2.h
861s_cb.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
862s_cb.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
863s_cb.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
864s_cb.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
865s_cb.o: ../include/openssl/sha.h ../include/openssl/ssl.h
866s_cb.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
867s_cb.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
868s_cb.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
869s_cb.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
870s_cb.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
871s_cb.o: ../include/openssl/x509_vfy.h apps.h s_apps.h s_cb.c
872s_client.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
873s_client.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
874s_client.o: ../include/openssl/bn.h ../include/openssl/buffer.h
875s_client.o: ../include/openssl/cast.h ../include/openssl/comp.h
876s_client.o: ../include/openssl/conf.h ../include/openssl/crypto.h
877s_client.o: ../include/openssl/des.h ../include/openssl/des_old.h
878s_client.o: ../include/openssl/dh.h ../include/openssl/dsa.h
879s_client.o: ../include/openssl/e_os2.h ../include/openssl/engine.h
880s_client.o: ../include/openssl/err.h ../include/openssl/evp.h
881s_client.o: ../include/openssl/idea.h ../include/openssl/kssl.h
882s_client.o: ../include/openssl/lhash.h ../include/openssl/md2.h
883s_client.o: ../include/openssl/md4.h ../include/openssl/md5.h
884s_client.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
885s_client.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
886s_client.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
887s_client.o: ../include/openssl/pem.h ../include/openssl/pem2.h
888s_client.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
889s_client.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
890s_client.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
891s_client.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
892s_client.o: ../include/openssl/sha.h ../include/openssl/ssl.h
893s_client.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
894s_client.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
895s_client.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
896s_client.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
897s_client.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
898s_client.o: ../include/openssl/x509_vfy.h apps.h s_apps.h s_client.c
899s_server.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
900s_server.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
901s_server.o: ../include/openssl/bn.h ../include/openssl/buffer.h
902s_server.o: ../include/openssl/cast.h ../include/openssl/comp.h
903s_server.o: ../include/openssl/conf.h ../include/openssl/crypto.h
904s_server.o: ../include/openssl/des.h ../include/openssl/des_old.h
905s_server.o: ../include/openssl/dh.h ../include/openssl/dsa.h
906s_server.o: ../include/openssl/e_os2.h ../include/openssl/engine.h
907s_server.o: ../include/openssl/err.h ../include/openssl/evp.h
908s_server.o: ../include/openssl/idea.h ../include/openssl/kssl.h
909s_server.o: ../include/openssl/lhash.h ../include/openssl/md2.h
910s_server.o: ../include/openssl/md4.h ../include/openssl/md5.h
911s_server.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
912s_server.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
913s_server.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
914s_server.o: ../include/openssl/pem.h ../include/openssl/pem2.h
915s_server.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
916s_server.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
917s_server.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
918s_server.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
919s_server.o: ../include/openssl/sha.h ../include/openssl/ssl.h
920s_server.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
921s_server.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
922s_server.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
923s_server.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
924s_server.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
925s_server.o: ../include/openssl/x509_vfy.h apps.h s_apps.h s_server.c
926s_socket.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
927s_socket.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
928s_socket.o: ../include/openssl/bn.h ../include/openssl/buffer.h
929s_socket.o: ../include/openssl/cast.h ../include/openssl/comp.h
930s_socket.o: ../include/openssl/conf.h ../include/openssl/crypto.h
931s_socket.o: ../include/openssl/des.h ../include/openssl/des_old.h
932s_socket.o: ../include/openssl/dh.h ../include/openssl/dsa.h
933s_socket.o: ../include/openssl/e_os2.h ../include/openssl/engine.h
934s_socket.o: ../include/openssl/err.h ../include/openssl/evp.h
935s_socket.o: ../include/openssl/idea.h ../include/openssl/kssl.h
936s_socket.o: ../include/openssl/lhash.h ../include/openssl/md2.h
937s_socket.o: ../include/openssl/md4.h ../include/openssl/md5.h
938s_socket.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
939s_socket.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
940s_socket.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
941s_socket.o: ../include/openssl/pem.h ../include/openssl/pem2.h
942s_socket.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
943s_socket.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
944s_socket.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
945s_socket.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
946s_socket.o: ../include/openssl/sha.h ../include/openssl/ssl.h
947s_socket.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
948s_socket.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
949s_socket.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
950s_socket.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
951s_socket.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
952s_socket.o: ../include/openssl/x509_vfy.h apps.h s_apps.h s_socket.c
953s_time.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
954s_time.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
955s_time.o: ../include/openssl/bn.h ../include/openssl/buffer.h
956s_time.o: ../include/openssl/cast.h ../include/openssl/comp.h
957s_time.o: ../include/openssl/conf.h ../include/openssl/crypto.h
958s_time.o: ../include/openssl/des.h ../include/openssl/des_old.h
959s_time.o: ../include/openssl/dh.h ../include/openssl/dsa.h
960s_time.o: ../include/openssl/e_os2.h ../include/openssl/engine.h
961s_time.o: ../include/openssl/err.h ../include/openssl/evp.h
962s_time.o: ../include/openssl/idea.h ../include/openssl/kssl.h
963s_time.o: ../include/openssl/lhash.h ../include/openssl/md2.h
964s_time.o: ../include/openssl/md4.h ../include/openssl/md5.h
965s_time.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
966s_time.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
967s_time.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
968s_time.o: ../include/openssl/pem.h ../include/openssl/pem2.h
969s_time.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
970s_time.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
971s_time.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
972s_time.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
973s_time.o: ../include/openssl/sha.h ../include/openssl/ssl.h
974s_time.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
975s_time.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
976s_time.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
977s_time.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
978s_time.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
979s_time.o: ../include/openssl/x509_vfy.h apps.h s_apps.h s_time.c
980sess_id.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
981sess_id.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
982sess_id.o: ../include/openssl/bn.h ../include/openssl/buffer.h
983sess_id.o: ../include/openssl/cast.h ../include/openssl/comp.h
984sess_id.o: ../include/openssl/conf.h ../include/openssl/crypto.h
985sess_id.o: ../include/openssl/des.h ../include/openssl/des_old.h
986sess_id.o: ../include/openssl/dh.h ../include/openssl/dsa.h
987sess_id.o: ../include/openssl/e_os2.h ../include/openssl/engine.h
988sess_id.o: ../include/openssl/err.h ../include/openssl/evp.h
989sess_id.o: ../include/openssl/idea.h ../include/openssl/kssl.h
990sess_id.o: ../include/openssl/lhash.h ../include/openssl/md2.h
991sess_id.o: ../include/openssl/md4.h ../include/openssl/md5.h
992sess_id.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
993sess_id.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
994sess_id.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
995sess_id.o: ../include/openssl/pem.h ../include/openssl/pem2.h
996sess_id.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
997sess_id.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
998sess_id.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
999sess_id.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
1000sess_id.o: ../include/openssl/sha.h ../include/openssl/ssl.h
1001sess_id.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
1002sess_id.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
1003sess_id.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
1004sess_id.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
1005sess_id.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
1006sess_id.o: ../include/openssl/x509_vfy.h apps.h sess_id.c
1007smime.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
1008smime.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
1009smime.o: ../include/openssl/bn.h ../include/openssl/buffer.h
1010smime.o: ../include/openssl/cast.h ../include/openssl/conf.h
1011smime.o: ../include/openssl/crypto.h ../include/openssl/des.h
1012smime.o: ../include/openssl/des_old.h ../include/openssl/dh.h
1013smime.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
1014smime.o: ../include/openssl/engine.h ../include/openssl/err.h
1015smime.o: ../include/openssl/evp.h ../include/openssl/idea.h
1016smime.o: ../include/openssl/lhash.h ../include/openssl/md2.h
1017smime.o: ../include/openssl/md4.h ../include/openssl/md5.h
1018smime.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
1019smime.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
1020smime.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
1021smime.o: ../include/openssl/pem.h ../include/openssl/pem2.h
1022smime.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
1023smime.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
1024smime.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
1025smime.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
1026smime.o: ../include/openssl/sha.h ../include/openssl/stack.h
1027smime.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
1028smime.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
1029smime.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h apps.h smime.c
1030speed.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
1031speed.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
1032speed.o: ../include/openssl/bn.h ../include/openssl/buffer.h
1033speed.o: ../include/openssl/cast.h ../include/openssl/conf.h
1034speed.o: ../include/openssl/crypto.h ../include/openssl/des.h
1035speed.o: ../include/openssl/des_old.h ../include/openssl/dh.h
1036speed.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
1037speed.o: ../include/openssl/engine.h ../include/openssl/err.h
1038speed.o: ../include/openssl/evp.h ../include/openssl/hmac.h
1039speed.o: ../include/openssl/idea.h ../include/openssl/lhash.h
1040speed.o: ../include/openssl/md2.h ../include/openssl/md4.h
1041speed.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
1042speed.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
1043speed.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
1044speed.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h
1045speed.o: ../include/openssl/rand.h ../include/openssl/rc2.h
1046speed.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
1047speed.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
1048speed.o: ../include/openssl/safestack.h ../include/openssl/sha.h
1049speed.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
1050speed.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
1051speed.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
1052speed.o: ../include/openssl/x509_vfy.h apps.h speed.c testdsa.h testrsa.h
1053spkac.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
1054spkac.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
1055spkac.o: ../include/openssl/bn.h ../include/openssl/buffer.h
1056spkac.o: ../include/openssl/cast.h ../include/openssl/conf.h
1057spkac.o: ../include/openssl/crypto.h ../include/openssl/des.h
1058spkac.o: ../include/openssl/des_old.h ../include/openssl/dh.h
1059spkac.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
1060spkac.o: ../include/openssl/engine.h ../include/openssl/err.h
1061spkac.o: ../include/openssl/evp.h ../include/openssl/idea.h
1062spkac.o: ../include/openssl/lhash.h ../include/openssl/md2.h
1063spkac.o: ../include/openssl/md4.h ../include/openssl/md5.h
1064spkac.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
1065spkac.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
1066spkac.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
1067spkac.o: ../include/openssl/pem.h ../include/openssl/pem2.h
1068spkac.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
1069spkac.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
1070spkac.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
1071spkac.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
1072spkac.o: ../include/openssl/sha.h ../include/openssl/stack.h
1073spkac.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
1074spkac.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
1075spkac.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h apps.h spkac.c
1076verify.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
1077verify.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
1078verify.o: ../include/openssl/bn.h ../include/openssl/buffer.h
1079verify.o: ../include/openssl/cast.h ../include/openssl/conf.h
1080verify.o: ../include/openssl/crypto.h ../include/openssl/des.h
1081verify.o: ../include/openssl/des_old.h ../include/openssl/dh.h
1082verify.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
1083verify.o: ../include/openssl/engine.h ../include/openssl/err.h
1084verify.o: ../include/openssl/evp.h ../include/openssl/idea.h
1085verify.o: ../include/openssl/lhash.h ../include/openssl/md2.h
1086verify.o: ../include/openssl/md4.h ../include/openssl/md5.h
1087verify.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
1088verify.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
1089verify.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
1090verify.o: ../include/openssl/pem.h ../include/openssl/pem2.h
1091verify.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
1092verify.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
1093verify.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
1094verify.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
1095verify.o: ../include/openssl/sha.h ../include/openssl/stack.h
1096verify.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
1097verify.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
1098verify.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
1099verify.o: ../include/openssl/x509v3.h apps.h verify.c
1100version.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
1101version.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
1102version.o: ../include/openssl/bn.h ../include/openssl/buffer.h
1103version.o: ../include/openssl/cast.h ../include/openssl/conf.h
1104version.o: ../include/openssl/crypto.h ../include/openssl/des.h
1105version.o: ../include/openssl/des_old.h ../include/openssl/dh.h
1106version.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
1107version.o: ../include/openssl/engine.h ../include/openssl/err.h
1108version.o: ../include/openssl/evp.h ../include/openssl/idea.h
1109version.o: ../include/openssl/lhash.h ../include/openssl/md2.h
1110version.o: ../include/openssl/md4.h ../include/openssl/md5.h
1111version.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
1112version.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
1113version.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
1114version.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
1115version.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
1116version.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
1117version.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
1118version.o: ../include/openssl/sha.h ../include/openssl/stack.h
1119version.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
1120version.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
1121version.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h apps.h
1122version.o: version.c
1123x509.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
1124x509.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
1125x509.o: ../include/openssl/bn.h ../include/openssl/buffer.h
1126x509.o: ../include/openssl/cast.h ../include/openssl/conf.h
1127x509.o: ../include/openssl/crypto.h ../include/openssl/des.h
1128x509.o: ../include/openssl/des_old.h ../include/openssl/dh.h
1129x509.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
1130x509.o: ../include/openssl/engine.h ../include/openssl/err.h
1131x509.o: ../include/openssl/evp.h ../include/openssl/idea.h
1132x509.o: ../include/openssl/lhash.h ../include/openssl/md2.h
1133x509.o: ../include/openssl/md4.h ../include/openssl/md5.h
1134x509.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
1135x509.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
1136x509.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
1137x509.o: ../include/openssl/pem.h ../include/openssl/pem2.h
1138x509.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
1139x509.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
1140x509.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
1141x509.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
1142x509.o: ../include/openssl/sha.h ../include/openssl/stack.h
1143x509.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
1144x509.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
1145x509.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
1146x509.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 9b07e913c5..9157cdfcdc 100644
--- a/src/lib/libssl/src/apps/apps.c
+++ b/src/lib/libssl/src/apps/apps.c
@@ -361,17 +361,10 @@ int chopup_args(ARGS *arg, char *buf, int *argc, char **argv[])
361 /* The start of something good :-) */ 361 /* The start of something good :-) */
362 if (num >= arg->count) 362 if (num >= arg->count)
363 { 363 {
364 char **tmp_p; 364 arg->count+=20;
365 int tlen = arg->count + 20; 365 arg->data=(char **)OPENSSL_realloc(arg->data,
366 tmp_p = (char **)OPENSSL_realloc(arg->data, 366 sizeof(char *)*arg->count);
367 sizeof(char *)*tlen); 367 if (argc == 0) return(0);
368 if (tmp_p == NULL)
369 return 0;
370 arg->data = tmp_p;
371 arg->count = tlen;
372 /* initialize newly allocated data */
373 for (i = num; i < arg->count; i++)
374 arg->data[i] = NULL;
375 } 368 }
376 arg->data[num++]=p; 369 arg->data[num++]=p;
377 370
@@ -1598,9 +1591,8 @@ int rotate_serial(char *serialfile, char *new_suffix, char *old_suffix)
1598 { 1591 {
1599 if (errno != ENOENT 1592 if (errno != ENOENT
1600#ifdef ENOTDIR 1593#ifdef ENOTDIR
1601 && errno != ENOTDIR 1594 && errno != ENOTDIR)
1602#endif 1595#endif
1603 )
1604 goto err; 1596 goto err;
1605 } 1597 }
1606 else 1598 else
@@ -1901,9 +1893,8 @@ int rotate_index(char *dbfile, char *new_suffix, char *old_suffix)
1901 { 1893 {
1902 if (errno != ENOENT 1894 if (errno != ENOENT
1903#ifdef ENOTDIR 1895#ifdef ENOTDIR
1904 && errno != ENOTDIR 1896 && errno != ENOTDIR)
1905#endif 1897#endif
1906 )
1907 goto err; 1898 goto err;
1908 } 1899 }
1909 else 1900 else
@@ -1938,9 +1929,8 @@ int rotate_index(char *dbfile, char *new_suffix, char *old_suffix)
1938 { 1929 {
1939 if (errno != ENOENT 1930 if (errno != ENOENT
1940#ifdef ENOTDIR 1931#ifdef ENOTDIR
1941 && errno != ENOTDIR 1932 && errno != ENOTDIR)
1942#endif 1933#endif
1943 )
1944 goto err; 1934 goto err;
1945 } 1935 }
1946 else 1936 else
diff --git a/src/lib/libssl/src/apps/asn1pars.c b/src/lib/libssl/src/apps/asn1pars.c
index a6b6c41f13..c89b358b23 100644
--- a/src/lib/libssl/src/apps/asn1pars.c
+++ b/src/lib/libssl/src/apps/asn1pars.c
@@ -182,7 +182,7 @@ int MAIN(int argc, char **argv)
182bad: 182bad:
183 BIO_printf(bio_err,"%s [options] <infile\n",prog); 183 BIO_printf(bio_err,"%s [options] <infile\n",prog);
184 BIO_printf(bio_err,"where options are\n"); 184 BIO_printf(bio_err,"where options are\n");
185 BIO_printf(bio_err," -inform arg input format - one of DER PEM\n"); 185 BIO_printf(bio_err," -inform arg input format - one of DER TXT PEM\n");
186 BIO_printf(bio_err," -in arg input file\n"); 186 BIO_printf(bio_err," -in arg input file\n");
187 BIO_printf(bio_err," -out arg output file (output format is always DER\n"); 187 BIO_printf(bio_err," -out arg output file (output format is always DER\n");
188 BIO_printf(bio_err," -noout arg don't produce any output\n"); 188 BIO_printf(bio_err," -noout arg don't produce any output\n");
diff --git a/src/lib/libssl/src/apps/ca.c b/src/lib/libssl/src/apps/ca.c
index 928c6f7f24..44c1679a17 100644
--- a/src/lib/libssl/src/apps/ca.c
+++ b/src/lib/libssl/src/apps/ca.c
@@ -943,6 +943,7 @@ bad:
943 if (verbose) BIO_printf(bio_err, 943 if (verbose) BIO_printf(bio_err,
944 "Done. %d entries marked as expired\n",i); 944 "Done. %d entries marked as expired\n",i);
945 } 945 }
946 goto err;
946 } 947 }
947 948
948 /*****************************************************************/ 949 /*****************************************************************/
@@ -1257,7 +1258,7 @@ bad:
1257 goto err; 1258 goto err;
1258 } 1259 }
1259 1260
1260 strcpy(buf[2],outdir); 1261 strlcpy(buf[2],outdir,sizeof(buf[2]));
1261 1262
1262#ifndef OPENSSL_SYS_VMS 1263#ifndef OPENSSL_SYS_VMS
1263 BUF_strlcat(buf[2],"/",sizeof(buf[2])); 1264 BUF_strlcat(buf[2],"/",sizeof(buf[2]));
@@ -1904,7 +1905,7 @@ again2:
1904 p="Valid"; 1905 p="Valid";
1905 else 1906 else
1906 p="\ninvalid type, Data base error\n"; 1907 p="\ninvalid type, Data base error\n";
1907 BIO_printf(bio_err,"Type :%s\n",p);; 1908 BIO_printf(bio_err,"Type :%s\n",p);
1908 if (rrow[DB_type][0] == 'R') 1909 if (rrow[DB_type][0] == 'R')
1909 { 1910 {
1910 p=rrow[DB_exp_date]; if (p == NULL) p="undef"; 1911 p=rrow[DB_exp_date]; if (p == NULL) p="undef";
diff --git a/src/lib/libssl/src/apps/der_chop.in b/src/lib/libssl/src/apps/der_chop.in
new file mode 100644
index 0000000000..9070b032fc
--- /dev/null
+++ b/src/lib/libssl/src/apps/der_chop.in
@@ -0,0 +1,305 @@
1#!/usr/local/bin/perl
2#
3# der_chop ... this is one total hack that Eric is really not proud of
4# so don't look at it and don't ask for support
5#
6# The "documentation" for this (i.e. all the comments) are my fault --tjh
7#
8# This program takes the "raw" output of derparse/asn1parse and
9# converts it into tokens and then runs regular expression matches
10# to try to figure out what to grab to get the things that are needed
11# and it is possible that this will do the wrong thing as it is a *hack*
12#
13# SSLeay 0.5.2+ should have direct read support for x509 (via -inform NET)
14# [I know ... promises promises :-)]
15#
16# To convert a Netscape Certificate:
17# der_chop < ServerCert.der > cert.pem
18# To convert a Netscape Key (and encrypt it again to protect it)
19# rsa -inform NET -in ServerKey.der -des > key.pem
20#
21# 23-Apr-96 eay Added the extra ASN.1 string types, I still think this
22# is an evil hack. If nothing else the parsing should
23# be relative, not absolute.
24# 19-Apr-96 tjh hacked (with eay) into 0.5.x format
25#
26# Tim Hudson
27# tjh@cryptsoft.com
28#
29
30
31require 'getopts.pl';
32
33$debug=0;
34
35# this was the 0.4.x way of doing things ...
36$cmd="derparse";
37$x509_cmd="x509";
38$crl_cmd="crl";
39$rc4_cmd="rc4";
40$md2_cmd="md2";
41$md4_cmd="md4";
42$rsa_cmd="rsa -des -inform der ";
43
44# this was the 0.5.x way of doing things ...
45$cmd="openssl asn1parse";
46$x509_cmd="openssl x509";
47$crl_cmd="openssl crl";
48$rc4_cmd="openssl rc4";
49$md2_cmd="openssl md2";
50$md4_cmd="openssl md4";
51$rsa_cmd="openssl rsa -des -inform der ";
52
53&Getopts('vd:') || die "usage:$0 [-v] [-d num] file";
54$depth=($opt_d =~ /^\d+$/)?$opt_d:0;
55
56&init_der();
57
58if ($#ARGV != -1)
59 {
60 foreach $file (@ARGV)
61 {
62 print STDERR "doing $file\n";
63 &dofile($file);
64 }
65 }
66else
67 {
68 $file="/tmp/a$$.DER";
69 open(OUT,">$file") || die "unable to open $file:$!\n";
70 for (;;)
71 {
72 $i=sysread(STDIN,$b,1024*10);
73 last if ($i <= 0);
74 $i=syswrite(OUT,$b,$i);
75 }
76 &dofile($file);
77 unlink($file);
78 }
79
80sub dofile
81 {
82 local($file)=@_;
83 local(@p);
84
85 $b=&load_file($file);
86 @p=&load_file_parse($file);
87
88 foreach $_ (@p)
89 {
90 ($off,$d,$hl,$len)=&parse_line($_);
91 $d-=$depth;
92 next if ($d != 0);
93 next if ($len == 0);
94
95 $o=substr($b,$off,$len+$hl);
96 ($str,@data)=&der_str($o);
97 print "$str\n" if ($opt_v);
98 if ($str =~ /^$crl/)
99 {
100 open(OUT,"|$crl_cmd -inform d -hash -issuer") ||
101 die "unable to run $crl_cmd:$!\n";
102 print OUT $o;
103 close(OUT);
104 }
105 elsif ($str =~ /^$x509/)
106 {
107 open(OUT,"|$x509_cmd -inform d -hash -subject -issuer")
108 || die "unable to run $x509_cmd:$!\n";
109 print OUT $o;
110 close(OUT);
111 }
112 elsif ($str =~ /^$rsa/)
113 {
114 ($type)=($data[3] =~ /OBJECT_IDENTIFIER :(.*)\s*$/);
115 next unless ($type eq "rsaEncryption");
116 ($off,$d,$hl,$len)=&parse_line($data[5]);
117 $os=substr($o,$off+$hl,$len);
118 open(OUT,"|$rsa_cmd")
119 || die "unable to run $rsa_cmd:$!\n";
120 print OUT $os;
121 close(OUT);
122 }
123 elsif ($str =~ /^0G-1D-1G/)
124 {
125 ($off,$d,$hl,$len)=&parse_line($data[1]);
126 $os=substr($o,$off+$hl,$len);
127 print STDERR "<$os>\n" if $opt_v;
128 &do_certificate($o,@data)
129 if (($os eq "certificate") &&
130 ($str =! /^0G-1D-1G-2G-3F-3E-2D/));
131 &do_private_key($o,@data)
132 if (($os eq "private-key") &&
133 ($str =! /^0G-1D-1G-2G-3F-3E-2D/));
134 }
135 }
136 }
137
138sub der_str
139 {
140 local($str)=@_;
141 local(*OUT,*IN,@a,$t,$d,$ret);
142 local($file)="/tmp/b$$.DER";
143 local(@ret);
144
145 open(OUT,">$file");
146 print OUT $str;
147 close(OUT);
148 open(IN,"$cmd -inform 'd' -in $file |") ||
149 die "unable to run $cmd:$!\n";
150 $ret="";
151 while (<IN>)
152 {
153 chop;
154 push(@ret,$_);
155
156 print STDERR "$_\n" if ($debug);
157
158 @a=split(/\s*:\s*/);
159 ($d)=($a[1] =~ /d=\s*(\d+)/);
160 $a[2] =~ s/\s+$//;
161 $t=$DER_s2i{$a[2]};
162 $ret.="$d$t-";
163 }
164 close(IN);
165 unlink($file);
166 chop $ret;
167 $ret =~ s/(-3H(-4G-5F-5[IJKMQRS])+)+/-NAME/g;
168 $ret =~ s/(-3G-4B-4L)+/-RCERT/g;
169 return($ret,@ret);
170 }
171
172sub init_der
173 {
174 $crl= "0G-1G-2G-3F-3E-2G-NAME-2L-2L-2G-RCERT-1G-2F-2E-1C";
175 $x509="0G-1G-2B-2G-3F-3E-2G-NAME-2G-3L-3L-2G-NAME-2G-3G-4F-4E-3C-1G-2F-2E-1C";
176 $rsa= "0G-1B-1G-2F-2E-1D";
177
178 %DER_i2s=(
179 # SSLeay 0.4.x has this list
180 "A","EOC",
181 "B","INTEGER",
182 "C","BIT STRING",
183 "D","OCTET STRING",
184 "E","NULL",
185 "F","OBJECT",
186 "G","SEQUENCE",
187 "H","SET",
188 "I","PRINTABLESTRING",
189 "J","T61STRING",
190 "K","IA5STRING",
191 "L","UTCTIME",
192 "M","NUMERICSTRING",
193 "N","VIDEOTEXSTRING",
194 "O","GENERALIZEDTIME",
195 "P","GRAPHICSTRING",
196 "Q","ISO64STRING",
197 "R","GENERALSTRING",
198 "S","UNIVERSALSTRING",
199
200 # SSLeay 0.5.x changed some things ... and I'm
201 # leaving in the old stuff but adding in these
202 # to handle the new as well --tjh
203 # - Well I've just taken them out and added the extra new
204 # ones :-) - eay
205 );
206
207 foreach (keys %DER_i2s)
208 { $DER_s2i{$DER_i2s{$_}}=$_; }
209 }
210
211sub parse_line
212 {
213 local($_)=@_;
214
215 return(/\s*(\d+):d=\s*(\d+)\s+hl=\s*(\d+)\s+l=\s*(\d+|inf)\s/);
216 }
217
218# 0:d=0 hl=4 l=377 cons: univ: SEQUENCE
219# 4:d=1 hl=2 l= 11 prim: univ: OCTET_STRING
220# 17:d=1 hl=4 l=360 cons: univ: SEQUENCE
221# 21:d=2 hl=2 l= 12 cons: univ: SEQUENCE
222# 23:d=3 hl=2 l= 8 prim: univ: OBJECT_IDENTIFIER :rc4
223# 33:d=3 hl=2 l= 0 prim: univ: NULL
224# 35:d=2 hl=4 l=342 prim: univ: OCTET_STRING
225sub do_private_key
226 {
227 local($data,@struct)=@_;
228 local($file)="/tmp/b$$.DER";
229 local($off,$d,$hl,$len,$_,$b,@p,$s);
230
231 ($type)=($struct[4] =~ /OBJECT_IDENTIFIER :(.*)\s*$/);
232 if ($type eq "rc4")
233 {
234 ($off,$d,$hl,$len)=&parse_line($struct[6]);
235 open(OUT,"|$rc4_cmd >$file") ||
236 die "unable to run $rc4_cmd:$!\n";
237 print OUT substr($data,$off+$hl,$len);
238 close(OUT);
239
240 $b=&load_file($file);
241 unlink($file);
242
243 ($s,@p)=&der_str($b);
244 die "unknown rsa key type\n$s\n"
245 if ($s ne '0G-1B-1G-2F-2E-1D');
246 local($off,$d,$hl,$len)=&parse_line($p[5]);
247 $b=substr($b,$off+$hl,$len);
248 ($s,@p)=&der_str($b);
249 open(OUT,"|$rsa_cmd") || die "unable to run $rsa_cmd:$!\n";
250 print OUT $b;
251 close(OUT);
252 }
253 else
254 {
255 print "'$type' is unknown\n";
256 exit(1);
257 }
258 }
259
260sub do_certificate
261 {
262 local($data,@struct)=@_;
263 local($file)="/tmp/b$$.DER";
264 local($off,$d,$hl,$len,$_,$b,@p,$s);
265
266 ($off,$d,$hl,$len)=&parse_line($struct[2]);
267 $b=substr($data,$off,$len+$hl);
268
269 open(OUT,"|$x509_cmd -inform d") || die "unable to run $x509_cmd:$!\n";
270 print OUT $b;
271 close(OUT);
272 }
273
274sub load_file
275 {
276 local($file)=@_;
277 local(*IN,$r,$b,$i);
278
279 $r="";
280 open(IN,"<$file") || die "unable to open $file:$!\n";
281 for (;;)
282 {
283 $i=sysread(IN,$b,10240);
284 last if ($i <= 0);
285 $r.=$b;
286 }
287 close(IN);
288 return($r);
289 }
290
291sub load_file_parse
292 {
293 local($file)=@_;
294 local(*IN,$r,@ret,$_,$i,$n,$b);
295
296 open(IN,"$cmd -inform d -in $file|")
297 || die "unable to run der_parse\n";
298 while (<IN>)
299 {
300 chop;
301 push(@ret,$_);
302 }
303 return($r,@ret);
304 }
305
diff --git a/src/lib/libssl/src/apps/dhparam.c b/src/lib/libssl/src/apps/dhparam.c
index dc00355b95..8fe3f18d7c 100644
--- a/src/lib/libssl/src/apps/dhparam.c
+++ b/src/lib/libssl/src/apps/dhparam.c
@@ -501,7 +501,7 @@ bad:
501 printf("\tif ((dh->p == NULL) || (dh->g == NULL))\n"); 501 printf("\tif ((dh->p == NULL) || (dh->g == NULL))\n");
502 printf("\t\t{ DH_free(dh); return(NULL); }\n"); 502 printf("\t\t{ DH_free(dh); return(NULL); }\n");
503 if (dh->length) 503 if (dh->length)
504 printf("\tdh->length = %ld;\n", dh->length); 504 printf("\tdh->length = %d;\n", dh->length);
505 printf("\treturn(dh);\n\t}\n"); 505 printf("\treturn(dh);\n\t}\n");
506 OPENSSL_free(data); 506 OPENSSL_free(data);
507 } 507 }
diff --git a/src/lib/libssl/src/apps/engine.c b/src/lib/libssl/src/apps/engine.c
index e8a599f9e5..12283d0aed 100644
--- a/src/lib/libssl/src/apps/engine.c
+++ b/src/lib/libssl/src/apps/engine.c
@@ -387,15 +387,11 @@ int MAIN(int argc, char **argv)
387 else if (strcmp(*argv,"-pre") == 0) 387 else if (strcmp(*argv,"-pre") == 0)
388 { 388 {
389 argc--; argv++; 389 argc--; argv++;
390 if (argc == 0)
391 goto skip_arg_loop;
392 sk_push(pre_cmds,*argv); 390 sk_push(pre_cmds,*argv);
393 } 391 }
394 else if (strcmp(*argv,"-post") == 0) 392 else if (strcmp(*argv,"-post") == 0)
395 { 393 {
396 argc--; argv++; 394 argc--; argv++;
397 if (argc == 0)
398 goto skip_arg_loop;
399 sk_push(post_cmds,*argv); 395 sk_push(post_cmds,*argv);
400 } 396 }
401 else if ((strncmp(*argv,"-h",2) == 0) || 397 else if ((strncmp(*argv,"-h",2) == 0) ||
diff --git a/src/lib/libssl/src/apps/genrsa.c b/src/lib/libssl/src/apps/genrsa.c
index 7dbd0923b6..63be873b7b 100644
--- a/src/lib/libssl/src/apps/genrsa.c
+++ b/src/lib/libssl/src/apps/genrsa.c
@@ -88,9 +88,6 @@ int MAIN(int argc, char **argv)
88 RSA *rsa=NULL; 88 RSA *rsa=NULL;
89 int i,num=DEFBITS; 89 int i,num=DEFBITS;
90 long l; 90 long l;
91#ifdef OPENSSL_FIPS
92 int use_x931 = 0;
93#endif
94 const EVP_CIPHER *enc=NULL; 91 const EVP_CIPHER *enc=NULL;
95 unsigned long f4=RSA_F4; 92 unsigned long f4=RSA_F4;
96 char *outfile=NULL; 93 char *outfile=NULL;
@@ -129,10 +126,6 @@ int MAIN(int argc, char **argv)
129 f4=3; 126 f4=3;
130 else if (strcmp(*argv,"-F4") == 0 || strcmp(*argv,"-f4") == 0) 127 else if (strcmp(*argv,"-F4") == 0 || strcmp(*argv,"-f4") == 0)
131 f4=RSA_F4; 128 f4=RSA_F4;
132#ifdef OPENSSL_FIPS
133 else if (strcmp(*argv,"-x931") == 0)
134 use_x931 = 1;
135#endif
136#ifndef OPENSSL_NO_ENGINE 129#ifndef OPENSSL_NO_ENGINE
137 else if (strcmp(*argv,"-engine") == 0) 130 else if (strcmp(*argv,"-engine") == 0)
138 { 131 {
@@ -240,27 +233,11 @@ bad:
240 233
241 BIO_printf(bio_err,"Generating RSA private key, %d bit long modulus\n", 234 BIO_printf(bio_err,"Generating RSA private key, %d bit long modulus\n",
242 num); 235 num);
243#ifdef OPENSSL_FIPS 236 rsa=RSA_generate_key(num,f4,genrsa_cb,bio_err);
244 if (use_x931)
245 {
246 BIGNUM *pubexp;
247 pubexp = BN_new();
248 BN_set_word(pubexp, f4);
249 rsa = RSA_X931_generate_key(num, pubexp, genrsa_cb, bio_err);
250 BN_free(pubexp);
251 }
252 else
253#endif
254 rsa=RSA_generate_key(num,f4,genrsa_cb,bio_err);
255 237
256 app_RAND_write_file(NULL, bio_err); 238 app_RAND_write_file(NULL, bio_err);
257 239
258 if (rsa == NULL) 240 if (rsa == NULL) goto err;
259 {
260 BIO_printf(bio_err, "Key Generation error\n");
261
262 goto err;
263 }
264 241
265 /* We need to do the following for when the base number size is < 242 /* We need to do the following for when the base number size is <
266 * long, esp windows 3.1 :-(. */ 243 * long, esp windows 3.1 :-(. */
diff --git a/src/lib/libssl/src/apps/makeapps.com b/src/lib/libssl/src/apps/makeapps.com
index 7b5ff90c62..2f1af9ec94 100644
--- a/src/lib/libssl/src/apps/makeapps.com
+++ b/src/lib/libssl/src/apps/makeapps.com
@@ -650,7 +650,7 @@ $ CCDEFS = "MONOLITH"
650$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS 650$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS
651$ CCEXTRAFLAGS = "" 651$ CCEXTRAFLAGS = ""
652$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS 652$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS
653$ CCDISABLEWARNINGS = "LONGLONGTYPE,LONGLONGSUFX,FOUNDCR" 653$ CCDISABLEWARNINGS = "LONGLONGTYPE,LONGLONGSUFX"
654$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN - 654$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN -
655 CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS 655 CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS
656$! 656$!
diff --git a/src/lib/libssl/src/apps/openssl.c b/src/lib/libssl/src/apps/openssl.c
index cb6ee740e7..65a9ee8a66 100644
--- a/src/lib/libssl/src/apps/openssl.c
+++ b/src/lib/libssl/src/apps/openssl.c
@@ -237,12 +237,21 @@ int main(int Argc, char *Argv[])
237 237
238#ifdef OPENSSL_FIPS 238#ifdef OPENSSL_FIPS
239 if(getenv("OPENSSL_FIPS")) { 239 if(getenv("OPENSSL_FIPS")) {
240 if (!FIPS_mode_set(1)) { 240#if defined(_WIN32)
241 char filename[MAX_PATH] = "";
242 GetModuleFileNameA( NULL, filename, MAX_PATH) ;
243 p = filename;
244#else
245 p = Argv[0];
246#endif
247 if (!FIPS_mode_set(1,p)) {
241 ERR_load_crypto_strings(); 248 ERR_load_crypto_strings();
242 ERR_print_errors(BIO_new_fp(stderr,BIO_NOCLOSE)); 249 ERR_print_errors(BIO_new_fp(stderr,BIO_NOCLOSE));
243 EXIT(1); 250 EXIT(1);
244 } 251 }
245 in_FIPS_mode = 1; 252 in_FIPS_mode = 1;
253 if (getenv("OPENSSL_FIPS_MD5"))
254 FIPS_allow_md5(1);
246 } 255 }
247#endif 256#endif
248 if (bio_err == NULL) 257 if (bio_err == NULL)
diff --git a/src/lib/libssl/src/apps/passwd.c b/src/lib/libssl/src/apps/passwd.c
index 3ad91d89d6..d78716d1b5 100644
--- a/src/lib/libssl/src/apps/passwd.c
+++ b/src/lib/libssl/src/apps/passwd.c
@@ -320,9 +320,9 @@ static char *md5crypt(const char *passwd, const char *magic, const char *salt)
320 out_buf[0] = '$'; 320 out_buf[0] = '$';
321 out_buf[1] = 0; 321 out_buf[1] = 0;
322 assert(strlen(magic) <= 4); /* "1" or "apr1" */ 322 assert(strlen(magic) <= 4); /* "1" or "apr1" */
323 strncat(out_buf, magic, 4); 323 strlcat(out_buf, magic, sizeof(out_buf));
324 strncat(out_buf, "$", 1); 324 strlcat(out_buf, "$", sizeof(out_buf));
325 strncat(out_buf, salt, 8); 325 strlcat(out_buf, salt, sizeof(out_buf));
326 assert(strlen(out_buf) <= 6 + 8); /* "$apr1$..salt.." */ 326 assert(strlen(out_buf) <= 6 + 8); /* "$apr1$..salt.." */
327 salt_out = out_buf + 2 + strlen(magic); 327 salt_out = out_buf + 2 + strlen(magic);
328 salt_len = strlen(salt_out); 328 salt_len = strlen(salt_out);
diff --git a/src/lib/libssl/src/apps/rand.c b/src/lib/libssl/src/apps/rand.c
index 63724bc730..e23e84af82 100644
--- a/src/lib/libssl/src/apps/rand.c
+++ b/src/lib/libssl/src/apps/rand.c
@@ -69,6 +69,7 @@
69/* -out file - write to file 69/* -out file - write to file
70 * -rand file:file - PRNG seed files 70 * -rand file:file - PRNG seed files
71 * -base64 - encode output 71 * -base64 - encode output
72 * -hex - hex encode output
72 * num - write 'num' bytes 73 * num - write 'num' bytes
73 */ 74 */
74 75
@@ -84,6 +85,7 @@ int MAIN(int argc, char **argv)
84 char *outfile = NULL; 85 char *outfile = NULL;
85 char *inrand = NULL; 86 char *inrand = NULL;
86 int base64 = 0; 87 int base64 = 0;
88 int hex = 0;
87 BIO *out = NULL; 89 BIO *out = NULL;
88 int num = -1; 90 int num = -1;
89#ifndef OPENSSL_NO_ENGINE 91#ifndef OPENSSL_NO_ENGINE
@@ -133,6 +135,13 @@ int MAIN(int argc, char **argv)
133 else 135 else
134 badopt = 1; 136 badopt = 1;
135 } 137 }
138 else if (strcmp(argv[i], "-hex") == 0)
139 {
140 if (!hex)
141 hex = 1;
142 else
143 badopt = 1;
144 }
136 else if (isdigit((unsigned char)argv[i][0])) 145 else if (isdigit((unsigned char)argv[i][0]))
137 { 146 {
138 if (num < 0) 147 if (num < 0)
@@ -148,6 +157,9 @@ int MAIN(int argc, char **argv)
148 badopt = 1; 157 badopt = 1;
149 } 158 }
150 159
160 if (hex && base64)
161 badopt = 1;
162
151 if (num < 0) 163 if (num < 0)
152 badopt = 1; 164 badopt = 1;
153 165
@@ -161,6 +173,7 @@ int MAIN(int argc, char **argv)
161#endif 173#endif
162 BIO_printf(bio_err, "-rand file%cfile%c... - seed PRNG from files\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR); 174 BIO_printf(bio_err, "-rand file%cfile%c... - seed PRNG from files\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);
163 BIO_printf(bio_err, "-base64 - encode output\n"); 175 BIO_printf(bio_err, "-base64 - encode output\n");
176 BIO_printf(bio_err, "-hex - hex encode output\n");
164 goto err; 177 goto err;
165 } 178 }
166 179
@@ -210,7 +223,13 @@ int MAIN(int argc, char **argv)
210 r = RAND_bytes(buf, chunk); 223 r = RAND_bytes(buf, chunk);
211 if (r <= 0) 224 if (r <= 0)
212 goto err; 225 goto err;
213 BIO_write(out, buf, chunk); 226 if (!hex)
227 BIO_write(out, buf, chunk);
228 else {
229 int i;
230 for (i = 0; i < chunk; i++)
231 BIO_printf(out, "%02x", buf[i]);
232 }
214 num -= chunk; 233 num -= chunk;
215 } 234 }
216 BIO_flush(out); 235 BIO_flush(out);
diff --git a/src/lib/libssl/src/apps/rsautl.c b/src/lib/libssl/src/apps/rsautl.c
index bdfbe31c14..5db6fe7cd7 100644
--- a/src/lib/libssl/src/apps/rsautl.c
+++ b/src/lib/libssl/src/apps/rsautl.c
@@ -3,7 +3,7 @@
3 * project 2000. 3 * project 2000.
4 */ 4 */
5/* ==================================================================== 5/* ====================================================================
6 * Copyright (c) 2000-2005 The OpenSSL Project. All rights reserved. 6 * Copyright (c) 2000 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
@@ -147,7 +147,6 @@ int MAIN(int argc, char **argv)
147 else if(!strcmp(*argv, "-oaep")) pad = RSA_PKCS1_OAEP_PADDING; 147 else if(!strcmp(*argv, "-oaep")) pad = RSA_PKCS1_OAEP_PADDING;
148 else if(!strcmp(*argv, "-ssl")) pad = RSA_SSLV23_PADDING; 148 else if(!strcmp(*argv, "-ssl")) pad = RSA_SSLV23_PADDING;
149 else if(!strcmp(*argv, "-pkcs")) pad = RSA_PKCS1_PADDING; 149 else if(!strcmp(*argv, "-pkcs")) pad = RSA_PKCS1_PADDING;
150 else if(!strcmp(*argv, "-x931")) pad = RSA_X931_PADDING;
151 else if(!strcmp(*argv, "-sign")) { 150 else if(!strcmp(*argv, "-sign")) {
152 rsa_mode = RSA_SIGN; 151 rsa_mode = RSA_SIGN;
153 need_priv = 1; 152 need_priv = 1;
diff --git a/src/lib/libssl/src/apps/s_apps.h b/src/lib/libssl/src/apps/s_apps.h
index 66b6edd442..48e7dbaddc 100644
--- a/src/lib/libssl/src/apps/s_apps.h
+++ b/src/lib/libssl/src/apps/s_apps.h
@@ -154,10 +154,10 @@ int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx);
154#ifdef HEADER_SSL_H 154#ifdef HEADER_SSL_H
155int set_cert_stuff(SSL_CTX *ctx, char *cert_file, char *key_file); 155int set_cert_stuff(SSL_CTX *ctx, char *cert_file, char *key_file);
156#endif 156#endif
157int init_client(int *sock, char *server, int port); 157int init_client(int *sock, char *server, char *port, int af);
158int should_retry(int i); 158int should_retry(int i);
159int extract_port(char *str, short *port_ptr); 159int extract_port(char *str, short *port_ptr);
160int extract_host_port(char *str,char **host_ptr,unsigned char *ip,short *p); 160int extract_host_port(char *str,char **host_ptr,unsigned char *ip,char **p);
161 161
162long MS_CALLBACK bio_dump_cb(BIO *bio, int cmd, const char *argp, 162long MS_CALLBACK bio_dump_cb(BIO *bio, int cmd, const char *argp,
163 int argi, long argl, long ret); 163 int argi, long argl, long ret);
diff --git a/src/lib/libssl/src/apps/s_client.c b/src/lib/libssl/src/apps/s_client.c
index f72195e02d..a70735b9dc 100644
--- a/src/lib/libssl/src/apps/s_client.c
+++ b/src/lib/libssl/src/apps/s_client.c
@@ -109,6 +109,8 @@
109 * 109 *
110 */ 110 */
111 111
112#include <sys/types.h>
113#include <netinet/in.h>
112#include <assert.h> 114#include <assert.h>
113#include <stdio.h> 115#include <stdio.h>
114#include <stdlib.h> 116#include <stdlib.h>
@@ -183,6 +185,8 @@ static void sc_usage(void)
183 { 185 {
184 BIO_printf(bio_err,"usage: s_client args\n"); 186 BIO_printf(bio_err,"usage: s_client args\n");
185 BIO_printf(bio_err,"\n"); 187 BIO_printf(bio_err,"\n");
188 BIO_printf(bio_err," -4 - Force IPv4\n");
189 BIO_printf(bio_err," -6 - Force IPv6\n");
186 BIO_printf(bio_err," -host host - use -connect instead\n"); 190 BIO_printf(bio_err," -host host - use -connect instead\n");
187 BIO_printf(bio_err," -port port - use -connect instead\n"); 191 BIO_printf(bio_err," -port port - use -connect instead\n");
188 BIO_printf(bio_err," -connect host:port - who to connect to (default is %s:%s)\n",SSL_HOST_NAME,PORT_STR); 192 BIO_printf(bio_err," -connect host:port - who to connect to (default is %s:%s)\n",SSL_HOST_NAME,PORT_STR);
@@ -235,12 +239,12 @@ int MAIN(int argc, char **argv)
235 int off=0; 239 int off=0;
236 SSL *con=NULL,*con2=NULL; 240 SSL *con=NULL,*con2=NULL;
237 X509_STORE *store = NULL; 241 X509_STORE *store = NULL;
238 int s,k,width,state=0; 242 int s,k,width,state=0, af=AF_UNSPEC;
239 char *cbuf=NULL,*sbuf=NULL,*mbuf=NULL; 243 char *cbuf=NULL,*sbuf=NULL,*mbuf=NULL;
240 int cbuf_len,cbuf_off; 244 int cbuf_len,cbuf_off;
241 int sbuf_len,sbuf_off; 245 int sbuf_len,sbuf_off;
242 fd_set readfds,writefds; 246 fd_set readfds,writefds;
243 short port=PORT; 247 char *port=PORT_STR;
244 int full_log=1; 248 int full_log=1;
245 char *host=SSL_HOST_NAME; 249 char *host=SSL_HOST_NAME;
246 char *cert_file=NULL,*key_file=NULL; 250 char *cert_file=NULL,*key_file=NULL;
@@ -311,8 +315,8 @@ int MAIN(int argc, char **argv)
311 else if (strcmp(*argv,"-port") == 0) 315 else if (strcmp(*argv,"-port") == 0)
312 { 316 {
313 if (--argc < 1) goto bad; 317 if (--argc < 1) goto bad;
314 port=atoi(*(++argv)); 318 port= *(++argv);
315 if (port == 0) goto bad; 319 if (port == NULL || *port == '\0') goto bad;
316 } 320 }
317 else if (strcmp(*argv,"-connect") == 0) 321 else if (strcmp(*argv,"-connect") == 0)
318 { 322 {
@@ -436,6 +440,8 @@ int MAIN(int argc, char **argv)
436 if (--argc < 1) goto bad; 440 if (--argc < 1) goto bad;
437 inrand= *(++argv); 441 inrand= *(++argv);
438 } 442 }
443 else if (strcmp(*argv,"-4") == 0) { af = AF_INET;}
444 else if (strcmp(*argv,"-6") == 0) { af = AF_INET6;}
439 else 445 else
440 { 446 {
441 BIO_printf(bio_err,"unknown option %s\n",*argv); 447 BIO_printf(bio_err,"unknown option %s\n",*argv);
@@ -531,7 +537,7 @@ bad:
531 537
532re_start: 538re_start:
533 539
534 if (init_client(&s,host,port) == 0) 540 if (init_client(&s,host,port,af) == 0)
535 { 541 {
536 BIO_printf(bio_err,"connect:errno=%d\n",get_last_socket_error()); 542 BIO_printf(bio_err,"connect:errno=%d\n",get_last_socket_error());
537 SHUTDOWN(s); 543 SHUTDOWN(s);
@@ -798,7 +804,7 @@ re_start:
798 /* goto end; */ 804 /* goto end; */
799 } 805 }
800 806
801 sbuf_len-=i;; 807 sbuf_len-=i;
802 sbuf_off+=i; 808 sbuf_off+=i;
803 if (sbuf_len <= 0) 809 if (sbuf_len <= 0)
804 { 810 {
diff --git a/src/lib/libssl/src/apps/s_socket.c b/src/lib/libssl/src/apps/s_socket.c
index 9c441b0200..d9fad2d1d7 100644
--- a/src/lib/libssl/src/apps/s_socket.c
+++ b/src/lib/libssl/src/apps/s_socket.c
@@ -86,11 +86,9 @@ static struct hostent *GetHostByName(char *name);
86static void ssl_sock_cleanup(void); 86static void ssl_sock_cleanup(void);
87#endif 87#endif
88static int ssl_sock_init(void); 88static int ssl_sock_init(void);
89static int init_client_ip(int *sock,unsigned char ip[4], int port);
90static int init_server(int *sock, int port); 89static int init_server(int *sock, int port);
91static int init_server_long(int *sock, int port,char *ip); 90static int init_server_long(int *sock, int port,char *ip);
92static int do_accept(int acc_sock, int *sock, char **host); 91static int do_accept(int acc_sock, int *sock, char **host);
93static int host_ip(char *str, unsigned char ip[4]);
94 92
95#ifdef OPENSSL_SYS_WIN16 93#ifdef OPENSSL_SYS_WIN16
96#define SOCKET_PROTOCOL 0 /* more microsoft stupidity */ 94#define SOCKET_PROTOCOL 0 /* more microsoft stupidity */
@@ -184,50 +182,41 @@ static int ssl_sock_init(void)
184 return(1); 182 return(1);
185 } 183 }
186 184
187int init_client(int *sock, char *host, int port) 185int init_client(int *sock, char *host, char *port, int af)
188 { 186 {
189 unsigned char ip[4]; 187 struct addrinfo hints, *ai_top, *ai;
190 short p=0; 188 int i, s;
191 189
192 if (!host_ip(host,&(ip[0]))) 190 memset(&hints, '\0', sizeof(hints));
191 hints.ai_family = af;
192 hints.ai_socktype = SOCK_STREAM;
193
194 if ((i = getaddrinfo(host, port, &hints, &ai_top)) != 0 ||
195 ai_top == NULL || ai_top->ai_addr == NULL)
193 { 196 {
194 return(0); 197 BIO_printf(bio_err,"getaddrinfo: %s\n", gai_strerror(i));
198 return (0);
195 } 199 }
196 if (p != 0) port=p;
197 return(init_client_ip(sock,ip,port));
198 }
199
200static int init_client_ip(int *sock, unsigned char ip[4], int port)
201 {
202 unsigned long addr;
203 struct sockaddr_in them;
204 int s,i;
205
206 if (!ssl_sock_init()) return(0);
207
208 memset((char *)&them,0,sizeof(them));
209 them.sin_family=AF_INET;
210 them.sin_port=htons((unsigned short)port);
211 addr=(unsigned long)
212 ((unsigned long)ip[0]<<24L)|
213 ((unsigned long)ip[1]<<16L)|
214 ((unsigned long)ip[2]<< 8L)|
215 ((unsigned long)ip[3]);
216 them.sin_addr.s_addr=htonl(addr);
217
218 s=socket(AF_INET,SOCK_STREAM,SOCKET_PROTOCOL);
219 if (s == INVALID_SOCKET) { perror("socket"); return(0); }
220 200
201 for (ai = ai_top; ai != NULL; ai = ai->ai_next)
202 {
203 s=socket(ai->ai_addr->sa_family, SOCK_STREAM, SOCKET_PROTOCOL);
204 if (s == INVALID_SOCKET) { continue; }
221#ifndef OPENSSL_SYS_MPE 205#ifndef OPENSSL_SYS_MPE
222 i=0; 206 i=0;
223 i=setsockopt(s,SOL_SOCKET,SO_KEEPALIVE,(char *)&i,sizeof(i)); 207 i=setsockopt(s,SOL_SOCKET,SO_KEEPALIVE,(char *)&i,sizeof(i));
224 if (i < 0) { perror("keepalive"); return(0); } 208 if (i == -1) { close(s); continue; }
225#endif 209#endif
210 if ((i = connect(s, ai->ai_addr, ai->ai_addr->sa_len)) == 0)
211 { *sock=s; freeaddrinfo(ai_top); return (1);}
226 212
227 if (connect(s,(struct sockaddr *)&them,sizeof(them)) == -1) 213 close(s);
228 { close(s); perror("connect"); return(0); } 214 }
229 *sock=s; 215
230 return(1); 216 perror("connect");
217 close(s);
218 freeaddrinfo(ai_top);
219 return(0);
231 } 220 }
232 221
233int do_server(int port, int *ret, int (*cb)(), char *context) 222int do_server(int port, int *ret, int (*cb)(), char *context)
@@ -409,12 +398,13 @@ end:
409 } 398 }
410 399
411int extract_host_port(char *str, char **host_ptr, unsigned char *ip, 400int extract_host_port(char *str, char **host_ptr, unsigned char *ip,
412 short *port_ptr) 401 char **port_ptr)
413 { 402 {
414 char *h,*p; 403 char *h,*p;
415 404
416 h=str; 405 h=str;
417 p=strchr(str,':'); 406 p=strrchr(str,'/'); /* IPv6 host/port */
407 if (p == NULL) { p=strrchr(str,':'); }
418 if (p == NULL) 408 if (p == NULL)
419 { 409 {
420 BIO_printf(bio_err,"no port defined\n"); 410 BIO_printf(bio_err,"no port defined\n");
@@ -422,58 +412,11 @@ int extract_host_port(char *str, char **host_ptr, unsigned char *ip,
422 } 412 }
423 *(p++)='\0'; 413 *(p++)='\0';
424 414
425 if ((ip != NULL) && !host_ip(str,ip))
426 goto err;
427 if (host_ptr != NULL) *host_ptr=h; 415 if (host_ptr != NULL) *host_ptr=h;
428 416
429 if (!extract_port(p,port_ptr)) 417 if (port_ptr != NULL && p != NULL && *p != '\0')
430 goto err; 418 *port_ptr = p;
431 return(1);
432err:
433 return(0);
434 }
435 419
436static int host_ip(char *str, unsigned char ip[4])
437 {
438 unsigned int in[4];
439 int i;
440
441 if (sscanf(str,"%u.%u.%u.%u",&(in[0]),&(in[1]),&(in[2]),&(in[3])) == 4)
442 {
443 for (i=0; i<4; i++)
444 if (in[i] > 255)
445 {
446 BIO_printf(bio_err,"invalid IP address\n");
447 goto err;
448 }
449 ip[0]=in[0];
450 ip[1]=in[1];
451 ip[2]=in[2];
452 ip[3]=in[3];
453 }
454 else
455 { /* do a gethostbyname */
456 struct hostent *he;
457
458 if (!ssl_sock_init()) return(0);
459
460 he=GetHostByName(str);
461 if (he == NULL)
462 {
463 BIO_printf(bio_err,"gethostbyname failure\n");
464 goto err;
465 }
466 /* cast to short because of win16 winsock definition */
467 if ((short)he->h_addrtype != AF_INET)
468 {
469 BIO_printf(bio_err,"gethostbyname addr is not AF_INET\n");
470 return(0);
471 }
472 ip[0]=he->h_addr_list[0][0];
473 ip[1]=he->h_addr_list[0][1];
474 ip[2]=he->h_addr_list[0][2];
475 ip[3]=he->h_addr_list[0][3];
476 }
477 return(1); 420 return(1);
478err: 421err:
479 return(0); 422 return(0);
@@ -538,7 +481,7 @@ static struct hostent *GetHostByName(char *name)
538 /* else add to cache */ 481 /* else add to cache */
539 if(strlen(name) < sizeof ghbn_cache[0].name) 482 if(strlen(name) < sizeof ghbn_cache[0].name)
540 { 483 {
541 strcpy(ghbn_cache[lowi].name,name); 484 strlcpy(ghbn_cache[lowi].name,name, sizeof(ghbn_cache[0].name));
542 memcpy((char *)&(ghbn_cache[lowi].ent),ret,sizeof(struct hostent)); 485 memcpy((char *)&(ghbn_cache[lowi].ent),ret,sizeof(struct hostent));
543 ghbn_cache[lowi].order=ghbn_miss+ghbn_hits; 486 ghbn_cache[lowi].order=ghbn_miss+ghbn_hits;
544 } 487 }
diff --git a/src/lib/libssl/src/apps/speed.c b/src/lib/libssl/src/apps/speed.c
index 2fc327c375..5ed510ced6 100644
--- a/src/lib/libssl/src/apps/speed.c
+++ b/src/lib/libssl/src/apps/speed.c
@@ -1706,7 +1706,7 @@ show_res:
1706 k,rsa_bits[k],rsa_results[k][0], 1706 k,rsa_bits[k],rsa_results[k][0],
1707 rsa_results[k][1]); 1707 rsa_results[k][1]);
1708 else 1708 else
1709 fprintf(stdout,"rsa %4u bits %8.6fs %8.6fs %8.1f %8.1f\n", 1709 fprintf(stdout,"rsa %4u bits %8.4fs %8.4fs %8.1f %8.1f\n",
1710 rsa_bits[k],rsa_results[k][0],rsa_results[k][1], 1710 rsa_bits[k],rsa_results[k][0],rsa_results[k][1],
1711 1.0/rsa_results[k][0],1.0/rsa_results[k][1]); 1711 1.0/rsa_results[k][0],1.0/rsa_results[k][1]);
1712 } 1712 }
@@ -1725,7 +1725,7 @@ show_res:
1725 fprintf(stdout,"+F3:%u:%u:%f:%f\n", 1725 fprintf(stdout,"+F3:%u:%u:%f:%f\n",
1726 k,dsa_bits[k],dsa_results[k][0],dsa_results[k][1]); 1726 k,dsa_bits[k],dsa_results[k][0],dsa_results[k][1]);
1727 else 1727 else
1728 fprintf(stdout,"dsa %4u bits %8.6fs %8.6fs %8.1f %8.1f\n", 1728 fprintf(stdout,"dsa %4u bits %8.4fs %8.4fs %8.1f %8.1f\n",
1729 dsa_bits[k],dsa_results[k][0],dsa_results[k][1], 1729 dsa_bits[k],dsa_results[k][0],dsa_results[k][1],
1730 1.0/dsa_results[k][0],1.0/dsa_results[k][1]); 1730 1.0/dsa_results[k][0],1.0/dsa_results[k][1]);
1731 } 1731 }
diff --git a/src/lib/libssl/src/certs/ICE-CA.pem b/src/lib/libssl/src/certs/ICE-CA.pem
new file mode 100644
index 0000000000..75652366c2
--- /dev/null
+++ b/src/lib/libssl/src/certs/ICE-CA.pem
@@ -0,0 +1,59 @@
1Certificate:
2 Data:
3 Version: 3 (0x2)
4 Serial Number: 1 (0x1)
5 Signature Algorithm: md5WithRSAEncryption
6 Issuer: O=European ICE-TEL project, OU=V3-Certification Authority
7 Validity
8 Not Before: Apr 2 17:35:53 1997 GMT
9 Not After : Apr 2 17:35:53 1998 GMT
10 Subject: O=European ICE-TEL project, OU=V3-Certification Authority, L=Darmstadt
11 Subject Public Key Info:
12 Public Key Algorithm: rsa
13 RSA Public Key: (512 bit)
14 Modulus (512 bit):
15 00:82:75:ba:f6:d1:60:b5:f9:15:b3:6a:dd:29:8f:
16 8b:a4:6f:1a:88:e0:50:43:40:0b:79:41:d5:d3:16:
17 44:7d:74:65:17:42:06:52:0b:e9:50:c8:10:cd:24:
18 e2:ae:8d:22:30:73:e6:b4:b7:93:1f:e5:6e:a2:ae:
19 49:11:a5:c9:45
20 Exponent: 65537 (0x10001)
21 X509v3 extensions:
22 X509v3 Authority Key Identifier:
23 0.........z.."p......e..
24 X509v3 Subject Key Identifier:
25 ..~r..:..B.44fu......3
26 X509v3 Key Usage: critical
27 ....
28 X509v3 Certificate Policies: critical
29 0.0...*...
30 X509v3 Subject Alternative Name:
31 0!..secude-support@darmstadt.gmd.de
32 X509v3 Issuer Alternative Name:
33 0I..ice-tel-ca@darmstadt.gmd.de.*http://www.darmstadt.gmd.de/ice-tel/euroca
34 X509v3 Basic Constraints: critical
35 0....
36 X509v3 CRL Distribution Points:
37 0200...,.*http://www.darmstadt.gmd.de/ice-tel/euroca
38 Signature Algorithm: md5WithRSAEncryption
39 17:a2:88:b7:99:5a:05:41:e4:13:34:67:e6:1f:3e:26:ec:4b:
40 69:f9:3e:28:22:be:9d:1c:ab:41:6f:0c:00:85:fe:45:74:f6:
41 98:f0:ce:9b:65:53:4a:50:42:c7:d4:92:bd:d7:a2:a8:3d:98:
42 88:73:cd:60:28:79:a3:fc:48:7a
43-----BEGIN CERTIFICATE-----
44MIICzDCCAnagAwIBAgIBATANBgkqhkiG9w0BAQQFADBIMSEwHwYDVQQKExhFdXJv
45cGVhbiBJQ0UtVEVMIHByb2plY3QxIzAhBgNVBAsTGlYzLUNlcnRpZmljYXRpb24g
46QXV0aG9yaXR5MB4XDTk3MDQwMjE3MzU1M1oXDTk4MDQwMjE3MzU1M1owXDEhMB8G
47A1UEChMYRXVyb3BlYW4gSUNFLVRFTCBwcm9qZWN0MSMwIQYDVQQLExpWMy1DZXJ0
48aWZpY2F0aW9uIEF1dGhvcml0eTESMBAGA1UEBxMJRGFybXN0YWR0MFkwCgYEVQgB
49AQICAgADSwAwSAJBAIJ1uvbRYLX5FbNq3SmPi6RvGojgUENAC3lB1dMWRH10ZRdC
50BlIL6VDIEM0k4q6NIjBz5rS3kx/lbqKuSRGlyUUCAwEAAaOCATgwggE0MB8GA1Ud
51IwQYMBaAFIr3yNUOx3ro1yJw4AuJ1bbsZbzPMB0GA1UdDgQWBBR+cvL4OoacQog0
52NGZ1w9T80aIRMzAOBgNVHQ8BAf8EBAMCAfYwFAYDVR0gAQH/BAowCDAGBgQqAwQF
53MCoGA1UdEQQjMCGBH3NlY3VkZS1zdXBwb3J0QGRhcm1zdGFkdC5nbWQuZGUwUgYD
54VR0SBEswSYEbaWNlLXRlbC1jYUBkYXJtc3RhZHQuZ21kLmRlhipodHRwOi8vd3d3
55LmRhcm1zdGFkdC5nbWQuZGUvaWNlLXRlbC9ldXJvY2EwDwYDVR0TAQH/BAUwAwEB
56/zA7BgNVHR8ENDAyMDCgLqAshipodHRwOi8vd3d3LmRhcm1zdGFkdC5nbWQuZGUv
57aWNlLXRlbC9ldXJvY2EwDQYJKoZIhvcNAQEEBQADQQAXooi3mVoFQeQTNGfmHz4m
587Etp+T4oIr6dHKtBbwwAhf5FdPaY8M6bZVNKUELH1JK916KoPZiIc81gKHmj/Eh6
59-----END CERTIFICATE-----
diff --git a/src/lib/libssl/src/certs/ICE-root.pem b/src/lib/libssl/src/certs/ICE-root.pem
new file mode 100644
index 0000000000..fa991599c9
--- /dev/null
+++ b/src/lib/libssl/src/certs/ICE-root.pem
@@ -0,0 +1,48 @@
1Certificate:
2 Data:
3 Version: 3 (0x2)
4 Serial Number: 0 (0x0)
5 Signature Algorithm: md5WithRSAEncryption
6 Issuer: O=European ICE-TEL project, OU=V3-Certification Authority
7 Validity
8 Not Before: Apr 2 17:33:36 1997 GMT
9 Not After : Apr 2 17:33:36 1998 GMT
10 Subject: O=European ICE-TEL project, OU=V3-Certification Authority
11 Subject Public Key Info:
12 Public Key Algorithm: rsa
13 RSA Public Key: (512 bit)
14 Modulus (512 bit):
15 00:80:3e:eb:ae:47:a9:fe:10:54:0b:81:8b:9c:2b:
16 82:ab:3a:61:36:65:8b:f3:73:9f:ac:ac:7a:15:a7:
17 13:8f:b4:c4:ba:a3:0f:bc:a5:58:8d:cc:b1:93:31:
18 9e:81:9e:8c:19:61:86:fa:52:73:54:d1:97:76:22:
19 e7:c7:9f:41:cd
20 Exponent: 65537 (0x10001)
21 X509v3 extensions:
22 X509v3 Subject Key Identifier:
23 ........z.."p......e..
24 X509v3 Key Usage: critical
25 ....
26 X509v3 Subject Alternative Name:
27 0I.*http://www.darmstadt.gmd.de/ice-tel/euroca..ice-tel-ca@darmstadt.gmd.de
28 X509v3 Basic Constraints: critical
29 0....
30 Signature Algorithm: md5WithRSAEncryption
31 76:69:61:db:b7:cf:8b:06:9e:d8:8c:96:53:d2:4d:a8:23:a6:
32 03:44:e8:8f:24:a5:c0:84:a8:4b:77:d4:2d:2b:7d:37:91:67:
33 f2:2c:ce:02:31:4c:6b:cc:ce:f2:68:a6:11:11:ab:7d:88:b8:
34 7e:22:9f:25:06:60:bd:79:30:3d
35-----BEGIN CERTIFICATE-----
36MIICFjCCAcCgAwIBAgIBADANBgkqhkiG9w0BAQQFADBIMSEwHwYDVQQKExhFdXJv
37cGVhbiBJQ0UtVEVMIHByb2plY3QxIzAhBgNVBAsTGlYzLUNlcnRpZmljYXRpb24g
38QXV0aG9yaXR5MB4XDTk3MDQwMjE3MzMzNloXDTk4MDQwMjE3MzMzNlowSDEhMB8G
39A1UEChMYRXVyb3BlYW4gSUNFLVRFTCBwcm9qZWN0MSMwIQYDVQQLExpWMy1DZXJ0
40aWZpY2F0aW9uIEF1dGhvcml0eTBZMAoGBFUIAQECAgIAA0sAMEgCQQCAPuuuR6n+
41EFQLgYucK4KrOmE2ZYvzc5+srHoVpxOPtMS6ow+8pViNzLGTMZ6BnowZYYb6UnNU
420Zd2IufHn0HNAgMBAAGjgZcwgZQwHQYDVR0OBBYEFIr3yNUOx3ro1yJw4AuJ1bbs
43ZbzPMA4GA1UdDwEB/wQEAwIB9jBSBgNVHREESzBJhipodHRwOi8vd3d3LmRhcm1z
44dGFkdC5nbWQuZGUvaWNlLXRlbC9ldXJvY2GBG2ljZS10ZWwtY2FAZGFybXN0YWR0
45LmdtZC5kZTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBAUAA0EAdmlh27fP
46iwae2IyWU9JNqCOmA0TojySlwISoS3fULSt9N5Fn8izOAjFMa8zO8mimERGrfYi4
47fiKfJQZgvXkwPQ==
48-----END CERTIFICATE-----
diff --git a/src/lib/libssl/src/certs/ICE-user.pem b/src/lib/libssl/src/certs/ICE-user.pem
new file mode 100644
index 0000000000..28065fd37d
--- /dev/null
+++ b/src/lib/libssl/src/certs/ICE-user.pem
@@ -0,0 +1,63 @@
1Certificate:
2 Data:
3 Version: 3 (0x2)
4 Serial Number: 1 (0x1)
5 Signature Algorithm: md5WithRSAEncryption
6 Issuer: O=European ICE-TEL project, OU=V3-Certification Authority, L=Darmstadt
7 Validity
8 Not Before: Apr 2 17:35:59 1997 GMT
9 Not After : Apr 2 17:35:59 1998 GMT
10 Subject: O=European ICE-TEL project, OU=V3-Certification Authority, L=Darmstadt, CN=USER
11 Subject Public Key Info:
12 Public Key Algorithm: rsa
13 RSA Public Key: (512 bit)
14 Modulus (512 bit):
15 00:a8:a8:53:63:49:1b:93:c3:c3:0b:6c:88:11:55:
16 de:7e:6a:e2:f9:52:a0:dc:69:25:c4:c8:bf:55:e1:
17 31:a8:ce:e4:a9:29:85:99:8a:15:9a:de:f6:2f:e1:
18 b4:50:5f:5e:04:75:a6:f4:76:dc:3c:0e:39:dc:3a:
19 be:3e:a4:61:8b
20 Exponent: 65537 (0x10001)
21 X509v3 extensions:
22 X509v3 Authority Key Identifier:
23 0...~r..:..B.44fu......3
24 X509v3 Subject Key Identifier:
25 ...... .*...1.*.......
26 X509v3 Key Usage: critical
27 ....
28 X509v3 Certificate Policies: critical
29 0.0...*...0.......
30 X509v3 Subject Alternative Name:
31 0:..user@darmstadt.gmd.de.!http://www.darmstadt.gmd.de/~user
32 X509v3 Issuer Alternative Name:
33 0....gmdca@gmd.de..http://www.gmd.de..saturn.darmstadt.gmd.de.\1!0...U.
34..European ICE-TEL project1#0!..U....V3-Certification Authority1.0...U....Darmstadt..141.12.62.26
35 X509v3 Basic Constraints: critical
36 0.
37 X509v3 CRL Distribution Points:
38 0.0.......gmdca@gmd.de
39 Signature Algorithm: md5WithRSAEncryption
40 69:0c:e1:b7:a7:f2:d8:fb:e8:69:c0:13:cd:37:ad:21:06:22:
41 4d:e8:c6:db:f1:04:0b:b7:e0:b3:d6:0c:81:03:ce:c3:6a:3e:
42 c7:e7:24:24:a4:92:64:c2:83:83:06:42:53:0e:6f:09:1e:84:
43 9a:f7:6f:63:9b:94:99:83:d6:a4
44-----BEGIN CERTIFICATE-----
45MIIDTzCCAvmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBcMSEwHwYDVQQKExhFdXJv
46cGVhbiBJQ0UtVEVMIHByb2plY3QxIzAhBgNVBAsTGlYzLUNlcnRpZmljYXRpb24g
47QXV0aG9yaXR5MRIwEAYDVQQHEwlEYXJtc3RhZHQwHhcNOTcwNDAyMTczNTU5WhcN
48OTgwNDAyMTczNTU5WjBrMSEwHwYDVQQKExhFdXJvcGVhbiBJQ0UtVEVMIHByb2pl
49Y3QxIzAhBgNVBAsTGlYzLUNlcnRpZmljYXRpb24gQXV0aG9yaXR5MRIwEAYDVQQH
50EwlEYXJtc3RhZHQxDTALBgNVBAMTBFVTRVIwWTAKBgRVCAEBAgICAANLADBIAkEA
51qKhTY0kbk8PDC2yIEVXefmri+VKg3GklxMi/VeExqM7kqSmFmYoVmt72L+G0UF9e
52BHWm9HbcPA453Dq+PqRhiwIDAQABo4IBmDCCAZQwHwYDVR0jBBgwFoAUfnLy+DqG
53nEKINDRmdcPU/NGiETMwHQYDVR0OBBYEFJfc4B8gjSoRmLUx4Sq/ucIYiMrPMA4G
54A1UdDwEB/wQEAwIB8DAcBgNVHSABAf8EEjAQMAYGBCoDBAUwBgYECQgHBjBDBgNV
55HREEPDA6gRV1c2VyQGRhcm1zdGFkdC5nbWQuZGWGIWh0dHA6Ly93d3cuZGFybXN0
56YWR0LmdtZC5kZS9+dXNlcjCBsQYDVR0SBIGpMIGmgQxnbWRjYUBnbWQuZGWGEWh0
57dHA6Ly93d3cuZ21kLmRlghdzYXR1cm4uZGFybXN0YWR0LmdtZC5kZaRcMSEwHwYD
58VQQKExhFdXJvcGVhbiBJQ0UtVEVMIHByb2plY3QxIzAhBgNVBAsTGlYzLUNlcnRp
59ZmljYXRpb24gQXV0aG9yaXR5MRIwEAYDVQQHEwlEYXJtc3RhZHSHDDE0MS4xMi42
60Mi4yNjAMBgNVHRMBAf8EAjAAMB0GA1UdHwQWMBQwEqAQoA6BDGdtZGNhQGdtZC5k
61ZTANBgkqhkiG9w0BAQQFAANBAGkM4ben8tj76GnAE803rSEGIk3oxtvxBAu34LPW
62DIEDzsNqPsfnJCSkkmTCg4MGQlMObwkehJr3b2OblJmD1qQ=
63-----END CERTIFICATE-----
diff --git a/src/lib/libssl/src/certs/ICE.crl b/src/lib/libssl/src/certs/ICE.crl
new file mode 100644
index 0000000000..21939e8cc4
--- /dev/null
+++ b/src/lib/libssl/src/certs/ICE.crl
@@ -0,0 +1,9 @@
1-----BEGIN X509 CRL-----
2MIIBNDCBnjANBgkqhkiG9w0BAQIFADBFMSEwHwYDVQQKExhFdXJvcGVhbiBJQ0Ut
3VEVMIFByb2plY3QxIDAeBgNVBAsTF0NlcnRpZmljYXRpb24gQXV0aG9yaXR5Fw05
4NzA2MDkxNDQyNDNaFw05NzA3MDkxNDQyNDNaMCgwEgIBChcNOTcwMzAzMTQ0MjU0
5WjASAgEJFw05NjEwMDIxMjI5MjdaMA0GCSqGSIb3DQEBAgUAA4GBAH4vgWo2Tej/
6i7kbiw4Imd30If91iosjClNpBFwvwUDBclPEeMuYimHbLOk4H8Nofc0fw11+U/IO
7KSNouUDcqG7B64oY7c4SXKn+i1MWOb5OJiWeodX3TehHjBlyWzoNMWCnYA8XqFP1
8mOKp8Jla1BibEZf14+/HqCi2hnZUiEXh
9-----END X509 CRL-----
diff --git a/src/lib/libssl/src/certs/RegTP-4R.pem b/src/lib/libssl/src/certs/RegTP-4R.pem
new file mode 100644
index 0000000000..6f2c6abccd
--- /dev/null
+++ b/src/lib/libssl/src/certs/RegTP-4R.pem
@@ -0,0 +1,19 @@
1issuer= CN=4R-CA 1:PN+0.2.262.1.10.7.20=#130131,O=Regulierungsbeh\C3\88orde f\C3\88ur Telekommunikation und Post,C=DE
2notBefore=Jan 21 16:04:53 1999 GMT
3notAfter=Jan 21 16:04:53 2004 GMT
4subject= CN=4R-CA 1:PN+0.2.262.1.10.7.20=#130131,O=Regulierungsbeh\C3\88orde f\C3\88ur Telekommunikation und Post,C=DE
5-----BEGIN CERTIFICATE-----
6MIICZzCCAdOgAwIBAgIEOwVn1DAKBgYrJAMDAQIFADBvMQswCQYDVQQGEwJERTE9
7MDsGA1UEChQ0UmVndWxpZXJ1bmdzYmVoyG9yZGUgZsh1ciBUZWxla29tbXVuaWth
8dGlvbiB1bmQgUG9zdDEhMAwGBwKCBgEKBxQTATEwEQYDVQQDFAo0Ui1DQSAxOlBO
9MCIYDzE5OTkwMTIxMTYwNDUzWhgPMjAwNDAxMjExNjA0NTNaMG8xCzAJBgNVBAYT
10AkRFMT0wOwYDVQQKFDRSZWd1bGllcnVuZ3NiZWjIb3JkZSBmyHVyIFRlbGVrb21t
11dW5pa2F0aW9uIHVuZCBQb3N0MSEwDAYHAoIGAQoHFBMBMTARBgNVBAMUCjRSLUNB
12IDE6UE4wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGAjzHbq2asUlqeWbXTQHso
13aVF6YIPVH3c/B2cbuy9HJ/lnE6x0asOzM2DGDqi47xkdAxPc0LZ0fxO87rkmz7xs
14jJObnVrMXpyUSDSp5Y0wqKJdsFdr6mGFOQZteIti8AJnr8xMkwnWVyuOlEXsFe1h
155gxwQXrOcPinE6qu1t/3PmECBMAAAAGjEjAQMA4GA1UdDwEB/wQEAwIBBjAKBgYr
16JAMDAQIFAAOBgQA+RdocBmA2VV9E5aKPBcp01tdZAvvW9Tve3docArVKR/4/yvSX
17Z+wvzzk+uu4qBp49HN3nqPYMrzbTmjBFu4ce5fkZ7dHF0W1sSBL0rox5z36Aq2re
18JjfEOEmSnNe0+opuh4FSVOssXblXTE8lEQU0FhhItgDx2ADnWZibaxLG4w==
19-----END CERTIFICATE-----
diff --git a/src/lib/libssl/src/certs/ca-cert.pem b/src/lib/libssl/src/certs/ca-cert.pem
new file mode 100644
index 0000000000..bcba68aefa
--- /dev/null
+++ b/src/lib/libssl/src/certs/ca-cert.pem
@@ -0,0 +1,33 @@
1-----BEGIN CERTIFICATE-----
2MIIC5TCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQQFADBcMQswCQYDVQQGEwJBVTET
3MBEGA1UECBMKUXVlZW5zbGFuZDEaMBgGA1UEChMRQ3J5cHRTb2Z0IFB0eSBMdGQx
4HDAaBgNVBAMTE1Rlc3QgUENBICgxMDI0IGJpdCkwHhcNOTkxMjAyMjEzODUxWhcN
5MDUwNzEwMjEzODUxWjBbMQswCQYDVQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFu
6ZDEaMBgGA1UEChMRQ3J5cHRTb2Z0IFB0eSBMdGQxGzAZBgNVBAMTElRlc3QgQ0Eg
7KDEwMjQgYml0KTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAo7ujy3XXpU/p
8yDJtOxkMJmGv3mdiVm7JrdoKLUgqjO2rBaeNuYMUiuI6oYU+tlD6agwRML0Pn2JF
9b90VdK/UXrmRr9djaEuH17EIKjte5RwOzndCndsjcCYyoeODMTyg7dqPIkDMmRNM
105R5xBTabD+Aji0wzQupYxBLuW5PLj7ECAwEAAaOBtzCBtDAdBgNVHQ4EFgQU1WWA
11U42mkhi3ecgey1dsJjU61+UwgYQGA1UdIwR9MHuAFE0RaEcrj18q1dw+G6nJbsTW
12R213oWCkXjBcMQswCQYDVQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFuZDEaMBgG
13A1UEChMRQ3J5cHRTb2Z0IFB0eSBMdGQxHDAaBgNVBAMTE1Rlc3QgUENBICgxMDI0
14IGJpdCmCAQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBb39BRphHL
156aRAQyymsvBvPSCiG9+kR0R1L23aTpNbhXp2BebyFjbEQYZc2kWGiKKcHkNECA35
163d4LoqUlVey8DFyafOIJd9hxdZfg+rxlHMxnL7uCJRmx9+xB411Jtsol9/wg1uCK
17sleGpgB4j8cG2SVCz7V2MNZNK+d5QCnR7A==
18-----END CERTIFICATE-----
19-----BEGIN RSA PRIVATE KEY-----
20MIICXQIBAAKBgQCju6PLddelT+nIMm07GQwmYa/eZ2JWbsmt2gotSCqM7asFp425
21gxSK4jqhhT62UPpqDBEwvQ+fYkVv3RV0r9ReuZGv12NoS4fXsQgqO17lHA7Od0Kd
222yNwJjKh44MxPKDt2o8iQMyZE0zlHnEFNpsP4COLTDNC6ljEEu5bk8uPsQIDAQAB
23AoGAVZmpFZsDZfr0l2S9tLLwpjRWNOlKATQkno6q2WesT0eGLQufTciY+c8ypfU6
24hyio8r5iUl/VhhdjhAtKx1mRpiotftHo/eYf8rtsrnprOnWG0bWjLjtIoMbcxGn2
25J3bN6LJmbJMjDs0eJ3KnTu646F3nDUw2oGAwmpzKXA1KAP0CQQDRvQhxk2D3Pehs
26HvG665u2pB5ipYQngEFlZO7RHJZzJOZEWSLuuMqaF/7pTfA5jiBvWqCgJeCRRInL
2721ru4dlPAkEAx9jj7BgKn5TYnMoBSSe0afjsV9oApVpN1Nacb1YDtCwy+scp3++s
28nFxlv98wxIlSdpwMUn+AUWfjiWR7Tu/G/wJBAJ/KjwZIrFVxewP0x2ILYsTRYLzz
29MS4PDsO7FB+I0i7DbBOifXS2oNSpd3I0CNMwrxFnUHzynpbOStVfN3ZL5w0CQQCa
30pwFahxBRhkJKsxhjoFJBX9yl75JoY4Wvm5Tbo9ih6UJaRx3kqfkN14L2BKYcsZgb
31KY9vmDOYy6iNfjDeWTfJAkBkfPUb8oTJ/nSP5zN6sqGxSY4krc4xLxpRmxoJ8HL2
32XfhqXkTzbU13RX9JJ/NZ8vQN9Vm2NhxRGJocQkmcdVtJ
33-----END RSA PRIVATE KEY-----
diff --git a/src/lib/libssl/src/certs/dsa-ca.pem b/src/lib/libssl/src/certs/dsa-ca.pem
new file mode 100644
index 0000000000..9eb08f3ddd
--- /dev/null
+++ b/src/lib/libssl/src/certs/dsa-ca.pem
@@ -0,0 +1,43 @@
1-----BEGIN DSA PRIVATE KEY-----
2Proc-Type: 4,ENCRYPTED
3DEK-Info: DES-EDE3-CBC,C5B6C7CC9E1FE2C0
4
5svCXBcBRhMuU22UXOfiKZA+thmz6KYXpt1Yg5Rd+TYQcQ1MdvNy0B0tkP1SxzDq0
6Xh1eMeTML9/9/0rKakgNXXXbpi5RB8t6BmwRSyej89F7nn1mtR3qzoyPRpp15SDl
7Tn67C+2v+HDF3MFk88hiNCYkNbcmi7TWvChsl8N1r7wdZwtIox56yXdgxw6ZIpa/
8par0oUCzN7fiavPgCWz1kfPNSaBQSdxwH7TZi5tMHAr0J3C7a7QRnZfE09R59Uqr
9zslrq+ndIw1BZAxoY0SlBu+iFOVaBVlwToC4AsHkv7j7l8ITtr7f42YbBa44D9TO
10uOhONmkk/v3Fso4RaOEzdKZC+hnmmzvHs6TiTWm6yzJgSFwyOUK0eGmKEeVxpcH5
11rUOlHOwzen+FFtocZDZAfdFnb7QY7L/boQvyA5A+ZbRG4DUpmBQeQsSaICHM5Rxx
121QaLF413VNPXTLPbW0ilSc2H8x2iZTIVKfd33oSO6NhXPtSYQgfecEF4BvNHY5c4
13HovjT4mckbK95bcBzoCHu43vuSQkmZzdYo/ydSZt6zoPavbBLueTpgSbdXiDi827
14MVqOsYxGCb+kez0FoDSTgw==
15-----END DSA PRIVATE KEY-----
16-----BEGIN CERTIFICATE REQUEST-----
17MIICUjCCAhECAQAwUjELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUx
18ITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDELMAkGA1UEAxMCQ0Ew
19ggG0MIIBKQYFKw4DAgwwggEeAoGBAKc/boW/QWopffCfRxkwkJoJHdpqMx7FPYaW
20sxXgUy6P4FmCc5A+dTGZR3pS+4Xk2aZ7OJtoioSbh8YetX6GS1NbWc9xZRmIbs5m
21rmuINvvsKNzC16W75Sw5JkvamnAYlTeVEFYj9hXtugRe3jlP/bdDH7WkZW/NgBHk
22cJVbUM1JAhUA9wcx7fpsBgPVhYocrJxl51BmZW8CgYBN30wDppGK9RlvUEYlmeVo
23bzDjaeHls12YuyiGSPzemQQ/X4gMnHMkDSBduSqaPxiWJ+Rih8F7dGJT/GEnqHqR
24CZ228U2cVA9YBu5JdAfOVX4jzhb2ytxaYQF+yXG1TfbcNCmHaPZeIJOz2/XkCWxB
25F5WS6wG1c6Vqftgy7Q4CuAOBhAACgYAapll6iqz9XrZFlk2GCVcB+KihxWnH7IuH
26vSLw9YUrJahcBHmbpvt494lF4gC5w3WPM+vXJofbusk4GoQEEsQNMDaah4m49uUq
27AylOVFJJJXuirVJ+o+0TtOFDITEAl+YZZariXOD7tdOSOl9RLMPC6+daHKS9e68u
283enxhqnDGaAAMAkGBSsOAwIbBQADMAAwLQIVAJGVuFsG/0DBuSZ0jF7ypdU0/G0v
29AhQfeF5BoMMDbX/kidUVpQ6gadPlZA==
30-----END CERTIFICATE REQUEST-----
31-----BEGIN CERTIFICATE-----
32MIIBrjCCAWwCAQswCQYFKw4DAhsFADBTMQswCQYDVQQGEwJBVTETMBEGA1UECBMK
33U29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMQww
34CgYDVQQDEwNQQ0EwHhcNOTcwNjE1MDIxNDI5WhcNOTcwNzE1MDIxNDI5WjBSMQsw
35CQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJu
36ZXQgV2lkZ2l0cyBQdHkgTHRkMQswCQYDVQQDEwJDQTCBkjAJBgUrDgMCDAUAA4GE
37AAKBgBqmWXqKrP1etkWWTYYJVwH4qKHFacfsi4e9IvD1hSslqFwEeZum+3j3iUXi
38ALnDdY8z69cmh9u6yTgahAQSxA0wNpqHibj25SoDKU5UUkkle6KtUn6j7RO04UMh
39MQCX5hllquJc4Pu105I6X1Esw8Lr51ocpL17ry7d6fGGqcMZMAkGBSsOAwIbBQAD
40MQAwLgIVAJ4wtQsANPxHo7Q4IQZYsL12SKdbAhUAjJ9n38zxT+iai2164xS+LIfa
41C1Q=
42-----END CERTIFICATE-----
43
diff --git a/src/lib/libssl/src/certs/dsa-pca.pem b/src/lib/libssl/src/certs/dsa-pca.pem
new file mode 100644
index 0000000000..e3641ad47e
--- /dev/null
+++ b/src/lib/libssl/src/certs/dsa-pca.pem
@@ -0,0 +1,49 @@
1-----BEGIN DSA PRIVATE KEY-----
2Proc-Type: 4,ENCRYPTED
3DEK-Info: DES-EDE3-CBC,F80EEEBEEA7386C4
4
5GZ9zgFcHOlnhPoiSbVi/yXc9mGoj44A6IveD4UlpSEUt6Xbse3Fr0KHIUyQ3oGnS
6mClKoAp/eOTb5Frhto85SzdsxYtac+X1v5XwdzAMy2KowHVk1N8A5jmE2OlkNPNt
7of132MNlo2cyIRYaa35PPYBGNCmUm7YcYS8O90YtkrQZZTf4+2C4kllhMcdkQwkr
8FWSWC8YOQ7w0LHb4cX1FejHHom9Nd/0PN3vn3UyySvfOqoR7nbXkrpHXmPIr0hxX
9RcF0aXcV/CzZ1/nfXWQf4o3+oD0T22SDoVcZY60IzI0oIc3pNCbDV3uKNmgekrFd
10qOUJ+QW8oWp7oefRx62iBfIeC8DZunohMXaWAQCU0sLQOR4yEdeUCnzCSywe0bG1
11diD0KYaEe+Yub1BQH4aLsBgDjardgpJRTQLq0DUvw0/QGO1irKTJzegEDNVBKrVn
12V4AHOKT1CUKqvGNRP1UnccUDTF6miOAtaj/qpzra7sSk7dkGBvIEeFoAg84kfh9h
13hVvF1YyzC9bwZepruoqoUwke/WdNIR5ymOVZ/4Liw0JdIOcq+atbdRX08niqIRkf
14dsZrUj4leo3zdefYUQ7w4N2Ns37yDFq7
15-----END DSA PRIVATE KEY-----
16-----BEGIN CERTIFICATE REQUEST-----
17MIICVTCCAhMCAQAwUzELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUx
18ITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEMMAoGA1UEAxMDUENB
19MIIBtTCCASkGBSsOAwIMMIIBHgKBgQCnP26Fv0FqKX3wn0cZMJCaCR3aajMexT2G
20lrMV4FMuj+BZgnOQPnUxmUd6UvuF5NmmezibaIqEm4fGHrV+hktTW1nPcWUZiG7O
21Zq5riDb77Cjcwtelu+UsOSZL2ppwGJU3lRBWI/YV7boEXt45T/23Qx+1pGVvzYAR
225HCVW1DNSQIVAPcHMe36bAYD1YWKHKycZedQZmVvAoGATd9MA6aRivUZb1BGJZnl
23aG8w42nh5bNdmLsohkj83pkEP1+IDJxzJA0gXbkqmj8YlifkYofBe3RiU/xhJ6h6
24kQmdtvFNnFQPWAbuSXQHzlV+I84W9srcWmEBfslxtU323DQph2j2XiCTs9v15Als
25QReVkusBtXOlan7YMu0OArgDgYUAAoGBAKbtuR5AdW+ICjCFe2ixjUiJJzM2IKwe
266NZEMXg39+HQ1UTPTmfLZLps+rZfolHDXuRKMXbGFdSF0nXYzotPCzi7GauwEJTZ
27yr27ZZjA1C6apGSQ9GzuwNvZ4rCXystVEagAS8OQ4H3D4dWS17Zg31ICb5o4E5r0
28z09o/Uz46u0VoAAwCQYFKw4DAhsFAAMxADAuAhUArRubTxsbIXy3AhtjQ943AbNB
29nSICFQCu+g1iW3jwF+gOcbroD4S/ZcvB3w==
30-----END CERTIFICATE REQUEST-----
31-----BEGIN CERTIFICATE-----
32MIIC0zCCApECAQAwCQYFKw4DAhsFADBTMQswCQYDVQQGEwJBVTETMBEGA1UECBMK
33U29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMQww
34CgYDVQQDEwNQQ0EwHhcNOTcwNjE0MjI1NDQ1WhcNOTcwNzE0MjI1NDQ1WjBTMQsw
35CQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJu
36ZXQgV2lkZ2l0cyBQdHkgTHRkMQwwCgYDVQQDEwNQQ0EwggG1MIIBKQYFKw4DAgww
37ggEeAoGBAKc/boW/QWopffCfRxkwkJoJHdpqMx7FPYaWsxXgUy6P4FmCc5A+dTGZ
38R3pS+4Xk2aZ7OJtoioSbh8YetX6GS1NbWc9xZRmIbs5mrmuINvvsKNzC16W75Sw5
39JkvamnAYlTeVEFYj9hXtugRe3jlP/bdDH7WkZW/NgBHkcJVbUM1JAhUA9wcx7fps
40BgPVhYocrJxl51BmZW8CgYBN30wDppGK9RlvUEYlmeVobzDjaeHls12YuyiGSPze
41mQQ/X4gMnHMkDSBduSqaPxiWJ+Rih8F7dGJT/GEnqHqRCZ228U2cVA9YBu5JdAfO
42VX4jzhb2ytxaYQF+yXG1TfbcNCmHaPZeIJOz2/XkCWxBF5WS6wG1c6Vqftgy7Q4C
43uAOBhQACgYEApu25HkB1b4gKMIV7aLGNSIknMzYgrB7o1kQxeDf34dDVRM9OZ8tk
44umz6tl+iUcNe5EoxdsYV1IXSddjOi08LOLsZq7AQlNnKvbtlmMDULpqkZJD0bO7A
4529nisJfKy1URqABLw5DgfcPh1ZLXtmDfUgJvmjgTmvTPT2j9TPjq7RUwCQYFKw4D
46AhsFAAMxADAuAhUAvtv6AkMolix1Jvy3UnVEIUqdCUICFQC+jq8P49mwrY9oJ24n
475rKUjNBhSg==
48-----END CERTIFICATE-----
49
diff --git a/src/lib/libssl/src/certs/factory.pem b/src/lib/libssl/src/certs/factory.pem
new file mode 100644
index 0000000000..8e28b391b2
--- /dev/null
+++ b/src/lib/libssl/src/certs/factory.pem
@@ -0,0 +1,15 @@
1-----BEGIN CERTIFICATE-----
2MIICTTCCAbagAwIBAgIBADANBgkqhkiG9w0BAQQFADBMMQswCQYDVQQGEwJHQjEM
3MAoGA1UEChMDVUNMMRgwFgYDVQQLEw9JQ0UtVEVMIFByb2plY3QxFTATBgNVBAMT
4DFRydXN0RmFjdG9yeTAeFw05NzA0MjIxNDM5MTRaFw05ODA0MjIxNDM5MTRaMEwx
5CzAJBgNVBAYTAkdCMQwwCgYDVQQKEwNVQ0wxGDAWBgNVBAsTD0lDRS1URUwgUHJv
6amVjdDEVMBMGA1UEAxMMVHJ1c3RGYWN0b3J5MIGcMAoGBFUIAQECAgQAA4GNADCB
7iQKBgQCEieR8NcXkUW1f0G6aC6u0i8q/98JqS6RxK5YmHIGKCkuTWAUjzLfUa4dt
8U9igGCjTuxaDqlzEim+t/02pmiBZT9HaX++35MjQPUWmsChcYU5WyzGErXi+rQaw
9zlwS73zM8qiPj/97lXYycWhgL0VaiDSPxRXEUdWoaGruom4mNQIDAQABo0IwQDAd
10BgNVHQ4EFgQUHal1LZr7oVg5z6lYzrhTgZRCmcUwDgYDVR0PAQH/BAQDAgH2MA8G
11A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAfaggfl6FZoioecjv0dq8
12/DXo/u11iMZvXn08gjX/zl2b4wtPbShOSY5FhkSm8GeySasz+/Nwb/uzfnIhokWi
13lfPZHtlCWtXbIy/TN51eJyq04ceDCQDWvLC2enVg9KB+GJ34b5c5VaPRzq8MBxsA
14S7ELuYGtmYgYm9NZOIr7yU0=
15-----END CERTIFICATE-----
diff --git a/src/lib/libssl/src/certs/nortelCA.pem b/src/lib/libssl/src/certs/nortelCA.pem
new file mode 100644
index 0000000000..207f34ab3a
--- /dev/null
+++ b/src/lib/libssl/src/certs/nortelCA.pem
@@ -0,0 +1,16 @@
1-----BEGIN CERTIFICATE-----
2MIICajCCAdMCBDGA0QUwDQYJKoZIhvcNAQEEBQAwfTELMAkGA1UEBhMCQ2ExDzAN
3BgNVBAcTBk5lcGVhbjEeMBwGA1UECxMVTm8gTGlhYmlsaXR5IEFjY2VwdGVkMR8w
4HQYDVQQKExZGb3IgRGVtbyBQdXJwb3NlcyBPbmx5MRwwGgYDVQQDExNFbnRydXN0
5IERlbW8gV2ViIENBMB4XDTk2MDQyNjEzMzUwMVoXDTA2MDQyNjEzMzUwMVowfTEL
6MAkGA1UEBhMCQ2ExDzANBgNVBAcTBk5lcGVhbjEeMBwGA1UECxMVTm8gTGlhYmls
7aXR5IEFjY2VwdGVkMR8wHQYDVQQKExZGb3IgRGVtbyBQdXJwb3NlcyBPbmx5MRww
8GgYDVQQDExNFbnRydXN0IERlbW8gV2ViIENBMIGdMA0GCSqGSIb3DQEBAQUAA4GL
9ADCBhwKBgQCaroS7O1DA0hm4IefNYU1cx/nqOmzEnk291d1XqznDeF4wEgakbkCc
10zTKxK791yNpXG5RmngqH7cygDRTHZJ6mfCRn0wGC+AI00F2vYTGqPGRQL1N3lZT0
11YDKFC0SQeMMjFIZ1aeQigroFQnHo0VB3zWIMpNkka8PY9lxHZAmWwQIBAzANBgkq
12hkiG9w0BAQQFAAOBgQBAx0UMVA1s54lMQyXjMX5kj99FJN5itb8bK1Rk+cegPQPF
13cWO9SEWyEjjBjIkjjzAwBkaEszFsNGxemxtXvwjIm1xEUMTVlPEWTs2qnDvAUA9W
14YqhWbhH0toGT36236QAsqCZ76rbTRVSSX2BHyJwJMG2tCRv7kRJ//NIgxj3H4w==
15-----END CERTIFICATE-----
16
diff --git a/src/lib/libssl/src/certs/pca-cert.pem b/src/lib/libssl/src/certs/pca-cert.pem
new file mode 100644
index 0000000000..9d754d460d
--- /dev/null
+++ b/src/lib/libssl/src/certs/pca-cert.pem
@@ -0,0 +1,33 @@
1-----BEGIN CERTIFICATE-----
2MIIC5jCCAk+gAwIBAgIBADANBgkqhkiG9w0BAQQFADBcMQswCQYDVQQGEwJBVTET
3MBEGA1UECBMKUXVlZW5zbGFuZDEaMBgGA1UEChMRQ3J5cHRTb2Z0IFB0eSBMdGQx
4HDAaBgNVBAMTE1Rlc3QgUENBICgxMDI0IGJpdCkwHhcNOTkxMjAyMjEzNTQ4WhcN
5MDUwNzExMjEzNTQ4WjBcMQswCQYDVQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFu
6ZDEaMBgGA1UEChMRQ3J5cHRTb2Z0IFB0eSBMdGQxHDAaBgNVBAMTE1Rlc3QgUENB
7ICgxMDI0IGJpdCkwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJ2haT/f5Zwy
8V+MiuSDjSR62adBoSiBB7Usty44lXqsp9RICw+DCCxpsn/CfxPEDXLLd4olsWXc6
9JRcxGynbYmnzk+Z6aIPPJQhK3CTvaqGnWKZsA1m+WaUIUqJCuNTK4N+7hMAGaf6S
10S3e9HVgEQ4a34gXJ7VQFVIBNV1EnZRWHAgMBAAGjgbcwgbQwHQYDVR0OBBYEFE0R
11aEcrj18q1dw+G6nJbsTWR213MIGEBgNVHSMEfTB7gBRNEWhHK49fKtXcPhupyW7E
121kdtd6FgpF4wXDELMAkGA1UEBhMCQVUxEzARBgNVBAgTClF1ZWVuc2xhbmQxGjAY
13BgNVBAoTEUNyeXB0U29mdCBQdHkgTHRkMRwwGgYDVQQDExNUZXN0IFBDQSAoMTAy
14NCBiaXQpggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAUa8B3pho
15+Mvxeq9HsEzJxHIFQla05S5J/e/V+DQTYoKiRFchKPrDAdrzYSEvP3h4QJEtsNqQ
16JfOxg5M42uLFq7aPGWkF6ZZqZsYS+zA9IVT14g7gNA6Ne+5QtJqQtH9HA24st0T0
17Tga/lZ9M2ovImovaxSL/kRHbpCWcqWVxpOw=
18-----END CERTIFICATE-----
19-----BEGIN RSA PRIVATE KEY-----
20MIICXAIBAAKBgQCdoWk/3+WcMlfjIrkg40ketmnQaEogQe1LLcuOJV6rKfUSAsPg
21wgsabJ/wn8TxA1yy3eKJbFl3OiUXMRsp22Jp85PmemiDzyUIStwk72qhp1imbANZ
22vlmlCFKiQrjUyuDfu4TABmn+kkt3vR1YBEOGt+IFye1UBVSATVdRJ2UVhwIDAQAB
23AoGAba4fTtuap5l7/8ZsbE7Z1O32KJY4ZcOZukLOLUUhXxXduT+FTgGWujc0/rgc
24z9qYCLlNZHOouMYTgtSfYvuMuLZ11VIt0GYH+nRioLShE59Yy+zCRyC+gPigS1kz
25xvo14AsOIPYV14Tk/SsHyq6E0eTk7VzaIE197giiINUERPECQQDSKmtPTh/lRKw7
26HSZSM0I1mFWn/1zqrAbontRQY5w98QWIOe5qmzYyFbPXYT3d9BzlsMyhgiRNoBbD
27yvohSHXJAkEAwAHx6ezAZeWWzD5yXD36nyjpkVCw7Tk7TSmOceLJMWt1QcrCfqlS
28xA5jjpQ6Z8suU5DdtWAryM2sAir1WisYzwJAd6Zcx56jvAQ3xcPXsE6scBTVFzrj
297FqZ6E+cclPzfLQ+QQsyOBE7bpI6e/FJppY26XGZXo3YGzV8IGXrt40oOQJALETG
30h86EFXo3qGOFbmsDy4pdP5nBERCu8X1xUCSfintiD4c2DInxgS5oGclnJeMcjTvL
31QjQoJCX3UJCi/OUO1QJBAKgcDHWjMvt+l1pjJBsSEZ0HX9AAIIVx0RQmbFGS+F2Q
32hhu5l77WnnZOQ9vvhV5u7NPCUF9nhU3jh60qWWO8mkc=
33-----END RSA PRIVATE KEY-----
diff --git a/src/lib/libssl/src/certs/rsa-cca.pem b/src/lib/libssl/src/certs/rsa-cca.pem
new file mode 100644
index 0000000000..69f5c1c84c
--- /dev/null
+++ b/src/lib/libssl/src/certs/rsa-cca.pem
@@ -0,0 +1,19 @@
1subject=/C=US/O=RSA Data Security, Inc./OU=Commercial Certification Authority
2issuer= /C=US/O=RSA Data Security, Inc./OU=Commercial Certification Authority
3notBefore=941104185834Z
4notAfter =991103185834Z
5-----BEGIN X509 CERTIFICATE-----
6
7MIICIzCCAZACBQJBAAAWMA0GCSqGSIb3DQEBAgUAMFwxCzAJBgNVBAYTAlVTMSAw
8HgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjErMCkGA1UECxMiQ29tbWVy
9Y2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05NDExMDQxODU4MzRaFw05
10OTExMDMxODU4MzRaMFwxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBT
11ZWN1cml0eSwgSW5jLjErMCkGA1UECxMiQ29tbWVyY2lhbCBDZXJ0aWZpY2F0aW9u
12IEF1dGhvcml0eTCBmzANBgkqhkiG9w0BAQEFAAOBiQAwgYUCfgCk+4Fie84QJ93o
13975sbsZwmdu41QUDaSiCnHJ/lj+O7Kwpkj+KFPhCdr69XQO5kNTQvAayUTNfxMK/
14touPmbZiImDd298ggrTKoi8tUO2UMt7gVY3UaOLgTNLNBRYulWZcYVI4HlGogqHE
157yXpCuaLK44xZtn42f29O2nZ6wIDAQABMA0GCSqGSIb3DQEBAgUAA34AdrW2EP4j
169/dZYkuwX5zBaLxJu7NJbyFHXSudVMQAKD+YufKKg5tgf+tQx6sFEC097TgCwaVI
170v5loMC86qYjFmZsGySp8+x5NRhPJsjjr1BKx6cxa9B8GJ1Qv6km+iYrRpwUqbtb
18MJhCKLVLU7tDCZJAuqiqWqTGtotXTcU=
19-----END X509 CERTIFICATE-----
diff --git a/src/lib/libssl/src/certs/timCA.pem b/src/lib/libssl/src/certs/timCA.pem
new file mode 100644
index 0000000000..9c8d5bf9c6
--- /dev/null
+++ b/src/lib/libssl/src/certs/timCA.pem
@@ -0,0 +1,16 @@
1Tims test GCI CA
2
3-----BEGIN CERTIFICATE-----
4MIIB8DCCAZoCAQAwDQYJKoZIhvcNAQEEBQAwgYIxCzAJBgNVBAYTAkFVMRMwEQYD
5VQQIEwpRdWVlbnNsYW5kMREwDwYDVQQHEwhCcmlzYmFuZTEaMBgGA1UEChMRQ3J5
6cHRTb2Z0IFB0eSBMdGQxFDASBgNVBAsTC2RldmVsb3BtZW50MRkwFwYDVQQDExBD
7cnlwdFNvZnQgRGV2IENBMB4XDTk3MDMyMjEzMzQwNFoXDTk4MDMyMjEzMzQwNFow
8gYIxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQHEwhC
9cmlzYmFuZTEaMBgGA1UEChMRQ3J5cHRTb2Z0IFB0eSBMdGQxFDASBgNVBAsTC2Rl
10dmVsb3BtZW50MRkwFwYDVQQDExBDcnlwdFNvZnQgRGV2IENBMFwwDQYJKoZIhvcN
11AQEBBQADSwAwSAJBAOAOAqogG5QwAmLhzyO4CoRnx/wVy4NZP4dxJy83O1EnL0rw
12OdsamJKvPOLHgSXo3gDu9uVyvCf/QJmZAmC5ml8CAwEAATANBgkqhkiG9w0BAQQF
13AANBADRRS/GVdd7rAqRW6SdmgLJduOU2yq3avBu99kRqbp9A/dLu6r6jU+eP4oOA
14TfdbFZtAAD2Hx9jUtY3tfdrJOb8=
15-----END CERTIFICATE-----
16
diff --git a/src/lib/libssl/src/certs/tjhCA.pem b/src/lib/libssl/src/certs/tjhCA.pem
new file mode 100644
index 0000000000..67bee1b200
--- /dev/null
+++ b/src/lib/libssl/src/certs/tjhCA.pem
@@ -0,0 +1,15 @@
1-----BEGIN CERTIFICATE-----
2MIICVjCCAgACAQAwDQYJKoZIhvcNAQEEBQAwgbUxCzAJBgNVBAYTAkFVMRMwEQYD
3VQQIEwpRdWVlbnNsYW5kMREwDwYDVQQHEwhCcmlzYmFuZTEaMBgGA1UEChMRQ3J5
4cHRTb2Z0IFB0eSBMdGQxLDAqBgNVBAsTI1dPUlRITEVTUyBDRVJUSUZJQ0FUSU9O
5IEFVVEhPUklUSUVTMTQwMgYDVQQDEytaRVJPIFZBTFVFIENBIC0gREVNT05TVFJB
6VElPTiBQVVJQT1NFUyBPTkxZMB4XDTk3MDQwMzEzMjI1NFoXDTk4MDQwMzEzMjI1
7NFowgbUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpRdWVlbnNsYW5kMREwDwYDVQQH
8EwhCcmlzYmFuZTEaMBgGA1UEChMRQ3J5cHRTb2Z0IFB0eSBMdGQxLDAqBgNVBAsT
9I1dPUlRITEVTUyBDRVJUSUZJQ0FUSU9OIEFVVEhPUklUSUVTMTQwMgYDVQQDEyta
10RVJPIFZBTFVFIENBIC0gREVNT05TVFJBVElPTiBQVVJQT1NFUyBPTkxZMFwwDQYJ
11KoZIhvcNAQEBBQADSwAwSAJBAOZ7T7yqP/tyspcko3yPY1y0Cm2EmwNvzW4QgVXR
12Fjs3HmJ4xtSpXdo6mwcGezL3Abt/aQXaxv9PU8xt+Jr0OFUCAwEAATANBgkqhkiG
139w0BAQQFAANBAOQpYmGgyCqCy1OljgJhCqQOu627oVlHzK1L+t9vBaMfn40AVUR4
14WzQVWO31KTgi5vTK1U+3h46fgUWqQ0h+6rU=
15-----END CERTIFICATE-----
diff --git a/src/lib/libssl/src/certs/vsign2.pem b/src/lib/libssl/src/certs/vsign2.pem
new file mode 100644
index 0000000000..d8bdd8c812
--- /dev/null
+++ b/src/lib/libssl/src/certs/vsign2.pem
@@ -0,0 +1,18 @@
1subject=/C=US/O=VeriSign, Inc./OU=Class 2 Public Primary Certification Authority
2notBefore=Jan 29 00:00:00 1996 GMT
3notAfter=Jan 7 23:59:59 2004 GMT
4-----BEGIN CERTIFICATE-----
5MIICPTCCAaYCEQC6WslMBTuS1qe2307QU5INMA0GCSqGSIb3DQEBAgUAMF8xCzAJ
6BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xh
7c3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05
8NjAxMjkwMDAwMDBaFw0wNDAxMDcyMzU5NTlaMF8xCzAJBgNVBAYTAlVTMRcwFQYD
9VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMiBQdWJsaWMgUHJp
10bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOB
11jQAwgYkCgYEAtlqLow1qI4OAa885h/QhEzMGTCWi7VUSl8WngLn6g8EgoPovFQ18
12oWBrfnks+gYPOq72G2+x0v8vKFJfg31LxHq3+GYfgFT8t8KOWUoUV0bRmpO+QZED
13uxWAk1zr58wIbD8+s0r8/0tsI9VQgiZEGY4jw3HqGSRHBJ51v8imAB8CAwEAATAN
14BgkqhkiG9w0BAQIFAAOBgQC2AB+TV6QHp0DOZUA/VV7t7/pUSaUw1iF8YYfug5ML
15v7Qz8pisnwa/TqjOFIFMywROWMPPX+5815pvy0GKt3+BuP+EYcYnQ2UdDOyxAArd
16G6S7x3ggKLKi3TaVLuFUT79guXdoEZkj6OpS6KoATmdOu5C1RZtG644W78QzWzM9
171Q==
18-----END CERTIFICATE-----
diff --git a/src/lib/libssl/src/certs/vsigntca.pem b/src/lib/libssl/src/certs/vsigntca.pem
new file mode 100644
index 0000000000..05acf76e66
--- /dev/null
+++ b/src/lib/libssl/src/certs/vsigntca.pem
@@ -0,0 +1,18 @@
1subject=/O=VeriSign, Inc/OU=www.verisign.com/repository/TestCPS Incorp. By Ref. Liab. LTD./OU=For VeriSign authorized testing only. No assurances (C)VS1997
2notBefore=Mar 4 00:00:00 1997 GMT
3notAfter=Mar 4 23:59:59 2025 GMT
4-----BEGIN CERTIFICATE-----
5MIICTTCCAfcCEEdoCqpuXxnoK27q7d58Qc4wDQYJKoZIhvcNAQEEBQAwgakxFjAU
6BgNVBAoTDVZlcmlTaWduLCBJbmMxRzBFBgNVBAsTPnd3dy52ZXJpc2lnbi5jb20v
7cmVwb3NpdG9yeS9UZXN0Q1BTIEluY29ycC4gQnkgUmVmLiBMaWFiLiBMVEQuMUYw
8RAYDVQQLEz1Gb3IgVmVyaVNpZ24gYXV0aG9yaXplZCB0ZXN0aW5nIG9ubHkuIE5v
9IGFzc3VyYW5jZXMgKEMpVlMxOTk3MB4XDTk3MDMwNDAwMDAwMFoXDTI1MDMwNDIz
10NTk1OVowgakxFjAUBgNVBAoTDVZlcmlTaWduLCBJbmMxRzBFBgNVBAsTPnd3dy52
11ZXJpc2lnbi5jb20vcmVwb3NpdG9yeS9UZXN0Q1BTIEluY29ycC4gQnkgUmVmLiBM
12aWFiLiBMVEQuMUYwRAYDVQQLEz1Gb3IgVmVyaVNpZ24gYXV0aG9yaXplZCB0ZXN0
13aW5nIG9ubHkuIE5vIGFzc3VyYW5jZXMgKEMpVlMxOTk3MFwwDQYJKoZIhvcNAQEB
14BQADSwAwSAJBAMak6xImJx44jMKcbkACy5/CyMA2fqXK4PlzTtCxRq5tFkDzne7s
15cI8oFK/J+gFZNE3bjidDxf07O3JOYG9RGx8CAwEAATANBgkqhkiG9w0BAQQFAANB
16ADT523tENOKrEheZFpsJx1UUjPrG7TwYc/C4NBHrZI4gZJcKVFIfNulftVS6UMYW
17ToLEMaUojc3DuNXHG21PDG8=
18-----END CERTIFICATE-----
diff --git a/src/lib/libssl/src/config b/src/lib/libssl/src/config
index c2f504f59e..0715d378d9 100644
--- a/src/lib/libssl/src/config
+++ b/src/lib/libssl/src/config
@@ -54,22 +54,6 @@ SYSTEM=`(uname -s) 2>/dev/null` || SYSTEM="unknown"
54VERSION=`(uname -v) 2>/dev/null` || VERSION="unknown" 54VERSION=`(uname -v) 2>/dev/null` || VERSION="unknown"
55 55
56 56
57
58
59
60# Check for VC++ presence first.
61#
62#if [ "x$MSVCDIR" != "x" -o "x$VCINSTALLDIR" != "x" ]; then
63# perl Configure VC-WIN32 $*
64# cmd /c ms\\do_masm.bat
65# perl util/mk1mf.pl VC-WIN32-GMAKE >mak.tmp
66# rm Makefile
67# mv mak.tmp Makefile
68# echo "Configured for VC++ using GNU make"
69# exit 0
70#fi
71#
72
73# 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.
74# 58#
75# We need to work around FreeBSD 1.1.5.1 59# We need to work around FreeBSD 1.1.5.1
@@ -355,10 +339,6 @@ case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in
355 339
356 MINGW*) 340 MINGW*)
357 echo "${MACHINE}-whatever-mingw"; echo 0; 341 echo "${MACHINE}-whatever-mingw"; echo 0;
358 # Save fipslib path so VC++ build can find it
359 (cd /usr/local/ssl/lib ; pwd -W ) > util/fipslib_path.txt
360 # Extract _chkstk.o so VC++ can use it, to avoid __alloca link error
361 (cd ms ; ar x `gcc -print-libgcc-file-name` _chkstk.o)
362 ;; 342 ;;
363 CYGWIN*) 343 CYGWIN*)
364 case "$RELEASE" in 344 case "$RELEASE" in
@@ -427,7 +407,7 @@ if [ "$GCCVER" != "" ]; then
427 CC=gcc 407 CC=gcc
428 # then strip off whatever prefix egcs prepends the number with... 408 # then strip off whatever prefix egcs prepends the number with...
429 # Hopefully, this will work for any future prefixes as well. 409 # Hopefully, this will work for any future prefixes as well.
430 GCCVER=`echo $GCCVER | LC_ALL=C sed 's/^[a-zA-Z]*\-//'` 410 GCCVER=`echo $GCCVER | sed 's/^[a-zA-Z]*\-//'`
431 # Since gcc 3.1 gcc --version behaviour has changed. gcc -dumpversion 411 # Since gcc 3.1 gcc --version behaviour has changed. gcc -dumpversion
432 # does give us what we want though, so we use that. We just just the 412 # does give us what we want though, so we use that. We just just the
433 # major and minor version numbers. 413 # major and minor version numbers.
diff --git a/src/lib/libssl/src/crypto/Makefile b/src/lib/libssl/src/crypto/Makefile.ssl
index cda9de0ac9..b9951a4600 100644
--- a/src/lib/libssl/src/crypto/Makefile
+++ b/src/lib/libssl/src/crypto/Makefile.ssl
@@ -1,5 +1,5 @@
1# 1#
2# OpenSSL/crypto/Makefile 2# SSLeay/crypto/Makefile
3# 3#
4 4
5DIR= crypto 5DIR= crypto
@@ -11,9 +11,10 @@ CFLAG= -g
11INSTALL_PREFIX= 11INSTALL_PREFIX=
12OPENSSLDIR= /usr/local/ssl 12OPENSSLDIR= /usr/local/ssl
13INSTALLTOP= /usr/local/ssl 13INSTALLTOP= /usr/local/ssl
14MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend 15MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) 16MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile 17MAKEFILE= Makefile.ssl
17RM= rm -f 18RM= rm -f
18AR= ar r 19AR= ar r
19 20
@@ -35,14 +36,14 @@ GENERAL=Makefile README crypto-lib.com install.com
35 36
36LIB= $(TOP)/libcrypto.a 37LIB= $(TOP)/libcrypto.a
37SHARED_LIB= libcrypto$(SHLIB_EXT) 38SHARED_LIB= libcrypto$(SHLIB_EXT)
38LIBSRC= cryptlib.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 39LIBSRC= cryptlib.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
39LIBOBJ= cryptlib.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 40LIBOBJ= cryptlib.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
40 41
41SRC= $(LIBSRC) 42SRC= $(LIBSRC)
42 43
43EXHEADER= crypto.h tmdiff.h opensslv.h opensslconf.h ebcdic.h symhacks.h \ 44EXHEADER= crypto.h tmdiff.h opensslv.h opensslconf.h ebcdic.h symhacks.h \
44 ossl_typ.h 45 ossl_typ.h
45HEADER= cryptlib.h buildinf.h md32_common.h o_time.h o_str.h $(EXHEADER) 46HEADER= cryptlib.h buildinf.h md32_common.h o_time.h $(EXHEADER)
46 47
47ALL= $(GENERAL) $(SRC) $(HEADER) 48ALL= $(GENERAL) $(SRC) $(HEADER)
48 49
@@ -51,9 +52,9 @@ top:
51 52
52all: shared 53all: shared
53 54
54buildinf.h: ../Makefile 55buildinf.h: ../Makefile.ssl
55 ( echo "#ifndef MK1MF_BUILD"; \ 56 ( echo "#ifndef MK1MF_BUILD"; \
56 echo ' /* auto-generated by crypto/Makefile for crypto/cversion.c */'; \ 57 echo ' /* auto-generated by crypto/Makefile.ssl for crypto/cversion.c */'; \
57 echo ' #define CFLAGS "$(CC) $(CFLAG)"'; \ 58 echo ' #define CFLAGS "$(CC) $(CFLAG)"'; \
58 echo ' #define PLATFORM "$(PLATFORM)"'; \ 59 echo ' #define PLATFORM "$(PLATFORM)"'; \
59 echo " #define DATE \"`LC_ALL=C LC_TIME=C date`\""; \ 60 echo " #define DATE \"`LC_ALL=C LC_TIME=C date`\""; \
@@ -72,7 +73,7 @@ subdirs:
72 done; 73 done;
73 74
74files: 75files:
75 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 76 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
76 @for i in $(SDIRS) ;\ 77 @for i in $(SDIRS) ;\
77 do \ 78 do \
78 (cd $$i && echo "making 'files' in crypto/$$i..." && \ 79 (cd $$i && echo "making 'files' in crypto/$$i..." && \
@@ -80,9 +81,11 @@ files:
80 done; 81 done;
81 82
82links: 83links:
84 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
83 @$(PERL) $(TOP)/util/mklink.pl ../include/openssl $(EXHEADER) 85 @$(PERL) $(TOP)/util/mklink.pl ../include/openssl $(EXHEADER)
84 @$(PERL) $(TOP)/util/mklink.pl ../test $(TEST) 86 @$(PERL) $(TOP)/util/mklink.pl ../test $(TEST)
85 @$(PERL) $(TOP)/util/mklink.pl ../apps $(APPS) 87 @$(PERL) $(TOP)/util/mklink.pl ../apps $(APPS)
88 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
86 @for i in $(SDIRS); do \ 89 @for i in $(SDIRS); do \
87 (cd $$i && echo "making links in crypto/$$i..." && \ 90 (cd $$i && echo "making links in crypto/$$i..." && \
88 $(MAKE) CC='$(CC)' INCLUDES='${INCLUDES}' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' AR='${AR}' PERL='${PERL}' links ); \ 91 $(MAKE) CC='$(CC)' INCLUDES='${INCLUDES}' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' AR='${AR}' PERL='${PERL}' links ); \
@@ -94,8 +97,7 @@ lib: $(LIBOBJ)
94 @touch lib 97 @touch lib
95 98
96shared: buildinf.h lib subdirs 99shared: buildinf.h lib subdirs
97 @if [ -n "$(SHARED_LIBS)" ]; then \ 100 if [ -n "$(SHARED_LIBS)" ]; then \
98 egrep 'define OPENSSL_FIPS' $(TOP)/include/openssl/opensslconf.h > /dev/null || \
99 (cd ..; $(MAKE) $(SHARED_LIB)); \ 101 (cd ..; $(MAKE) $(SHARED_LIB)); \
100 fi 102 fi
101 103
@@ -114,7 +116,7 @@ tests:
114 done; 116 done;
115 117
116install: 118install:
117 @headerlist="$(EXHEADER)"; for i in $$headerlist ;\ 119 @for i in $(EXHEADER) ;\
118 do \ 120 do \
119 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ 121 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
120 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ 122 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
@@ -201,8 +203,6 @@ mem_dbg.o: ../include/openssl/err.h ../include/openssl/lhash.h
201mem_dbg.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 203mem_dbg.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
202mem_dbg.o: ../include/openssl/safestack.h ../include/openssl/stack.h 204mem_dbg.o: ../include/openssl/safestack.h ../include/openssl/stack.h
203mem_dbg.o: ../include/openssl/symhacks.h cryptlib.h mem_dbg.c 205mem_dbg.o: ../include/openssl/symhacks.h cryptlib.h mem_dbg.c
204o_str.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/opensslconf.h
205o_str.o: o_str.c o_str.h
206o_time.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h o_time.c 206o_time.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h o_time.c
207o_time.o: o_time.h 207o_time.o: o_time.h
208tmdiff.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h 208tmdiff.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h
diff --git a/src/lib/libssl/src/crypto/acss/acss.h b/src/lib/libssl/src/crypto/acss/acss.h
new file mode 100644
index 0000000000..c2d3550796
--- /dev/null
+++ b/src/lib/libssl/src/crypto/acss/acss.h
@@ -0,0 +1,47 @@
1/* $OpenBSD: acss.h,v 1.4 2005/04/25 13:20:52 miod Exp $ */
2/*
3 * Copyright (c) 2004 The OpenBSD project
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#ifndef _ACSS_H_
19#define _ACSS_H_
20
21#ifdef OPENSSL_NO_ACSS
22#error acss is disabled.
23#endif
24
25/* 40bit key */
26#define ACSS_KEYSIZE 5
27
28/* modes of acss */
29#define ACSS_MODE0 0
30#define ACSS_MODE1 1
31#define ACSS_MODE2 2
32#define ACSS_MODE3 3
33
34typedef struct acss_key_st {
35 unsigned int lfsr17; /* current state of lfsrs */
36 unsigned int lfsr25;
37 unsigned int lfsrsum;
38 unsigned char seed[ACSS_KEYSIZE];
39 unsigned char data[ACSS_KEYSIZE];
40 int encrypt;
41 int mode;
42} ACSS_KEY;
43
44void acss_setkey(ACSS_KEY *, const unsigned char *, int, int);
45void acss(ACSS_KEY *, unsigned long, const unsigned char *, unsigned char *);
46
47#endif /* ifndef _ACSS_H_ */
diff --git a/src/lib/libssl/src/crypto/acss/acss_enc.c b/src/lib/libssl/src/crypto/acss/acss_enc.c
new file mode 100644
index 0000000000..829830bc54
--- /dev/null
+++ b/src/lib/libssl/src/crypto/acss/acss_enc.c
@@ -0,0 +1,177 @@
1/* $OpenBSD: acss_enc.c,v 1.4 2004/02/13 10:05:44 hshoexer Exp $ */
2/*
3 * Copyright (c) 2004 The OpenBSD project
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#include <openssl/acss.h>
19
20/* decryption sbox */
21static unsigned char sboxdec[] = {
22 0x33, 0x73, 0x3b, 0x26, 0x63, 0x23, 0x6b, 0x76,
23 0x3e, 0x7e, 0x36, 0x2b, 0x6e, 0x2e, 0x66, 0x7b,
24 0xd3, 0x93, 0xdb, 0x06, 0x43, 0x03, 0x4b, 0x96,
25 0xde, 0x9e, 0xd6, 0x0b, 0x4e, 0x0e, 0x46, 0x9b,
26 0x57, 0x17, 0x5f, 0x82, 0xc7, 0x87, 0xcf, 0x12,
27 0x5a, 0x1a, 0x52, 0x8f, 0xca, 0x8a, 0xc2, 0x1f,
28 0xd9, 0x99, 0xd1, 0x00, 0x49, 0x09, 0x41, 0x90,
29 0xd8, 0x98, 0xd0, 0x01, 0x48, 0x08, 0x40, 0x91,
30 0x3d, 0x7d, 0x35, 0x24, 0x6d, 0x2d, 0x65, 0x74,
31 0x3c, 0x7c, 0x34, 0x25, 0x6c, 0x2c, 0x64, 0x75,
32 0xdd, 0x9d, 0xd5, 0x04, 0x4d, 0x0d, 0x45, 0x94,
33 0xdc, 0x9c, 0xd4, 0x05, 0x4c, 0x0c, 0x44, 0x95,
34 0x59, 0x19, 0x51, 0x80, 0xc9, 0x89, 0xc1, 0x10,
35 0x58, 0x18, 0x50, 0x81, 0xc8, 0x88, 0xc0, 0x11,
36 0xd7, 0x97, 0xdf, 0x02, 0x47, 0x07, 0x4f, 0x92,
37 0xda, 0x9a, 0xd2, 0x0f, 0x4a, 0x0a, 0x42, 0x9f,
38 0x53, 0x13, 0x5b, 0x86, 0xc3, 0x83, 0xcb, 0x16,
39 0x5e, 0x1e, 0x56, 0x8b, 0xce, 0x8e, 0xc6, 0x1b,
40 0xb3, 0xf3, 0xbb, 0xa6, 0xe3, 0xa3, 0xeb, 0xf6,
41 0xbe, 0xfe, 0xb6, 0xab, 0xee, 0xae, 0xe6, 0xfb,
42 0x37, 0x77, 0x3f, 0x22, 0x67, 0x27, 0x6f, 0x72,
43 0x3a, 0x7a, 0x32, 0x2f, 0x6a, 0x2a, 0x62, 0x7f,
44 0xb9, 0xf9, 0xb1, 0xa0, 0xe9, 0xa9, 0xe1, 0xf0,
45 0xb8, 0xf8, 0xb0, 0xa1, 0xe8, 0xa8, 0xe0, 0xf1,
46 0x5d, 0x1d, 0x55, 0x84, 0xcd, 0x8d, 0xc5, 0x14,
47 0x5c, 0x1c, 0x54, 0x85, 0xcc, 0x8c, 0xc4, 0x15,
48 0xbd, 0xfd, 0xb5, 0xa4, 0xed, 0xad, 0xe5, 0xf4,
49 0xbc, 0xfc, 0xb4, 0xa5, 0xec, 0xac, 0xe4, 0xf5,
50 0x39, 0x79, 0x31, 0x20, 0x69, 0x29, 0x61, 0x70,
51 0x38, 0x78, 0x30, 0x21, 0x68, 0x28, 0x60, 0x71,
52 0xb7, 0xf7, 0xbf, 0xa2, 0xe7, 0xa7, 0xef, 0xf2,
53 0xba, 0xfa, 0xb2, 0xaf, 0xea, 0xaa, 0xe2, 0xff
54};
55
56/* encryption sbox */
57static unsigned char sboxenc[] = {
58 0x33, 0x3b, 0x73, 0x15, 0x53, 0x5b, 0x13, 0x75,
59 0x3d, 0x35, 0x7d, 0x1b, 0x5d, 0x55, 0x1d, 0x7b,
60 0x67, 0x6f, 0x27, 0x81, 0xc7, 0xcf, 0x87, 0x21,
61 0x69, 0x61, 0x29, 0x8f, 0xc9, 0xc1, 0x89, 0x2f,
62 0xe3, 0xeb, 0xa3, 0x05, 0x43, 0x4b, 0x03, 0xa5,
63 0xed, 0xe5, 0xad, 0x0b, 0x4d, 0x45, 0x0d, 0xab,
64 0xea, 0xe2, 0xaa, 0x00, 0x4a, 0x42, 0x0a, 0xa0,
65 0xe8, 0xe0, 0xa8, 0x02, 0x48, 0x40, 0x08, 0xa2,
66 0x3e, 0x36, 0x7e, 0x14, 0x5e, 0x56, 0x1e, 0x74,
67 0x3c, 0x34, 0x7c, 0x16, 0x5c, 0x54, 0x1c, 0x76,
68 0x6a, 0x62, 0x2a, 0x80, 0xca, 0xc2, 0x8a, 0x20,
69 0x68, 0x60, 0x28, 0x82, 0xc8, 0xc0, 0x88, 0x22,
70 0xee, 0xe6, 0xae, 0x04, 0x4e, 0x46, 0x0e, 0xa4,
71 0xec, 0xe4, 0xac, 0x06, 0x4c, 0x44, 0x0c, 0xa6,
72 0xe7, 0xef, 0xa7, 0x01, 0x47, 0x4f, 0x07, 0xa1,
73 0xe9, 0xe1, 0xa9, 0x0f, 0x49, 0x41, 0x09, 0xaf,
74 0x63, 0x6b, 0x23, 0x85, 0xc3, 0xcb, 0x83, 0x25,
75 0x6d, 0x65, 0x2d, 0x8b, 0xcd, 0xc5, 0x8d, 0x2b,
76 0x37, 0x3f, 0x77, 0x11, 0x57, 0x5f, 0x17, 0x71,
77 0x39, 0x31, 0x79, 0x1f, 0x59, 0x51, 0x19, 0x7f,
78 0xb3, 0xbb, 0xf3, 0x95, 0xd3, 0xdb, 0x93, 0xf5,
79 0xbd, 0xb5, 0xfd, 0x9b, 0xdd, 0xd5, 0x9d, 0xfb,
80 0xba, 0xb2, 0xfa, 0x90, 0xda, 0xd2, 0x9a, 0xf0,
81 0xb8, 0xb0, 0xf8, 0x92, 0xd8, 0xd0, 0x98, 0xf2,
82 0x6e, 0x66, 0x2e, 0x84, 0xce, 0xc6, 0x8e, 0x24,
83 0x6c, 0x64, 0x2c, 0x86, 0xcc, 0xc4, 0x8c, 0x26,
84 0x3a, 0x32, 0x7a, 0x10, 0x5a, 0x52, 0x1a, 0x70,
85 0x38, 0x30, 0x78, 0x12, 0x58, 0x50, 0x18, 0x72,
86 0xbe, 0xb6, 0xfe, 0x94, 0xde, 0xd6, 0x9e, 0xf4,
87 0xbc, 0xb4, 0xfc, 0x96, 0xdc, 0xd4, 0x9c, 0xf6,
88 0xb7, 0xbf, 0xf7, 0x91, 0xd7, 0xdf, 0x97, 0xf1,
89 0xb9, 0xb1, 0xf9, 0x9f, 0xd9, 0xd1, 0x99, 0xff
90};
91
92/*
93 * Two linear feedback shift registers are used:
94 *
95 * lfsr17: polynomial of degree 17, primitive modulo 2 (listed in Schneier)
96 * x^15 + x + 1
97 * lfsr25: polynomial of degree 25, not know if primitive modulo 2
98 * x^13 + x^5 + x^4 + x + 1
99 *
100 * Output bits are discarded, instead the feedback bits are added to produce
101 * the cipher stream. Depending on the mode, feedback bytes may be inverted
102 * bit-wise before addition.
103 *
104 * The lfsrs are seeded with bytes from the raw key:
105 *
106 * lfsr17: byte 0[0:7] at bit 9
107 * byte 1[0:7] at bit 0
108 *
109 * lfsr25: byte 2[0:4] at bit 16
110 * byte 2[5:7] at bit 22
111 * byte 3[0:7] at bit 8
112 * byte 4[0:7] at bit 0
113 *
114 * To prevent 0 cycles, 1's are inject at bit 8 in lfrs17 and bit 21 in
115 * lfsr25.
116 *
117 */
118
119void
120acss(ACSS_KEY *key, unsigned long len, const unsigned char *in,
121 unsigned char *out)
122{
123 unsigned long i;
124 unsigned long lfsr17tmp, lfsr25tmp, lfsrsumtmp;
125
126 lfsrsumtmp = lfsr17tmp = lfsr25tmp = 0;
127
128 /* keystream is sum of lfsrs */
129 for (i = 0; i < len; i++) {
130 lfsr17tmp = key->lfsr17 ^ (key->lfsr17 >> 14);
131 key->lfsr17 = (key->lfsr17 >> 8)
132 ^ (lfsr17tmp << 9)
133 ^ (lfsr17tmp << 12)
134 ^ (lfsr17tmp << 15);
135 key->lfsr17 &= 0x1ffff; /* 17 bit LFSR */
136
137 lfsr25tmp = key->lfsr25
138 ^ (key->lfsr25 >> 3)
139 ^ (key->lfsr25 >> 4)
140 ^ (key->lfsr25 >> 12);
141 key->lfsr25 = (key->lfsr25 >> 8) ^ (lfsr25tmp << 17);
142 key->lfsr25 &= 0x1ffffff; /* 25 bit LFSR */
143
144 lfsrsumtmp = key->lfsrsum;
145
146 /* addition */
147 switch (key->mode) {
148 case ACSS_MODE3:
149 key->lfsrsum = 0xff & ~(key->lfsr17 >> 9);
150 key->lfsrsum += 0xff & ~(key->lfsr25 >> 17);
151 break;
152 case ACSS_MODE2:
153 key->lfsrsum = key->lfsr17 >> 9;
154 key->lfsrsum += 0xff & ~(key->lfsr25 >> 17);
155 break;
156 case ACSS_MODE1:
157 key->lfsrsum = 0xff & ~(key->lfsr17 >> 9);
158 key->lfsrsum += key->lfsr25 >> 17;
159 break;
160 case ACSS_MODE0:
161 default:
162 key->lfsrsum = key->lfsr17 >> 9;
163 key->lfsrsum += key->lfsr25 >> 17;
164 break;
165 }
166 key->lfsrsum += (lfsrsumtmp >> 8);
167
168 if (in == (unsigned char *)0)
169 /* generate only a keystream */
170 out[i] = key->lfsrsum & 0xff;
171 else if (key->encrypt) {
172 out[i] = sboxenc[(in[i] ^ key->lfsrsum) & 0xff];
173 } else {
174 out[i] = (sboxdec[in[i]] ^ key->lfsrsum) & 0xff;
175 }
176 }
177}
diff --git a/src/lib/libssl/src/crypto/acss/acss_skey.c b/src/lib/libssl/src/crypto/acss/acss_skey.c
new file mode 100644
index 0000000000..08e5685fcf
--- /dev/null
+++ b/src/lib/libssl/src/crypto/acss/acss_skey.c
@@ -0,0 +1,86 @@
1/* $OpenBSD: acss_skey.c,v 1.2 2004/01/23 19:23:33 hshoexer Exp $ */
2/*
3 * Copyright (c) 2004 The OpenBSD project
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#include <openssl/acss.h>
19
20static unsigned char reverse[] = {
21 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
22 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
23 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
24 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
25 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
26 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
27 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
28 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
29 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
30 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
31 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
32 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
33 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
34 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
35 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
36 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
37 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
38 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
39 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
40 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
41 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
42 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
43 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
44 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
45 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
46 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
47 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
48 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
49 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
50 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
51 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
52 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
53};
54
55static void
56acss_seed(ACSS_KEY *key)
57{
58 int i;
59
60 for (i = 0; i < ACSS_KEYSIZE; i++)
61 key->seed[i] = reverse[key->data[i]];
62
63 /* seed lfsrs */
64 key->lfsr17 = key->seed[1]
65 | (key->seed[0] << 9)
66 | (1 << 8); /* inject 1 at bit 9 */
67 key->lfsr25 = key->seed[4]
68 | (key->seed[3] << 8)
69 | ((key->seed[2] & 0x1f) << 16)
70 | ((key->seed[2] & 0xe0) << 17)
71 | (1 << 21); /* inject 1 at bit 22 */
72
73 key->lfsrsum = 0;
74}
75
76void
77acss_setkey(ACSS_KEY *key, const unsigned char *data, int enc, int mode)
78{
79 memcpy(key->data, data, sizeof(key->data));
80
81 if (enc != -1)
82 key->encrypt = enc;
83 key->mode = mode;
84
85 acss_seed(key);
86}
diff --git a/src/lib/libssl/src/crypto/aes/Makefile.ssl b/src/lib/libssl/src/crypto/aes/Makefile.ssl
new file mode 100644
index 0000000000..f353aeb697
--- /dev/null
+++ b/src/lib/libssl/src/crypto/aes/Makefile.ssl
@@ -0,0 +1,103 @@
1#
2# crypto/aes/Makefile
3#
4
5DIR= aes
6TOP= ../..
7CC= cc
8CPP= $(CC) -E
9INCLUDES=
10CFLAG=-g
11INSTALL_PREFIX=
12OPENSSLDIR= /usr/local/ssl
13INSTALLTOP= /usr/local/ssl
14MAKE= make -f Makefile.ssl
15MAKEDEPPROG= makedepend
16MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
17MAKEFILE= Makefile.ssl
18AR= ar r
19
20# CFLAGS= -mpentiumpro $(INCLUDES) $(CFLAG) -O3 -fexpensive-optimizations -funroll-loops -fforce-addr
21CFLAGS= $(INCLUDES) $(CFLAG)
22
23GENERAL=Makefile
24#TEST=aestest.c
25TEST=
26APPS=
27
28LIB=$(TOP)/libcrypto.a
29LIBSRC=aes_core.c aes_misc.c aes_ecb.c aes_cbc.c aes_cfb.c aes_ofb.c aes_ctr.c
30LIBOBJ=aes_core.o aes_misc.o aes_ecb.o aes_cbc.o aes_cfb.o aes_ofb.o aes_ctr.o
31
32SRC= $(LIBSRC)
33
34EXHEADER= aes.h
35HEADER= aes_locl.h $(EXHEADER)
36
37ALL= $(GENERAL) $(SRC) $(HEADER)
38
39top:
40 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
41
42all: lib
43
44lib: $(LIBOBJ)
45 $(AR) $(LIB) $(LIBOBJ)
46 $(RANLIB) $(LIB) || echo Never mind.
47 @touch lib
48
49$(LIBOBJ): $(LIBSRC)
50
51files:
52 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
53
54links:
55 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
56 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
57 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
58 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
59
60install: installs
61
62installs:
63 @for i in $(EXHEADER) ; \
64 do \
65 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
66 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
67 done;
68
69tags:
70 ctags $(SRC)
71
72tests:
73
74lint:
75 lint -DLINT $(INCLUDES) $(SRC)>fluff
76
77depend:
78 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
79
80dclean:
81 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
82 mv -f Makefile.new $(MAKEFILE)
83
84clean:
85 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
86
87# DO NOT DELETE THIS LINE -- make depend depends on it.
88
89aes_cbc.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
90aes_cbc.o: ../../include/openssl/opensslconf.h aes_cbc.c aes_locl.h
91aes_cfb.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
92aes_cfb.o: ../../include/openssl/opensslconf.h aes_cfb.c aes_locl.h
93aes_core.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
94aes_core.o: ../../include/openssl/opensslconf.h aes_core.c aes_locl.h
95aes_ctr.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
96aes_ctr.o: ../../include/openssl/opensslconf.h aes_ctr.c aes_locl.h
97aes_ecb.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
98aes_ecb.o: ../../include/openssl/opensslconf.h aes_ecb.c aes_locl.h
99aes_misc.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
100aes_misc.o: ../../include/openssl/opensslconf.h
101aes_misc.o: ../../include/openssl/opensslv.h aes_locl.h aes_misc.c
102aes_ofb.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
103aes_ofb.o: ../../include/openssl/opensslconf.h aes_locl.h aes_ofb.c
diff --git a/src/lib/libssl/src/crypto/aes/aes_cbc.c b/src/lib/libssl/src/crypto/aes/aes_cbc.c
index 373864cd4b..d2ba6bcdb4 100644
--- a/src/lib/libssl/src/crypto/aes/aes_cbc.c
+++ b/src/lib/libssl/src/crypto/aes/aes_cbc.c
@@ -59,7 +59,6 @@
59#include <openssl/aes.h> 59#include <openssl/aes.h>
60#include "aes_locl.h" 60#include "aes_locl.h"
61 61
62#if !defined(OPENSSL_FIPS_AES_ASM)
63void AES_cbc_encrypt(const unsigned char *in, unsigned char *out, 62void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
64 const unsigned long length, const AES_KEY *key, 63 const unsigned long length, const AES_KEY *key,
65 unsigned char *ivec, const int enc) { 64 unsigned char *ivec, const int enc) {
@@ -130,4 +129,3 @@ void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
130 } 129 }
131 } 130 }
132} 131}
133#endif
diff --git a/src/lib/libssl/src/crypto/aes/asm/aes-586.pl b/src/lib/libssl/src/crypto/aes/asm/aes-586.pl
new file mode 100644
index 0000000000..688fda21ff
--- /dev/null
+++ b/src/lib/libssl/src/crypto/aes/asm/aes-586.pl
@@ -0,0 +1,1541 @@
1#!/usr/bin/env perl
2#
3# ====================================================================
4# Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL
5# project. Rights for redistribution and usage in source and binary
6# forms are granted according to the OpenSSL license.
7# ====================================================================
8#
9# Version 2.0.
10#
11# You might fail to appreciate this module performance from the first
12# try. If compared to "vanilla" linux-ia32-icc target, i.e. considered
13# to be *the* best Intel C compiler without -KPIC, performance appears
14# to be virtually identical... But try to re-configure with shared
15# library support... Aha! Intel compiler "suddenly" lags behind by 30%
16# [on P4, more on others]:-) And if compared to position-independent
17# code generated by GNU C, this code performs *more* than *twice* as
18# fast! Yes, all this buzz about PIC means that unlike other hand-
19# coded implementations, this one was explicitly designed to be safe
20# to use even in shared library context... This also means that this
21# code isn't necessarily absolutely fastest "ever," because in order
22# to achieve position independence an extra register has to be
23# off-loaded to stack, which affects the benchmark result.
24#
25# Special note about instruction choice. Do you recall RC4_INT code
26# performing poorly on P4? It might be the time to figure out why.
27# RC4_INT code implies effective address calculations in base+offset*4
28# form. Trouble is that it seems that offset scaling turned to be
29# critical path... At least eliminating scaling resulted in 2.8x RC4
30# performance improvement [as you might recall]. As AES code is hungry
31# for scaling too, I [try to] avoid the latter by favoring off-by-2
32# shifts and masking the result with 0xFF<<2 instead of "boring" 0xFF.
33#
34# As was shown by Dean Gaudet <dean@arctic.org>, the above note turned
35# void. Performance improvement with off-by-2 shifts was observed on
36# intermediate implementation, which was spilling yet another register
37# to stack... Final offset*4 code below runs just a tad faster on P4,
38# but exhibits up to 10% improvement on other cores.
39#
40# Second version is "monolithic" replacement for aes_core.c, which in
41# addition to AES_[de|en]crypt implements AES_set_[de|en]cryption_key.
42# This made it possible to implement little-endian variant of the
43# algorithm without modifying the base C code. Motivating factor for
44# the undertaken effort was that it appeared that in tight IA-32
45# register window little-endian flavor could achieve slightly higher
46# Instruction Level Parallelism, and it indeed resulted in up to 15%
47# better performance on most recent µ-archs...
48#
49# Current ECB performance numbers for 128-bit key in cycles per byte
50# [measure commonly used by AES benchmarkers] are:
51#
52# small footprint fully unrolled
53# P4[-3] 23[24] 22[23]
54# AMD K8 19 18
55# PIII 26(*) 23
56# Pentium 63(*) 52
57#
58# (*) Performance difference between small footprint code and fully
59# unrolled in more commonly used CBC mode is not as big, 7% for
60# PIII and 15% for Pentium, which I consider tolerable.
61
62push(@INC,"perlasm","../../perlasm");
63require "x86asm.pl";
64
65&asm_init($ARGV[0],"aes-586.pl",$ARGV[$#ARGV] eq "386");
66
67$small_footprint=1; # $small_footprint=1 code is ~5% slower [on
68 # recent µ-archs], but ~5 times smaller!
69 # I favor compact code, because it minimizes
70 # cache contention...
71$vertical_spin=0; # shift "verticaly" defaults to 0, because of
72 # its proof-of-concept status, see below...
73
74$s0="eax";
75$s1="ebx";
76$s2="ecx";
77$s3="edx";
78$key="esi";
79$acc="edi";
80
81if ($vertical_spin) {
82 # I need high parts of volatile registers to be accessible...
83 $s1="esi"; $key="ebx";
84 $s2="edi"; $acc="ecx";
85}
86# Note that there is no decvert(), as well as last encryption round is
87# performed with "horizontal" shifts. This is because this "vertical"
88# implementation [one which groups shifts on a given $s[i] to form a
89# "column," unlike "horizontal" one, which groups shifts on different
90# $s[i] to form a "row"] is work in progress. It was observed to run
91# few percents faster on Intel cores, but not AMD. On AMD K8 core it's
92# whole 12% slower:-( So we face a trade-off... Shall it be resolved
93# some day? Till then the code is considered experimental and by
94# default remains dormant...
95
96sub encvert()
97{ my ($te,@s) = @_;
98 my $v0 = $acc, $v1 = $key;
99
100 &mov ($v0,$s[3]); # copy s3
101 &mov (&DWP(0,"esp"),$s[2]); # save s2
102 &mov ($v1,$s[0]); # copy s0
103 &mov (&DWP(4,"esp"),$s[1]); # save s1
104
105 &movz ($s[2],&HB($s[0]));
106 &and ($s[0],0xFF);
107 &mov ($s[0],&DWP(1024*0,$te,$s[0],4)); # s0>>0
108 &shr ($v1,16);
109 &mov ($s[3],&DWP(1024*1,$te,$s[2],4)); # s0>>8
110 &movz ($s[1],&HB($v1));
111 &and ($v1,0xFF);
112 &mov ($s[2],&DWP(1024*2,$te,$v1,4)); # s0>>16
113 &mov ($v1,$v0);
114 &mov ($s[1],&DWP(1024*3,$te,$s[1],4)); # s0>>24
115
116 &and ($v0,0xFF);
117 &xor ($s[3],&DWP(1024*0,$te,$v0,4)); # s3>>0
118 &movz ($v0,&HB($v1));
119 &shr ($v1,16);
120 &xor ($s[2],&DWP(1024*1,$te,$v0,4)); # s3>>8
121 &movz ($v0,&HB($v1));
122 &and ($v1,0xFF);
123 &xor ($s[1],&DWP(1024*2,$te,$v1,4)); # s3>>16
124 &mov ($v1,&DWP(0,"esp")); # restore s2
125 &xor ($s[0],&DWP(1024*3,$te,$v0,4)); # s3>>24
126
127 &mov ($v0,$v1);
128 &and ($v1,0xFF);
129 &xor ($s[2],&DWP(1024*0,$te,$v1,4)); # s2>>0
130 &movz ($v1,&HB($v0));
131 &shr ($v0,16);
132 &xor ($s[1],&DWP(1024*1,$te,$v1,4)); # s2>>8
133 &movz ($v1,&HB($v0));
134 &and ($v0,0xFF);
135 &xor ($s[0],&DWP(1024*2,$te,$v0,4)); # s2>>16
136 &mov ($v0,&DWP(4,"esp")); # restore s1
137 &xor ($s[3],&DWP(1024*3,$te,$v1,4)); # s2>>24
138
139 &mov ($v1,$v0);
140 &and ($v0,0xFF);
141 &xor ($s[1],&DWP(1024*0,$te,$v0,4)); # s1>>0
142 &movz ($v0,&HB($v1));
143 &shr ($v1,16);
144 &xor ($s[0],&DWP(1024*1,$te,$v0,4)); # s1>>8
145 &movz ($v0,&HB($v1));
146 &and ($v1,0xFF);
147 &xor ($s[3],&DWP(1024*2,$te,$v1,4)); # s1>>16
148 &mov ($key,&DWP(12,"esp")); # reincarnate v1 as key
149 &xor ($s[2],&DWP(1024*3,$te,$v0,4)); # s1>>24
150}
151
152sub encstep()
153{ my ($i,$te,@s) = @_;
154 my $tmp = $key;
155 my $out = $i==3?$s[0]:$acc;
156
157 # lines marked with #%e?x[i] denote "reordered" instructions...
158 if ($i==3) { &mov ($key,&DWP(12,"esp")); }##%edx
159 else { &mov ($out,$s[0]);
160 &and ($out,0xFF); }
161 if ($i==1) { &shr ($s[0],16); }#%ebx[1]
162 if ($i==2) { &shr ($s[0],24); }#%ecx[2]
163 &mov ($out,&DWP(1024*0,$te,$out,4));
164
165 if ($i==3) { $tmp=$s[1]; }##%eax
166 &movz ($tmp,&HB($s[1]));
167 &xor ($out,&DWP(1024*1,$te,$tmp,4));
168
169 if ($i==3) { $tmp=$s[2]; &mov ($s[1],&DWP(0,"esp")); }##%ebx
170 else { &mov ($tmp,$s[2]);
171 &shr ($tmp,16); }
172 if ($i==2) { &and ($s[1],0xFF); }#%edx[2]
173 &and ($tmp,0xFF);
174 &xor ($out,&DWP(1024*2,$te,$tmp,4));
175
176 if ($i==3) { $tmp=$s[3]; &mov ($s[2],&DWP(4,"esp")); }##%ecx
177 elsif($i==2){ &movz ($tmp,&HB($s[3])); }#%ebx[2]
178 else { &mov ($tmp,$s[3]);
179 &shr ($tmp,24) }
180 &xor ($out,&DWP(1024*3,$te,$tmp,4));
181 if ($i<2) { &mov (&DWP(4*$i,"esp"),$out); }
182 if ($i==3) { &mov ($s[3],$acc); }
183 &comment();
184}
185
186sub enclast()
187{ my ($i,$te,@s)=@_;
188 my $tmp = $key;
189 my $out = $i==3?$s[0]:$acc;
190
191 if ($i==3) { &mov ($key,&DWP(12,"esp")); }##%edx
192 else { &mov ($out,$s[0]); }
193 &and ($out,0xFF);
194 if ($i==1) { &shr ($s[0],16); }#%ebx[1]
195 if ($i==2) { &shr ($s[0],24); }#%ecx[2]
196 &mov ($out,&DWP(1024*0,$te,$out,4));
197 &and ($out,0x000000ff);
198
199 if ($i==3) { $tmp=$s[1]; }##%eax
200 &movz ($tmp,&HB($s[1]));
201 &mov ($tmp,&DWP(0,$te,$tmp,4));
202 &and ($tmp,0x0000ff00);
203 &xor ($out,$tmp);
204
205 if ($i==3) { $tmp=$s[2]; &mov ($s[1],&DWP(0,"esp")); }##%ebx
206 else { mov ($tmp,$s[2]);
207 &shr ($tmp,16); }
208 if ($i==2) { &and ($s[1],0xFF); }#%edx[2]
209 &and ($tmp,0xFF);
210 &mov ($tmp,&DWP(0,$te,$tmp,4));
211 &and ($tmp,0x00ff0000);
212 &xor ($out,$tmp);
213
214 if ($i==3) { $tmp=$s[3]; &mov ($s[2],&DWP(4,"esp")); }##%ecx
215 elsif($i==2){ &movz ($tmp,&HB($s[3])); }#%ebx[2]
216 else { &mov ($tmp,$s[3]);
217 &shr ($tmp,24); }
218 &mov ($tmp,&DWP(0,$te,$tmp,4));
219 &and ($tmp,0xff000000);
220 &xor ($out,$tmp);
221 if ($i<2) { &mov (&DWP(4*$i,"esp"),$out); }
222 if ($i==3) { &mov ($s[3],$acc); }
223}
224
225# void AES_encrypt (const void *inp,void *out,const AES_KEY *key);
226&public_label("AES_Te");
227&function_begin("AES_encrypt");
228 &mov ($acc,&wparam(0)); # load inp
229 &mov ($key,&wparam(2)); # load key
230
231 &call (&label("pic_point")); # make it PIC!
232 &set_label("pic_point");
233 &blindpop("ebp");
234 &lea ("ebp",&DWP(&label("AES_Te")."-".&label("pic_point"),"ebp"));
235
236 # allocate aligned stack frame
237 &mov ($s0,"esp");
238 &sub ("esp",20);
239 &and ("esp",-16);
240
241 &mov (&DWP(12,"esp"),$key); # save key
242 &mov (&DWP(16,"esp"),$s0); # save %esp
243
244 &mov ($s0,&DWP(0,$acc)); # load input data
245 &mov ($s1,&DWP(4,$acc));
246 &mov ($s2,&DWP(8,$acc));
247 &mov ($s3,&DWP(12,$acc));
248
249 &xor ($s0,&DWP(0,$key));
250 &xor ($s1,&DWP(4,$key));
251 &xor ($s2,&DWP(8,$key));
252 &xor ($s3,&DWP(12,$key));
253
254 &mov ($acc,&DWP(240,$key)); # load key->rounds
255
256 if ($small_footprint) {
257 &lea ($acc,&DWP(-2,$acc,$acc));
258 &lea ($acc,&DWP(0,$key,$acc,8));
259 &mov (&DWP(8,"esp"),$acc); # end of key schedule
260 &align (4);
261 &set_label("loop");
262 if ($vertical_spin) {
263 &encvert("ebp",$s0,$s1,$s2,$s3);
264 } else {
265 &encstep(0,"ebp",$s0,$s1,$s2,$s3);
266 &encstep(1,"ebp",$s1,$s2,$s3,$s0);
267 &encstep(2,"ebp",$s2,$s3,$s0,$s1);
268 &encstep(3,"ebp",$s3,$s0,$s1,$s2);
269 }
270 &add ($key,16); # advance rd_key
271 &xor ($s0,&DWP(0,$key));
272 &xor ($s1,&DWP(4,$key));
273 &xor ($s2,&DWP(8,$key));
274 &xor ($s3,&DWP(12,$key));
275 &cmp ($key,&DWP(8,"esp"));
276 &mov (&DWP(12,"esp"),$key);
277 &jb (&label("loop"));
278 }
279 else {
280 &cmp ($acc,10);
281 &jle (&label("10rounds"));
282 &cmp ($acc,12);
283 &jle (&label("12rounds"));
284
285 &set_label("14rounds");
286 for ($i=1;$i<3;$i++) {
287 if ($vertical_spin) {
288 &encvert("ebp",$s0,$s1,$s2,$s3);
289 } else {
290 &encstep(0,"ebp",$s0,$s1,$s2,$s3);
291 &encstep(1,"ebp",$s1,$s2,$s3,$s0);
292 &encstep(2,"ebp",$s2,$s3,$s0,$s1);
293 &encstep(3,"ebp",$s3,$s0,$s1,$s2);
294 }
295 &xor ($s0,&DWP(16*$i+0,$key));
296 &xor ($s1,&DWP(16*$i+4,$key));
297 &xor ($s2,&DWP(16*$i+8,$key));
298 &xor ($s3,&DWP(16*$i+12,$key));
299 }
300 &add ($key,32);
301 &mov (&DWP(12,"esp"),$key); # advance rd_key
302 &set_label("12rounds");
303 for ($i=1;$i<3;$i++) {
304 if ($vertical_spin) {
305 &encvert("ebp",$s0,$s1,$s2,$s3);
306 } else {
307 &encstep(0,"ebp",$s0,$s1,$s2,$s3);
308 &encstep(1,"ebp",$s1,$s2,$s3,$s0);
309 &encstep(2,"ebp",$s2,$s3,$s0,$s1);
310 &encstep(3,"ebp",$s3,$s0,$s1,$s2);
311 }
312 &xor ($s0,&DWP(16*$i+0,$key));
313 &xor ($s1,&DWP(16*$i+4,$key));
314 &xor ($s2,&DWP(16*$i+8,$key));
315 &xor ($s3,&DWP(16*$i+12,$key));
316 }
317 &add ($key,32);
318 &mov (&DWP(12,"esp"),$key); # advance rd_key
319 &set_label("10rounds");
320 for ($i=1;$i<10;$i++) {
321 if ($vertical_spin) {
322 &encvert("ebp",$s0,$s1,$s2,$s3);
323 } else {
324 &encstep(0,"ebp",$s0,$s1,$s2,$s3);
325 &encstep(1,"ebp",$s1,$s2,$s3,$s0);
326 &encstep(2,"ebp",$s2,$s3,$s0,$s1);
327 &encstep(3,"ebp",$s3,$s0,$s1,$s2);
328 }
329 &xor ($s0,&DWP(16*$i+0,$key));
330 &xor ($s1,&DWP(16*$i+4,$key));
331 &xor ($s2,&DWP(16*$i+8,$key));
332 &xor ($s3,&DWP(16*$i+12,$key));
333 }
334 }
335
336 &add ("ebp",4*1024); # skip to Te4
337 if ($vertical_spin) {
338 # "reincarnate" some registers for "horizontal" spin...
339 &mov ($s1="ebx",$key="esi");
340 &mov ($s2="ecx",$acc="edi");
341 }
342 &enclast(0,"ebp",$s0,$s1,$s2,$s3);
343 &enclast(1,"ebp",$s1,$s2,$s3,$s0);
344 &enclast(2,"ebp",$s2,$s3,$s0,$s1);
345 &enclast(3,"ebp",$s3,$s0,$s1,$s2);
346
347 &mov ("esp",&DWP(16,"esp")); # restore %esp
348 &add ($key,$small_footprint?16:160);
349 &xor ($s0,&DWP(0,$key));
350 &xor ($s1,&DWP(4,$key));
351 &xor ($s2,&DWP(8,$key));
352 &xor ($s3,&DWP(12,$key));
353
354 &mov ($acc,&wparam(1)); # load out
355 &mov (&DWP(0,$acc),$s0); # write output data
356 &mov (&DWP(4,$acc),$s1);
357 &mov (&DWP(8,$acc),$s2);
358 &mov (&DWP(12,$acc),$s3);
359
360 &pop ("edi");
361 &pop ("esi");
362 &pop ("ebx");
363 &pop ("ebp");
364 &ret ();
365
366&set_label("AES_Te",64); # Yes! I keep it in the code segment!
367 &data_word(0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6);
368 &data_word(0x0df2f2ff, 0xbd6b6bd6, 0xb16f6fde, 0x54c5c591);
369 &data_word(0x50303060, 0x03010102, 0xa96767ce, 0x7d2b2b56);
370 &data_word(0x19fefee7, 0x62d7d7b5, 0xe6abab4d, 0x9a7676ec);
371 &data_word(0x45caca8f, 0x9d82821f, 0x40c9c989, 0x877d7dfa);
372 &data_word(0x15fafaef, 0xeb5959b2, 0xc947478e, 0x0bf0f0fb);
373 &data_word(0xecadad41, 0x67d4d4b3, 0xfda2a25f, 0xeaafaf45);
374 &data_word(0xbf9c9c23, 0xf7a4a453, 0x967272e4, 0x5bc0c09b);
375 &data_word(0xc2b7b775, 0x1cfdfde1, 0xae93933d, 0x6a26264c);
376 &data_word(0x5a36366c, 0x413f3f7e, 0x02f7f7f5, 0x4fcccc83);
377 &data_word(0x5c343468, 0xf4a5a551, 0x34e5e5d1, 0x08f1f1f9);
378 &data_word(0x937171e2, 0x73d8d8ab, 0x53313162, 0x3f15152a);
379 &data_word(0x0c040408, 0x52c7c795, 0x65232346, 0x5ec3c39d);
380 &data_word(0x28181830, 0xa1969637, 0x0f05050a, 0xb59a9a2f);
381 &data_word(0x0907070e, 0x36121224, 0x9b80801b, 0x3de2e2df);
382 &data_word(0x26ebebcd, 0x6927274e, 0xcdb2b27f, 0x9f7575ea);
383 &data_word(0x1b090912, 0x9e83831d, 0x742c2c58, 0x2e1a1a34);
384 &data_word(0x2d1b1b36, 0xb26e6edc, 0xee5a5ab4, 0xfba0a05b);
385 &data_word(0xf65252a4, 0x4d3b3b76, 0x61d6d6b7, 0xceb3b37d);
386 &data_word(0x7b292952, 0x3ee3e3dd, 0x712f2f5e, 0x97848413);
387 &data_word(0xf55353a6, 0x68d1d1b9, 0x00000000, 0x2cededc1);
388 &data_word(0x60202040, 0x1ffcfce3, 0xc8b1b179, 0xed5b5bb6);
389 &data_word(0xbe6a6ad4, 0x46cbcb8d, 0xd9bebe67, 0x4b393972);
390 &data_word(0xde4a4a94, 0xd44c4c98, 0xe85858b0, 0x4acfcf85);
391 &data_word(0x6bd0d0bb, 0x2aefefc5, 0xe5aaaa4f, 0x16fbfbed);
392 &data_word(0xc5434386, 0xd74d4d9a, 0x55333366, 0x94858511);
393 &data_word(0xcf45458a, 0x10f9f9e9, 0x06020204, 0x817f7ffe);
394 &data_word(0xf05050a0, 0x443c3c78, 0xba9f9f25, 0xe3a8a84b);
395 &data_word(0xf35151a2, 0xfea3a35d, 0xc0404080, 0x8a8f8f05);
396 &data_word(0xad92923f, 0xbc9d9d21, 0x48383870, 0x04f5f5f1);
397 &data_word(0xdfbcbc63, 0xc1b6b677, 0x75dadaaf, 0x63212142);
398 &data_word(0x30101020, 0x1affffe5, 0x0ef3f3fd, 0x6dd2d2bf);
399 &data_word(0x4ccdcd81, 0x140c0c18, 0x35131326, 0x2fececc3);
400 &data_word(0xe15f5fbe, 0xa2979735, 0xcc444488, 0x3917172e);
401 &data_word(0x57c4c493, 0xf2a7a755, 0x827e7efc, 0x473d3d7a);
402 &data_word(0xac6464c8, 0xe75d5dba, 0x2b191932, 0x957373e6);
403 &data_word(0xa06060c0, 0x98818119, 0xd14f4f9e, 0x7fdcdca3);
404 &data_word(0x66222244, 0x7e2a2a54, 0xab90903b, 0x8388880b);
405 &data_word(0xca46468c, 0x29eeeec7, 0xd3b8b86b, 0x3c141428);
406 &data_word(0x79dedea7, 0xe25e5ebc, 0x1d0b0b16, 0x76dbdbad);
407 &data_word(0x3be0e0db, 0x56323264, 0x4e3a3a74, 0x1e0a0a14);
408 &data_word(0xdb494992, 0x0a06060c, 0x6c242448, 0xe45c5cb8);
409 &data_word(0x5dc2c29f, 0x6ed3d3bd, 0xefacac43, 0xa66262c4);
410 &data_word(0xa8919139, 0xa4959531, 0x37e4e4d3, 0x8b7979f2);
411 &data_word(0x32e7e7d5, 0x43c8c88b, 0x5937376e, 0xb76d6dda);
412 &data_word(0x8c8d8d01, 0x64d5d5b1, 0xd24e4e9c, 0xe0a9a949);
413 &data_word(0xb46c6cd8, 0xfa5656ac, 0x07f4f4f3, 0x25eaeacf);
414 &data_word(0xaf6565ca, 0x8e7a7af4, 0xe9aeae47, 0x18080810);
415 &data_word(0xd5baba6f, 0x887878f0, 0x6f25254a, 0x722e2e5c);
416 &data_word(0x241c1c38, 0xf1a6a657, 0xc7b4b473, 0x51c6c697);
417 &data_word(0x23e8e8cb, 0x7cdddda1, 0x9c7474e8, 0x211f1f3e);
418 &data_word(0xdd4b4b96, 0xdcbdbd61, 0x868b8b0d, 0x858a8a0f);
419 &data_word(0x907070e0, 0x423e3e7c, 0xc4b5b571, 0xaa6666cc);
420 &data_word(0xd8484890, 0x05030306, 0x01f6f6f7, 0x120e0e1c);
421 &data_word(0xa36161c2, 0x5f35356a, 0xf95757ae, 0xd0b9b969);
422 &data_word(0x91868617, 0x58c1c199, 0x271d1d3a, 0xb99e9e27);
423 &data_word(0x38e1e1d9, 0x13f8f8eb, 0xb398982b, 0x33111122);
424 &data_word(0xbb6969d2, 0x70d9d9a9, 0x898e8e07, 0xa7949433);
425 &data_word(0xb69b9b2d, 0x221e1e3c, 0x92878715, 0x20e9e9c9);
426 &data_word(0x49cece87, 0xff5555aa, 0x78282850, 0x7adfdfa5);
427 &data_word(0x8f8c8c03, 0xf8a1a159, 0x80898909, 0x170d0d1a);
428 &data_word(0xdabfbf65, 0x31e6e6d7, 0xc6424284, 0xb86868d0);
429 &data_word(0xc3414182, 0xb0999929, 0x772d2d5a, 0x110f0f1e);
430 &data_word(0xcbb0b07b, 0xfc5454a8, 0xd6bbbb6d, 0x3a16162c);
431#Te1:
432 &data_word(0x6363c6a5, 0x7c7cf884, 0x7777ee99, 0x7b7bf68d);
433 &data_word(0xf2f2ff0d, 0x6b6bd6bd, 0x6f6fdeb1, 0xc5c59154);
434 &data_word(0x30306050, 0x01010203, 0x6767cea9, 0x2b2b567d);
435 &data_word(0xfefee719, 0xd7d7b562, 0xabab4de6, 0x7676ec9a);
436 &data_word(0xcaca8f45, 0x82821f9d, 0xc9c98940, 0x7d7dfa87);
437 &data_word(0xfafaef15, 0x5959b2eb, 0x47478ec9, 0xf0f0fb0b);
438 &data_word(0xadad41ec, 0xd4d4b367, 0xa2a25ffd, 0xafaf45ea);
439 &data_word(0x9c9c23bf, 0xa4a453f7, 0x7272e496, 0xc0c09b5b);
440 &data_word(0xb7b775c2, 0xfdfde11c, 0x93933dae, 0x26264c6a);
441 &data_word(0x36366c5a, 0x3f3f7e41, 0xf7f7f502, 0xcccc834f);
442 &data_word(0x3434685c, 0xa5a551f4, 0xe5e5d134, 0xf1f1f908);
443 &data_word(0x7171e293, 0xd8d8ab73, 0x31316253, 0x15152a3f);
444 &data_word(0x0404080c, 0xc7c79552, 0x23234665, 0xc3c39d5e);
445 &data_word(0x18183028, 0x969637a1, 0x05050a0f, 0x9a9a2fb5);
446 &data_word(0x07070e09, 0x12122436, 0x80801b9b, 0xe2e2df3d);
447 &data_word(0xebebcd26, 0x27274e69, 0xb2b27fcd, 0x7575ea9f);
448 &data_word(0x0909121b, 0x83831d9e, 0x2c2c5874, 0x1a1a342e);
449 &data_word(0x1b1b362d, 0x6e6edcb2, 0x5a5ab4ee, 0xa0a05bfb);
450 &data_word(0x5252a4f6, 0x3b3b764d, 0xd6d6b761, 0xb3b37dce);
451 &data_word(0x2929527b, 0xe3e3dd3e, 0x2f2f5e71, 0x84841397);
452 &data_word(0x5353a6f5, 0xd1d1b968, 0x00000000, 0xededc12c);
453 &data_word(0x20204060, 0xfcfce31f, 0xb1b179c8, 0x5b5bb6ed);
454 &data_word(0x6a6ad4be, 0xcbcb8d46, 0xbebe67d9, 0x3939724b);
455 &data_word(0x4a4a94de, 0x4c4c98d4, 0x5858b0e8, 0xcfcf854a);
456 &data_word(0xd0d0bb6b, 0xefefc52a, 0xaaaa4fe5, 0xfbfbed16);
457 &data_word(0x434386c5, 0x4d4d9ad7, 0x33336655, 0x85851194);
458 &data_word(0x45458acf, 0xf9f9e910, 0x02020406, 0x7f7ffe81);
459 &data_word(0x5050a0f0, 0x3c3c7844, 0x9f9f25ba, 0xa8a84be3);
460 &data_word(0x5151a2f3, 0xa3a35dfe, 0x404080c0, 0x8f8f058a);
461 &data_word(0x92923fad, 0x9d9d21bc, 0x38387048, 0xf5f5f104);
462 &data_word(0xbcbc63df, 0xb6b677c1, 0xdadaaf75, 0x21214263);
463 &data_word(0x10102030, 0xffffe51a, 0xf3f3fd0e, 0xd2d2bf6d);
464 &data_word(0xcdcd814c, 0x0c0c1814, 0x13132635, 0xececc32f);
465 &data_word(0x5f5fbee1, 0x979735a2, 0x444488cc, 0x17172e39);
466 &data_word(0xc4c49357, 0xa7a755f2, 0x7e7efc82, 0x3d3d7a47);
467 &data_word(0x6464c8ac, 0x5d5dbae7, 0x1919322b, 0x7373e695);
468 &data_word(0x6060c0a0, 0x81811998, 0x4f4f9ed1, 0xdcdca37f);
469 &data_word(0x22224466, 0x2a2a547e, 0x90903bab, 0x88880b83);
470 &data_word(0x46468cca, 0xeeeec729, 0xb8b86bd3, 0x1414283c);
471 &data_word(0xdedea779, 0x5e5ebce2, 0x0b0b161d, 0xdbdbad76);
472 &data_word(0xe0e0db3b, 0x32326456, 0x3a3a744e, 0x0a0a141e);
473 &data_word(0x494992db, 0x06060c0a, 0x2424486c, 0x5c5cb8e4);
474 &data_word(0xc2c29f5d, 0xd3d3bd6e, 0xacac43ef, 0x6262c4a6);
475 &data_word(0x919139a8, 0x959531a4, 0xe4e4d337, 0x7979f28b);
476 &data_word(0xe7e7d532, 0xc8c88b43, 0x37376e59, 0x6d6ddab7);
477 &data_word(0x8d8d018c, 0xd5d5b164, 0x4e4e9cd2, 0xa9a949e0);
478 &data_word(0x6c6cd8b4, 0x5656acfa, 0xf4f4f307, 0xeaeacf25);
479 &data_word(0x6565caaf, 0x7a7af48e, 0xaeae47e9, 0x08081018);
480 &data_word(0xbaba6fd5, 0x7878f088, 0x25254a6f, 0x2e2e5c72);
481 &data_word(0x1c1c3824, 0xa6a657f1, 0xb4b473c7, 0xc6c69751);
482 &data_word(0xe8e8cb23, 0xdddda17c, 0x7474e89c, 0x1f1f3e21);
483 &data_word(0x4b4b96dd, 0xbdbd61dc, 0x8b8b0d86, 0x8a8a0f85);
484 &data_word(0x7070e090, 0x3e3e7c42, 0xb5b571c4, 0x6666ccaa);
485 &data_word(0x484890d8, 0x03030605, 0xf6f6f701, 0x0e0e1c12);
486 &data_word(0x6161c2a3, 0x35356a5f, 0x5757aef9, 0xb9b969d0);
487 &data_word(0x86861791, 0xc1c19958, 0x1d1d3a27, 0x9e9e27b9);
488 &data_word(0xe1e1d938, 0xf8f8eb13, 0x98982bb3, 0x11112233);
489 &data_word(0x6969d2bb, 0xd9d9a970, 0x8e8e0789, 0x949433a7);
490 &data_word(0x9b9b2db6, 0x1e1e3c22, 0x87871592, 0xe9e9c920);
491 &data_word(0xcece8749, 0x5555aaff, 0x28285078, 0xdfdfa57a);
492 &data_word(0x8c8c038f, 0xa1a159f8, 0x89890980, 0x0d0d1a17);
493 &data_word(0xbfbf65da, 0xe6e6d731, 0x424284c6, 0x6868d0b8);
494 &data_word(0x414182c3, 0x999929b0, 0x2d2d5a77, 0x0f0f1e11);
495 &data_word(0xb0b07bcb, 0x5454a8fc, 0xbbbb6dd6, 0x16162c3a);
496#Te2:
497 &data_word(0x63c6a563, 0x7cf8847c, 0x77ee9977, 0x7bf68d7b);
498 &data_word(0xf2ff0df2, 0x6bd6bd6b, 0x6fdeb16f, 0xc59154c5);
499 &data_word(0x30605030, 0x01020301, 0x67cea967, 0x2b567d2b);
500 &data_word(0xfee719fe, 0xd7b562d7, 0xab4de6ab, 0x76ec9a76);
501 &data_word(0xca8f45ca, 0x821f9d82, 0xc98940c9, 0x7dfa877d);
502 &data_word(0xfaef15fa, 0x59b2eb59, 0x478ec947, 0xf0fb0bf0);
503 &data_word(0xad41ecad, 0xd4b367d4, 0xa25ffda2, 0xaf45eaaf);
504 &data_word(0x9c23bf9c, 0xa453f7a4, 0x72e49672, 0xc09b5bc0);
505 &data_word(0xb775c2b7, 0xfde11cfd, 0x933dae93, 0x264c6a26);
506 &data_word(0x366c5a36, 0x3f7e413f, 0xf7f502f7, 0xcc834fcc);
507 &data_word(0x34685c34, 0xa551f4a5, 0xe5d134e5, 0xf1f908f1);
508 &data_word(0x71e29371, 0xd8ab73d8, 0x31625331, 0x152a3f15);
509 &data_word(0x04080c04, 0xc79552c7, 0x23466523, 0xc39d5ec3);
510 &data_word(0x18302818, 0x9637a196, 0x050a0f05, 0x9a2fb59a);
511 &data_word(0x070e0907, 0x12243612, 0x801b9b80, 0xe2df3de2);
512 &data_word(0xebcd26eb, 0x274e6927, 0xb27fcdb2, 0x75ea9f75);
513 &data_word(0x09121b09, 0x831d9e83, 0x2c58742c, 0x1a342e1a);
514 &data_word(0x1b362d1b, 0x6edcb26e, 0x5ab4ee5a, 0xa05bfba0);
515 &data_word(0x52a4f652, 0x3b764d3b, 0xd6b761d6, 0xb37dceb3);
516 &data_word(0x29527b29, 0xe3dd3ee3, 0x2f5e712f, 0x84139784);
517 &data_word(0x53a6f553, 0xd1b968d1, 0x00000000, 0xedc12ced);
518 &data_word(0x20406020, 0xfce31ffc, 0xb179c8b1, 0x5bb6ed5b);
519 &data_word(0x6ad4be6a, 0xcb8d46cb, 0xbe67d9be, 0x39724b39);
520 &data_word(0x4a94de4a, 0x4c98d44c, 0x58b0e858, 0xcf854acf);
521 &data_word(0xd0bb6bd0, 0xefc52aef, 0xaa4fe5aa, 0xfbed16fb);
522 &data_word(0x4386c543, 0x4d9ad74d, 0x33665533, 0x85119485);
523 &data_word(0x458acf45, 0xf9e910f9, 0x02040602, 0x7ffe817f);
524 &data_word(0x50a0f050, 0x3c78443c, 0x9f25ba9f, 0xa84be3a8);
525 &data_word(0x51a2f351, 0xa35dfea3, 0x4080c040, 0x8f058a8f);
526 &data_word(0x923fad92, 0x9d21bc9d, 0x38704838, 0xf5f104f5);
527 &data_word(0xbc63dfbc, 0xb677c1b6, 0xdaaf75da, 0x21426321);
528 &data_word(0x10203010, 0xffe51aff, 0xf3fd0ef3, 0xd2bf6dd2);
529 &data_word(0xcd814ccd, 0x0c18140c, 0x13263513, 0xecc32fec);
530 &data_word(0x5fbee15f, 0x9735a297, 0x4488cc44, 0x172e3917);
531 &data_word(0xc49357c4, 0xa755f2a7, 0x7efc827e, 0x3d7a473d);
532 &data_word(0x64c8ac64, 0x5dbae75d, 0x19322b19, 0x73e69573);
533 &data_word(0x60c0a060, 0x81199881, 0x4f9ed14f, 0xdca37fdc);
534 &data_word(0x22446622, 0x2a547e2a, 0x903bab90, 0x880b8388);
535 &data_word(0x468cca46, 0xeec729ee, 0xb86bd3b8, 0x14283c14);
536 &data_word(0xdea779de, 0x5ebce25e, 0x0b161d0b, 0xdbad76db);
537 &data_word(0xe0db3be0, 0x32645632, 0x3a744e3a, 0x0a141e0a);
538 &data_word(0x4992db49, 0x060c0a06, 0x24486c24, 0x5cb8e45c);
539 &data_word(0xc29f5dc2, 0xd3bd6ed3, 0xac43efac, 0x62c4a662);
540 &data_word(0x9139a891, 0x9531a495, 0xe4d337e4, 0x79f28b79);
541 &data_word(0xe7d532e7, 0xc88b43c8, 0x376e5937, 0x6ddab76d);
542 &data_word(0x8d018c8d, 0xd5b164d5, 0x4e9cd24e, 0xa949e0a9);
543 &data_word(0x6cd8b46c, 0x56acfa56, 0xf4f307f4, 0xeacf25ea);
544 &data_word(0x65caaf65, 0x7af48e7a, 0xae47e9ae, 0x08101808);
545 &data_word(0xba6fd5ba, 0x78f08878, 0x254a6f25, 0x2e5c722e);
546 &data_word(0x1c38241c, 0xa657f1a6, 0xb473c7b4, 0xc69751c6);
547 &data_word(0xe8cb23e8, 0xdda17cdd, 0x74e89c74, 0x1f3e211f);
548 &data_word(0x4b96dd4b, 0xbd61dcbd, 0x8b0d868b, 0x8a0f858a);
549 &data_word(0x70e09070, 0x3e7c423e, 0xb571c4b5, 0x66ccaa66);
550 &data_word(0x4890d848, 0x03060503, 0xf6f701f6, 0x0e1c120e);
551 &data_word(0x61c2a361, 0x356a5f35, 0x57aef957, 0xb969d0b9);
552 &data_word(0x86179186, 0xc19958c1, 0x1d3a271d, 0x9e27b99e);
553 &data_word(0xe1d938e1, 0xf8eb13f8, 0x982bb398, 0x11223311);
554 &data_word(0x69d2bb69, 0xd9a970d9, 0x8e07898e, 0x9433a794);
555 &data_word(0x9b2db69b, 0x1e3c221e, 0x87159287, 0xe9c920e9);
556 &data_word(0xce8749ce, 0x55aaff55, 0x28507828, 0xdfa57adf);
557 &data_word(0x8c038f8c, 0xa159f8a1, 0x89098089, 0x0d1a170d);
558 &data_word(0xbf65dabf, 0xe6d731e6, 0x4284c642, 0x68d0b868);
559 &data_word(0x4182c341, 0x9929b099, 0x2d5a772d, 0x0f1e110f);
560 &data_word(0xb07bcbb0, 0x54a8fc54, 0xbb6dd6bb, 0x162c3a16);
561#Te3:
562 &data_word(0xc6a56363, 0xf8847c7c, 0xee997777, 0xf68d7b7b);
563 &data_word(0xff0df2f2, 0xd6bd6b6b, 0xdeb16f6f, 0x9154c5c5);
564 &data_word(0x60503030, 0x02030101, 0xcea96767, 0x567d2b2b);
565 &data_word(0xe719fefe, 0xb562d7d7, 0x4de6abab, 0xec9a7676);
566 &data_word(0x8f45caca, 0x1f9d8282, 0x8940c9c9, 0xfa877d7d);
567 &data_word(0xef15fafa, 0xb2eb5959, 0x8ec94747, 0xfb0bf0f0);
568 &data_word(0x41ecadad, 0xb367d4d4, 0x5ffda2a2, 0x45eaafaf);
569 &data_word(0x23bf9c9c, 0x53f7a4a4, 0xe4967272, 0x9b5bc0c0);
570 &data_word(0x75c2b7b7, 0xe11cfdfd, 0x3dae9393, 0x4c6a2626);
571 &data_word(0x6c5a3636, 0x7e413f3f, 0xf502f7f7, 0x834fcccc);
572 &data_word(0x685c3434, 0x51f4a5a5, 0xd134e5e5, 0xf908f1f1);
573 &data_word(0xe2937171, 0xab73d8d8, 0x62533131, 0x2a3f1515);
574 &data_word(0x080c0404, 0x9552c7c7, 0x46652323, 0x9d5ec3c3);
575 &data_word(0x30281818, 0x37a19696, 0x0a0f0505, 0x2fb59a9a);
576 &data_word(0x0e090707, 0x24361212, 0x1b9b8080, 0xdf3de2e2);
577 &data_word(0xcd26ebeb, 0x4e692727, 0x7fcdb2b2, 0xea9f7575);
578 &data_word(0x121b0909, 0x1d9e8383, 0x58742c2c, 0x342e1a1a);
579 &data_word(0x362d1b1b, 0xdcb26e6e, 0xb4ee5a5a, 0x5bfba0a0);
580 &data_word(0xa4f65252, 0x764d3b3b, 0xb761d6d6, 0x7dceb3b3);
581 &data_word(0x527b2929, 0xdd3ee3e3, 0x5e712f2f, 0x13978484);
582 &data_word(0xa6f55353, 0xb968d1d1, 0x00000000, 0xc12ceded);
583 &data_word(0x40602020, 0xe31ffcfc, 0x79c8b1b1, 0xb6ed5b5b);
584 &data_word(0xd4be6a6a, 0x8d46cbcb, 0x67d9bebe, 0x724b3939);
585 &data_word(0x94de4a4a, 0x98d44c4c, 0xb0e85858, 0x854acfcf);
586 &data_word(0xbb6bd0d0, 0xc52aefef, 0x4fe5aaaa, 0xed16fbfb);
587 &data_word(0x86c54343, 0x9ad74d4d, 0x66553333, 0x11948585);
588 &data_word(0x8acf4545, 0xe910f9f9, 0x04060202, 0xfe817f7f);
589 &data_word(0xa0f05050, 0x78443c3c, 0x25ba9f9f, 0x4be3a8a8);
590 &data_word(0xa2f35151, 0x5dfea3a3, 0x80c04040, 0x058a8f8f);
591 &data_word(0x3fad9292, 0x21bc9d9d, 0x70483838, 0xf104f5f5);
592 &data_word(0x63dfbcbc, 0x77c1b6b6, 0xaf75dada, 0x42632121);
593 &data_word(0x20301010, 0xe51affff, 0xfd0ef3f3, 0xbf6dd2d2);
594 &data_word(0x814ccdcd, 0x18140c0c, 0x26351313, 0xc32fecec);
595 &data_word(0xbee15f5f, 0x35a29797, 0x88cc4444, 0x2e391717);
596 &data_word(0x9357c4c4, 0x55f2a7a7, 0xfc827e7e, 0x7a473d3d);
597 &data_word(0xc8ac6464, 0xbae75d5d, 0x322b1919, 0xe6957373);
598 &data_word(0xc0a06060, 0x19988181, 0x9ed14f4f, 0xa37fdcdc);
599 &data_word(0x44662222, 0x547e2a2a, 0x3bab9090, 0x0b838888);
600 &data_word(0x8cca4646, 0xc729eeee, 0x6bd3b8b8, 0x283c1414);
601 &data_word(0xa779dede, 0xbce25e5e, 0x161d0b0b, 0xad76dbdb);
602 &data_word(0xdb3be0e0, 0x64563232, 0x744e3a3a, 0x141e0a0a);
603 &data_word(0x92db4949, 0x0c0a0606, 0x486c2424, 0xb8e45c5c);
604 &data_word(0x9f5dc2c2, 0xbd6ed3d3, 0x43efacac, 0xc4a66262);
605 &data_word(0x39a89191, 0x31a49595, 0xd337e4e4, 0xf28b7979);
606 &data_word(0xd532e7e7, 0x8b43c8c8, 0x6e593737, 0xdab76d6d);
607 &data_word(0x018c8d8d, 0xb164d5d5, 0x9cd24e4e, 0x49e0a9a9);
608 &data_word(0xd8b46c6c, 0xacfa5656, 0xf307f4f4, 0xcf25eaea);
609 &data_word(0xcaaf6565, 0xf48e7a7a, 0x47e9aeae, 0x10180808);
610 &data_word(0x6fd5baba, 0xf0887878, 0x4a6f2525, 0x5c722e2e);
611 &data_word(0x38241c1c, 0x57f1a6a6, 0x73c7b4b4, 0x9751c6c6);
612 &data_word(0xcb23e8e8, 0xa17cdddd, 0xe89c7474, 0x3e211f1f);
613 &data_word(0x96dd4b4b, 0x61dcbdbd, 0x0d868b8b, 0x0f858a8a);
614 &data_word(0xe0907070, 0x7c423e3e, 0x71c4b5b5, 0xccaa6666);
615 &data_word(0x90d84848, 0x06050303, 0xf701f6f6, 0x1c120e0e);
616 &data_word(0xc2a36161, 0x6a5f3535, 0xaef95757, 0x69d0b9b9);
617 &data_word(0x17918686, 0x9958c1c1, 0x3a271d1d, 0x27b99e9e);
618 &data_word(0xd938e1e1, 0xeb13f8f8, 0x2bb39898, 0x22331111);
619 &data_word(0xd2bb6969, 0xa970d9d9, 0x07898e8e, 0x33a79494);
620 &data_word(0x2db69b9b, 0x3c221e1e, 0x15928787, 0xc920e9e9);
621 &data_word(0x8749cece, 0xaaff5555, 0x50782828, 0xa57adfdf);
622 &data_word(0x038f8c8c, 0x59f8a1a1, 0x09808989, 0x1a170d0d);
623 &data_word(0x65dabfbf, 0xd731e6e6, 0x84c64242, 0xd0b86868);
624 &data_word(0x82c34141, 0x29b09999, 0x5a772d2d, 0x1e110f0f);
625 &data_word(0x7bcbb0b0, 0xa8fc5454, 0x6dd6bbbb, 0x2c3a1616);
626#Te4:
627 &data_word(0x63636363, 0x7c7c7c7c, 0x77777777, 0x7b7b7b7b);
628 &data_word(0xf2f2f2f2, 0x6b6b6b6b, 0x6f6f6f6f, 0xc5c5c5c5);
629 &data_word(0x30303030, 0x01010101, 0x67676767, 0x2b2b2b2b);
630 &data_word(0xfefefefe, 0xd7d7d7d7, 0xabababab, 0x76767676);
631 &data_word(0xcacacaca, 0x82828282, 0xc9c9c9c9, 0x7d7d7d7d);
632 &data_word(0xfafafafa, 0x59595959, 0x47474747, 0xf0f0f0f0);
633 &data_word(0xadadadad, 0xd4d4d4d4, 0xa2a2a2a2, 0xafafafaf);
634 &data_word(0x9c9c9c9c, 0xa4a4a4a4, 0x72727272, 0xc0c0c0c0);
635 &data_word(0xb7b7b7b7, 0xfdfdfdfd, 0x93939393, 0x26262626);
636 &data_word(0x36363636, 0x3f3f3f3f, 0xf7f7f7f7, 0xcccccccc);
637 &data_word(0x34343434, 0xa5a5a5a5, 0xe5e5e5e5, 0xf1f1f1f1);
638 &data_word(0x71717171, 0xd8d8d8d8, 0x31313131, 0x15151515);
639 &data_word(0x04040404, 0xc7c7c7c7, 0x23232323, 0xc3c3c3c3);
640 &data_word(0x18181818, 0x96969696, 0x05050505, 0x9a9a9a9a);
641 &data_word(0x07070707, 0x12121212, 0x80808080, 0xe2e2e2e2);
642 &data_word(0xebebebeb, 0x27272727, 0xb2b2b2b2, 0x75757575);
643 &data_word(0x09090909, 0x83838383, 0x2c2c2c2c, 0x1a1a1a1a);
644 &data_word(0x1b1b1b1b, 0x6e6e6e6e, 0x5a5a5a5a, 0xa0a0a0a0);
645 &data_word(0x52525252, 0x3b3b3b3b, 0xd6d6d6d6, 0xb3b3b3b3);
646 &data_word(0x29292929, 0xe3e3e3e3, 0x2f2f2f2f, 0x84848484);
647 &data_word(0x53535353, 0xd1d1d1d1, 0x00000000, 0xedededed);
648 &data_word(0x20202020, 0xfcfcfcfc, 0xb1b1b1b1, 0x5b5b5b5b);
649 &data_word(0x6a6a6a6a, 0xcbcbcbcb, 0xbebebebe, 0x39393939);
650 &data_word(0x4a4a4a4a, 0x4c4c4c4c, 0x58585858, 0xcfcfcfcf);
651 &data_word(0xd0d0d0d0, 0xefefefef, 0xaaaaaaaa, 0xfbfbfbfb);
652 &data_word(0x43434343, 0x4d4d4d4d, 0x33333333, 0x85858585);
653 &data_word(0x45454545, 0xf9f9f9f9, 0x02020202, 0x7f7f7f7f);
654 &data_word(0x50505050, 0x3c3c3c3c, 0x9f9f9f9f, 0xa8a8a8a8);
655 &data_word(0x51515151, 0xa3a3a3a3, 0x40404040, 0x8f8f8f8f);
656 &data_word(0x92929292, 0x9d9d9d9d, 0x38383838, 0xf5f5f5f5);
657 &data_word(0xbcbcbcbc, 0xb6b6b6b6, 0xdadadada, 0x21212121);
658 &data_word(0x10101010, 0xffffffff, 0xf3f3f3f3, 0xd2d2d2d2);
659 &data_word(0xcdcdcdcd, 0x0c0c0c0c, 0x13131313, 0xecececec);
660 &data_word(0x5f5f5f5f, 0x97979797, 0x44444444, 0x17171717);
661 &data_word(0xc4c4c4c4, 0xa7a7a7a7, 0x7e7e7e7e, 0x3d3d3d3d);
662 &data_word(0x64646464, 0x5d5d5d5d, 0x19191919, 0x73737373);
663 &data_word(0x60606060, 0x81818181, 0x4f4f4f4f, 0xdcdcdcdc);
664 &data_word(0x22222222, 0x2a2a2a2a, 0x90909090, 0x88888888);
665 &data_word(0x46464646, 0xeeeeeeee, 0xb8b8b8b8, 0x14141414);
666 &data_word(0xdededede, 0x5e5e5e5e, 0x0b0b0b0b, 0xdbdbdbdb);
667 &data_word(0xe0e0e0e0, 0x32323232, 0x3a3a3a3a, 0x0a0a0a0a);
668 &data_word(0x49494949, 0x06060606, 0x24242424, 0x5c5c5c5c);
669 &data_word(0xc2c2c2c2, 0xd3d3d3d3, 0xacacacac, 0x62626262);
670 &data_word(0x91919191, 0x95959595, 0xe4e4e4e4, 0x79797979);
671 &data_word(0xe7e7e7e7, 0xc8c8c8c8, 0x37373737, 0x6d6d6d6d);
672 &data_word(0x8d8d8d8d, 0xd5d5d5d5, 0x4e4e4e4e, 0xa9a9a9a9);
673 &data_word(0x6c6c6c6c, 0x56565656, 0xf4f4f4f4, 0xeaeaeaea);
674 &data_word(0x65656565, 0x7a7a7a7a, 0xaeaeaeae, 0x08080808);
675 &data_word(0xbabababa, 0x78787878, 0x25252525, 0x2e2e2e2e);
676 &data_word(0x1c1c1c1c, 0xa6a6a6a6, 0xb4b4b4b4, 0xc6c6c6c6);
677 &data_word(0xe8e8e8e8, 0xdddddddd, 0x74747474, 0x1f1f1f1f);
678 &data_word(0x4b4b4b4b, 0xbdbdbdbd, 0x8b8b8b8b, 0x8a8a8a8a);
679 &data_word(0x70707070, 0x3e3e3e3e, 0xb5b5b5b5, 0x66666666);
680 &data_word(0x48484848, 0x03030303, 0xf6f6f6f6, 0x0e0e0e0e);
681 &data_word(0x61616161, 0x35353535, 0x57575757, 0xb9b9b9b9);
682 &data_word(0x86868686, 0xc1c1c1c1, 0x1d1d1d1d, 0x9e9e9e9e);
683 &data_word(0xe1e1e1e1, 0xf8f8f8f8, 0x98989898, 0x11111111);
684 &data_word(0x69696969, 0xd9d9d9d9, 0x8e8e8e8e, 0x94949494);
685 &data_word(0x9b9b9b9b, 0x1e1e1e1e, 0x87878787, 0xe9e9e9e9);
686 &data_word(0xcececece, 0x55555555, 0x28282828, 0xdfdfdfdf);
687 &data_word(0x8c8c8c8c, 0xa1a1a1a1, 0x89898989, 0x0d0d0d0d);
688 &data_word(0xbfbfbfbf, 0xe6e6e6e6, 0x42424242, 0x68686868);
689 &data_word(0x41414141, 0x99999999, 0x2d2d2d2d, 0x0f0f0f0f);
690 &data_word(0xb0b0b0b0, 0x54545454, 0xbbbbbbbb, 0x16161616);
691#rcon:
692 &data_word(0x00000001, 0x00000002, 0x00000004, 0x00000008);
693 &data_word(0x00000010, 0x00000020, 0x00000040, 0x00000080);
694 &data_word(0x0000001b, 0x00000036);
695&function_end_B("AES_encrypt");
696
697#------------------------------------------------------------------#
698
699$s0="eax";
700$s1="ebx";
701$s2="ecx";
702$s3="edx";
703$key="edi";
704$acc="esi";
705
706sub decstep()
707{ my ($i,$td,@s) = @_;
708 my $tmp = $key;
709 my $out = $i==3?$s[0]:$acc;
710
711 # no instructions are reordered, as performance appears
712 # optimal... or rather that all attempts to reorder didn't
713 # result in better performance [which by the way is not a
714 # bit lower than ecryption].
715 if($i==3) { &mov ($key,&DWP(12,"esp")); }
716 else { &mov ($out,$s[0]); }
717 &and ($out,0xFF);
718 &mov ($out,&DWP(1024*0,$td,$out,4));
719
720 if ($i==3) { $tmp=$s[1]; }
721 &movz ($tmp,&HB($s[1]));
722 &xor ($out,&DWP(1024*1,$td,$tmp,4));
723
724 if ($i==3) { $tmp=$s[2]; &mov ($s[1],$acc); }
725 else { &mov ($tmp,$s[2]); }
726 &shr ($tmp,16);
727 &and ($tmp,0xFF);
728 &xor ($out,&DWP(1024*2,$td,$tmp,4));
729
730 if ($i==3) { $tmp=$s[3]; &mov ($s[2],&DWP(4,"esp")); }
731 else { &mov ($tmp,$s[3]); }
732 &shr ($tmp,24);
733 &xor ($out,&DWP(1024*3,$td,$tmp,4));
734 if ($i<2) { &mov (&DWP(4*$i,"esp"),$out); }
735 if ($i==3) { &mov ($s[3],&DWP(0,"esp")); }
736 &comment();
737}
738
739sub declast()
740{ my ($i,$td,@s)=@_;
741 my $tmp = $key;
742 my $out = $i==3?$s[0]:$acc;
743
744 if($i==3) { &mov ($key,&DWP(12,"esp")); }
745 else { &mov ($out,$s[0]); }
746 &and ($out,0xFF);
747 &mov ($out,&DWP(0,$td,$out,4));
748 &and ($out,0x000000ff);
749
750 if ($i==3) { $tmp=$s[1]; }
751 &movz ($tmp,&HB($s[1]));
752 &mov ($tmp,&DWP(0,$td,$tmp,4));
753 &and ($tmp,0x0000ff00);
754 &xor ($out,$tmp);
755
756 if ($i==3) { $tmp=$s[2]; &mov ($s[1],$acc); }
757 else { mov ($tmp,$s[2]); }
758 &shr ($tmp,16);
759 &and ($tmp,0xFF);
760 &mov ($tmp,&DWP(0,$td,$tmp,4));
761 &and ($tmp,0x00ff0000);
762 &xor ($out,$tmp);
763
764 if ($i==3) { $tmp=$s[3]; &mov ($s[2],&DWP(4,"esp")); }
765 else { &mov ($tmp,$s[3]); }
766 &shr ($tmp,24);
767 &mov ($tmp,&DWP(0,$td,$tmp,4));
768 &and ($tmp,0xff000000);
769 &xor ($out,$tmp);
770 if ($i<2) { &mov (&DWP(4*$i,"esp"),$out); }
771 if ($i==3) { &mov ($s[3],&DWP(0,"esp")); }
772}
773
774# void AES_decrypt (const void *inp,void *out,const AES_KEY *key);
775&public_label("AES_Td");
776&function_begin("AES_decrypt");
777 &mov ($acc,&wparam(0)); # load inp
778 &mov ($key,&wparam(2)); # load key
779
780 &call (&label("pic_point")); # make it PIC!
781 &set_label("pic_point");
782 &blindpop("ebp");
783 &lea ("ebp",&DWP(&label("AES_Td")."-".&label("pic_point"),"ebp"));
784
785 # allocate aligned stack frame
786 &mov ($s0,"esp");
787 &sub ("esp",20);
788 &and ("esp",-16);
789
790 &mov (&DWP(12,"esp"),$key); # save key
791 &mov (&DWP(16,"esp"),$s0); # save %esp
792
793 &mov ($s0,&DWP(0,$acc)); # load input data
794 &mov ($s1,&DWP(4,$acc));
795 &mov ($s2,&DWP(8,$acc));
796 &mov ($s3,&DWP(12,$acc));
797
798 &xor ($s0,&DWP(0,$key));
799 &xor ($s1,&DWP(4,$key));
800 &xor ($s2,&DWP(8,$key));
801 &xor ($s3,&DWP(12,$key));
802
803 &mov ($acc,&DWP(240,$key)); # load key->rounds
804
805 if ($small_footprint) {
806 &lea ($acc,&DWP(-2,$acc,$acc));
807 &lea ($acc,&DWP(0,$key,$acc,8));
808 &mov (&DWP(8,"esp"),$acc); # end of key schedule
809 &align (4);
810 &set_label("loop");
811 &decstep(0,"ebp",$s0,$s3,$s2,$s1);
812 &decstep(1,"ebp",$s1,$s0,$s3,$s2);
813 &decstep(2,"ebp",$s2,$s1,$s0,$s3);
814 &decstep(3,"ebp",$s3,$s2,$s1,$s0);
815 &add ($key,16); # advance rd_key
816 &xor ($s0,&DWP(0,$key));
817 &xor ($s1,&DWP(4,$key));
818 &xor ($s2,&DWP(8,$key));
819 &xor ($s3,&DWP(12,$key));
820 &cmp ($key,&DWP(8,"esp"));
821 &mov (&DWP(12,"esp"),$key);
822 &jb (&label("loop"));
823 }
824 else {
825 &cmp ($acc,10);
826 &jle (&label("10rounds"));
827 &cmp ($acc,12);
828 &jle (&label("12rounds"));
829
830 &set_label("14rounds");
831 for ($i=1;$i<3;$i++) {
832 &decstep(0,"ebp",$s0,$s3,$s2,$s1);
833 &decstep(1,"ebp",$s1,$s0,$s3,$s2);
834 &decstep(2,"ebp",$s2,$s1,$s0,$s3);
835 &decstep(3,"ebp",$s3,$s2,$s1,$s0);
836 &xor ($s0,&DWP(16*$i+0,$key));
837 &xor ($s1,&DWP(16*$i+4,$key));
838 &xor ($s2,&DWP(16*$i+8,$key));
839 &xor ($s3,&DWP(16*$i+12,$key));
840 }
841 &add ($key,32);
842 &mov (&DWP(12,"esp"),$key); # advance rd_key
843 &set_label("12rounds");
844 for ($i=1;$i<3;$i++) {
845 &decstep(0,"ebp",$s0,$s3,$s2,$s1);
846 &decstep(1,"ebp",$s1,$s0,$s3,$s2);
847 &decstep(2,"ebp",$s2,$s1,$s0,$s3);
848 &decstep(3,"ebp",$s3,$s2,$s1,$s0);
849 &xor ($s0,&DWP(16*$i+0,$key));
850 &xor ($s1,&DWP(16*$i+4,$key));
851 &xor ($s2,&DWP(16*$i+8,$key));
852 &xor ($s3,&DWP(16*$i+12,$key));
853 }
854 &add ($key,32);
855 &mov (&DWP(12,"esp"),$key); # advance rd_key
856 &set_label("10rounds");
857 for ($i=1;$i<10;$i++) {
858 &decstep(0,"ebp",$s0,$s3,$s2,$s1);
859 &decstep(1,"ebp",$s1,$s0,$s3,$s2);
860 &decstep(2,"ebp",$s2,$s1,$s0,$s3);
861 &decstep(3,"ebp",$s3,$s2,$s1,$s0);
862 &xor ($s0,&DWP(16*$i+0,$key));
863 &xor ($s1,&DWP(16*$i+4,$key));
864 &xor ($s2,&DWP(16*$i+8,$key));
865 &xor ($s3,&DWP(16*$i+12,$key));
866 }
867 }
868
869 &add ("ebp",4*1024); # skip to Te4
870 &declast(0,"ebp",$s0,$s3,$s2,$s1);
871 &declast(1,"ebp",$s1,$s0,$s3,$s2);
872 &declast(2,"ebp",$s2,$s1,$s0,$s3);
873 &declast(3,"ebp",$s3,$s2,$s1,$s0);
874
875 &mov ("esp",&DWP(16,"esp")); # restore %esp
876 &add ($key,$small_footprint?16:160);
877 &xor ($s0,&DWP(0,$key));
878 &xor ($s1,&DWP(4,$key));
879 &xor ($s2,&DWP(8,$key));
880 &xor ($s3,&DWP(12,$key));
881
882 &mov ($key,&wparam(1)); # load out
883 &mov (&DWP(0,$key),$s0); # write output data
884 &mov (&DWP(4,$key),$s1);
885 &mov (&DWP(8,$key),$s2);
886 &mov (&DWP(12,$key),$s3);
887
888 &pop ("edi");
889 &pop ("esi");
890 &pop ("ebx");
891 &pop ("ebp");
892 &ret ();
893
894&set_label("AES_Td",64); # Yes! I keep it in the code segment!
895 &data_word(0x50a7f451, 0x5365417e, 0xc3a4171a, 0x965e273a);
896 &data_word(0xcb6bab3b, 0xf1459d1f, 0xab58faac, 0x9303e34b);
897 &data_word(0x55fa3020, 0xf66d76ad, 0x9176cc88, 0x254c02f5);
898 &data_word(0xfcd7e54f, 0xd7cb2ac5, 0x80443526, 0x8fa362b5);
899 &data_word(0x495ab1de, 0x671bba25, 0x980eea45, 0xe1c0fe5d);
900 &data_word(0x02752fc3, 0x12f04c81, 0xa397468d, 0xc6f9d36b);
901 &data_word(0xe75f8f03, 0x959c9215, 0xeb7a6dbf, 0xda595295);
902 &data_word(0x2d83bed4, 0xd3217458, 0x2969e049, 0x44c8c98e);
903 &data_word(0x6a89c275, 0x78798ef4, 0x6b3e5899, 0xdd71b927);
904 &data_word(0xb64fe1be, 0x17ad88f0, 0x66ac20c9, 0xb43ace7d);
905 &data_word(0x184adf63, 0x82311ae5, 0x60335197, 0x457f5362);
906 &data_word(0xe07764b1, 0x84ae6bbb, 0x1ca081fe, 0x942b08f9);
907 &data_word(0x58684870, 0x19fd458f, 0x876cde94, 0xb7f87b52);
908 &data_word(0x23d373ab, 0xe2024b72, 0x578f1fe3, 0x2aab5566);
909 &data_word(0x0728ebb2, 0x03c2b52f, 0x9a7bc586, 0xa50837d3);
910 &data_word(0xf2872830, 0xb2a5bf23, 0xba6a0302, 0x5c8216ed);
911 &data_word(0x2b1ccf8a, 0x92b479a7, 0xf0f207f3, 0xa1e2694e);
912 &data_word(0xcdf4da65, 0xd5be0506, 0x1f6234d1, 0x8afea6c4);
913 &data_word(0x9d532e34, 0xa055f3a2, 0x32e18a05, 0x75ebf6a4);
914 &data_word(0x39ec830b, 0xaaef6040, 0x069f715e, 0x51106ebd);
915 &data_word(0xf98a213e, 0x3d06dd96, 0xae053edd, 0x46bde64d);
916 &data_word(0xb58d5491, 0x055dc471, 0x6fd40604, 0xff155060);
917 &data_word(0x24fb9819, 0x97e9bdd6, 0xcc434089, 0x779ed967);
918 &data_word(0xbd42e8b0, 0x888b8907, 0x385b19e7, 0xdbeec879);
919 &data_word(0x470a7ca1, 0xe90f427c, 0xc91e84f8, 0x00000000);
920 &data_word(0x83868009, 0x48ed2b32, 0xac70111e, 0x4e725a6c);
921 &data_word(0xfbff0efd, 0x5638850f, 0x1ed5ae3d, 0x27392d36);
922 &data_word(0x64d90f0a, 0x21a65c68, 0xd1545b9b, 0x3a2e3624);
923 &data_word(0xb1670a0c, 0x0fe75793, 0xd296eeb4, 0x9e919b1b);
924 &data_word(0x4fc5c080, 0xa220dc61, 0x694b775a, 0x161a121c);
925 &data_word(0x0aba93e2, 0xe52aa0c0, 0x43e0223c, 0x1d171b12);
926 &data_word(0x0b0d090e, 0xadc78bf2, 0xb9a8b62d, 0xc8a91e14);
927 &data_word(0x8519f157, 0x4c0775af, 0xbbdd99ee, 0xfd607fa3);
928 &data_word(0x9f2601f7, 0xbcf5725c, 0xc53b6644, 0x347efb5b);
929 &data_word(0x7629438b, 0xdcc623cb, 0x68fcedb6, 0x63f1e4b8);
930 &data_word(0xcadc31d7, 0x10856342, 0x40229713, 0x2011c684);
931 &data_word(0x7d244a85, 0xf83dbbd2, 0x1132f9ae, 0x6da129c7);
932 &data_word(0x4b2f9e1d, 0xf330b2dc, 0xec52860d, 0xd0e3c177);
933 &data_word(0x6c16b32b, 0x99b970a9, 0xfa489411, 0x2264e947);
934 &data_word(0xc48cfca8, 0x1a3ff0a0, 0xd82c7d56, 0xef903322);
935 &data_word(0xc74e4987, 0xc1d138d9, 0xfea2ca8c, 0x360bd498);
936 &data_word(0xcf81f5a6, 0x28de7aa5, 0x268eb7da, 0xa4bfad3f);
937 &data_word(0xe49d3a2c, 0x0d927850, 0x9bcc5f6a, 0x62467e54);
938 &data_word(0xc2138df6, 0xe8b8d890, 0x5ef7392e, 0xf5afc382);
939 &data_word(0xbe805d9f, 0x7c93d069, 0xa92dd56f, 0xb31225cf);
940 &data_word(0x3b99acc8, 0xa77d1810, 0x6e639ce8, 0x7bbb3bdb);
941 &data_word(0x097826cd, 0xf418596e, 0x01b79aec, 0xa89a4f83);
942 &data_word(0x656e95e6, 0x7ee6ffaa, 0x08cfbc21, 0xe6e815ef);
943 &data_word(0xd99be7ba, 0xce366f4a, 0xd4099fea, 0xd67cb029);
944 &data_word(0xafb2a431, 0x31233f2a, 0x3094a5c6, 0xc066a235);
945 &data_word(0x37bc4e74, 0xa6ca82fc, 0xb0d090e0, 0x15d8a733);
946 &data_word(0x4a9804f1, 0xf7daec41, 0x0e50cd7f, 0x2ff69117);
947 &data_word(0x8dd64d76, 0x4db0ef43, 0x544daacc, 0xdf0496e4);
948 &data_word(0xe3b5d19e, 0x1b886a4c, 0xb81f2cc1, 0x7f516546);
949 &data_word(0x04ea5e9d, 0x5d358c01, 0x737487fa, 0x2e410bfb);
950 &data_word(0x5a1d67b3, 0x52d2db92, 0x335610e9, 0x1347d66d);
951 &data_word(0x8c61d79a, 0x7a0ca137, 0x8e14f859, 0x893c13eb);
952 &data_word(0xee27a9ce, 0x35c961b7, 0xede51ce1, 0x3cb1477a);
953 &data_word(0x59dfd29c, 0x3f73f255, 0x79ce1418, 0xbf37c773);
954 &data_word(0xeacdf753, 0x5baafd5f, 0x146f3ddf, 0x86db4478);
955 &data_word(0x81f3afca, 0x3ec468b9, 0x2c342438, 0x5f40a3c2);
956 &data_word(0x72c31d16, 0x0c25e2bc, 0x8b493c28, 0x41950dff);
957 &data_word(0x7101a839, 0xdeb30c08, 0x9ce4b4d8, 0x90c15664);
958 &data_word(0x6184cb7b, 0x70b632d5, 0x745c6c48, 0x4257b8d0);
959#Td1:
960 &data_word(0xa7f45150, 0x65417e53, 0xa4171ac3, 0x5e273a96);
961 &data_word(0x6bab3bcb, 0x459d1ff1, 0x58faacab, 0x03e34b93);
962 &data_word(0xfa302055, 0x6d76adf6, 0x76cc8891, 0x4c02f525);
963 &data_word(0xd7e54ffc, 0xcb2ac5d7, 0x44352680, 0xa362b58f);
964 &data_word(0x5ab1de49, 0x1bba2567, 0x0eea4598, 0xc0fe5de1);
965 &data_word(0x752fc302, 0xf04c8112, 0x97468da3, 0xf9d36bc6);
966 &data_word(0x5f8f03e7, 0x9c921595, 0x7a6dbfeb, 0x595295da);
967 &data_word(0x83bed42d, 0x217458d3, 0x69e04929, 0xc8c98e44);
968 &data_word(0x89c2756a, 0x798ef478, 0x3e58996b, 0x71b927dd);
969 &data_word(0x4fe1beb6, 0xad88f017, 0xac20c966, 0x3ace7db4);
970 &data_word(0x4adf6318, 0x311ae582, 0x33519760, 0x7f536245);
971 &data_word(0x7764b1e0, 0xae6bbb84, 0xa081fe1c, 0x2b08f994);
972 &data_word(0x68487058, 0xfd458f19, 0x6cde9487, 0xf87b52b7);
973 &data_word(0xd373ab23, 0x024b72e2, 0x8f1fe357, 0xab55662a);
974 &data_word(0x28ebb207, 0xc2b52f03, 0x7bc5869a, 0x0837d3a5);
975 &data_word(0x872830f2, 0xa5bf23b2, 0x6a0302ba, 0x8216ed5c);
976 &data_word(0x1ccf8a2b, 0xb479a792, 0xf207f3f0, 0xe2694ea1);
977 &data_word(0xf4da65cd, 0xbe0506d5, 0x6234d11f, 0xfea6c48a);
978 &data_word(0x532e349d, 0x55f3a2a0, 0xe18a0532, 0xebf6a475);
979 &data_word(0xec830b39, 0xef6040aa, 0x9f715e06, 0x106ebd51);
980 &data_word(0x8a213ef9, 0x06dd963d, 0x053eddae, 0xbde64d46);
981 &data_word(0x8d5491b5, 0x5dc47105, 0xd406046f, 0x155060ff);
982 &data_word(0xfb981924, 0xe9bdd697, 0x434089cc, 0x9ed96777);
983 &data_word(0x42e8b0bd, 0x8b890788, 0x5b19e738, 0xeec879db);
984 &data_word(0x0a7ca147, 0x0f427ce9, 0x1e84f8c9, 0x00000000);
985 &data_word(0x86800983, 0xed2b3248, 0x70111eac, 0x725a6c4e);
986 &data_word(0xff0efdfb, 0x38850f56, 0xd5ae3d1e, 0x392d3627);
987 &data_word(0xd90f0a64, 0xa65c6821, 0x545b9bd1, 0x2e36243a);
988 &data_word(0x670a0cb1, 0xe757930f, 0x96eeb4d2, 0x919b1b9e);
989 &data_word(0xc5c0804f, 0x20dc61a2, 0x4b775a69, 0x1a121c16);
990 &data_word(0xba93e20a, 0x2aa0c0e5, 0xe0223c43, 0x171b121d);
991 &data_word(0x0d090e0b, 0xc78bf2ad, 0xa8b62db9, 0xa91e14c8);
992 &data_word(0x19f15785, 0x0775af4c, 0xdd99eebb, 0x607fa3fd);
993 &data_word(0x2601f79f, 0xf5725cbc, 0x3b6644c5, 0x7efb5b34);
994 &data_word(0x29438b76, 0xc623cbdc, 0xfcedb668, 0xf1e4b863);
995 &data_word(0xdc31d7ca, 0x85634210, 0x22971340, 0x11c68420);
996 &data_word(0x244a857d, 0x3dbbd2f8, 0x32f9ae11, 0xa129c76d);
997 &data_word(0x2f9e1d4b, 0x30b2dcf3, 0x52860dec, 0xe3c177d0);
998 &data_word(0x16b32b6c, 0xb970a999, 0x489411fa, 0x64e94722);
999 &data_word(0x8cfca8c4, 0x3ff0a01a, 0x2c7d56d8, 0x903322ef);
1000 &data_word(0x4e4987c7, 0xd138d9c1, 0xa2ca8cfe, 0x0bd49836);
1001 &data_word(0x81f5a6cf, 0xde7aa528, 0x8eb7da26, 0xbfad3fa4);
1002 &data_word(0x9d3a2ce4, 0x9278500d, 0xcc5f6a9b, 0x467e5462);
1003 &data_word(0x138df6c2, 0xb8d890e8, 0xf7392e5e, 0xafc382f5);
1004 &data_word(0x805d9fbe, 0x93d0697c, 0x2dd56fa9, 0x1225cfb3);
1005 &data_word(0x99acc83b, 0x7d1810a7, 0x639ce86e, 0xbb3bdb7b);
1006 &data_word(0x7826cd09, 0x18596ef4, 0xb79aec01, 0x9a4f83a8);
1007 &data_word(0x6e95e665, 0xe6ffaa7e, 0xcfbc2108, 0xe815efe6);
1008 &data_word(0x9be7bad9, 0x366f4ace, 0x099fead4, 0x7cb029d6);
1009 &data_word(0xb2a431af, 0x233f2a31, 0x94a5c630, 0x66a235c0);
1010 &data_word(0xbc4e7437, 0xca82fca6, 0xd090e0b0, 0xd8a73315);
1011 &data_word(0x9804f14a, 0xdaec41f7, 0x50cd7f0e, 0xf691172f);
1012 &data_word(0xd64d768d, 0xb0ef434d, 0x4daacc54, 0x0496e4df);
1013 &data_word(0xb5d19ee3, 0x886a4c1b, 0x1f2cc1b8, 0x5165467f);
1014 &data_word(0xea5e9d04, 0x358c015d, 0x7487fa73, 0x410bfb2e);
1015 &data_word(0x1d67b35a, 0xd2db9252, 0x5610e933, 0x47d66d13);
1016 &data_word(0x61d79a8c, 0x0ca1377a, 0x14f8598e, 0x3c13eb89);
1017 &data_word(0x27a9ceee, 0xc961b735, 0xe51ce1ed, 0xb1477a3c);
1018 &data_word(0xdfd29c59, 0x73f2553f, 0xce141879, 0x37c773bf);
1019 &data_word(0xcdf753ea, 0xaafd5f5b, 0x6f3ddf14, 0xdb447886);
1020 &data_word(0xf3afca81, 0xc468b93e, 0x3424382c, 0x40a3c25f);
1021 &data_word(0xc31d1672, 0x25e2bc0c, 0x493c288b, 0x950dff41);
1022 &data_word(0x01a83971, 0xb30c08de, 0xe4b4d89c, 0xc1566490);
1023 &data_word(0x84cb7b61, 0xb632d570, 0x5c6c4874, 0x57b8d042);
1024#Td2:
1025 &data_word(0xf45150a7, 0x417e5365, 0x171ac3a4, 0x273a965e);
1026 &data_word(0xab3bcb6b, 0x9d1ff145, 0xfaacab58, 0xe34b9303);
1027 &data_word(0x302055fa, 0x76adf66d, 0xcc889176, 0x02f5254c);
1028 &data_word(0xe54ffcd7, 0x2ac5d7cb, 0x35268044, 0x62b58fa3);
1029 &data_word(0xb1de495a, 0xba25671b, 0xea45980e, 0xfe5de1c0);
1030 &data_word(0x2fc30275, 0x4c8112f0, 0x468da397, 0xd36bc6f9);
1031 &data_word(0x8f03e75f, 0x9215959c, 0x6dbfeb7a, 0x5295da59);
1032 &data_word(0xbed42d83, 0x7458d321, 0xe0492969, 0xc98e44c8);
1033 &data_word(0xc2756a89, 0x8ef47879, 0x58996b3e, 0xb927dd71);
1034 &data_word(0xe1beb64f, 0x88f017ad, 0x20c966ac, 0xce7db43a);
1035 &data_word(0xdf63184a, 0x1ae58231, 0x51976033, 0x5362457f);
1036 &data_word(0x64b1e077, 0x6bbb84ae, 0x81fe1ca0, 0x08f9942b);
1037 &data_word(0x48705868, 0x458f19fd, 0xde94876c, 0x7b52b7f8);
1038 &data_word(0x73ab23d3, 0x4b72e202, 0x1fe3578f, 0x55662aab);
1039 &data_word(0xebb20728, 0xb52f03c2, 0xc5869a7b, 0x37d3a508);
1040 &data_word(0x2830f287, 0xbf23b2a5, 0x0302ba6a, 0x16ed5c82);
1041 &data_word(0xcf8a2b1c, 0x79a792b4, 0x07f3f0f2, 0x694ea1e2);
1042 &data_word(0xda65cdf4, 0x0506d5be, 0x34d11f62, 0xa6c48afe);
1043 &data_word(0x2e349d53, 0xf3a2a055, 0x8a0532e1, 0xf6a475eb);
1044 &data_word(0x830b39ec, 0x6040aaef, 0x715e069f, 0x6ebd5110);
1045 &data_word(0x213ef98a, 0xdd963d06, 0x3eddae05, 0xe64d46bd);
1046 &data_word(0x5491b58d, 0xc471055d, 0x06046fd4, 0x5060ff15);
1047 &data_word(0x981924fb, 0xbdd697e9, 0x4089cc43, 0xd967779e);
1048 &data_word(0xe8b0bd42, 0x8907888b, 0x19e7385b, 0xc879dbee);
1049 &data_word(0x7ca1470a, 0x427ce90f, 0x84f8c91e, 0x00000000);
1050 &data_word(0x80098386, 0x2b3248ed, 0x111eac70, 0x5a6c4e72);
1051 &data_word(0x0efdfbff, 0x850f5638, 0xae3d1ed5, 0x2d362739);
1052 &data_word(0x0f0a64d9, 0x5c6821a6, 0x5b9bd154, 0x36243a2e);
1053 &data_word(0x0a0cb167, 0x57930fe7, 0xeeb4d296, 0x9b1b9e91);
1054 &data_word(0xc0804fc5, 0xdc61a220, 0x775a694b, 0x121c161a);
1055 &data_word(0x93e20aba, 0xa0c0e52a, 0x223c43e0, 0x1b121d17);
1056 &data_word(0x090e0b0d, 0x8bf2adc7, 0xb62db9a8, 0x1e14c8a9);
1057 &data_word(0xf1578519, 0x75af4c07, 0x99eebbdd, 0x7fa3fd60);
1058 &data_word(0x01f79f26, 0x725cbcf5, 0x6644c53b, 0xfb5b347e);
1059 &data_word(0x438b7629, 0x23cbdcc6, 0xedb668fc, 0xe4b863f1);
1060 &data_word(0x31d7cadc, 0x63421085, 0x97134022, 0xc6842011);
1061 &data_word(0x4a857d24, 0xbbd2f83d, 0xf9ae1132, 0x29c76da1);
1062 &data_word(0x9e1d4b2f, 0xb2dcf330, 0x860dec52, 0xc177d0e3);
1063 &data_word(0xb32b6c16, 0x70a999b9, 0x9411fa48, 0xe9472264);
1064 &data_word(0xfca8c48c, 0xf0a01a3f, 0x7d56d82c, 0x3322ef90);
1065 &data_word(0x4987c74e, 0x38d9c1d1, 0xca8cfea2, 0xd498360b);
1066 &data_word(0xf5a6cf81, 0x7aa528de, 0xb7da268e, 0xad3fa4bf);
1067 &data_word(0x3a2ce49d, 0x78500d92, 0x5f6a9bcc, 0x7e546246);
1068 &data_word(0x8df6c213, 0xd890e8b8, 0x392e5ef7, 0xc382f5af);
1069 &data_word(0x5d9fbe80, 0xd0697c93, 0xd56fa92d, 0x25cfb312);
1070 &data_word(0xacc83b99, 0x1810a77d, 0x9ce86e63, 0x3bdb7bbb);
1071 &data_word(0x26cd0978, 0x596ef418, 0x9aec01b7, 0x4f83a89a);
1072 &data_word(0x95e6656e, 0xffaa7ee6, 0xbc2108cf, 0x15efe6e8);
1073 &data_word(0xe7bad99b, 0x6f4ace36, 0x9fead409, 0xb029d67c);
1074 &data_word(0xa431afb2, 0x3f2a3123, 0xa5c63094, 0xa235c066);
1075 &data_word(0x4e7437bc, 0x82fca6ca, 0x90e0b0d0, 0xa73315d8);
1076 &data_word(0x04f14a98, 0xec41f7da, 0xcd7f0e50, 0x91172ff6);
1077 &data_word(0x4d768dd6, 0xef434db0, 0xaacc544d, 0x96e4df04);
1078 &data_word(0xd19ee3b5, 0x6a4c1b88, 0x2cc1b81f, 0x65467f51);
1079 &data_word(0x5e9d04ea, 0x8c015d35, 0x87fa7374, 0x0bfb2e41);
1080 &data_word(0x67b35a1d, 0xdb9252d2, 0x10e93356, 0xd66d1347);
1081 &data_word(0xd79a8c61, 0xa1377a0c, 0xf8598e14, 0x13eb893c);
1082 &data_word(0xa9ceee27, 0x61b735c9, 0x1ce1ede5, 0x477a3cb1);
1083 &data_word(0xd29c59df, 0xf2553f73, 0x141879ce, 0xc773bf37);
1084 &data_word(0xf753eacd, 0xfd5f5baa, 0x3ddf146f, 0x447886db);
1085 &data_word(0xafca81f3, 0x68b93ec4, 0x24382c34, 0xa3c25f40);
1086 &data_word(0x1d1672c3, 0xe2bc0c25, 0x3c288b49, 0x0dff4195);
1087 &data_word(0xa8397101, 0x0c08deb3, 0xb4d89ce4, 0x566490c1);
1088 &data_word(0xcb7b6184, 0x32d570b6, 0x6c48745c, 0xb8d04257);
1089#Td3:
1090 &data_word(0x5150a7f4, 0x7e536541, 0x1ac3a417, 0x3a965e27);
1091 &data_word(0x3bcb6bab, 0x1ff1459d, 0xacab58fa, 0x4b9303e3);
1092 &data_word(0x2055fa30, 0xadf66d76, 0x889176cc, 0xf5254c02);
1093 &data_word(0x4ffcd7e5, 0xc5d7cb2a, 0x26804435, 0xb58fa362);
1094 &data_word(0xde495ab1, 0x25671bba, 0x45980eea, 0x5de1c0fe);
1095 &data_word(0xc302752f, 0x8112f04c, 0x8da39746, 0x6bc6f9d3);
1096 &data_word(0x03e75f8f, 0x15959c92, 0xbfeb7a6d, 0x95da5952);
1097 &data_word(0xd42d83be, 0x58d32174, 0x492969e0, 0x8e44c8c9);
1098 &data_word(0x756a89c2, 0xf478798e, 0x996b3e58, 0x27dd71b9);
1099 &data_word(0xbeb64fe1, 0xf017ad88, 0xc966ac20, 0x7db43ace);
1100 &data_word(0x63184adf, 0xe582311a, 0x97603351, 0x62457f53);
1101 &data_word(0xb1e07764, 0xbb84ae6b, 0xfe1ca081, 0xf9942b08);
1102 &data_word(0x70586848, 0x8f19fd45, 0x94876cde, 0x52b7f87b);
1103 &data_word(0xab23d373, 0x72e2024b, 0xe3578f1f, 0x662aab55);
1104 &data_word(0xb20728eb, 0x2f03c2b5, 0x869a7bc5, 0xd3a50837);
1105 &data_word(0x30f28728, 0x23b2a5bf, 0x02ba6a03, 0xed5c8216);
1106 &data_word(0x8a2b1ccf, 0xa792b479, 0xf3f0f207, 0x4ea1e269);
1107 &data_word(0x65cdf4da, 0x06d5be05, 0xd11f6234, 0xc48afea6);
1108 &data_word(0x349d532e, 0xa2a055f3, 0x0532e18a, 0xa475ebf6);
1109 &data_word(0x0b39ec83, 0x40aaef60, 0x5e069f71, 0xbd51106e);
1110 &data_word(0x3ef98a21, 0x963d06dd, 0xddae053e, 0x4d46bde6);
1111 &data_word(0x91b58d54, 0x71055dc4, 0x046fd406, 0x60ff1550);
1112 &data_word(0x1924fb98, 0xd697e9bd, 0x89cc4340, 0x67779ed9);
1113 &data_word(0xb0bd42e8, 0x07888b89, 0xe7385b19, 0x79dbeec8);
1114 &data_word(0xa1470a7c, 0x7ce90f42, 0xf8c91e84, 0x00000000);
1115 &data_word(0x09838680, 0x3248ed2b, 0x1eac7011, 0x6c4e725a);
1116 &data_word(0xfdfbff0e, 0x0f563885, 0x3d1ed5ae, 0x3627392d);
1117 &data_word(0x0a64d90f, 0x6821a65c, 0x9bd1545b, 0x243a2e36);
1118 &data_word(0x0cb1670a, 0x930fe757, 0xb4d296ee, 0x1b9e919b);
1119 &data_word(0x804fc5c0, 0x61a220dc, 0x5a694b77, 0x1c161a12);
1120 &data_word(0xe20aba93, 0xc0e52aa0, 0x3c43e022, 0x121d171b);
1121 &data_word(0x0e0b0d09, 0xf2adc78b, 0x2db9a8b6, 0x14c8a91e);
1122 &data_word(0x578519f1, 0xaf4c0775, 0xeebbdd99, 0xa3fd607f);
1123 &data_word(0xf79f2601, 0x5cbcf572, 0x44c53b66, 0x5b347efb);
1124 &data_word(0x8b762943, 0xcbdcc623, 0xb668fced, 0xb863f1e4);
1125 &data_word(0xd7cadc31, 0x42108563, 0x13402297, 0x842011c6);
1126 &data_word(0x857d244a, 0xd2f83dbb, 0xae1132f9, 0xc76da129);
1127 &data_word(0x1d4b2f9e, 0xdcf330b2, 0x0dec5286, 0x77d0e3c1);
1128 &data_word(0x2b6c16b3, 0xa999b970, 0x11fa4894, 0x472264e9);
1129 &data_word(0xa8c48cfc, 0xa01a3ff0, 0x56d82c7d, 0x22ef9033);
1130 &data_word(0x87c74e49, 0xd9c1d138, 0x8cfea2ca, 0x98360bd4);
1131 &data_word(0xa6cf81f5, 0xa528de7a, 0xda268eb7, 0x3fa4bfad);
1132 &data_word(0x2ce49d3a, 0x500d9278, 0x6a9bcc5f, 0x5462467e);
1133 &data_word(0xf6c2138d, 0x90e8b8d8, 0x2e5ef739, 0x82f5afc3);
1134 &data_word(0x9fbe805d, 0x697c93d0, 0x6fa92dd5, 0xcfb31225);
1135 &data_word(0xc83b99ac, 0x10a77d18, 0xe86e639c, 0xdb7bbb3b);
1136 &data_word(0xcd097826, 0x6ef41859, 0xec01b79a, 0x83a89a4f);
1137 &data_word(0xe6656e95, 0xaa7ee6ff, 0x2108cfbc, 0xefe6e815);
1138 &data_word(0xbad99be7, 0x4ace366f, 0xead4099f, 0x29d67cb0);
1139 &data_word(0x31afb2a4, 0x2a31233f, 0xc63094a5, 0x35c066a2);
1140 &data_word(0x7437bc4e, 0xfca6ca82, 0xe0b0d090, 0x3315d8a7);
1141 &data_word(0xf14a9804, 0x41f7daec, 0x7f0e50cd, 0x172ff691);
1142 &data_word(0x768dd64d, 0x434db0ef, 0xcc544daa, 0xe4df0496);
1143 &data_word(0x9ee3b5d1, 0x4c1b886a, 0xc1b81f2c, 0x467f5165);
1144 &data_word(0x9d04ea5e, 0x015d358c, 0xfa737487, 0xfb2e410b);
1145 &data_word(0xb35a1d67, 0x9252d2db, 0xe9335610, 0x6d1347d6);
1146 &data_word(0x9a8c61d7, 0x377a0ca1, 0x598e14f8, 0xeb893c13);
1147 &data_word(0xceee27a9, 0xb735c961, 0xe1ede51c, 0x7a3cb147);
1148 &data_word(0x9c59dfd2, 0x553f73f2, 0x1879ce14, 0x73bf37c7);
1149 &data_word(0x53eacdf7, 0x5f5baafd, 0xdf146f3d, 0x7886db44);
1150 &data_word(0xca81f3af, 0xb93ec468, 0x382c3424, 0xc25f40a3);
1151 &data_word(0x1672c31d, 0xbc0c25e2, 0x288b493c, 0xff41950d);
1152 &data_word(0x397101a8, 0x08deb30c, 0xd89ce4b4, 0x6490c156);
1153 &data_word(0x7b6184cb, 0xd570b632, 0x48745c6c, 0xd04257b8);
1154#Td4:
1155 &data_word(0x52525252, 0x09090909, 0x6a6a6a6a, 0xd5d5d5d5);
1156 &data_word(0x30303030, 0x36363636, 0xa5a5a5a5, 0x38383838);
1157 &data_word(0xbfbfbfbf, 0x40404040, 0xa3a3a3a3, 0x9e9e9e9e);
1158 &data_word(0x81818181, 0xf3f3f3f3, 0xd7d7d7d7, 0xfbfbfbfb);
1159 &data_word(0x7c7c7c7c, 0xe3e3e3e3, 0x39393939, 0x82828282);
1160 &data_word(0x9b9b9b9b, 0x2f2f2f2f, 0xffffffff, 0x87878787);
1161 &data_word(0x34343434, 0x8e8e8e8e, 0x43434343, 0x44444444);
1162 &data_word(0xc4c4c4c4, 0xdededede, 0xe9e9e9e9, 0xcbcbcbcb);
1163 &data_word(0x54545454, 0x7b7b7b7b, 0x94949494, 0x32323232);
1164 &data_word(0xa6a6a6a6, 0xc2c2c2c2, 0x23232323, 0x3d3d3d3d);
1165 &data_word(0xeeeeeeee, 0x4c4c4c4c, 0x95959595, 0x0b0b0b0b);
1166 &data_word(0x42424242, 0xfafafafa, 0xc3c3c3c3, 0x4e4e4e4e);
1167 &data_word(0x08080808, 0x2e2e2e2e, 0xa1a1a1a1, 0x66666666);
1168 &data_word(0x28282828, 0xd9d9d9d9, 0x24242424, 0xb2b2b2b2);
1169 &data_word(0x76767676, 0x5b5b5b5b, 0xa2a2a2a2, 0x49494949);
1170 &data_word(0x6d6d6d6d, 0x8b8b8b8b, 0xd1d1d1d1, 0x25252525);
1171 &data_word(0x72727272, 0xf8f8f8f8, 0xf6f6f6f6, 0x64646464);
1172 &data_word(0x86868686, 0x68686868, 0x98989898, 0x16161616);
1173 &data_word(0xd4d4d4d4, 0xa4a4a4a4, 0x5c5c5c5c, 0xcccccccc);
1174 &data_word(0x5d5d5d5d, 0x65656565, 0xb6b6b6b6, 0x92929292);
1175 &data_word(0x6c6c6c6c, 0x70707070, 0x48484848, 0x50505050);
1176 &data_word(0xfdfdfdfd, 0xedededed, 0xb9b9b9b9, 0xdadadada);
1177 &data_word(0x5e5e5e5e, 0x15151515, 0x46464646, 0x57575757);
1178 &data_word(0xa7a7a7a7, 0x8d8d8d8d, 0x9d9d9d9d, 0x84848484);
1179 &data_word(0x90909090, 0xd8d8d8d8, 0xabababab, 0x00000000);
1180 &data_word(0x8c8c8c8c, 0xbcbcbcbc, 0xd3d3d3d3, 0x0a0a0a0a);
1181 &data_word(0xf7f7f7f7, 0xe4e4e4e4, 0x58585858, 0x05050505);
1182 &data_word(0xb8b8b8b8, 0xb3b3b3b3, 0x45454545, 0x06060606);
1183 &data_word(0xd0d0d0d0, 0x2c2c2c2c, 0x1e1e1e1e, 0x8f8f8f8f);
1184 &data_word(0xcacacaca, 0x3f3f3f3f, 0x0f0f0f0f, 0x02020202);
1185 &data_word(0xc1c1c1c1, 0xafafafaf, 0xbdbdbdbd, 0x03030303);
1186 &data_word(0x01010101, 0x13131313, 0x8a8a8a8a, 0x6b6b6b6b);
1187 &data_word(0x3a3a3a3a, 0x91919191, 0x11111111, 0x41414141);
1188 &data_word(0x4f4f4f4f, 0x67676767, 0xdcdcdcdc, 0xeaeaeaea);
1189 &data_word(0x97979797, 0xf2f2f2f2, 0xcfcfcfcf, 0xcececece);
1190 &data_word(0xf0f0f0f0, 0xb4b4b4b4, 0xe6e6e6e6, 0x73737373);
1191 &data_word(0x96969696, 0xacacacac, 0x74747474, 0x22222222);
1192 &data_word(0xe7e7e7e7, 0xadadadad, 0x35353535, 0x85858585);
1193 &data_word(0xe2e2e2e2, 0xf9f9f9f9, 0x37373737, 0xe8e8e8e8);
1194 &data_word(0x1c1c1c1c, 0x75757575, 0xdfdfdfdf, 0x6e6e6e6e);
1195 &data_word(0x47474747, 0xf1f1f1f1, 0x1a1a1a1a, 0x71717171);
1196 &data_word(0x1d1d1d1d, 0x29292929, 0xc5c5c5c5, 0x89898989);
1197 &data_word(0x6f6f6f6f, 0xb7b7b7b7, 0x62626262, 0x0e0e0e0e);
1198 &data_word(0xaaaaaaaa, 0x18181818, 0xbebebebe, 0x1b1b1b1b);
1199 &data_word(0xfcfcfcfc, 0x56565656, 0x3e3e3e3e, 0x4b4b4b4b);
1200 &data_word(0xc6c6c6c6, 0xd2d2d2d2, 0x79797979, 0x20202020);
1201 &data_word(0x9a9a9a9a, 0xdbdbdbdb, 0xc0c0c0c0, 0xfefefefe);
1202 &data_word(0x78787878, 0xcdcdcdcd, 0x5a5a5a5a, 0xf4f4f4f4);
1203 &data_word(0x1f1f1f1f, 0xdddddddd, 0xa8a8a8a8, 0x33333333);
1204 &data_word(0x88888888, 0x07070707, 0xc7c7c7c7, 0x31313131);
1205 &data_word(0xb1b1b1b1, 0x12121212, 0x10101010, 0x59595959);
1206 &data_word(0x27272727, 0x80808080, 0xecececec, 0x5f5f5f5f);
1207 &data_word(0x60606060, 0x51515151, 0x7f7f7f7f, 0xa9a9a9a9);
1208 &data_word(0x19191919, 0xb5b5b5b5, 0x4a4a4a4a, 0x0d0d0d0d);
1209 &data_word(0x2d2d2d2d, 0xe5e5e5e5, 0x7a7a7a7a, 0x9f9f9f9f);
1210 &data_word(0x93939393, 0xc9c9c9c9, 0x9c9c9c9c, 0xefefefef);
1211 &data_word(0xa0a0a0a0, 0xe0e0e0e0, 0x3b3b3b3b, 0x4d4d4d4d);
1212 &data_word(0xaeaeaeae, 0x2a2a2a2a, 0xf5f5f5f5, 0xb0b0b0b0);
1213 &data_word(0xc8c8c8c8, 0xebebebeb, 0xbbbbbbbb, 0x3c3c3c3c);
1214 &data_word(0x83838383, 0x53535353, 0x99999999, 0x61616161);
1215 &data_word(0x17171717, 0x2b2b2b2b, 0x04040404, 0x7e7e7e7e);
1216 &data_word(0xbabababa, 0x77777777, 0xd6d6d6d6, 0x26262626);
1217 &data_word(0xe1e1e1e1, 0x69696969, 0x14141414, 0x63636363);
1218 &data_word(0x55555555, 0x21212121, 0x0c0c0c0c, 0x7d7d7d7d);
1219&function_end_B("AES_decrypt");
1220
1221sub enckey()
1222{
1223 &movz ("esi",&LB("edx")); # rk[i]>>0
1224 &mov ("ebx",&DWP(0,"ebp","esi",4));
1225 &movz ("esi",&HB("edx")); # rk[i]>>8
1226 &and ("ebx",0xFF000000);
1227 &xor ("eax","ebx");
1228
1229 &mov ("ebx",&DWP(0,"ebp","esi",4));
1230 &shr ("edx",16);
1231 &and ("ebx",0x000000FF);
1232 &movz ("esi",&LB("edx")); # rk[i]>>16
1233 &xor ("eax","ebx");
1234
1235 &mov ("ebx",&DWP(0,"ebp","esi",4));
1236 &movz ("esi",&HB("edx")); # rk[i]>>24
1237 &and ("ebx",0x0000FF00);
1238 &xor ("eax","ebx");
1239
1240 &mov ("ebx",&DWP(0,"ebp","esi",4));
1241 &and ("ebx",0x00FF0000);
1242 &xor ("eax","ebx");
1243
1244 &xor ("eax",&DWP(1024,"ebp","ecx",4)); # rcon
1245}
1246
1247# int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
1248# AES_KEY *key)
1249&public_label("AES_Te");
1250&function_begin("AES_set_encrypt_key");
1251 &mov ("esi",&wparam(0)); # user supplied key
1252 &mov ("edi",&wparam(2)); # private key schedule
1253
1254 &test ("esi",-1);
1255 &jz (&label("badpointer"));
1256 &test ("edi",-1);
1257 &jz (&label("badpointer"));
1258
1259 &call (&label("pic_point"));
1260 &set_label("pic_point");
1261 &blindpop("ebp");
1262 &lea ("ebp",&DWP(&label("AES_Te")."-".&label("pic_point"),"ebp"));
1263 &add ("ebp",1024*4); # skip to Te4
1264
1265 &mov ("ecx",&wparam(1)); # number of bits in key
1266 &cmp ("ecx",128);
1267 &je (&label("10rounds"));
1268 &cmp ("ecx",192);
1269 &je (&label("12rounds"));
1270 &cmp ("ecx",256);
1271 &je (&label("14rounds"));
1272 &mov ("eax",-2); # invalid number of bits
1273 &jmp (&label("exit"));
1274
1275 &set_label("10rounds");
1276 &mov ("eax",&DWP(0,"esi")); # copy first 4 dwords
1277 &mov ("ebx",&DWP(4,"esi"));
1278 &mov ("ecx",&DWP(8,"esi"));
1279 &mov ("edx",&DWP(12,"esi"));
1280 &mov (&DWP(0,"edi"),"eax");
1281 &mov (&DWP(4,"edi"),"ebx");
1282 &mov (&DWP(8,"edi"),"ecx");
1283 &mov (&DWP(12,"edi"),"edx");
1284
1285 &xor ("ecx","ecx");
1286 &jmp (&label("10shortcut"));
1287
1288 &align (4);
1289 &set_label("10loop");
1290 &mov ("eax",&DWP(0,"edi")); # rk[0]
1291 &mov ("edx",&DWP(12,"edi")); # rk[3]
1292 &set_label("10shortcut");
1293 &enckey ();
1294
1295 &mov (&DWP(16,"edi"),"eax"); # rk[4]
1296 &xor ("eax",&DWP(4,"edi"));
1297 &mov (&DWP(20,"edi"),"eax"); # rk[5]
1298 &xor ("eax",&DWP(8,"edi"));
1299 &mov (&DWP(24,"edi"),"eax"); # rk[6]
1300 &xor ("eax",&DWP(12,"edi"));
1301 &mov (&DWP(28,"edi"),"eax"); # rk[7]
1302 &inc ("ecx");
1303 &add ("edi",16);
1304 &cmp ("ecx",10);
1305 &jl (&label("10loop"));
1306
1307 &mov (&DWP(80,"edi"),10); # setup number of rounds
1308 &xor ("eax","eax");
1309 &jmp (&label("exit"));
1310
1311 &set_label("12rounds");
1312 &mov ("eax",&DWP(0,"esi")); # copy first 6 dwords
1313 &mov ("ebx",&DWP(4,"esi"));
1314 &mov ("ecx",&DWP(8,"esi"));
1315 &mov ("edx",&DWP(12,"esi"));
1316 &mov (&DWP(0,"edi"),"eax");
1317 &mov (&DWP(4,"edi"),"ebx");
1318 &mov (&DWP(8,"edi"),"ecx");
1319 &mov (&DWP(12,"edi"),"edx");
1320 &mov ("ecx",&DWP(16,"esi"));
1321 &mov ("edx",&DWP(20,"esi"));
1322 &mov (&DWP(16,"edi"),"ecx");
1323 &mov (&DWP(20,"edi"),"edx");
1324
1325 &xor ("ecx","ecx");
1326 &jmp (&label("12shortcut"));
1327
1328 &align (4);
1329 &set_label("12loop");
1330 &mov ("eax",&DWP(0,"edi")); # rk[0]
1331 &mov ("edx",&DWP(20,"edi")); # rk[5]
1332 &set_label("12shortcut");
1333 &enckey ();
1334
1335 &mov (&DWP(24,"edi"),"eax"); # rk[6]
1336 &xor ("eax",&DWP(4,"edi"));
1337 &mov (&DWP(28,"edi"),"eax"); # rk[7]
1338 &xor ("eax",&DWP(8,"edi"));
1339 &mov (&DWP(32,"edi"),"eax"); # rk[8]
1340 &xor ("eax",&DWP(12,"edi"));
1341 &mov (&DWP(36,"edi"),"eax"); # rk[9]
1342
1343 &cmp ("ecx",7);
1344 &je (&label("12break"));
1345 &inc ("ecx");
1346
1347 &xor ("eax",&DWP(16,"edi"));
1348 &mov (&DWP(40,"edi"),"eax"); # rk[10]
1349 &xor ("eax",&DWP(20,"edi"));
1350 &mov (&DWP(44,"edi"),"eax"); # rk[11]
1351
1352 &add ("edi",24);
1353 &jmp (&label("12loop"));
1354
1355 &set_label("12break");
1356 &mov (&DWP(72,"edi"),12); # setup number of rounds
1357 &xor ("eax","eax");
1358 &jmp (&label("exit"));
1359
1360 &set_label("14rounds");
1361 &mov ("eax",&DWP(0,"esi")); # copy first 8 dwords
1362 &mov ("ebx",&DWP(4,"esi"));
1363 &mov ("ecx",&DWP(8,"esi"));
1364 &mov ("edx",&DWP(12,"esi"));
1365 &mov (&DWP(0,"edi"),"eax");
1366 &mov (&DWP(4,"edi"),"ebx");
1367 &mov (&DWP(8,"edi"),"ecx");
1368 &mov (&DWP(12,"edi"),"edx");
1369 &mov ("eax",&DWP(16,"esi"));
1370 &mov ("ebx",&DWP(20,"esi"));
1371 &mov ("ecx",&DWP(24,"esi"));
1372 &mov ("edx",&DWP(28,"esi"));
1373 &mov (&DWP(16,"edi"),"eax");
1374 &mov (&DWP(20,"edi"),"ebx");
1375 &mov (&DWP(24,"edi"),"ecx");
1376 &mov (&DWP(28,"edi"),"edx");
1377
1378 &xor ("ecx","ecx");
1379 &jmp (&label("14shortcut"));
1380
1381 &align (4);
1382 &set_label("14loop");
1383 &mov ("edx",&DWP(28,"edi")); # rk[7]
1384 &set_label("14shortcut");
1385 &mov ("eax",&DWP(0,"edi")); # rk[0]
1386
1387 &enckey ();
1388
1389 &mov (&DWP(32,"edi"),"eax"); # rk[8]
1390 &xor ("eax",&DWP(4,"edi"));
1391 &mov (&DWP(36,"edi"),"eax"); # rk[9]
1392 &xor ("eax",&DWP(8,"edi"));
1393 &mov (&DWP(40,"edi"),"eax"); # rk[10]
1394 &xor ("eax",&DWP(12,"edi"));
1395 &mov (&DWP(44,"edi"),"eax"); # rk[11]
1396
1397 &cmp ("ecx",6);
1398 &je (&label("14break"));
1399 &inc ("ecx");
1400
1401 &mov ("edx","eax");
1402 &mov ("eax",&DWP(16,"edi")); # rk[4]
1403 &movz ("esi",&LB("edx")); # rk[11]>>0
1404 &mov ("ebx",&DWP(0,"ebp","esi",4));
1405 &movz ("esi",&HB("edx")); # rk[11]>>8
1406 &and ("ebx",0x000000FF);
1407 &xor ("eax","ebx");
1408
1409 &mov ("ebx",&DWP(0,"ebp","esi",4));
1410 &shr ("edx",16);
1411 &and ("ebx",0x0000FF00);
1412 &movz ("esi",&LB("edx")); # rk[11]>>16
1413 &xor ("eax","ebx");
1414
1415 &mov ("ebx",&DWP(0,"ebp","esi",4));
1416 &movz ("esi",&HB("edx")); # rk[11]>>24
1417 &and ("ebx",0x00FF0000);
1418 &xor ("eax","ebx");
1419
1420 &mov ("ebx",&DWP(0,"ebp","esi",4));
1421 &and ("ebx",0xFF000000);
1422 &xor ("eax","ebx");
1423
1424 &mov (&DWP(48,"edi"),"eax"); # rk[12]
1425 &xor ("eax",&DWP(20,"edi"));
1426 &mov (&DWP(52,"edi"),"eax"); # rk[13]
1427 &xor ("eax",&DWP(24,"edi"));
1428 &mov (&DWP(56,"edi"),"eax"); # rk[14]
1429 &xor ("eax",&DWP(28,"edi"));
1430 &mov (&DWP(60,"edi"),"eax"); # rk[15]
1431
1432 &add ("edi",32);
1433 &jmp (&label("14loop"));
1434
1435 &set_label("14break");
1436 &mov (&DWP(48,"edi"),14); # setup number of rounds
1437 &xor ("eax","eax");
1438 &jmp (&label("exit"));
1439
1440 &set_label("badpointer");
1441 &mov ("eax",-1);
1442 &set_label("exit");
1443&function_end("AES_set_encrypt_key");
1444
1445sub deckey()
1446{ my ($i,$ptr,$te4,$td) = @_;
1447
1448 &mov ("eax",&DWP($i,$ptr));
1449 &mov ("edx","eax");
1450 &movz ("ebx",&HB("eax"));
1451 &shr ("edx",16);
1452 &and ("eax",0xFF);
1453 &movz ("eax",&BP(0,$te4,"eax",4));
1454 &movz ("ebx",&BP(0,$te4,"ebx",4));
1455 &mov ("eax",&DWP(1024*0,$td,"eax",4));
1456 &xor ("eax",&DWP(1024*1,$td,"ebx",4));
1457 &movz ("ebx",&HB("edx"));
1458 &and ("edx",0xFF);
1459 &movz ("edx",&BP(0,$te4,"edx",4));
1460 &movz ("ebx",&BP(0,$te4,"ebx",4));
1461 &xor ("eax",&DWP(1024*2,$td,"edx",4));
1462 &xor ("eax",&DWP(1024*3,$td,"ebx",4));
1463 &mov (&DWP($i,$ptr),"eax");
1464}
1465
1466# int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
1467# AES_KEY *key)
1468&public_label("AES_Td");
1469&public_label("AES_Te");
1470&function_begin_B("AES_set_decrypt_key");
1471 &mov ("eax",&wparam(0));
1472 &mov ("ecx",&wparam(1));
1473 &mov ("edx",&wparam(2));
1474 &sub ("esp",12);
1475 &mov (&DWP(0,"esp"),"eax");
1476 &mov (&DWP(4,"esp"),"ecx");
1477 &mov (&DWP(8,"esp"),"edx");
1478 &call ("AES_set_encrypt_key");
1479 &add ("esp",12);
1480 &cmp ("eax",0);
1481 &je (&label("proceed"));
1482 &ret ();
1483
1484 &set_label("proceed");
1485 &push ("ebp");
1486 &push ("ebx");
1487 &push ("esi");
1488 &push ("edi");
1489
1490 &mov ("esi",&wparam(2));
1491 &mov ("ecx",&DWP(240,"esi")); # pull number of rounds
1492 &lea ("ecx",&DWP(0,"","ecx",4));
1493 &lea ("edi",&DWP(0,"esi","ecx",4)); # pointer to last chunk
1494
1495 &align (4);
1496 &set_label("invert"); # invert order of chunks
1497 &mov ("eax",&DWP(0,"esi"));
1498 &mov ("ebx",&DWP(4,"esi"));
1499 &mov ("ecx",&DWP(0,"edi"));
1500 &mov ("edx",&DWP(4,"edi"));
1501 &mov (&DWP(0,"edi"),"eax");
1502 &mov (&DWP(4,"edi"),"ebx");
1503 &mov (&DWP(0,"esi"),"ecx");
1504 &mov (&DWP(4,"esi"),"edx");
1505 &mov ("eax",&DWP(8,"esi"));
1506 &mov ("ebx",&DWP(12,"esi"));
1507 &mov ("ecx",&DWP(8,"edi"));
1508 &mov ("edx",&DWP(12,"edi"));
1509 &mov (&DWP(8,"edi"),"eax");
1510 &mov (&DWP(12,"edi"),"ebx");
1511 &mov (&DWP(8,"esi"),"ecx");
1512 &mov (&DWP(12,"esi"),"edx");
1513 &add ("esi",16);
1514 &sub ("edi",16);
1515 &cmp ("esi","edi");
1516 &jne (&label("invert"));
1517
1518 &call (&label("pic_point"));
1519 &set_label("pic_point");
1520 blindpop("ebp");
1521 &lea ("edi",&DWP(&label("AES_Td")."-".&label("pic_point"),"ebp"));
1522 &lea ("ebp",&DWP(&label("AES_Te")."-".&label("pic_point"),"ebp"));
1523 &add ("ebp",1024*4); # skip to Te4
1524
1525 &mov ("esi",&wparam(2));
1526 &mov ("ecx",&DWP(240,"esi")); # pull number of rounds
1527 &dec ("ecx");
1528 &align (4);
1529 &set_label("permute"); # permute the key schedule
1530 &add ("esi",16);
1531 &deckey (0,"esi","ebp","edi");
1532 &deckey (4,"esi","ebp","edi");
1533 &deckey (8,"esi","ebp","edi");
1534 &deckey (12,"esi","ebp","edi");
1535 &dec ("ecx");
1536 &jnz (&label("permute"));
1537
1538 &xor ("eax","eax"); # return success
1539&function_end("AES_set_decrypt_key");
1540
1541&asm_finish();
diff --git a/src/lib/libssl/src/crypto/asn1/Makefile.ssl b/src/lib/libssl/src/crypto/asn1/Makefile.ssl
new file mode 100644
index 0000000000..cb45194d48
--- /dev/null
+++ b/src/lib/libssl/src/crypto/asn1/Makefile.ssl
@@ -0,0 +1,1152 @@
1#
2# SSLeay/crypto/asn1/Makefile
3#
4
5DIR= asn1
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile README
22TEST=
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC= a_object.c a_bitstr.c a_utctm.c a_gentm.c a_time.c a_int.c a_octet.c \
27 a_print.c a_type.c a_set.c a_dup.c a_d2i_fp.c a_i2d_fp.c \
28 a_enum.c a_utf8.c a_sign.c a_digest.c a_verify.c a_mbstr.c a_strex.c \
29 x_algor.c x_val.c x_pubkey.c x_sig.c x_req.c x_attrib.c x_bignum.c \
30 x_long.c x_name.c x_x509.c x_x509a.c x_crl.c x_info.c x_spki.c nsseq.c \
31 d2i_pu.c d2i_pr.c i2d_pu.c i2d_pr.c\
32 t_req.c t_x509.c t_x509a.c t_crl.c t_pkey.c t_spki.c t_bitst.c \
33 tasn_new.c tasn_fre.c tasn_enc.c tasn_dec.c tasn_utl.c tasn_typ.c \
34 f_int.c f_string.c n_pkey.c \
35 f_enum.c a_hdr.c x_pkey.c a_bool.c x_exten.c \
36 asn1_par.c asn1_lib.c asn1_err.c a_meth.c a_bytes.c a_strnid.c \
37 evp_asn1.c asn_pack.c p5_pbe.c p5_pbev2.c p8_pkey.c asn_moid.c
38LIBOBJ= a_object.o a_bitstr.o a_utctm.o a_gentm.o a_time.o a_int.o a_octet.o \
39 a_print.o a_type.o a_set.o a_dup.o a_d2i_fp.o a_i2d_fp.o \
40 a_enum.o a_utf8.o a_sign.o a_digest.o a_verify.o a_mbstr.o a_strex.o \
41 x_algor.o x_val.o x_pubkey.o x_sig.o x_req.o x_attrib.o x_bignum.o \
42 x_long.o x_name.o x_x509.o x_x509a.o x_crl.o x_info.o x_spki.o nsseq.o \
43 d2i_pu.o d2i_pr.o i2d_pu.o i2d_pr.o \
44 t_req.o t_x509.o t_x509a.o t_crl.o t_pkey.o t_spki.o t_bitst.o \
45 tasn_new.o tasn_fre.o tasn_enc.o tasn_dec.o tasn_utl.o tasn_typ.o \
46 f_int.o f_string.o n_pkey.o \
47 f_enum.o a_hdr.o x_pkey.o a_bool.o x_exten.o \
48 asn1_par.o asn1_lib.o asn1_err.o a_meth.o a_bytes.o a_strnid.o \
49 evp_asn1.o asn_pack.o p5_pbe.o p5_pbev2.o p8_pkey.o asn_moid.o
50
51SRC= $(LIBSRC)
52
53EXHEADER= asn1.h asn1_mac.h asn1t.h
54HEADER= $(EXHEADER)
55
56ALL= $(GENERAL) $(SRC) $(HEADER)
57
58top:
59 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
60
61test: test.c
62 cc -g -I../../include -c test.c
63 cc -g -I../../include -o test test.o -L../.. -lcrypto
64
65pk: pk.c
66 cc -g -I../../include -c pk.c
67 cc -g -I../../include -o pk pk.o -L../.. -lcrypto
68
69all: lib
70
71lib: $(LIBOBJ)
72 $(AR) $(LIB) $(LIBOBJ)
73 $(RANLIB) $(LIB) || echo Never mind.
74 @touch lib
75
76files:
77 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
78
79links:
80 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
81 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
82 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
83 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
84
85install:
86 @for i in $(EXHEADER) ; \
87 do \
88 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
89 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
90 done;
91
92tags:
93 ctags $(SRC)
94
95tests:
96
97lint:
98 lint -DLINT $(INCLUDES) $(SRC)>fluff
99
100depend:
101 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
102
103dclean:
104 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
105 mv -f Makefile.new $(MAKEFILE)
106
107clean:
108 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
109
110
111# DO NOT DELETE THIS LINE -- make depend depends on it.
112
113a_bitstr.o: ../../e_os.h ../../include/openssl/asn1.h
114a_bitstr.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
115a_bitstr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
116a_bitstr.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
117a_bitstr.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
118a_bitstr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
119a_bitstr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
120a_bitstr.o: ../../include/openssl/symhacks.h ../cryptlib.h a_bitstr.c
121a_bool.o: ../../e_os.h ../../include/openssl/asn1.h
122a_bool.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
123a_bool.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
124a_bool.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
125a_bool.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
126a_bool.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
127a_bool.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
128a_bool.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
129a_bool.o: ../cryptlib.h a_bool.c
130a_bytes.o: ../../e_os.h ../../include/openssl/asn1.h
131a_bytes.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
132a_bytes.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
133a_bytes.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
134a_bytes.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
135a_bytes.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
136a_bytes.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
137a_bytes.o: ../../include/openssl/symhacks.h ../cryptlib.h a_bytes.c
138a_d2i_fp.o: ../../e_os.h ../../include/openssl/asn1.h
139a_d2i_fp.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
140a_d2i_fp.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
141a_d2i_fp.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
142a_d2i_fp.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
143a_d2i_fp.o: ../../include/openssl/opensslconf.h
144a_d2i_fp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
145a_d2i_fp.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
146a_d2i_fp.o: ../../include/openssl/symhacks.h ../cryptlib.h a_d2i_fp.c
147a_digest.o: ../../e_os.h ../../include/openssl/aes.h
148a_digest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
149a_digest.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
150a_digest.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
151a_digest.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
152a_digest.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
153a_digest.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
154a_digest.o: ../../include/openssl/err.h ../../include/openssl/evp.h
155a_digest.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
156a_digest.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
157a_digest.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
158a_digest.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
159a_digest.o: ../../include/openssl/opensslconf.h
160a_digest.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
161a_digest.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
162a_digest.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
163a_digest.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
164a_digest.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
165a_digest.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
166a_digest.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
167a_digest.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
168a_digest.o: ../cryptlib.h a_digest.c
169a_dup.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
170a_dup.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
171a_dup.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
172a_dup.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
173a_dup.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
174a_dup.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
175a_dup.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
176a_dup.o: ../cryptlib.h a_dup.c
177a_enum.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
178a_enum.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
179a_enum.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
180a_enum.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
181a_enum.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
182a_enum.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
183a_enum.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
184a_enum.o: ../cryptlib.h a_enum.c
185a_gentm.o: ../../e_os.h ../../include/openssl/asn1.h
186a_gentm.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
187a_gentm.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
188a_gentm.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
189a_gentm.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
190a_gentm.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
191a_gentm.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
192a_gentm.o: ../../include/openssl/symhacks.h ../cryptlib.h ../o_time.h a_gentm.c
193a_hdr.o: ../../e_os.h ../../include/openssl/asn1.h
194a_hdr.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
195a_hdr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
196a_hdr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
197a_hdr.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
198a_hdr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
199a_hdr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
200a_hdr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
201a_hdr.o: ../cryptlib.h a_hdr.c
202a_i2d_fp.o: ../../e_os.h ../../include/openssl/asn1.h
203a_i2d_fp.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
204a_i2d_fp.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
205a_i2d_fp.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
206a_i2d_fp.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
207a_i2d_fp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
208a_i2d_fp.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
209a_i2d_fp.o: ../../include/openssl/symhacks.h ../cryptlib.h a_i2d_fp.c
210a_int.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
211a_int.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
212a_int.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
213a_int.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
214a_int.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
215a_int.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
216a_int.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
217a_int.o: ../cryptlib.h a_int.c
218a_mbstr.o: ../../e_os.h ../../include/openssl/asn1.h
219a_mbstr.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
220a_mbstr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
221a_mbstr.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
222a_mbstr.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
223a_mbstr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
224a_mbstr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
225a_mbstr.o: ../../include/openssl/symhacks.h ../cryptlib.h a_mbstr.c
226a_meth.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
227a_meth.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
228a_meth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
229a_meth.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
230a_meth.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
231a_meth.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
232a_meth.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
233a_meth.o: ../cryptlib.h a_meth.c
234a_object.o: ../../e_os.h ../../include/openssl/asn1.h
235a_object.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
236a_object.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
237a_object.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
238a_object.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
239a_object.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
240a_object.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
241a_object.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
242a_object.o: ../../include/openssl/symhacks.h ../cryptlib.h a_object.c
243a_octet.o: ../../e_os.h ../../include/openssl/asn1.h
244a_octet.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
245a_octet.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
246a_octet.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
247a_octet.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
248a_octet.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
249a_octet.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
250a_octet.o: ../../include/openssl/symhacks.h ../cryptlib.h a_octet.c
251a_print.o: ../../e_os.h ../../include/openssl/asn1.h
252a_print.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
253a_print.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
254a_print.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
255a_print.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
256a_print.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
257a_print.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
258a_print.o: ../../include/openssl/symhacks.h ../cryptlib.h a_print.c
259a_set.o: ../../e_os.h ../../include/openssl/asn1.h
260a_set.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
261a_set.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
262a_set.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
263a_set.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
264a_set.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
265a_set.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
266a_set.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
267a_set.o: ../cryptlib.h a_set.c
268a_sign.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
269a_sign.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
270a_sign.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
271a_sign.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
272a_sign.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
273a_sign.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
274a_sign.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
275a_sign.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
276a_sign.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
277a_sign.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
278a_sign.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
279a_sign.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
280a_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
281a_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
282a_sign.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
283a_sign.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
284a_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
285a_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
286a_sign.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
287a_sign.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
288a_sign.o: ../cryptlib.h a_sign.c
289a_strex.o: ../../e_os.h ../../include/openssl/aes.h
290a_strex.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
291a_strex.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
292a_strex.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
293a_strex.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
294a_strex.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
295a_strex.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
296a_strex.o: ../../include/openssl/err.h ../../include/openssl/evp.h
297a_strex.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
298a_strex.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
299a_strex.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
300a_strex.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
301a_strex.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
302a_strex.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
303a_strex.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
304a_strex.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
305a_strex.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
306a_strex.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
307a_strex.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
308a_strex.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
309a_strex.o: ../../include/openssl/x509_vfy.h ../cryptlib.h a_strex.c charmap.h
310a_strnid.o: ../../e_os.h ../../include/openssl/asn1.h
311a_strnid.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
312a_strnid.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
313a_strnid.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
314a_strnid.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
315a_strnid.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
316a_strnid.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
317a_strnid.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
318a_strnid.o: ../../include/openssl/symhacks.h ../cryptlib.h a_strnid.c
319a_time.o: ../../e_os.h ../../include/openssl/asn1.h
320a_time.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
321a_time.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
322a_time.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
323a_time.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
324a_time.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
325a_time.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
326a_time.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
327a_time.o: ../cryptlib.h ../o_time.h a_time.c
328a_type.o: ../../e_os.h ../../include/openssl/asn1.h
329a_type.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
330a_type.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
331a_type.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
332a_type.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
333a_type.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
334a_type.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
335a_type.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
336a_type.o: ../cryptlib.h a_type.c
337a_utctm.o: ../../e_os.h ../../include/openssl/asn1.h
338a_utctm.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
339a_utctm.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
340a_utctm.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
341a_utctm.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
342a_utctm.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
343a_utctm.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
344a_utctm.o: ../../include/openssl/symhacks.h ../cryptlib.h ../o_time.h a_utctm.c
345a_utf8.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
346a_utf8.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
347a_utf8.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
348a_utf8.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
349a_utf8.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
350a_utf8.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
351a_utf8.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
352a_utf8.o: ../cryptlib.h a_utf8.c
353a_verify.o: ../../e_os.h ../../include/openssl/aes.h
354a_verify.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
355a_verify.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
356a_verify.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
357a_verify.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
358a_verify.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
359a_verify.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
360a_verify.o: ../../include/openssl/err.h ../../include/openssl/evp.h
361a_verify.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
362a_verify.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
363a_verify.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
364a_verify.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
365a_verify.o: ../../include/openssl/opensslconf.h
366a_verify.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
367a_verify.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
368a_verify.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
369a_verify.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
370a_verify.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
371a_verify.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
372a_verify.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
373a_verify.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
374a_verify.o: ../cryptlib.h a_verify.c
375asn1_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
376asn1_err.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
377asn1_err.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
378asn1_err.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
379asn1_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
380asn1_err.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
381asn1_err.o: ../../include/openssl/symhacks.h asn1_err.c
382asn1_lib.o: ../../e_os.h ../../include/openssl/asn1.h
383asn1_lib.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
384asn1_lib.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
385asn1_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
386asn1_lib.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
387asn1_lib.o: ../../include/openssl/opensslconf.h
388asn1_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
389asn1_lib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
390asn1_lib.o: ../../include/openssl/symhacks.h ../cryptlib.h asn1_lib.c
391asn1_par.o: ../../e_os.h ../../include/openssl/asn1.h
392asn1_par.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
393asn1_par.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
394asn1_par.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
395asn1_par.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
396asn1_par.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
397asn1_par.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
398asn1_par.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
399asn1_par.o: ../../include/openssl/symhacks.h ../cryptlib.h asn1_par.c
400asn_moid.o: ../../e_os.h ../../include/openssl/aes.h
401asn_moid.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
402asn_moid.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
403asn_moid.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
404asn_moid.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
405asn_moid.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
406asn_moid.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
407asn_moid.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
408asn_moid.o: ../../include/openssl/err.h ../../include/openssl/evp.h
409asn_moid.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
410asn_moid.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
411asn_moid.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
412asn_moid.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
413asn_moid.o: ../../include/openssl/opensslconf.h
414asn_moid.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
415asn_moid.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
416asn_moid.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
417asn_moid.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
418asn_moid.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
419asn_moid.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
420asn_moid.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
421asn_moid.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
422asn_moid.o: ../cryptlib.h asn_moid.c
423asn_pack.o: ../../e_os.h ../../include/openssl/asn1.h
424asn_pack.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
425asn_pack.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
426asn_pack.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
427asn_pack.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
428asn_pack.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
429asn_pack.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
430asn_pack.o: ../../include/openssl/symhacks.h ../cryptlib.h asn_pack.c
431d2i_pr.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
432d2i_pr.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
433d2i_pr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
434d2i_pr.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
435d2i_pr.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
436d2i_pr.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
437d2i_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
438d2i_pr.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
439d2i_pr.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
440d2i_pr.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
441d2i_pr.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
442d2i_pr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
443d2i_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
444d2i_pr.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
445d2i_pr.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
446d2i_pr.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
447d2i_pr.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
448d2i_pr.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
449d2i_pr.o: ../../include/openssl/ui_compat.h ../cryptlib.h d2i_pr.c
450d2i_pu.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
451d2i_pu.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
452d2i_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
453d2i_pu.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
454d2i_pu.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
455d2i_pu.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
456d2i_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
457d2i_pu.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
458d2i_pu.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
459d2i_pu.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
460d2i_pu.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
461d2i_pu.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
462d2i_pu.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
463d2i_pu.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
464d2i_pu.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
465d2i_pu.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
466d2i_pu.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
467d2i_pu.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
468d2i_pu.o: ../../include/openssl/ui_compat.h ../cryptlib.h d2i_pu.c
469evp_asn1.o: ../../e_os.h ../../include/openssl/asn1.h
470evp_asn1.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
471evp_asn1.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
472evp_asn1.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
473evp_asn1.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
474evp_asn1.o: ../../include/openssl/opensslconf.h
475evp_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
476evp_asn1.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
477evp_asn1.o: ../../include/openssl/symhacks.h ../cryptlib.h evp_asn1.c
478f_enum.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
479f_enum.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
480f_enum.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
481f_enum.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
482f_enum.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
483f_enum.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
484f_enum.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
485f_enum.o: ../cryptlib.h f_enum.c
486f_int.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
487f_int.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
488f_int.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
489f_int.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
490f_int.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
491f_int.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
492f_int.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
493f_int.o: ../cryptlib.h f_int.c
494f_string.o: ../../e_os.h ../../include/openssl/asn1.h
495f_string.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
496f_string.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
497f_string.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
498f_string.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
499f_string.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
500f_string.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
501f_string.o: ../../include/openssl/symhacks.h ../cryptlib.h f_string.c
502i2d_pr.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
503i2d_pr.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
504i2d_pr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
505i2d_pr.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
506i2d_pr.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
507i2d_pr.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
508i2d_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
509i2d_pr.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
510i2d_pr.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
511i2d_pr.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
512i2d_pr.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
513i2d_pr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
514i2d_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
515i2d_pr.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
516i2d_pr.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
517i2d_pr.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
518i2d_pr.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
519i2d_pr.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
520i2d_pr.o: ../../include/openssl/ui_compat.h ../cryptlib.h i2d_pr.c
521i2d_pu.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
522i2d_pu.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
523i2d_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
524i2d_pu.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
525i2d_pu.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
526i2d_pu.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
527i2d_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
528i2d_pu.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
529i2d_pu.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
530i2d_pu.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
531i2d_pu.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
532i2d_pu.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
533i2d_pu.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
534i2d_pu.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
535i2d_pu.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
536i2d_pu.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
537i2d_pu.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
538i2d_pu.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
539i2d_pu.o: ../../include/openssl/ui_compat.h ../cryptlib.h i2d_pu.c
540n_pkey.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
541n_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/asn1t.h
542n_pkey.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
543n_pkey.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
544n_pkey.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
545n_pkey.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
546n_pkey.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
547n_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
548n_pkey.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
549n_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
550n_pkey.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
551n_pkey.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
552n_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
553n_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
554n_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
555n_pkey.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
556n_pkey.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
557n_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
558n_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
559n_pkey.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
560n_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
561n_pkey.o: ../cryptlib.h n_pkey.c
562nsseq.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
563nsseq.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
564nsseq.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
565nsseq.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
566nsseq.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
567nsseq.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
568nsseq.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
569nsseq.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
570nsseq.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
571nsseq.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
572nsseq.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
573nsseq.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
574nsseq.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
575nsseq.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
576nsseq.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
577nsseq.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
578nsseq.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
579nsseq.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
580nsseq.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
581nsseq.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h nsseq.c
582p5_pbe.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
583p5_pbe.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
584p5_pbe.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
585p5_pbe.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
586p5_pbe.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
587p5_pbe.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
588p5_pbe.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
589p5_pbe.o: ../../include/openssl/err.h ../../include/openssl/evp.h
590p5_pbe.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
591p5_pbe.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
592p5_pbe.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
593p5_pbe.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
594p5_pbe.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
595p5_pbe.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
596p5_pbe.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
597p5_pbe.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
598p5_pbe.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
599p5_pbe.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
600p5_pbe.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
601p5_pbe.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
602p5_pbe.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
603p5_pbe.o: ../cryptlib.h p5_pbe.c
604p5_pbev2.o: ../../e_os.h ../../include/openssl/aes.h
605p5_pbev2.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
606p5_pbev2.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
607p5_pbev2.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
608p5_pbev2.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
609p5_pbev2.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
610p5_pbev2.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
611p5_pbev2.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
612p5_pbev2.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
613p5_pbev2.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
614p5_pbev2.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
615p5_pbev2.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
616p5_pbev2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
617p5_pbev2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
618p5_pbev2.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
619p5_pbev2.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
620p5_pbev2.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
621p5_pbev2.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
622p5_pbev2.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
623p5_pbev2.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
624p5_pbev2.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
625p5_pbev2.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p5_pbev2.c
626p8_pkey.o: ../../e_os.h ../../include/openssl/aes.h
627p8_pkey.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
628p8_pkey.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
629p8_pkey.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
630p8_pkey.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
631p8_pkey.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
632p8_pkey.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
633p8_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
634p8_pkey.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
635p8_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
636p8_pkey.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
637p8_pkey.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
638p8_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
639p8_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
640p8_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
641p8_pkey.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
642p8_pkey.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
643p8_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
644p8_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
645p8_pkey.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
646p8_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
647p8_pkey.o: ../cryptlib.h p8_pkey.c
648t_bitst.o: ../../e_os.h ../../include/openssl/aes.h
649t_bitst.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
650t_bitst.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
651t_bitst.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
652t_bitst.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
653t_bitst.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
654t_bitst.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
655t_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
656t_bitst.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
657t_bitst.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
658t_bitst.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
659t_bitst.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
660t_bitst.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
661t_bitst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
662t_bitst.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
663t_bitst.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
664t_bitst.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
665t_bitst.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
666t_bitst.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
667t_bitst.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
668t_bitst.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
669t_bitst.o: ../../include/openssl/x509v3.h ../cryptlib.h t_bitst.c
670t_crl.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
671t_crl.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
672t_crl.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
673t_crl.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
674t_crl.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
675t_crl.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
676t_crl.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
677t_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
678t_crl.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
679t_crl.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
680t_crl.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
681t_crl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
682t_crl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
683t_crl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
684t_crl.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
685t_crl.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
686t_crl.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
687t_crl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
688t_crl.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
689t_crl.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
690t_crl.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
691t_crl.o: ../cryptlib.h t_crl.c
692t_pkey.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
693t_pkey.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
694t_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
695t_pkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
696t_pkey.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
697t_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
698t_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h
699t_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
700t_pkey.o: ../../include/openssl/symhacks.h ../cryptlib.h t_pkey.c
701t_req.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
702t_req.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
703t_req.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
704t_req.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
705t_req.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
706t_req.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
707t_req.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
708t_req.o: ../../include/openssl/err.h ../../include/openssl/evp.h
709t_req.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
710t_req.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
711t_req.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
712t_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
713t_req.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
714t_req.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
715t_req.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
716t_req.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
717t_req.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
718t_req.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
719t_req.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
720t_req.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
721t_req.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
722t_req.o: ../cryptlib.h t_req.c
723t_spki.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
724t_spki.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
725t_spki.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
726t_spki.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
727t_spki.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
728t_spki.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
729t_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
730t_spki.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
731t_spki.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
732t_spki.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
733t_spki.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
734t_spki.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
735t_spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
736t_spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
737t_spki.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
738t_spki.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
739t_spki.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
740t_spki.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
741t_spki.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
742t_spki.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
743t_spki.o: ../cryptlib.h t_spki.c
744t_x509.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
745t_x509.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
746t_x509.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
747t_x509.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
748t_x509.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
749t_x509.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
750t_x509.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
751t_x509.o: ../../include/openssl/err.h ../../include/openssl/evp.h
752t_x509.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
753t_x509.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
754t_x509.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
755t_x509.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
756t_x509.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
757t_x509.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
758t_x509.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
759t_x509.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
760t_x509.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
761t_x509.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
762t_x509.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
763t_x509.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
764t_x509.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
765t_x509.o: ../cryptlib.h t_x509.c
766t_x509a.o: ../../e_os.h ../../include/openssl/aes.h
767t_x509a.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
768t_x509a.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
769t_x509a.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
770t_x509a.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
771t_x509a.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
772t_x509a.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
773t_x509a.o: ../../include/openssl/err.h ../../include/openssl/evp.h
774t_x509a.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
775t_x509a.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
776t_x509a.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
777t_x509a.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
778t_x509a.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
779t_x509a.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
780t_x509a.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
781t_x509a.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
782t_x509a.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
783t_x509a.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
784t_x509a.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
785t_x509a.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
786t_x509a.o: ../../include/openssl/x509_vfy.h ../cryptlib.h t_x509a.c
787tasn_dec.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
788tasn_dec.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
789tasn_dec.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
790tasn_dec.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
791tasn_dec.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
792tasn_dec.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
793tasn_dec.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
794tasn_dec.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
795tasn_dec.o: ../../include/openssl/symhacks.h tasn_dec.c
796tasn_enc.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
797tasn_enc.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
798tasn_enc.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
799tasn_enc.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
800tasn_enc.o: ../../include/openssl/opensslconf.h
801tasn_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
802tasn_enc.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
803tasn_enc.o: ../../include/openssl/symhacks.h tasn_enc.c
804tasn_fre.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
805tasn_fre.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
806tasn_fre.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
807tasn_fre.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
808tasn_fre.o: ../../include/openssl/opensslconf.h
809tasn_fre.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
810tasn_fre.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
811tasn_fre.o: ../../include/openssl/symhacks.h tasn_fre.c
812tasn_new.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
813tasn_new.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
814tasn_new.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
815tasn_new.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
816tasn_new.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
817tasn_new.o: ../../include/openssl/opensslconf.h
818tasn_new.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
819tasn_new.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
820tasn_new.o: ../../include/openssl/symhacks.h tasn_new.c
821tasn_typ.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
822tasn_typ.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
823tasn_typ.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
824tasn_typ.o: ../../include/openssl/opensslconf.h
825tasn_typ.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
826tasn_typ.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
827tasn_typ.o: ../../include/openssl/symhacks.h tasn_typ.c
828tasn_utl.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
829tasn_utl.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
830tasn_utl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
831tasn_utl.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
832tasn_utl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
833tasn_utl.o: ../../include/openssl/opensslconf.h
834tasn_utl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
835tasn_utl.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
836tasn_utl.o: ../../include/openssl/symhacks.h tasn_utl.c
837x_algor.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
838x_algor.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
839x_algor.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
840x_algor.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
841x_algor.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
842x_algor.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
843x_algor.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
844x_algor.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
845x_algor.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
846x_algor.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
847x_algor.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
848x_algor.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
849x_algor.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
850x_algor.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
851x_algor.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
852x_algor.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
853x_algor.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
854x_algor.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
855x_algor.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
856x_algor.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
857x_algor.o: x_algor.c
858x_attrib.o: ../../e_os.h ../../include/openssl/aes.h
859x_attrib.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
860x_attrib.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
861x_attrib.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
862x_attrib.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
863x_attrib.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
864x_attrib.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
865x_attrib.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
866x_attrib.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
867x_attrib.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
868x_attrib.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
869x_attrib.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
870x_attrib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
871x_attrib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
872x_attrib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
873x_attrib.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
874x_attrib.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
875x_attrib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
876x_attrib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
877x_attrib.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
878x_attrib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
879x_attrib.o: ../cryptlib.h x_attrib.c
880x_bignum.o: ../../e_os.h ../../include/openssl/asn1.h
881x_bignum.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
882x_bignum.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
883x_bignum.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
884x_bignum.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
885x_bignum.o: ../../include/openssl/opensslconf.h
886x_bignum.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
887x_bignum.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
888x_bignum.o: ../../include/openssl/symhacks.h ../cryptlib.h x_bignum.c
889x_crl.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
890x_crl.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
891x_crl.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
892x_crl.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
893x_crl.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
894x_crl.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
895x_crl.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
896x_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
897x_crl.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
898x_crl.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
899x_crl.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
900x_crl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
901x_crl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
902x_crl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
903x_crl.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
904x_crl.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
905x_crl.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
906x_crl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
907x_crl.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
908x_crl.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
909x_crl.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_crl.c
910x_exten.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
911x_exten.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
912x_exten.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
913x_exten.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
914x_exten.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
915x_exten.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
916x_exten.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
917x_exten.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
918x_exten.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
919x_exten.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
920x_exten.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
921x_exten.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
922x_exten.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
923x_exten.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
924x_exten.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
925x_exten.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
926x_exten.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
927x_exten.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
928x_exten.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
929x_exten.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
930x_exten.o: x_exten.c
931x_info.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
932x_info.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
933x_info.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
934x_info.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
935x_info.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
936x_info.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
937x_info.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
938x_info.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
939x_info.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
940x_info.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
941x_info.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
942x_info.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
943x_info.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
944x_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
945x_info.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
946x_info.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
947x_info.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
948x_info.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
949x_info.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
950x_info.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
951x_info.o: ../cryptlib.h x_info.c
952x_long.o: ../../e_os.h ../../include/openssl/asn1.h
953x_long.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
954x_long.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
955x_long.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
956x_long.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
957x_long.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
958x_long.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
959x_long.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
960x_long.o: ../cryptlib.h x_long.c
961x_name.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
962x_name.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
963x_name.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
964x_name.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
965x_name.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
966x_name.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
967x_name.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
968x_name.o: ../../include/openssl/err.h ../../include/openssl/evp.h
969x_name.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
970x_name.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
971x_name.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
972x_name.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
973x_name.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
974x_name.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
975x_name.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
976x_name.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
977x_name.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
978x_name.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
979x_name.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
980x_name.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
981x_name.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_name.c
982x_pkey.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
983x_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
984x_pkey.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
985x_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
986x_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
987x_pkey.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
988x_pkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
989x_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
990x_pkey.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
991x_pkey.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
992x_pkey.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
993x_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
994x_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
995x_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
996x_pkey.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
997x_pkey.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
998x_pkey.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
999x_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
1000x_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
1001x_pkey.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
1002x_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_pkey.c
1003x_pubkey.o: ../../e_os.h ../../include/openssl/aes.h
1004x_pubkey.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
1005x_pubkey.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
1006x_pubkey.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
1007x_pubkey.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
1008x_pubkey.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
1009x_pubkey.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
1010x_pubkey.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
1011x_pubkey.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
1012x_pubkey.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
1013x_pubkey.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
1014x_pubkey.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
1015x_pubkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
1016x_pubkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
1017x_pubkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
1018x_pubkey.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
1019x_pubkey.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
1020x_pubkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
1021x_pubkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
1022x_pubkey.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
1023x_pubkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
1024x_pubkey.o: ../cryptlib.h x_pubkey.c
1025x_req.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
1026x_req.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
1027x_req.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
1028x_req.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
1029x_req.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
1030x_req.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
1031x_req.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
1032x_req.o: ../../include/openssl/err.h ../../include/openssl/evp.h
1033x_req.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
1034x_req.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
1035x_req.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
1036x_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
1037x_req.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
1038x_req.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
1039x_req.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
1040x_req.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
1041x_req.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
1042x_req.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
1043x_req.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
1044x_req.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
1045x_req.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_req.c
1046x_sig.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
1047x_sig.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
1048x_sig.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
1049x_sig.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
1050x_sig.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
1051x_sig.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
1052x_sig.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
1053x_sig.o: ../../include/openssl/err.h ../../include/openssl/evp.h
1054x_sig.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
1055x_sig.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
1056x_sig.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
1057x_sig.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
1058x_sig.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
1059x_sig.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
1060x_sig.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
1061x_sig.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
1062x_sig.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
1063x_sig.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
1064x_sig.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
1065x_sig.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
1066x_sig.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_sig.c
1067x_spki.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
1068x_spki.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
1069x_spki.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
1070x_spki.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
1071x_spki.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
1072x_spki.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
1073x_spki.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
1074x_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h
1075x_spki.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
1076x_spki.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
1077x_spki.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
1078x_spki.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
1079x_spki.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
1080x_spki.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
1081x_spki.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
1082x_spki.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
1083x_spki.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
1084x_spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
1085x_spki.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
1086x_spki.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
1087x_spki.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_spki.c
1088x_val.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
1089x_val.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
1090x_val.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
1091x_val.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
1092x_val.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
1093x_val.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
1094x_val.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
1095x_val.o: ../../include/openssl/err.h ../../include/openssl/evp.h
1096x_val.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
1097x_val.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
1098x_val.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
1099x_val.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
1100x_val.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
1101x_val.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
1102x_val.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
1103x_val.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
1104x_val.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
1105x_val.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
1106x_val.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
1107x_val.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
1108x_val.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_val.c
1109x_x509.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
1110x_x509.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
1111x_x509.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
1112x_x509.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
1113x_x509.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
1114x_x509.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
1115x_x509.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
1116x_x509.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
1117x_x509.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
1118x_x509.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
1119x_x509.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
1120x_x509.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
1121x_x509.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
1122x_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
1123x_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
1124x_x509.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
1125x_x509.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
1126x_x509.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
1127x_x509.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
1128x_x509.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
1129x_x509.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
1130x_x509.o: ../../include/openssl/x509v3.h ../cryptlib.h x_x509.c
1131x_x509a.o: ../../e_os.h ../../include/openssl/aes.h
1132x_x509a.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
1133x_x509a.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
1134x_x509a.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
1135x_x509a.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
1136x_x509a.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
1137x_x509a.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
1138x_x509a.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
1139x_x509a.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
1140x_x509a.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
1141x_x509a.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
1142x_x509a.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
1143x_x509a.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
1144x_x509a.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
1145x_x509a.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
1146x_x509a.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
1147x_x509a.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
1148x_x509a.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
1149x_x509a.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
1150x_x509a.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
1151x_x509a.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
1152x_x509a.o: ../cryptlib.h x_x509a.c
diff --git a/src/lib/libssl/src/crypto/asn1/a_bytes.c b/src/lib/libssl/src/crypto/asn1/a_bytes.c
index afd27b80e1..2407f7c87a 100644
--- a/src/lib/libssl/src/crypto/asn1/a_bytes.c
+++ b/src/lib/libssl/src/crypto/asn1/a_bytes.c
@@ -78,7 +78,7 @@ ASN1_STRING *d2i_ASN1_type_bytes(ASN1_STRING **a, unsigned char **pp,
78 78
79 if (tag >= 32) 79 if (tag >= 32)
80 { 80 {
81 i=ASN1_R_TAG_VALUE_TOO_HIGH;; 81 i=ASN1_R_TAG_VALUE_TOO_HIGH;
82 goto err; 82 goto err;
83 } 83 }
84 if (!(ASN1_tag2bit(tag) & type)) 84 if (!(ASN1_tag2bit(tag) & type))
diff --git a/src/lib/libssl/src/crypto/asn1/asn1.h b/src/lib/libssl/src/crypto/asn1/asn1.h
index 0184b475a7..ceaeb4cbe3 100644
--- a/src/lib/libssl/src/crypto/asn1/asn1.h
+++ b/src/lib/libssl/src/crypto/asn1/asn1.h
@@ -962,7 +962,6 @@ void ERR_load_ASN1_strings(void);
962#define ASN1_F_ASN1_DUP 111 962#define ASN1_F_ASN1_DUP 111
963#define ASN1_F_ASN1_ENUMERATED_SET 112 963#define ASN1_F_ASN1_ENUMERATED_SET 112
964#define ASN1_F_ASN1_ENUMERATED_TO_BN 113 964#define ASN1_F_ASN1_ENUMERATED_TO_BN 113
965#define ASN1_F_ASN1_FIND_END 182
966#define ASN1_F_ASN1_GENERALIZEDTIME_SET 178 965#define ASN1_F_ASN1_GENERALIZEDTIME_SET 178
967#define ASN1_F_ASN1_GET_OBJECT 114 966#define ASN1_F_ASN1_GET_OBJECT 114
968#define ASN1_F_ASN1_HEADER_NEW 115 967#define ASN1_F_ASN1_HEADER_NEW 115
@@ -1076,7 +1075,6 @@ void ERR_load_ASN1_strings(void);
1076#define ASN1_R_MISSING_SECOND_NUMBER 138 1075#define ASN1_R_MISSING_SECOND_NUMBER 138
1077#define ASN1_R_MSTRING_NOT_UNIVERSAL 139 1076#define ASN1_R_MSTRING_NOT_UNIVERSAL 139
1078#define ASN1_R_MSTRING_WRONG_TAG 140 1077#define ASN1_R_MSTRING_WRONG_TAG 140
1079#define ASN1_R_NESTED_ASN1_STRING 174
1080#define ASN1_R_NON_HEX_CHARACTERS 141 1078#define ASN1_R_NON_HEX_CHARACTERS 141
1081#define ASN1_R_NOT_ENOUGH_DATA 142 1079#define ASN1_R_NOT_ENOUGH_DATA 142
1082#define ASN1_R_NO_MATCHING_CHOICE_TYPE 143 1080#define ASN1_R_NO_MATCHING_CHOICE_TYPE 143
diff --git a/src/lib/libssl/src/crypto/asn1/asn1_err.c b/src/lib/libssl/src/crypto/asn1/asn1_err.c
index 315d0a0807..3b57c8fbae 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-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2004 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
@@ -64,175 +64,169 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_ASN1,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_ASN1,0,reason)
70
71static ERR_STRING_DATA ASN1_str_functs[]= 67static ERR_STRING_DATA ASN1_str_functs[]=
72 { 68 {
73{ERR_FUNC(ASN1_F_A2D_ASN1_OBJECT), "a2d_ASN1_OBJECT"}, 69{ERR_PACK(0,ASN1_F_A2D_ASN1_OBJECT,0), "a2d_ASN1_OBJECT"},
74{ERR_FUNC(ASN1_F_A2I_ASN1_ENUMERATED), "a2i_ASN1_ENUMERATED"}, 70{ERR_PACK(0,ASN1_F_A2I_ASN1_ENUMERATED,0), "a2i_ASN1_ENUMERATED"},
75{ERR_FUNC(ASN1_F_A2I_ASN1_INTEGER), "a2i_ASN1_INTEGER"}, 71{ERR_PACK(0,ASN1_F_A2I_ASN1_INTEGER,0), "a2i_ASN1_INTEGER"},
76{ERR_FUNC(ASN1_F_A2I_ASN1_STRING), "a2i_ASN1_STRING"}, 72{ERR_PACK(0,ASN1_F_A2I_ASN1_STRING,0), "a2i_ASN1_STRING"},
77{ERR_FUNC(ASN1_F_ASN1_BIT_STRING_SET_BIT), "ASN1_BIT_STRING_set_bit"}, 73{ERR_PACK(0,ASN1_F_ASN1_BIT_STRING_SET_BIT,0), "ASN1_BIT_STRING_set_bit"},
78{ERR_FUNC(ASN1_F_ASN1_CHECK_TLEN), "ASN1_CHECK_TLEN"}, 74{ERR_PACK(0,ASN1_F_ASN1_CHECK_TLEN,0), "ASN1_CHECK_TLEN"},
79{ERR_FUNC(ASN1_F_ASN1_COLLATE_PRIMITIVE), "ASN1_COLLATE_PRIMITIVE"}, 75{ERR_PACK(0,ASN1_F_ASN1_COLLATE_PRIMITIVE,0), "ASN1_COLLATE_PRIMITIVE"},
80{ERR_FUNC(ASN1_F_ASN1_COLLECT), "ASN1_COLLECT"}, 76{ERR_PACK(0,ASN1_F_ASN1_COLLECT,0), "ASN1_COLLECT"},
81{ERR_FUNC(ASN1_F_ASN1_D2I_BIO), "ASN1_d2i_bio"}, 77{ERR_PACK(0,ASN1_F_ASN1_D2I_BIO,0), "ASN1_d2i_bio"},
82{ERR_FUNC(ASN1_F_ASN1_D2I_EX_PRIMITIVE), "ASN1_D2I_EX_PRIMITIVE"}, 78{ERR_PACK(0,ASN1_F_ASN1_D2I_EX_PRIMITIVE,0), "ASN1_D2I_EX_PRIMITIVE"},
83{ERR_FUNC(ASN1_F_ASN1_D2I_FP), "ASN1_d2i_fp"}, 79{ERR_PACK(0,ASN1_F_ASN1_D2I_FP,0), "ASN1_d2i_fp"},
84{ERR_FUNC(ASN1_F_ASN1_DIGEST), "ASN1_digest"}, 80{ERR_PACK(0,ASN1_F_ASN1_DIGEST,0), "ASN1_digest"},
85{ERR_FUNC(ASN1_F_ASN1_DO_ADB), "ASN1_DO_ADB"}, 81{ERR_PACK(0,ASN1_F_ASN1_DO_ADB,0), "ASN1_DO_ADB"},
86{ERR_FUNC(ASN1_F_ASN1_DUP), "ASN1_dup"}, 82{ERR_PACK(0,ASN1_F_ASN1_DUP,0), "ASN1_dup"},
87{ERR_FUNC(ASN1_F_ASN1_ENUMERATED_SET), "ASN1_ENUMERATED_set"}, 83{ERR_PACK(0,ASN1_F_ASN1_ENUMERATED_SET,0), "ASN1_ENUMERATED_set"},
88{ERR_FUNC(ASN1_F_ASN1_ENUMERATED_TO_BN), "ASN1_ENUMERATED_to_BN"}, 84{ERR_PACK(0,ASN1_F_ASN1_ENUMERATED_TO_BN,0), "ASN1_ENUMERATED_to_BN"},
89{ERR_FUNC(ASN1_F_ASN1_FIND_END), "ASN1_FIND_END"}, 85{ERR_PACK(0,ASN1_F_ASN1_GENERALIZEDTIME_SET,0), "ASN1_GENERALIZEDTIME_set"},
90{ERR_FUNC(ASN1_F_ASN1_GENERALIZEDTIME_SET), "ASN1_GENERALIZEDTIME_set"}, 86{ERR_PACK(0,ASN1_F_ASN1_GET_OBJECT,0), "ASN1_get_object"},
91{ERR_FUNC(ASN1_F_ASN1_GET_OBJECT), "ASN1_get_object"}, 87{ERR_PACK(0,ASN1_F_ASN1_HEADER_NEW,0), "ASN1_HEADER_new"},
92{ERR_FUNC(ASN1_F_ASN1_HEADER_NEW), "ASN1_HEADER_new"}, 88{ERR_PACK(0,ASN1_F_ASN1_I2D_BIO,0), "ASN1_i2d_bio"},
93{ERR_FUNC(ASN1_F_ASN1_I2D_BIO), "ASN1_i2d_bio"}, 89{ERR_PACK(0,ASN1_F_ASN1_I2D_FP,0), "ASN1_i2d_fp"},
94{ERR_FUNC(ASN1_F_ASN1_I2D_FP), "ASN1_i2d_fp"}, 90{ERR_PACK(0,ASN1_F_ASN1_INTEGER_SET,0), "ASN1_INTEGER_set"},
95{ERR_FUNC(ASN1_F_ASN1_INTEGER_SET), "ASN1_INTEGER_set"}, 91{ERR_PACK(0,ASN1_F_ASN1_INTEGER_TO_BN,0), "ASN1_INTEGER_to_BN"},
96{ERR_FUNC(ASN1_F_ASN1_INTEGER_TO_BN), "ASN1_INTEGER_to_BN"}, 92{ERR_PACK(0,ASN1_F_ASN1_ITEM_EX_D2I,0), "ASN1_ITEM_EX_D2I"},
97{ERR_FUNC(ASN1_F_ASN1_ITEM_EX_D2I), "ASN1_ITEM_EX_D2I"}, 93{ERR_PACK(0,ASN1_F_ASN1_ITEM_NEW,0), "ASN1_item_new"},
98{ERR_FUNC(ASN1_F_ASN1_ITEM_NEW), "ASN1_item_new"}, 94{ERR_PACK(0,ASN1_F_ASN1_MBSTRING_COPY,0), "ASN1_mbstring_copy"},
99{ERR_FUNC(ASN1_F_ASN1_MBSTRING_COPY), "ASN1_mbstring_copy"}, 95{ERR_PACK(0,ASN1_F_ASN1_OBJECT_NEW,0), "ASN1_OBJECT_new"},
100{ERR_FUNC(ASN1_F_ASN1_OBJECT_NEW), "ASN1_OBJECT_new"}, 96{ERR_PACK(0,ASN1_F_ASN1_PACK_STRING,0), "ASN1_pack_string"},
101{ERR_FUNC(ASN1_F_ASN1_PACK_STRING), "ASN1_pack_string"}, 97{ERR_PACK(0,ASN1_F_ASN1_PBE_SET,0), "ASN1_PBE_SET"},
102{ERR_FUNC(ASN1_F_ASN1_PBE_SET), "ASN1_PBE_SET"}, 98{ERR_PACK(0,ASN1_F_ASN1_SEQ_PACK,0), "ASN1_seq_pack"},
103{ERR_FUNC(ASN1_F_ASN1_SEQ_PACK), "ASN1_seq_pack"}, 99{ERR_PACK(0,ASN1_F_ASN1_SEQ_UNPACK,0), "ASN1_seq_unpack"},
104{ERR_FUNC(ASN1_F_ASN1_SEQ_UNPACK), "ASN1_seq_unpack"}, 100{ERR_PACK(0,ASN1_F_ASN1_SIGN,0), "ASN1_sign"},
105{ERR_FUNC(ASN1_F_ASN1_SIGN), "ASN1_sign"}, 101{ERR_PACK(0,ASN1_F_ASN1_STRING_SET,0), "ASN1_STRING_set"},
106{ERR_FUNC(ASN1_F_ASN1_STRING_SET), "ASN1_STRING_set"}, 102{ERR_PACK(0,ASN1_F_ASN1_STRING_TABLE_ADD,0), "ASN1_STRING_TABLE_add"},
107{ERR_FUNC(ASN1_F_ASN1_STRING_TABLE_ADD), "ASN1_STRING_TABLE_add"}, 103{ERR_PACK(0,ASN1_F_ASN1_STRING_TYPE_NEW,0), "ASN1_STRING_type_new"},
108{ERR_FUNC(ASN1_F_ASN1_STRING_TYPE_NEW), "ASN1_STRING_type_new"}, 104{ERR_PACK(0,ASN1_F_ASN1_TEMPLATE_D2I,0), "ASN1_TEMPLATE_D2I"},
109{ERR_FUNC(ASN1_F_ASN1_TEMPLATE_D2I), "ASN1_TEMPLATE_D2I"}, 105{ERR_PACK(0,ASN1_F_ASN1_TEMPLATE_EX_D2I,0), "ASN1_TEMPLATE_EX_D2I"},
110{ERR_FUNC(ASN1_F_ASN1_TEMPLATE_EX_D2I), "ASN1_TEMPLATE_EX_D2I"}, 106{ERR_PACK(0,ASN1_F_ASN1_TEMPLATE_NEW,0), "ASN1_TEMPLATE_NEW"},
111{ERR_FUNC(ASN1_F_ASN1_TEMPLATE_NEW), "ASN1_TEMPLATE_NEW"}, 107{ERR_PACK(0,ASN1_F_ASN1_TIME_SET,0), "ASN1_TIME_set"},
112{ERR_FUNC(ASN1_F_ASN1_TIME_SET), "ASN1_TIME_set"}, 108{ERR_PACK(0,ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING,0), "ASN1_TYPE_get_int_octetstring"},
113{ERR_FUNC(ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING), "ASN1_TYPE_get_int_octetstring"}, 109{ERR_PACK(0,ASN1_F_ASN1_TYPE_GET_OCTETSTRING,0), "ASN1_TYPE_get_octetstring"},
114{ERR_FUNC(ASN1_F_ASN1_TYPE_GET_OCTETSTRING), "ASN1_TYPE_get_octetstring"}, 110{ERR_PACK(0,ASN1_F_ASN1_UNPACK_STRING,0), "ASN1_unpack_string"},
115{ERR_FUNC(ASN1_F_ASN1_UNPACK_STRING), "ASN1_unpack_string"}, 111{ERR_PACK(0,ASN1_F_ASN1_UTCTIME_SET,0), "ASN1_UTCTIME_set"},
116{ERR_FUNC(ASN1_F_ASN1_UTCTIME_SET), "ASN1_UTCTIME_set"}, 112{ERR_PACK(0,ASN1_F_ASN1_VERIFY,0), "ASN1_verify"},
117{ERR_FUNC(ASN1_F_ASN1_VERIFY), "ASN1_verify"}, 113{ERR_PACK(0,ASN1_F_BN_TO_ASN1_ENUMERATED,0), "BN_to_ASN1_ENUMERATED"},
118{ERR_FUNC(ASN1_F_BN_TO_ASN1_ENUMERATED), "BN_to_ASN1_ENUMERATED"}, 114{ERR_PACK(0,ASN1_F_BN_TO_ASN1_INTEGER,0), "BN_to_ASN1_INTEGER"},
119{ERR_FUNC(ASN1_F_BN_TO_ASN1_INTEGER), "BN_to_ASN1_INTEGER"}, 115{ERR_PACK(0,ASN1_F_COLLECT_DATA,0), "COLLECT_DATA"},
120{ERR_FUNC(ASN1_F_COLLECT_DATA), "COLLECT_DATA"}, 116{ERR_PACK(0,ASN1_F_D2I_ASN1_BIT_STRING,0), "D2I_ASN1_BIT_STRING"},
121{ERR_FUNC(ASN1_F_D2I_ASN1_BIT_STRING), "D2I_ASN1_BIT_STRING"}, 117{ERR_PACK(0,ASN1_F_D2I_ASN1_BOOLEAN,0), "d2i_ASN1_BOOLEAN"},
122{ERR_FUNC(ASN1_F_D2I_ASN1_BOOLEAN), "d2i_ASN1_BOOLEAN"}, 118{ERR_PACK(0,ASN1_F_D2I_ASN1_BYTES,0), "d2i_ASN1_bytes"},
123{ERR_FUNC(ASN1_F_D2I_ASN1_BYTES), "d2i_ASN1_bytes"}, 119{ERR_PACK(0,ASN1_F_D2I_ASN1_GENERALIZEDTIME,0), "D2I_ASN1_GENERALIZEDTIME"},
124{ERR_FUNC(ASN1_F_D2I_ASN1_GENERALIZEDTIME), "D2I_ASN1_GENERALIZEDTIME"}, 120{ERR_PACK(0,ASN1_F_D2I_ASN1_HEADER,0), "d2i_ASN1_HEADER"},
125{ERR_FUNC(ASN1_F_D2I_ASN1_HEADER), "d2i_ASN1_HEADER"}, 121{ERR_PACK(0,ASN1_F_D2I_ASN1_INTEGER,0), "D2I_ASN1_INTEGER"},
126{ERR_FUNC(ASN1_F_D2I_ASN1_INTEGER), "D2I_ASN1_INTEGER"}, 122{ERR_PACK(0,ASN1_F_D2I_ASN1_OBJECT,0), "d2i_ASN1_OBJECT"},
127{ERR_FUNC(ASN1_F_D2I_ASN1_OBJECT), "d2i_ASN1_OBJECT"}, 123{ERR_PACK(0,ASN1_F_D2I_ASN1_SET,0), "d2i_ASN1_SET"},
128{ERR_FUNC(ASN1_F_D2I_ASN1_SET), "d2i_ASN1_SET"}, 124{ERR_PACK(0,ASN1_F_D2I_ASN1_TYPE_BYTES,0), "d2i_ASN1_type_bytes"},
129{ERR_FUNC(ASN1_F_D2I_ASN1_TYPE_BYTES), "d2i_ASN1_type_bytes"}, 125{ERR_PACK(0,ASN1_F_D2I_ASN1_UINTEGER,0), "d2i_ASN1_UINTEGER"},
130{ERR_FUNC(ASN1_F_D2I_ASN1_UINTEGER), "d2i_ASN1_UINTEGER"}, 126{ERR_PACK(0,ASN1_F_D2I_ASN1_UTCTIME,0), "D2I_ASN1_UTCTIME"},
131{ERR_FUNC(ASN1_F_D2I_ASN1_UTCTIME), "D2I_ASN1_UTCTIME"}, 127{ERR_PACK(0,ASN1_F_D2I_NETSCAPE_RSA,0), "d2i_Netscape_RSA"},
132{ERR_FUNC(ASN1_F_D2I_NETSCAPE_RSA), "d2i_Netscape_RSA"}, 128{ERR_PACK(0,ASN1_F_D2I_NETSCAPE_RSA_2,0), "D2I_NETSCAPE_RSA_2"},
133{ERR_FUNC(ASN1_F_D2I_NETSCAPE_RSA_2), "D2I_NETSCAPE_RSA_2"}, 129{ERR_PACK(0,ASN1_F_D2I_PRIVATEKEY,0), "d2i_PrivateKey"},
134{ERR_FUNC(ASN1_F_D2I_PRIVATEKEY), "d2i_PrivateKey"}, 130{ERR_PACK(0,ASN1_F_D2I_PUBLICKEY,0), "d2i_PublicKey"},
135{ERR_FUNC(ASN1_F_D2I_PUBLICKEY), "d2i_PublicKey"}, 131{ERR_PACK(0,ASN1_F_D2I_X509,0), "D2I_X509"},
136{ERR_FUNC(ASN1_F_D2I_X509), "D2I_X509"}, 132{ERR_PACK(0,ASN1_F_D2I_X509_CINF,0), "D2I_X509_CINF"},
137{ERR_FUNC(ASN1_F_D2I_X509_CINF), "D2I_X509_CINF"}, 133{ERR_PACK(0,ASN1_F_D2I_X509_NAME,0), "D2I_X509_NAME"},
138{ERR_FUNC(ASN1_F_D2I_X509_NAME), "D2I_X509_NAME"}, 134{ERR_PACK(0,ASN1_F_D2I_X509_PKEY,0), "d2i_X509_PKEY"},
139{ERR_FUNC(ASN1_F_D2I_X509_PKEY), "d2i_X509_PKEY"}, 135{ERR_PACK(0,ASN1_F_I2D_ASN1_SET,0), "i2d_ASN1_SET"},
140{ERR_FUNC(ASN1_F_I2D_ASN1_SET), "i2d_ASN1_SET"}, 136{ERR_PACK(0,ASN1_F_I2D_ASN1_TIME,0), "I2D_ASN1_TIME"},
141{ERR_FUNC(ASN1_F_I2D_ASN1_TIME), "I2D_ASN1_TIME"}, 137{ERR_PACK(0,ASN1_F_I2D_DSA_PUBKEY,0), "i2d_DSA_PUBKEY"},
142{ERR_FUNC(ASN1_F_I2D_DSA_PUBKEY), "i2d_DSA_PUBKEY"}, 138{ERR_PACK(0,ASN1_F_I2D_NETSCAPE_RSA,0), "i2d_Netscape_RSA"},
143{ERR_FUNC(ASN1_F_I2D_NETSCAPE_RSA), "i2d_Netscape_RSA"}, 139{ERR_PACK(0,ASN1_F_I2D_PRIVATEKEY,0), "i2d_PrivateKey"},
144{ERR_FUNC(ASN1_F_I2D_PRIVATEKEY), "i2d_PrivateKey"}, 140{ERR_PACK(0,ASN1_F_I2D_PUBLICKEY,0), "i2d_PublicKey"},
145{ERR_FUNC(ASN1_F_I2D_PUBLICKEY), "i2d_PublicKey"}, 141{ERR_PACK(0,ASN1_F_I2D_RSA_PUBKEY,0), "i2d_RSA_PUBKEY"},
146{ERR_FUNC(ASN1_F_I2D_RSA_PUBKEY), "i2d_RSA_PUBKEY"}, 142{ERR_PACK(0,ASN1_F_LONG_C2I,0), "LONG_C2I"},
147{ERR_FUNC(ASN1_F_LONG_C2I), "LONG_C2I"}, 143{ERR_PACK(0,ASN1_F_OID_MODULE_INIT,0), "OID_MODULE_INIT"},
148{ERR_FUNC(ASN1_F_OID_MODULE_INIT), "OID_MODULE_INIT"}, 144{ERR_PACK(0,ASN1_F_PKCS5_PBE2_SET,0), "PKCS5_pbe2_set"},
149{ERR_FUNC(ASN1_F_PKCS5_PBE2_SET), "PKCS5_pbe2_set"}, 145{ERR_PACK(0,ASN1_F_X509_CINF_NEW,0), "X509_CINF_NEW"},
150{ERR_FUNC(ASN1_F_X509_CINF_NEW), "X509_CINF_NEW"}, 146{ERR_PACK(0,ASN1_F_X509_CRL_ADD0_REVOKED,0), "X509_CRL_add0_revoked"},
151{ERR_FUNC(ASN1_F_X509_CRL_ADD0_REVOKED), "X509_CRL_add0_revoked"}, 147{ERR_PACK(0,ASN1_F_X509_INFO_NEW,0), "X509_INFO_new"},
152{ERR_FUNC(ASN1_F_X509_INFO_NEW), "X509_INFO_new"}, 148{ERR_PACK(0,ASN1_F_X509_NAME_NEW,0), "X509_NAME_NEW"},
153{ERR_FUNC(ASN1_F_X509_NAME_NEW), "X509_NAME_NEW"}, 149{ERR_PACK(0,ASN1_F_X509_NEW,0), "X509_NEW"},
154{ERR_FUNC(ASN1_F_X509_NEW), "X509_NEW"}, 150{ERR_PACK(0,ASN1_F_X509_PKEY_NEW,0), "X509_PKEY_new"},
155{ERR_FUNC(ASN1_F_X509_PKEY_NEW), "X509_PKEY_new"},
156{0,NULL} 151{0,NULL}
157 }; 152 };
158 153
159static ERR_STRING_DATA ASN1_str_reasons[]= 154static ERR_STRING_DATA ASN1_str_reasons[]=
160 { 155 {
161{ERR_REASON(ASN1_R_ADDING_OBJECT) ,"adding object"}, 156{ASN1_R_ADDING_OBJECT ,"adding object"},
162{ERR_REASON(ASN1_R_AUX_ERROR) ,"aux error"}, 157{ASN1_R_AUX_ERROR ,"aux error"},
163{ERR_REASON(ASN1_R_BAD_CLASS) ,"bad class"}, 158{ASN1_R_BAD_CLASS ,"bad class"},
164{ERR_REASON(ASN1_R_BAD_OBJECT_HEADER) ,"bad object header"}, 159{ASN1_R_BAD_OBJECT_HEADER ,"bad object header"},
165{ERR_REASON(ASN1_R_BAD_PASSWORD_READ) ,"bad password read"}, 160{ASN1_R_BAD_PASSWORD_READ ,"bad password read"},
166{ERR_REASON(ASN1_R_BAD_TAG) ,"bad tag"}, 161{ASN1_R_BAD_TAG ,"bad tag"},
167{ERR_REASON(ASN1_R_BN_LIB) ,"bn lib"}, 162{ASN1_R_BN_LIB ,"bn lib"},
168{ERR_REASON(ASN1_R_BOOLEAN_IS_WRONG_LENGTH),"boolean is wrong length"}, 163{ASN1_R_BOOLEAN_IS_WRONG_LENGTH ,"boolean is wrong length"},
169{ERR_REASON(ASN1_R_BUFFER_TOO_SMALL) ,"buffer too small"}, 164{ASN1_R_BUFFER_TOO_SMALL ,"buffer too small"},
170{ERR_REASON(ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER),"cipher has no object identifier"}, 165{ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER ,"cipher has no object identifier"},
171{ERR_REASON(ASN1_R_DATA_IS_WRONG) ,"data is wrong"}, 166{ASN1_R_DATA_IS_WRONG ,"data is wrong"},
172{ERR_REASON(ASN1_R_DECODE_ERROR) ,"decode error"}, 167{ASN1_R_DECODE_ERROR ,"decode error"},
173{ERR_REASON(ASN1_R_DECODING_ERROR) ,"decoding error"}, 168{ASN1_R_DECODING_ERROR ,"decoding error"},
174{ERR_REASON(ASN1_R_ENCODE_ERROR) ,"encode error"}, 169{ASN1_R_ENCODE_ERROR ,"encode error"},
175{ERR_REASON(ASN1_R_ERROR_GETTING_TIME) ,"error getting time"}, 170{ASN1_R_ERROR_GETTING_TIME ,"error getting time"},
176{ERR_REASON(ASN1_R_ERROR_LOADING_SECTION),"error loading section"}, 171{ASN1_R_ERROR_LOADING_SECTION ,"error loading section"},
177{ERR_REASON(ASN1_R_ERROR_PARSING_SET_ELEMENT),"error parsing set element"}, 172{ASN1_R_ERROR_PARSING_SET_ELEMENT ,"error parsing set element"},
178{ERR_REASON(ASN1_R_ERROR_SETTING_CIPHER_PARAMS),"error setting cipher params"}, 173{ASN1_R_ERROR_SETTING_CIPHER_PARAMS ,"error setting cipher params"},
179{ERR_REASON(ASN1_R_EXPECTING_AN_INTEGER) ,"expecting an integer"}, 174{ASN1_R_EXPECTING_AN_INTEGER ,"expecting an integer"},
180{ERR_REASON(ASN1_R_EXPECTING_AN_OBJECT) ,"expecting an object"}, 175{ASN1_R_EXPECTING_AN_OBJECT ,"expecting an object"},
181{ERR_REASON(ASN1_R_EXPECTING_A_BOOLEAN) ,"expecting a boolean"}, 176{ASN1_R_EXPECTING_A_BOOLEAN ,"expecting a boolean"},
182{ERR_REASON(ASN1_R_EXPECTING_A_TIME) ,"expecting a time"}, 177{ASN1_R_EXPECTING_A_TIME ,"expecting a time"},
183{ERR_REASON(ASN1_R_EXPLICIT_LENGTH_MISMATCH),"explicit length mismatch"}, 178{ASN1_R_EXPLICIT_LENGTH_MISMATCH ,"explicit length mismatch"},
184{ERR_REASON(ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED),"explicit tag not constructed"}, 179{ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED ,"explicit tag not constructed"},
185{ERR_REASON(ASN1_R_FIELD_MISSING) ,"field missing"}, 180{ASN1_R_FIELD_MISSING ,"field missing"},
186{ERR_REASON(ASN1_R_FIRST_NUM_TOO_LARGE) ,"first num too large"}, 181{ASN1_R_FIRST_NUM_TOO_LARGE ,"first num too large"},
187{ERR_REASON(ASN1_R_HEADER_TOO_LONG) ,"header too long"}, 182{ASN1_R_HEADER_TOO_LONG ,"header too long"},
188{ERR_REASON(ASN1_R_ILLEGAL_CHARACTERS) ,"illegal characters"}, 183{ASN1_R_ILLEGAL_CHARACTERS ,"illegal characters"},
189{ERR_REASON(ASN1_R_ILLEGAL_NULL) ,"illegal null"}, 184{ASN1_R_ILLEGAL_NULL ,"illegal null"},
190{ERR_REASON(ASN1_R_ILLEGAL_OPTIONAL_ANY) ,"illegal optional any"}, 185{ASN1_R_ILLEGAL_OPTIONAL_ANY ,"illegal optional any"},
191{ERR_REASON(ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE),"illegal options on item template"}, 186{ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE ,"illegal options on item template"},
192{ERR_REASON(ASN1_R_ILLEGAL_TAGGED_ANY) ,"illegal tagged any"}, 187{ASN1_R_ILLEGAL_TAGGED_ANY ,"illegal tagged any"},
193{ERR_REASON(ASN1_R_INTEGER_TOO_LARGE_FOR_LONG),"integer too large for long"}, 188{ASN1_R_INTEGER_TOO_LARGE_FOR_LONG ,"integer too large for long"},
194{ERR_REASON(ASN1_R_INVALID_BMPSTRING_LENGTH),"invalid bmpstring length"}, 189{ASN1_R_INVALID_BMPSTRING_LENGTH ,"invalid bmpstring length"},
195{ERR_REASON(ASN1_R_INVALID_DIGIT) ,"invalid digit"}, 190{ASN1_R_INVALID_DIGIT ,"invalid digit"},
196{ERR_REASON(ASN1_R_INVALID_SEPARATOR) ,"invalid separator"}, 191{ASN1_R_INVALID_SEPARATOR ,"invalid separator"},
197{ERR_REASON(ASN1_R_INVALID_TIME_FORMAT) ,"invalid time format"}, 192{ASN1_R_INVALID_TIME_FORMAT ,"invalid time format"},
198{ERR_REASON(ASN1_R_INVALID_UNIVERSALSTRING_LENGTH),"invalid universalstring length"}, 193{ASN1_R_INVALID_UNIVERSALSTRING_LENGTH ,"invalid universalstring length"},
199{ERR_REASON(ASN1_R_INVALID_UTF8STRING) ,"invalid utf8string"}, 194{ASN1_R_INVALID_UTF8STRING ,"invalid utf8string"},
200{ERR_REASON(ASN1_R_IV_TOO_LARGE) ,"iv too large"}, 195{ASN1_R_IV_TOO_LARGE ,"iv too large"},
201{ERR_REASON(ASN1_R_LENGTH_ERROR) ,"length error"}, 196{ASN1_R_LENGTH_ERROR ,"length error"},
202{ERR_REASON(ASN1_R_MISSING_EOC) ,"missing eoc"}, 197{ASN1_R_MISSING_EOC ,"missing eoc"},
203{ERR_REASON(ASN1_R_MISSING_SECOND_NUMBER),"missing second number"}, 198{ASN1_R_MISSING_SECOND_NUMBER ,"missing second number"},
204{ERR_REASON(ASN1_R_MSTRING_NOT_UNIVERSAL),"mstring not universal"}, 199{ASN1_R_MSTRING_NOT_UNIVERSAL ,"mstring not universal"},
205{ERR_REASON(ASN1_R_MSTRING_WRONG_TAG) ,"mstring wrong tag"}, 200{ASN1_R_MSTRING_WRONG_TAG ,"mstring wrong tag"},
206{ERR_REASON(ASN1_R_NESTED_ASN1_STRING) ,"nested asn1 string"}, 201{ASN1_R_NON_HEX_CHARACTERS ,"non hex characters"},
207{ERR_REASON(ASN1_R_NON_HEX_CHARACTERS) ,"non hex characters"}, 202{ASN1_R_NOT_ENOUGH_DATA ,"not enough data"},
208{ERR_REASON(ASN1_R_NOT_ENOUGH_DATA) ,"not enough data"}, 203{ASN1_R_NO_MATCHING_CHOICE_TYPE ,"no matching choice type"},
209{ERR_REASON(ASN1_R_NO_MATCHING_CHOICE_TYPE),"no matching choice type"}, 204{ASN1_R_NULL_IS_WRONG_LENGTH ,"null is wrong length"},
210{ERR_REASON(ASN1_R_NULL_IS_WRONG_LENGTH) ,"null is wrong length"}, 205{ASN1_R_ODD_NUMBER_OF_CHARS ,"odd number of chars"},
211{ERR_REASON(ASN1_R_ODD_NUMBER_OF_CHARS) ,"odd number of chars"}, 206{ASN1_R_PRIVATE_KEY_HEADER_MISSING ,"private key header missing"},
212{ERR_REASON(ASN1_R_PRIVATE_KEY_HEADER_MISSING),"private key header missing"}, 207{ASN1_R_SECOND_NUMBER_TOO_LARGE ,"second number too large"},
213{ERR_REASON(ASN1_R_SECOND_NUMBER_TOO_LARGE),"second number too large"}, 208{ASN1_R_SEQUENCE_LENGTH_MISMATCH ,"sequence length mismatch"},
214{ERR_REASON(ASN1_R_SEQUENCE_LENGTH_MISMATCH),"sequence length mismatch"}, 209{ASN1_R_SEQUENCE_NOT_CONSTRUCTED ,"sequence not constructed"},
215{ERR_REASON(ASN1_R_SEQUENCE_NOT_CONSTRUCTED),"sequence not constructed"}, 210{ASN1_R_SHORT_LINE ,"short line"},
216{ERR_REASON(ASN1_R_SHORT_LINE) ,"short line"}, 211{ASN1_R_STRING_TOO_LONG ,"string too long"},
217{ERR_REASON(ASN1_R_STRING_TOO_LONG) ,"string too long"}, 212{ASN1_R_STRING_TOO_SHORT ,"string too short"},
218{ERR_REASON(ASN1_R_STRING_TOO_SHORT) ,"string too short"}, 213{ASN1_R_TAG_VALUE_TOO_HIGH ,"tag value too high"},
219{ERR_REASON(ASN1_R_TAG_VALUE_TOO_HIGH) ,"tag value too high"}, 214{ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD,"the asn1 object identifier is not known for this md"},
220{ERR_REASON(ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD),"the asn1 object identifier is not known for this md"}, 215{ASN1_R_TOO_LONG ,"too long"},
221{ERR_REASON(ASN1_R_TOO_LONG) ,"too long"}, 216{ASN1_R_TYPE_NOT_CONSTRUCTED ,"type not constructed"},
222{ERR_REASON(ASN1_R_TYPE_NOT_CONSTRUCTED) ,"type not constructed"}, 217{ASN1_R_UNABLE_TO_DECODE_RSA_KEY ,"unable to decode rsa key"},
223{ERR_REASON(ASN1_R_UNABLE_TO_DECODE_RSA_KEY),"unable to decode rsa key"}, 218{ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY ,"unable to decode rsa private key"},
224{ERR_REASON(ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY),"unable to decode rsa private key"}, 219{ASN1_R_UNEXPECTED_EOC ,"unexpected eoc"},
225{ERR_REASON(ASN1_R_UNEXPECTED_EOC) ,"unexpected eoc"}, 220{ASN1_R_UNKNOWN_FORMAT ,"unknown format"},
226{ERR_REASON(ASN1_R_UNKNOWN_FORMAT) ,"unknown format"}, 221{ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM ,"unknown message digest algorithm"},
227{ERR_REASON(ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM),"unknown message digest algorithm"}, 222{ASN1_R_UNKNOWN_OBJECT_TYPE ,"unknown object type"},
228{ERR_REASON(ASN1_R_UNKNOWN_OBJECT_TYPE) ,"unknown object type"}, 223{ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE ,"unknown public key type"},
229{ERR_REASON(ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE),"unknown public key type"}, 224{ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE ,"unsupported any defined by type"},
230{ERR_REASON(ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE),"unsupported any defined by type"}, 225{ASN1_R_UNSUPPORTED_CIPHER ,"unsupported cipher"},
231{ERR_REASON(ASN1_R_UNSUPPORTED_CIPHER) ,"unsupported cipher"}, 226{ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM ,"unsupported encryption algorithm"},
232{ERR_REASON(ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM),"unsupported encryption algorithm"}, 227{ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE ,"unsupported public key type"},
233{ERR_REASON(ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE),"unsupported public key type"}, 228{ASN1_R_WRONG_TAG ,"wrong tag"},
234{ERR_REASON(ASN1_R_WRONG_TAG) ,"wrong tag"}, 229{ASN1_R_WRONG_TYPE ,"wrong type"},
235{ERR_REASON(ASN1_R_WRONG_TYPE) ,"wrong type"},
236{0,NULL} 230{0,NULL}
237 }; 231 };
238 232
@@ -246,8 +240,8 @@ void ERR_load_ASN1_strings(void)
246 { 240 {
247 init=0; 241 init=0;
248#ifndef OPENSSL_NO_ERR 242#ifndef OPENSSL_NO_ERR
249 ERR_load_strings(0,ASN1_str_functs); 243 ERR_load_strings(ERR_LIB_ASN1,ASN1_str_functs);
250 ERR_load_strings(0,ASN1_str_reasons); 244 ERR_load_strings(ERR_LIB_ASN1,ASN1_str_reasons);
251#endif 245#endif
252 246
253 } 247 }
diff --git a/src/lib/libssl/src/crypto/asn1/f.c b/src/lib/libssl/src/crypto/asn1/f.c
new file mode 100644
index 0000000000..82bccdfd51
--- /dev/null
+++ b/src/lib/libssl/src/crypto/asn1/f.c
@@ -0,0 +1,80 @@
1/* crypto/asn1/f.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58#include <stdio.h>
59#include <openssl/asn1.h>
60#include <openssl/err.h>
61
62main()
63 {
64 ASN1_TYPE *at;
65 char buf[512];
66 int n;
67 long l;
68
69 at=ASN1_TYPE_new();
70
71 n=ASN1_TYPE_set_int_octetstring(at,98736,"01234567",8);
72 printf("%d\n",n);
73 n=ASN1_TYPE_get_int_octetstring(at,&l,buf,8);
74 buf[8]='\0';
75 printf("%ld %d %d\n",l,n,buf[8]);
76 buf[8]='\0';
77 printf("%s\n",buf);
78 ERR_load_crypto_strings();
79 ERR_print_errors_fp(stderr);
80 }
diff --git a/src/lib/libssl/src/crypto/asn1/t_x509.c b/src/lib/libssl/src/crypto/asn1/t_x509.c
index d1034c47f8..30f68561b7 100644
--- a/src/lib/libssl/src/crypto/asn1/t_x509.c
+++ b/src/lib/libssl/src/crypto/asn1/t_x509.c
@@ -321,7 +321,7 @@ int X509_signature_print(BIO *bp, X509_ALGOR *sigalg, ASN1_STRING *sig)
321int ASN1_STRING_print(BIO *bp, ASN1_STRING *v) 321int ASN1_STRING_print(BIO *bp, ASN1_STRING *v)
322 { 322 {
323 int i,n; 323 int i,n;
324 char buf[80],*p;; 324 char buf[80],*p;
325 325
326 if (v == NULL) return(0); 326 if (v == NULL) return(0);
327 n=0; 327 n=0;
diff --git a/src/lib/libssl/src/crypto/asn1/tasn_dec.c b/src/lib/libssl/src/crypto/asn1/tasn_dec.c
index c22501fc63..2426cb6253 100644
--- a/src/lib/libssl/src/crypto/asn1/tasn_dec.c
+++ b/src/lib/libssl/src/crypto/asn1/tasn_dec.c
@@ -66,7 +66,6 @@
66#include <openssl/err.h> 66#include <openssl/err.h>
67 67
68static int asn1_check_eoc(unsigned char **in, long len); 68static int asn1_check_eoc(unsigned char **in, long len);
69static int asn1_find_end(unsigned char **in, long len, char inf);
70static int asn1_collect(BUF_MEM *buf, unsigned char **in, long len, char inf, int tag, int aclass); 69static int asn1_collect(BUF_MEM *buf, unsigned char **in, long len, char inf, int tag, int aclass);
71static int collect_data(BUF_MEM *buf, unsigned char **p, long plen); 70static int collect_data(BUF_MEM *buf, unsigned char **p, long plen);
72static int asn1_check_tlen(long *olen, int *otag, unsigned char *oclass, char *inf, char *cst, 71static int asn1_check_tlen(long *olen, int *otag, unsigned char *oclass, char *inf, char *cst,
@@ -645,7 +644,7 @@ static int asn1_d2i_ex_primitive(ASN1_VALUE **pval, unsigned char **in, long inl
645 cont = *in; 644 cont = *in;
646 /* If indefinite length constructed find the real end */ 645 /* If indefinite length constructed find the real end */
647 if(inf) { 646 if(inf) {
648 if(!asn1_find_end(&p, plen, inf)) goto err; 647 if(!asn1_collect(NULL, &p, plen, inf, -1, -1)) goto err;
649 len = p - cont; 648 len = p - cont;
650 } else { 649 } else {
651 len = p - cont + plen; 650 len = p - cont + plen;
@@ -808,66 +807,12 @@ int asn1_ex_c2i(ASN1_VALUE **pval, unsigned char *cont, int len, int utype, char
808 return ret; 807 return ret;
809} 808}
810 809
811/* This function finds the end of an ASN1 structure when passed its maximum
812 * length, whether it is indefinite length and a pointer to the content.
813 * This is more efficient than calling asn1_collect because it does not
814 * recurse on each indefinite length header.
815 */
816
817static int asn1_find_end(unsigned char **in, long len, char inf)
818 {
819 int expected_eoc;
820 long plen;
821 unsigned char *p = *in, *q;
822 /* If not indefinite length constructed just add length */
823 if (inf == 0)
824 {
825 *in += len;
826 return 1;
827 }
828 expected_eoc = 1;
829 /* Indefinite length constructed form. Find the end when enough EOCs
830 * are found. If more indefinite length constructed headers
831 * are encountered increment the expected eoc count otherwise justi
832 * skip to the end of the data.
833 */
834 while (len > 0)
835 {
836 if(asn1_check_eoc(&p, len))
837 {
838 expected_eoc--;
839 if (expected_eoc == 0)
840 break;
841 len -= 2;
842 continue;
843 }
844 q = p;
845 /* Just read in a header: only care about the length */
846 if(!asn1_check_tlen(&plen, NULL, NULL, &inf, NULL, &p, len,
847 -1, 0, 0, NULL))
848 {
849 ASN1err(ASN1_F_ASN1_FIND_END, ERR_R_NESTED_ASN1_ERROR);
850 return 0;
851 }
852 if (inf)
853 expected_eoc++;
854 else
855 p += plen;
856 len -= p - q;
857 }
858 if (expected_eoc)
859 {
860 ASN1err(ASN1_F_ASN1_FIND_END, ASN1_R_MISSING_EOC);
861 return 0;
862 }
863 *in = p;
864 return 1;
865 }
866
867/* This function collects the asn1 data from a constructred string 810/* This function collects the asn1 data from a constructred string
868 * type into a buffer. The values of 'in' and 'len' should refer 811 * type into a buffer. The values of 'in' and 'len' should refer
869 * to the contents of the constructed type and 'inf' should be set 812 * to the contents of the constructed type and 'inf' should be set
870 * if it is indefinite length. 813 * if it is indefinite length. If 'buf' is NULL then we just want
814 * to find the end of the current structure: useful for indefinite
815 * length constructed stuff.
871 */ 816 */
872 817
873static int asn1_collect(BUF_MEM *buf, unsigned char **in, long len, char inf, int tag, int aclass) 818static int asn1_collect(BUF_MEM *buf, unsigned char **in, long len, char inf, int tag, int aclass)
@@ -877,6 +822,11 @@ static int asn1_collect(BUF_MEM *buf, unsigned char **in, long len, char inf, in
877 char cst, ininf; 822 char cst, ininf;
878 p = *in; 823 p = *in;
879 inf &= 1; 824 inf &= 1;
825 /* If no buffer and not indefinite length constructed just pass over the encoded data */
826 if(!buf && !inf) {
827 *in += len;
828 return 1;
829 }
880 while(len > 0) { 830 while(len > 0) {
881 q = p; 831 q = p;
882 /* Check for EOC */ 832 /* Check for EOC */
@@ -895,15 +845,9 @@ static int asn1_collect(BUF_MEM *buf, unsigned char **in, long len, char inf, in
895 } 845 }
896 /* If indefinite length constructed update max length */ 846 /* If indefinite length constructed update max length */
897 if(cst) { 847 if(cst) {
898#ifdef OPENSSL_ALLOW_NESTED_ASN1_STRINGS 848 if(!asn1_collect(buf, &p, plen, ininf, tag, aclass)) return 0;
899 if (!asn1_collect(buf, &p, plen, ininf, tag, aclass))
900 return 0;
901#else
902 ASN1err(ASN1_F_ASN1_COLLECT, ASN1_R_NESTED_ASN1_STRING);
903 return 0;
904#endif
905 } else { 849 } else {
906 if(plen && !collect_data(buf, &p, plen)) return 0; 850 if(!collect_data(buf, &p, plen)) return 0;
907 } 851 }
908 len -= p - q; 852 len -= p - q;
909 } 853 }
diff --git a/src/lib/libssl/src/crypto/asn1/tasn_enc.c b/src/lib/libssl/src/crypto/asn1/tasn_enc.c
index c675c3c832..f6c8ddef0a 100644
--- a/src/lib/libssl/src/crypto/asn1/tasn_enc.c
+++ b/src/lib/libssl/src/crypto/asn1/tasn_enc.c
@@ -445,12 +445,9 @@ int asn1_ex_i2c(ASN1_VALUE **pval, unsigned char *cout, int *putype, const ASN1_
445 case V_ASN1_BOOLEAN: 445 case V_ASN1_BOOLEAN:
446 tbool = (ASN1_BOOLEAN *)pval; 446 tbool = (ASN1_BOOLEAN *)pval;
447 if(*tbool == -1) return -1; 447 if(*tbool == -1) return -1;
448 if (it->utype != V_ASN1_ANY) 448 /* Default handling if value == size field then omit */
449 { 449 if(*tbool && (it->size > 0)) return -1;
450 /* Default handling if value == size field then omit */ 450 if(!*tbool && !it->size) return -1;
451 if(*tbool && (it->size > 0)) return -1;
452 if(!*tbool && !it->size) return -1;
453 }
454 c = (unsigned char)*tbool; 451 c = (unsigned char)*tbool;
455 cont = &c; 452 cont = &c;
456 len = 1; 453 len = 1;
diff --git a/src/lib/libssl/src/crypto/asn1/x_cinf.c b/src/lib/libssl/src/crypto/asn1/x_cinf.c
new file mode 100644
index 0000000000..339a110eef
--- /dev/null
+++ b/src/lib/libssl/src/crypto/asn1/x_cinf.c
@@ -0,0 +1,201 @@
1/* crypto/asn1/x_cinf.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include "cryptlib.h"
61#include <openssl/asn1_mac.h>
62#include <openssl/x509.h>
63
64int i2d_X509_CINF(X509_CINF *a, unsigned char **pp)
65 {
66 int v1=0,v2=0;
67 M_ASN1_I2D_vars(a);
68
69 M_ASN1_I2D_len_EXP_opt(a->version,i2d_ASN1_INTEGER,0,v1);
70 M_ASN1_I2D_len(a->serialNumber, i2d_ASN1_INTEGER);
71 M_ASN1_I2D_len(a->signature, i2d_X509_ALGOR);
72 M_ASN1_I2D_len(a->issuer, i2d_X509_NAME);
73 M_ASN1_I2D_len(a->validity, i2d_X509_VAL);
74 M_ASN1_I2D_len(a->subject, i2d_X509_NAME);
75 M_ASN1_I2D_len(a->key, i2d_X509_PUBKEY);
76 M_ASN1_I2D_len_IMP_opt(a->issuerUID, i2d_ASN1_BIT_STRING);
77 M_ASN1_I2D_len_IMP_opt(a->subjectUID, i2d_ASN1_BIT_STRING);
78 M_ASN1_I2D_len_EXP_SEQUENCE_opt_type(X509_EXTENSION,a->extensions,
79 i2d_X509_EXTENSION,3,
80 V_ASN1_SEQUENCE,v2);
81
82 M_ASN1_I2D_seq_total();
83
84 M_ASN1_I2D_put_EXP_opt(a->version,i2d_ASN1_INTEGER,0,v1);
85 M_ASN1_I2D_put(a->serialNumber, i2d_ASN1_INTEGER);
86 M_ASN1_I2D_put(a->signature, i2d_X509_ALGOR);
87 M_ASN1_I2D_put(a->issuer, i2d_X509_NAME);
88 M_ASN1_I2D_put(a->validity, i2d_X509_VAL);
89 M_ASN1_I2D_put(a->subject, i2d_X509_NAME);
90 M_ASN1_I2D_put(a->key, i2d_X509_PUBKEY);
91 M_ASN1_I2D_put_IMP_opt(a->issuerUID, i2d_ASN1_BIT_STRING,1);
92 M_ASN1_I2D_put_IMP_opt(a->subjectUID, i2d_ASN1_BIT_STRING,2);
93 M_ASN1_I2D_put_EXP_SEQUENCE_opt_type(X509_EXTENSION,a->extensions,
94 i2d_X509_EXTENSION,3,
95 V_ASN1_SEQUENCE,v2);
96
97 M_ASN1_I2D_finish();
98 }
99
100X509_CINF *d2i_X509_CINF(X509_CINF **a, unsigned char **pp, long length)
101 {
102 int ver=0;
103 M_ASN1_D2I_vars(a,X509_CINF *,X509_CINF_new);
104
105 M_ASN1_D2I_Init();
106 M_ASN1_D2I_start_sequence();
107 /* we have the optional version field */
108 if (M_ASN1_next == (V_ASN1_CONTEXT_SPECIFIC | V_ASN1_CONSTRUCTED | 0))
109 {
110 M_ASN1_D2I_get_EXP_opt(ret->version,d2i_ASN1_INTEGER,0);
111 if (ret->version->data != NULL)
112 ver=ret->version->data[0];
113 }
114 else
115 {
116 if (ret->version != NULL)
117 {
118 M_ASN1_INTEGER_free(ret->version);
119 ret->version=NULL;
120 }
121 }
122 M_ASN1_D2I_get(ret->serialNumber,d2i_ASN1_INTEGER);
123 M_ASN1_D2I_get(ret->signature,d2i_X509_ALGOR);
124 M_ASN1_D2I_get(ret->issuer,d2i_X509_NAME);
125 M_ASN1_D2I_get(ret->validity,d2i_X509_VAL);
126 M_ASN1_D2I_get(ret->subject,d2i_X509_NAME);
127 M_ASN1_D2I_get(ret->key,d2i_X509_PUBKEY);
128 if (ver >= 1) /* version 2 extensions */
129 {
130 if (ret->issuerUID != NULL)
131 {
132 M_ASN1_BIT_STRING_free(ret->issuerUID);
133 ret->issuerUID=NULL;
134 }
135 if (ret->subjectUID != NULL)
136 {
137 M_ASN1_BIT_STRING_free(ret->subjectUID);
138 ret->subjectUID=NULL;
139 }
140 M_ASN1_D2I_get_IMP_opt(ret->issuerUID,d2i_ASN1_BIT_STRING, 1,
141 V_ASN1_BIT_STRING);
142 M_ASN1_D2I_get_IMP_opt(ret->subjectUID,d2i_ASN1_BIT_STRING, 2,
143 V_ASN1_BIT_STRING);
144 }
145/* Note: some broken certificates include extensions but don't set
146 * the version number properly. By bypassing this check they can
147 * be parsed.
148 */
149
150#ifdef VERSION_EXT_CHECK
151 if (ver >= 2) /* version 3 extensions */
152#endif
153 {
154 if (ret->extensions != NULL)
155 while (sk_X509_EXTENSION_num(ret->extensions))
156 X509_EXTENSION_free(
157 sk_X509_EXTENSION_pop(ret->extensions));
158 M_ASN1_D2I_get_EXP_set_opt_type(X509_EXTENSION,ret->extensions,
159 d2i_X509_EXTENSION,
160 X509_EXTENSION_free,3,
161 V_ASN1_SEQUENCE);
162 }
163 M_ASN1_D2I_Finish(a,X509_CINF_free,ASN1_F_D2I_X509_CINF);
164 }
165
166X509_CINF *X509_CINF_new(void)
167 {
168 X509_CINF *ret=NULL;
169 ASN1_CTX c;
170
171 M_ASN1_New_Malloc(ret,X509_CINF);
172 ret->version=NULL;
173 M_ASN1_New(ret->serialNumber,M_ASN1_INTEGER_new);
174 M_ASN1_New(ret->signature,X509_ALGOR_new);
175 M_ASN1_New(ret->issuer,X509_NAME_new);
176 M_ASN1_New(ret->validity,X509_VAL_new);
177 M_ASN1_New(ret->subject,X509_NAME_new);
178 M_ASN1_New(ret->key,X509_PUBKEY_new);
179 ret->issuerUID=NULL;
180 ret->subjectUID=NULL;
181 ret->extensions=NULL;
182 return(ret);
183 M_ASN1_New_Error(ASN1_F_X509_CINF_NEW);
184 }
185
186void X509_CINF_free(X509_CINF *a)
187 {
188 if (a == NULL) return;
189 M_ASN1_INTEGER_free(a->version);
190 M_ASN1_INTEGER_free(a->serialNumber);
191 X509_ALGOR_free(a->signature);
192 X509_NAME_free(a->issuer);
193 X509_VAL_free(a->validity);
194 X509_NAME_free(a->subject);
195 X509_PUBKEY_free(a->key);
196 M_ASN1_BIT_STRING_free(a->issuerUID);
197 M_ASN1_BIT_STRING_free(a->subjectUID);
198 sk_X509_EXTENSION_pop_free(a->extensions,X509_EXTENSION_free);
199 OPENSSL_free(a);
200 }
201
diff --git a/src/lib/libssl/src/crypto/bf/Makefile.ssl b/src/lib/libssl/src/crypto/bf/Makefile.ssl
new file mode 100644
index 0000000000..be3ad77a05
--- /dev/null
+++ b/src/lib/libssl/src/crypto/bf/Makefile.ssl
@@ -0,0 +1,115 @@
1#
2# SSLeay/crypto/blowfish/Makefile
3#
4
5DIR= bf
6TOP= ../..
7CC= cc
8CPP= $(CC) -E
9INCLUDES=
10CFLAG=-g
11INSTALL_PREFIX=
12OPENSSLDIR= /usr/local/ssl
13INSTALLTOP=/usr/local/ssl
14MAKE= make -f Makefile.ssl
15MAKEDEPPROG= makedepend
16MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
17MAKEFILE= Makefile.ssl
18AR= ar r
19
20BF_ENC= bf_enc.o
21# or use
22#DES_ENC= bx86-elf.o
23
24CFLAGS= $(INCLUDES) $(CFLAG)
25ASFLAGS= $(INCLUDES) $(ASFLAG)
26
27GENERAL=Makefile
28TEST=bftest.c
29APPS=
30
31LIB=$(TOP)/libcrypto.a
32LIBSRC=bf_skey.c bf_ecb.c bf_enc.c bf_cfb64.c bf_ofb64.c
33LIBOBJ=bf_skey.o bf_ecb.o $(BF_ENC) bf_cfb64.o bf_ofb64.o
34
35SRC= $(LIBSRC)
36
37EXHEADER= blowfish.h
38HEADER= bf_pi.h bf_locl.h $(EXHEADER)
39
40ALL= $(GENERAL) $(SRC) $(HEADER)
41
42top:
43 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
44
45all: lib
46
47lib: $(LIBOBJ)
48 $(AR) $(LIB) $(LIBOBJ)
49 $(RANLIB) $(LIB) || echo Never mind.
50 @touch lib
51
52# elf
53asm/bx86-elf.s: asm/bf-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
54 (cd asm; $(PERL) bf-586.pl elf $(CFLAGS) $(PROCESSOR) > bx86-elf.s)
55
56# a.out
57asm/bx86-out.o: asm/bx86unix.cpp
58 $(CPP) -DOUT asm/bx86unix.cpp | as -o asm/bx86-out.o
59
60# bsdi
61asm/bx86bsdi.o: asm/bx86unix.cpp
62 $(CPP) -DBSDI asm/bx86unix.cpp | sed 's/ :/:/' | as -o asm/bx86bsdi.o
63
64asm/bx86unix.cpp: asm/bf-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
65 (cd asm; $(PERL) bf-586.pl cpp $(PROCESSOR) >bx86unix.cpp)
66
67files:
68 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
69
70links:
71 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
72 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
73 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
74 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
75
76install: installs
77
78installs:
79 @for i in $(EXHEADER) ; \
80 do \
81 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
82 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
83 done;
84
85tags:
86 ctags $(SRC)
87
88tests:
89
90lint:
91 lint -DLINT $(INCLUDES) $(SRC)>fluff
92
93depend:
94 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
95
96dclean:
97 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
98 mv -f Makefile.new $(MAKEFILE)
99
100clean:
101 rm -f asm/bx86unix.cpp asm/*-elf.* *.o asm/*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
102
103# DO NOT DELETE THIS LINE -- make depend depends on it.
104
105bf_cfb64.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h
106bf_cfb64.o: ../../include/openssl/opensslconf.h bf_cfb64.c bf_locl.h
107bf_ecb.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h
108bf_ecb.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
109bf_ecb.o: bf_ecb.c bf_locl.h
110bf_enc.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h
111bf_enc.o: ../../include/openssl/opensslconf.h bf_enc.c bf_locl.h
112bf_ofb64.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h
113bf_ofb64.o: ../../include/openssl/opensslconf.h bf_locl.h bf_ofb64.c
114bf_skey.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h
115bf_skey.o: ../../include/openssl/opensslconf.h 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..b5a4760d09 100644
--- a/src/lib/libssl/src/crypto/bf/asm/bf-586.pl
+++ b/src/lib/libssl/src/crypto/bf/asm/bf-586.pl
@@ -18,7 +18,7 @@ $tmp4="edx";
18 18
19&BF_encrypt("BF_encrypt",1); 19&BF_encrypt("BF_encrypt",1);
20&BF_encrypt("BF_decrypt",0); 20&BF_encrypt("BF_decrypt",0);
21&cbc("BF_cbc_encrypt","BF_encrypt","BF_decrypt",1,4,5,3,-1,-1); 21&cbc("BF_cbc_encrypt","BF_encrypt","BF_decrypt",1,4,5,3,-1,-1) unless $main'openbsd;
22&asm_finish(); 22&asm_finish();
23 23
24sub BF_encrypt 24sub BF_encrypt
diff --git a/src/lib/libssl/src/crypto/bf/bf_skey.c b/src/lib/libssl/src/crypto/bf/bf_skey.c
index 1931aba83f..fc5bebefce 100644
--- a/src/lib/libssl/src/crypto/bf/bf_skey.c
+++ b/src/lib/libssl/src/crypto/bf/bf_skey.c
@@ -60,7 +60,6 @@
60#include <string.h> 60#include <string.h>
61#include <openssl/crypto.h> 61#include <openssl/crypto.h>
62#include <openssl/blowfish.h> 62#include <openssl/blowfish.h>
63#include <openssl/fips.h>
64#include "bf_locl.h" 63#include "bf_locl.h"
65#include "bf_pi.h" 64#include "bf_pi.h"
66 65
diff --git a/src/lib/libssl/src/crypto/bio/Makefile.ssl b/src/lib/libssl/src/crypto/bio/Makefile.ssl
new file mode 100644
index 0000000000..d0b9e297b0
--- /dev/null
+++ b/src/lib/libssl/src/crypto/bio/Makefile.ssl
@@ -0,0 +1,216 @@
1#
2# SSLeay/crypto/bio/Makefile
3#
4
5DIR= bio
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST=
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC= bio_lib.c bio_cb.c bio_err.c \
27 bss_mem.c bss_null.c bss_fd.c \
28 bss_file.c bss_sock.c bss_conn.c \
29 bf_null.c bf_buff.c b_print.c b_dump.c \
30 b_sock.c bss_acpt.c bf_nbio.c bss_log.c bss_bio.c
31# bf_lbuf.c
32LIBOBJ= bio_lib.o bio_cb.o bio_err.o \
33 bss_mem.o bss_null.o bss_fd.o \
34 bss_file.o bss_sock.o bss_conn.o \
35 bf_null.o bf_buff.o b_print.o b_dump.o \
36 b_sock.o bss_acpt.o bf_nbio.o bss_log.o bss_bio.o
37# bf_lbuf.o
38
39SRC= $(LIBSRC)
40
41EXHEADER= bio.h
42HEADER= bss_file.c $(EXHEADER)
43
44ALL= $(GENERAL) $(SRC) $(HEADER)
45
46top:
47 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
48
49all: lib
50
51lib: $(LIBOBJ)
52 $(AR) $(LIB) $(LIBOBJ)
53 $(RANLIB) $(LIB) || echo Never mind.
54 @touch lib
55
56files:
57 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
58
59links:
60 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
61 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
62 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
63 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
64
65install:
66 @for i in $(EXHEADER); \
67 do \
68 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
69 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
70 done;
71
72tags:
73 ctags $(SRC)
74
75tests:
76
77lint:
78 lint -DLINT $(INCLUDES) $(SRC)>fluff
79
80depend:
81 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
82
83dclean:
84 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
85 mv -f Makefile.new $(MAKEFILE)
86
87clean:
88 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
89
90# DO NOT DELETE THIS LINE -- make depend depends on it.
91
92b_dump.o: ../../e_os.h ../../include/openssl/bio.h
93b_dump.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
94b_dump.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
95b_dump.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
96b_dump.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
97b_dump.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
98b_dump.o: ../cryptlib.h b_dump.c
99b_print.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
100b_print.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
101b_print.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
102b_print.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
103b_print.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
104b_print.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
105b_print.o: ../cryptlib.h b_print.c
106b_sock.o: ../../e_os.h ../../include/openssl/bio.h
107b_sock.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
108b_sock.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
109b_sock.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
110b_sock.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
111b_sock.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
112b_sock.o: ../cryptlib.h b_sock.c
113bf_buff.o: ../../e_os.h ../../include/openssl/bio.h
114bf_buff.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
115bf_buff.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
116bf_buff.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
117bf_buff.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
118bf_buff.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
119bf_buff.o: ../cryptlib.h bf_buff.c
120bf_nbio.o: ../../e_os.h ../../include/openssl/bio.h
121bf_nbio.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
122bf_nbio.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
123bf_nbio.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
124bf_nbio.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
125bf_nbio.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
126bf_nbio.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
127bf_nbio.o: ../cryptlib.h bf_nbio.c
128bf_null.o: ../../e_os.h ../../include/openssl/bio.h
129bf_null.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
130bf_null.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
131bf_null.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
132bf_null.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
133bf_null.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
134bf_null.o: ../cryptlib.h bf_null.c
135bio_cb.o: ../../e_os.h ../../include/openssl/bio.h
136bio_cb.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
137bio_cb.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
138bio_cb.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
139bio_cb.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
140bio_cb.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
141bio_cb.o: ../cryptlib.h bio_cb.c
142bio_err.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
143bio_err.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
144bio_err.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
145bio_err.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
146bio_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
147bio_err.o: bio_err.c
148bio_lib.o: ../../e_os.h ../../include/openssl/bio.h
149bio_lib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
150bio_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
151bio_lib.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
152bio_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
153bio_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
154bio_lib.o: ../cryptlib.h bio_lib.c
155bss_acpt.o: ../../e_os.h ../../include/openssl/bio.h
156bss_acpt.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
157bss_acpt.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
158bss_acpt.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
159bss_acpt.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
160bss_acpt.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
161bss_acpt.o: ../cryptlib.h bss_acpt.c
162bss_bio.o: ../../e_os.h ../../include/openssl/bio.h
163bss_bio.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
164bss_bio.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
165bss_bio.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
166bss_bio.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
167bss_bio.o: ../../include/openssl/symhacks.h bss_bio.c
168bss_conn.o: ../../e_os.h ../../include/openssl/bio.h
169bss_conn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
170bss_conn.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
171bss_conn.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
172bss_conn.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
173bss_conn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
174bss_conn.o: ../cryptlib.h bss_conn.c
175bss_fd.o: ../../e_os.h ../../include/openssl/bio.h
176bss_fd.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
177bss_fd.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
178bss_fd.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
179bss_fd.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
180bss_fd.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
181bss_fd.o: ../cryptlib.h bss_fd.c
182bss_file.o: ../../e_os.h ../../include/openssl/bio.h
183bss_file.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
184bss_file.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
185bss_file.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
186bss_file.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
187bss_file.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
188bss_file.o: ../cryptlib.h bss_file.c
189bss_log.o: ../../e_os.h ../../include/openssl/bio.h
190bss_log.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
191bss_log.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
192bss_log.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
193bss_log.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
194bss_log.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
195bss_log.o: ../cryptlib.h bss_log.c
196bss_mem.o: ../../e_os.h ../../include/openssl/bio.h
197bss_mem.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
198bss_mem.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
199bss_mem.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
200bss_mem.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
201bss_mem.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
202bss_mem.o: ../cryptlib.h bss_mem.c
203bss_null.o: ../../e_os.h ../../include/openssl/bio.h
204bss_null.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
205bss_null.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
206bss_null.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
207bss_null.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
208bss_null.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
209bss_null.o: ../cryptlib.h bss_null.c
210bss_sock.o: ../../e_os.h ../../include/openssl/bio.h
211bss_sock.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
212bss_sock.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
213bss_sock.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
214bss_sock.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
215bss_sock.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
216bss_sock.o: ../cryptlib.h bss_sock.c
diff --git a/src/lib/libssl/src/crypto/bio/b_print.c b/src/lib/libssl/src/crypto/bio/b_print.c
index 165f046295..8b753e7ca0 100644
--- a/src/lib/libssl/src/crypto/bio/b_print.c
+++ b/src/lib/libssl/src/crypto/bio/b_print.c
@@ -576,7 +576,7 @@ abs_val(LDOUBLE value)
576} 576}
577 577
578static LDOUBLE 578static LDOUBLE
579pow_10(int in_exp) 579pow10(int in_exp)
580{ 580{
581 LDOUBLE result = 1; 581 LDOUBLE result = 1;
582 while (in_exp) { 582 while (in_exp) {
@@ -639,11 +639,11 @@ fmtfp(
639 639
640 /* we "cheat" by converting the fractional part to integer by 640 /* we "cheat" by converting the fractional part to integer by
641 multiplying by a factor of 10 */ 641 multiplying by a factor of 10 */
642 fracpart = roundv((pow_10(max)) * (ufvalue - intpart)); 642 fracpart = roundv((pow10(max)) * (ufvalue - intpart));
643 643
644 if (fracpart >= (long)pow_10(max)) { 644 if (fracpart >= (long)pow10(max)) {
645 intpart++; 645 intpart++;
646 fracpart -= (long)pow_10(max); 646 fracpart -= (long)pow10(max);
647 } 647 }
648 648
649 /* convert integer part */ 649 /* convert integer part */
@@ -806,6 +806,7 @@ int BIO_vprintf (BIO *bio, const char *format, va_list args)
806 } 806 }
807 807
808/* As snprintf is not available everywhere, we provide our own implementation. 808/* As snprintf is not available everywhere, we provide our own implementation.
809 * In case of overflow or error, this returns -1.
809 * This function has nothing to do with BIOs, but it's closely related 810 * This function has nothing to do with BIOs, but it's closely related
810 * to BIO_printf, and we need *some* name prefix ... 811 * to BIO_printf, and we need *some* name prefix ...
811 * (XXX the function should be renamed, but to what?) */ 812 * (XXX the function should be renamed, but to what?) */
@@ -830,10 +831,10 @@ int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args)
830 _dopr(&buf, NULL, &n, &retlen, &truncated, format, args); 831 _dopr(&buf, NULL, &n, &retlen, &truncated, format, args);
831 832
832 if (truncated) 833 if (truncated)
833 /* In case of truncation, return -1 like traditional snprintf. 834 /* In case of truncation, return -1 unlike traditional snprintf.
834 * (Current drafts for ISO/IEC 9899 say snprintf should return 835 * (Current drafts for ISO/IEC 9899 say snprintf should return
835 * the number of characters that would have been written, 836 * the number of characters that would have been written,
836 * had the buffer been large enough.) */ 837 * had the buffer been large enough, as it did historically.) */
837 return -1; 838 return -1;
838 else 839 else
839 return (retlen <= INT_MAX) ? (int)retlen : -1; 840 return (retlen <= INT_MAX) ? (int)retlen : -1;
diff --git a/src/lib/libssl/src/crypto/bio/bio_err.c b/src/lib/libssl/src/crypto/bio/bio_err.c
index 8859a58ae4..68a119d895 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 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
@@ -64,77 +64,73 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_BIO,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_BIO,0,reason)
70
71static ERR_STRING_DATA BIO_str_functs[]= 67static ERR_STRING_DATA BIO_str_functs[]=
72 { 68 {
73{ERR_FUNC(BIO_F_ACPT_STATE), "ACPT_STATE"}, 69{ERR_PACK(0,BIO_F_ACPT_STATE,0), "ACPT_STATE"},
74{ERR_FUNC(BIO_F_BIO_ACCEPT), "BIO_accept"}, 70{ERR_PACK(0,BIO_F_BIO_ACCEPT,0), "BIO_accept"},
75{ERR_FUNC(BIO_F_BIO_BER_GET_HEADER), "BIO_BER_GET_HEADER"}, 71{ERR_PACK(0,BIO_F_BIO_BER_GET_HEADER,0), "BIO_BER_GET_HEADER"},
76{ERR_FUNC(BIO_F_BIO_CTRL), "BIO_ctrl"}, 72{ERR_PACK(0,BIO_F_BIO_CTRL,0), "BIO_ctrl"},
77{ERR_FUNC(BIO_F_BIO_GETHOSTBYNAME), "BIO_gethostbyname"}, 73{ERR_PACK(0,BIO_F_BIO_GETHOSTBYNAME,0), "BIO_gethostbyname"},
78{ERR_FUNC(BIO_F_BIO_GETS), "BIO_gets"}, 74{ERR_PACK(0,BIO_F_BIO_GETS,0), "BIO_gets"},
79{ERR_FUNC(BIO_F_BIO_GET_ACCEPT_SOCKET), "BIO_get_accept_socket"}, 75{ERR_PACK(0,BIO_F_BIO_GET_ACCEPT_SOCKET,0), "BIO_get_accept_socket"},
80{ERR_FUNC(BIO_F_BIO_GET_HOST_IP), "BIO_get_host_ip"}, 76{ERR_PACK(0,BIO_F_BIO_GET_HOST_IP,0), "BIO_get_host_ip"},
81{ERR_FUNC(BIO_F_BIO_GET_PORT), "BIO_get_port"}, 77{ERR_PACK(0,BIO_F_BIO_GET_PORT,0), "BIO_get_port"},
82{ERR_FUNC(BIO_F_BIO_MAKE_PAIR), "BIO_MAKE_PAIR"}, 78{ERR_PACK(0,BIO_F_BIO_MAKE_PAIR,0), "BIO_MAKE_PAIR"},
83{ERR_FUNC(BIO_F_BIO_NEW), "BIO_new"}, 79{ERR_PACK(0,BIO_F_BIO_NEW,0), "BIO_new"},
84{ERR_FUNC(BIO_F_BIO_NEW_FILE), "BIO_new_file"}, 80{ERR_PACK(0,BIO_F_BIO_NEW_FILE,0), "BIO_new_file"},
85{ERR_FUNC(BIO_F_BIO_NEW_MEM_BUF), "BIO_new_mem_buf"}, 81{ERR_PACK(0,BIO_F_BIO_NEW_MEM_BUF,0), "BIO_new_mem_buf"},
86{ERR_FUNC(BIO_F_BIO_NREAD), "BIO_nread"}, 82{ERR_PACK(0,BIO_F_BIO_NREAD,0), "BIO_nread"},
87{ERR_FUNC(BIO_F_BIO_NREAD0), "BIO_nread0"}, 83{ERR_PACK(0,BIO_F_BIO_NREAD0,0), "BIO_nread0"},
88{ERR_FUNC(BIO_F_BIO_NWRITE), "BIO_nwrite"}, 84{ERR_PACK(0,BIO_F_BIO_NWRITE,0), "BIO_nwrite"},
89{ERR_FUNC(BIO_F_BIO_NWRITE0), "BIO_nwrite0"}, 85{ERR_PACK(0,BIO_F_BIO_NWRITE0,0), "BIO_nwrite0"},
90{ERR_FUNC(BIO_F_BIO_PUTS), "BIO_puts"}, 86{ERR_PACK(0,BIO_F_BIO_PUTS,0), "BIO_puts"},
91{ERR_FUNC(BIO_F_BIO_READ), "BIO_read"}, 87{ERR_PACK(0,BIO_F_BIO_READ,0), "BIO_read"},
92{ERR_FUNC(BIO_F_BIO_SOCK_INIT), "BIO_sock_init"}, 88{ERR_PACK(0,BIO_F_BIO_SOCK_INIT,0), "BIO_sock_init"},
93{ERR_FUNC(BIO_F_BIO_WRITE), "BIO_write"}, 89{ERR_PACK(0,BIO_F_BIO_WRITE,0), "BIO_write"},
94{ERR_FUNC(BIO_F_BUFFER_CTRL), "BUFFER_CTRL"}, 90{ERR_PACK(0,BIO_F_BUFFER_CTRL,0), "BUFFER_CTRL"},
95{ERR_FUNC(BIO_F_CONN_CTRL), "CONN_CTRL"}, 91{ERR_PACK(0,BIO_F_CONN_CTRL,0), "CONN_CTRL"},
96{ERR_FUNC(BIO_F_CONN_STATE), "CONN_STATE"}, 92{ERR_PACK(0,BIO_F_CONN_STATE,0), "CONN_STATE"},
97{ERR_FUNC(BIO_F_FILE_CTRL), "FILE_CTRL"}, 93{ERR_PACK(0,BIO_F_FILE_CTRL,0), "FILE_CTRL"},
98{ERR_FUNC(BIO_F_FILE_READ), "FILE_READ"}, 94{ERR_PACK(0,BIO_F_FILE_READ,0), "FILE_READ"},
99{ERR_FUNC(BIO_F_LINEBUFFER_CTRL), "LINEBUFFER_CTRL"}, 95{ERR_PACK(0,BIO_F_LINEBUFFER_CTRL,0), "LINEBUFFER_CTRL"},
100{ERR_FUNC(BIO_F_MEM_READ), "MEM_READ"}, 96{ERR_PACK(0,BIO_F_MEM_READ,0), "MEM_READ"},
101{ERR_FUNC(BIO_F_MEM_WRITE), "MEM_WRITE"}, 97{ERR_PACK(0,BIO_F_MEM_WRITE,0), "MEM_WRITE"},
102{ERR_FUNC(BIO_F_SSL_NEW), "SSL_new"}, 98{ERR_PACK(0,BIO_F_SSL_NEW,0), "SSL_new"},
103{ERR_FUNC(BIO_F_WSASTARTUP), "WSASTARTUP"}, 99{ERR_PACK(0,BIO_F_WSASTARTUP,0), "WSASTARTUP"},
104{0,NULL} 100{0,NULL}
105 }; 101 };
106 102
107static ERR_STRING_DATA BIO_str_reasons[]= 103static ERR_STRING_DATA BIO_str_reasons[]=
108 { 104 {
109{ERR_REASON(BIO_R_ACCEPT_ERROR) ,"accept error"}, 105{BIO_R_ACCEPT_ERROR ,"accept error"},
110{ERR_REASON(BIO_R_BAD_FOPEN_MODE) ,"bad fopen mode"}, 106{BIO_R_BAD_FOPEN_MODE ,"bad fopen mode"},
111{ERR_REASON(BIO_R_BAD_HOSTNAME_LOOKUP) ,"bad hostname lookup"}, 107{BIO_R_BAD_HOSTNAME_LOOKUP ,"bad hostname lookup"},
112{ERR_REASON(BIO_R_BROKEN_PIPE) ,"broken pipe"}, 108{BIO_R_BROKEN_PIPE ,"broken pipe"},
113{ERR_REASON(BIO_R_CONNECT_ERROR) ,"connect error"}, 109{BIO_R_CONNECT_ERROR ,"connect error"},
114{ERR_REASON(BIO_R_EOF_ON_MEMORY_BIO) ,"EOF on memory BIO"}, 110{BIO_R_EOF_ON_MEMORY_BIO ,"EOF on memory BIO"},
115{ERR_REASON(BIO_R_ERROR_SETTING_NBIO) ,"error setting nbio"}, 111{BIO_R_ERROR_SETTING_NBIO ,"error setting nbio"},
116{ERR_REASON(BIO_R_ERROR_SETTING_NBIO_ON_ACCEPTED_SOCKET),"error setting nbio on accepted socket"}, 112{BIO_R_ERROR_SETTING_NBIO_ON_ACCEPTED_SOCKET,"error setting nbio on accepted socket"},
117{ERR_REASON(BIO_R_ERROR_SETTING_NBIO_ON_ACCEPT_SOCKET),"error setting nbio on accept socket"}, 113{BIO_R_ERROR_SETTING_NBIO_ON_ACCEPT_SOCKET,"error setting nbio on accept socket"},
118{ERR_REASON(BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET),"gethostbyname addr is not af inet"}, 114{BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET ,"gethostbyname addr is not af inet"},
119{ERR_REASON(BIO_R_INVALID_ARGUMENT) ,"invalid argument"}, 115{BIO_R_INVALID_ARGUMENT ,"invalid argument"},
120{ERR_REASON(BIO_R_INVALID_IP_ADDRESS) ,"invalid ip address"}, 116{BIO_R_INVALID_IP_ADDRESS ,"invalid ip address"},
121{ERR_REASON(BIO_R_IN_USE) ,"in use"}, 117{BIO_R_IN_USE ,"in use"},
122{ERR_REASON(BIO_R_KEEPALIVE) ,"keepalive"}, 118{BIO_R_KEEPALIVE ,"keepalive"},
123{ERR_REASON(BIO_R_NBIO_CONNECT_ERROR) ,"nbio connect error"}, 119{BIO_R_NBIO_CONNECT_ERROR ,"nbio connect error"},
124{ERR_REASON(BIO_R_NO_ACCEPT_PORT_SPECIFIED),"no accept port specified"}, 120{BIO_R_NO_ACCEPT_PORT_SPECIFIED ,"no accept port specified"},
125{ERR_REASON(BIO_R_NO_HOSTNAME_SPECIFIED) ,"no hostname specified"}, 121{BIO_R_NO_HOSTNAME_SPECIFIED ,"no hostname specified"},
126{ERR_REASON(BIO_R_NO_PORT_DEFINED) ,"no port defined"}, 122{BIO_R_NO_PORT_DEFINED ,"no port defined"},
127{ERR_REASON(BIO_R_NO_PORT_SPECIFIED) ,"no port specified"}, 123{BIO_R_NO_PORT_SPECIFIED ,"no port specified"},
128{ERR_REASON(BIO_R_NO_SUCH_FILE) ,"no such file"}, 124{BIO_R_NO_SUCH_FILE ,"no such file"},
129{ERR_REASON(BIO_R_NULL_PARAMETER) ,"null parameter"}, 125{BIO_R_NULL_PARAMETER ,"null parameter"},
130{ERR_REASON(BIO_R_TAG_MISMATCH) ,"tag mismatch"}, 126{BIO_R_TAG_MISMATCH ,"tag mismatch"},
131{ERR_REASON(BIO_R_UNABLE_TO_BIND_SOCKET) ,"unable to bind socket"}, 127{BIO_R_UNABLE_TO_BIND_SOCKET ,"unable to bind socket"},
132{ERR_REASON(BIO_R_UNABLE_TO_CREATE_SOCKET),"unable to create socket"}, 128{BIO_R_UNABLE_TO_CREATE_SOCKET ,"unable to create socket"},
133{ERR_REASON(BIO_R_UNABLE_TO_LISTEN_SOCKET),"unable to listen socket"}, 129{BIO_R_UNABLE_TO_LISTEN_SOCKET ,"unable to listen socket"},
134{ERR_REASON(BIO_R_UNINITIALIZED) ,"uninitialized"}, 130{BIO_R_UNINITIALIZED ,"uninitialized"},
135{ERR_REASON(BIO_R_UNSUPPORTED_METHOD) ,"unsupported method"}, 131{BIO_R_UNSUPPORTED_METHOD ,"unsupported method"},
136{ERR_REASON(BIO_R_WRITE_TO_READ_ONLY_BIO),"write to read only BIO"}, 132{BIO_R_WRITE_TO_READ_ONLY_BIO ,"write to read only BIO"},
137{ERR_REASON(BIO_R_WSASTARTUP) ,"WSAStartup"}, 133{BIO_R_WSASTARTUP ,"WSAStartup"},
138{0,NULL} 134{0,NULL}
139 }; 135 };
140 136
@@ -148,8 +144,8 @@ void ERR_load_BIO_strings(void)
148 { 144 {
149 init=0; 145 init=0;
150#ifndef OPENSSL_NO_ERR 146#ifndef OPENSSL_NO_ERR
151 ERR_load_strings(0,BIO_str_functs); 147 ERR_load_strings(ERR_LIB_BIO,BIO_str_functs);
152 ERR_load_strings(0,BIO_str_reasons); 148 ERR_load_strings(ERR_LIB_BIO,BIO_str_reasons);
153#endif 149#endif
154 150
155 } 151 }
diff --git a/src/lib/libssl/src/crypto/bio/bss_conn.c b/src/lib/libssl/src/crypto/bio/bss_conn.c
index 216780ed5e..f5d0e759e2 100644
--- a/src/lib/libssl/src/crypto/bio/bss_conn.c
+++ b/src/lib/libssl/src/crypto/bio/bss_conn.c
@@ -469,7 +469,7 @@ static long conn_ctrl(BIO *b, int cmd, long num, void *ptr)
469 break; 469 break;
470 case BIO_C_DO_STATE_MACHINE: 470 case BIO_C_DO_STATE_MACHINE:
471 /* use this one to start the connection */ 471 /* use this one to start the connection */
472 if (data->state != BIO_CONN_S_OK) 472 if (!data->state != BIO_CONN_S_OK)
473 ret=(long)conn_state(b,data); 473 ret=(long)conn_state(b,data);
474 else 474 else
475 ret=1; 475 ret=1;
diff --git a/src/lib/libssl/src/crypto/bn/Makefile.ssl b/src/lib/libssl/src/crypto/bn/Makefile.ssl
new file mode 100644
index 0000000000..50892ef44c
--- /dev/null
+++ b/src/lib/libssl/src/crypto/bn/Makefile.ssl
@@ -0,0 +1,326 @@
1#
2# SSLeay/crypto/bn/Makefile
3#
4
5DIR= bn
6TOP= ../..
7CC= cc
8CPP= $(CC) -E
9INCLUDES= -I.. -I$(TOP) -I../../include
10CFLAG=-g
11INSTALL_PREFIX=
12OPENSSLDIR= /usr/local/ssl
13INSTALLTOP=/usr/local/ssl
14MAKE= make -f Makefile.ssl
15MAKEDEPPROG= makedepend
16MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
17MAKEFILE= Makefile.ssl
18AR= ar r
19
20BN_ASM= bn_asm.o
21# or use
22#BN_ASM= bn86-elf.o
23
24CFLAGS= $(INCLUDES) $(CFLAG)
25ASFLAGS= $(INCLUDES) $(ASFLAG)
26
27GENERAL=Makefile
28TEST=bntest.c exptest.c
29APPS=
30
31LIB=$(TOP)/libcrypto.a
32LIBSRC= bn_add.c bn_div.c bn_exp.c bn_lib.c bn_ctx.c bn_mul.c bn_mod.c \
33 bn_print.c bn_rand.c bn_shift.c bn_word.c bn_blind.c \
34 bn_kron.c bn_sqrt.c bn_gcd.c bn_prime.c bn_err.c bn_sqr.c bn_asm.c \
35 bn_recp.c bn_mont.c bn_mpi.c bn_exp2.c
36
37LIBOBJ= bn_add.o bn_div.o bn_exp.o bn_lib.o bn_ctx.o bn_mul.o bn_mod.o \
38 bn_print.o bn_rand.o bn_shift.o bn_word.o bn_blind.o \
39 bn_kron.o bn_sqrt.o bn_gcd.o bn_prime.o bn_err.o bn_sqr.o $(BN_ASM) \
40 bn_recp.o bn_mont.o bn_mpi.o bn_exp2.o
41
42SRC= $(LIBSRC)
43
44EXHEADER= bn.h
45HEADER= bn_lcl.h bn_prime.h $(EXHEADER)
46
47ALL= $(GENERAL) $(SRC) $(HEADER)
48
49top:
50 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
51
52all: lib
53
54bn_prime.h: bn_prime.pl
55 $(PERL) bn_prime.pl >bn_prime.h
56
57divtest: divtest.c ../../libcrypto.a
58 cc -I../../include divtest.c -o divtest ../../libcrypto.a
59
60bnbug: bnbug.c ../../libcrypto.a top
61 cc -g -I../../include bnbug.c -o bnbug ../../libcrypto.a
62
63lib: $(LIBOBJ)
64 $(AR) $(LIB) $(LIBOBJ)
65 $(RANLIB) $(LIB) || echo Never mind.
66 @touch lib
67
68# elf
69asm/bn86-elf.s: asm/bn-586.pl ../perlasm/x86asm.pl
70 (cd asm; $(PERL) bn-586.pl elf $(CFLAGS) > bn86-elf.s)
71
72asm/co86-elf.s: asm/co-586.pl ../perlasm/x86asm.pl
73 (cd asm; $(PERL) co-586.pl elf $(CFLAGS) > co86-elf.s)
74
75# a.out
76asm/bn86-out.o: asm/bn86unix.cpp
77 $(CPP) -DOUT asm/bn86unix.cpp | as -o asm/bn86-out.o
78
79asm/co86-out.o: asm/co86unix.cpp
80 $(CPP) -DOUT asm/co86unix.cpp | as -o asm/co86-out.o
81
82# bsdi
83asm/bn86bsdi.o: asm/bn86unix.cpp
84 $(CPP) -DBSDI asm/bn86unix.cpp | sed 's/ :/:/' | as -o asm/bn86bsdi.o
85
86asm/co86bsdi.o: asm/co86unix.cpp
87 $(CPP) -DBSDI asm/co86unix.cpp | sed 's/ :/:/' | as -o asm/co86bsdi.o
88
89asm/bn86unix.cpp: asm/bn-586.pl ../perlasm/x86asm.pl
90 (cd asm; $(PERL) bn-586.pl cpp >bn86unix.cpp )
91
92asm/co86unix.cpp: asm/co-586.pl ../perlasm/x86asm.pl
93 (cd asm; $(PERL) co-586.pl cpp >co86unix.cpp )
94
95asm/sparcv8.o: asm/sparcv8.S
96
97asm/sparcv8plus.o: asm/sparcv8plus.S
98
99# Old GNU assembler doesn't understand V9 instructions, so we
100# hire /usr/ccs/bin/as to do the job. Note that option is called
101# *-gcc27, but even gcc 2>=8 users may experience similar problem
102# if they didn't bother to upgrade GNU assembler. Such users should
103# not choose this option, but be adviced to *remove* GNU assembler
104# or upgrade it.
105asm/sparcv8plus-gcc27.o: asm/sparcv8plus.S
106 $(CC) $(ASFLAGS) -E asm/sparcv8plus.S | \
107 /usr/ccs/bin/as -xarch=v8plus - -o asm/sparcv8plus-gcc27.o
108
109
110asm/ia64.o: asm/ia64.S
111
112# Some compiler drivers (most notably HP-UX and Intel C++) don't
113# understand .S extension:-( I wish I could pipe output from cc -E,
114# but it's too compiler driver/ABI dependent to cover with a single
115# rule... <appro@fy.chalmers.se>
116asm/ia64-cpp.o: asm/ia64.S
117 $(CC) $(ASFLAGS) -E asm/ia64.S > /tmp/ia64.$$$$.s && \
118 $(CC) $(ASFLAGS) -c -o asm/ia64-cpp.o /tmp/ia64.$$$$.s; \
119 rm -f /tmp/ia64.$$$$.s
120
121asm/x86_64-gcc.o: asm/x86_64-gcc.c
122
123asm/pa-risc2W.o: asm/pa-risc2W.s
124 /usr/ccs/bin/as -o asm/pa-rics2W.o asm/pa-risc2W.s
125
126files:
127 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
128
129links:
130 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
131 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
132 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
133 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
134
135install:
136 @for i in $(EXHEADER) ; \
137 do \
138 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
139 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
140 done;
141
142exptest:
143 rm -f exptest
144 gcc -I../../include -g2 -ggdb -o exptest exptest.c ../../libcrypto.a
145
146div:
147 rm -f a.out
148 gcc -I.. -g div.c ../../libcrypto.a
149
150tags:
151 ctags $(SRC)
152
153tests:
154
155lint:
156 lint -DLINT $(INCLUDES) $(SRC)>fluff
157
158depend:
159 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
160
161dclean:
162 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
163 mv -f Makefile.new $(MAKEFILE)
164
165clean:
166 rm -f asm/co86unix.cpp asm/bn86unix.cpp asm/*-elf.* *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff bn_asm.s
167
168# DO NOT DELETE THIS LINE -- make depend depends on it.
169
170bn_add.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
171bn_add.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
172bn_add.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
173bn_add.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
174bn_add.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
175bn_add.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
176bn_add.o: ../cryptlib.h bn_add.c bn_lcl.h
177bn_asm.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
178bn_asm.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
179bn_asm.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
180bn_asm.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
181bn_asm.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
182bn_asm.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
183bn_asm.o: ../cryptlib.h bn_asm.c bn_lcl.h
184bn_blind.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
185bn_blind.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
186bn_blind.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
187bn_blind.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
188bn_blind.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
189bn_blind.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
190bn_blind.o: ../cryptlib.h bn_blind.c bn_lcl.h
191bn_ctx.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
192bn_ctx.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
193bn_ctx.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
194bn_ctx.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
195bn_ctx.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
196bn_ctx.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
197bn_ctx.o: ../cryptlib.h bn_ctx.c bn_lcl.h
198bn_div.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
199bn_div.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
200bn_div.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
201bn_div.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
202bn_div.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
203bn_div.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
204bn_div.o: ../cryptlib.h bn_div.c bn_lcl.h
205bn_err.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
206bn_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
207bn_err.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
208bn_err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
209bn_err.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
210bn_err.o: ../../include/openssl/symhacks.h bn_err.c
211bn_exp.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
212bn_exp.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
213bn_exp.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
214bn_exp.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
215bn_exp.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
216bn_exp.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
217bn_exp.o: ../cryptlib.h bn_exp.c bn_lcl.h
218bn_exp2.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
219bn_exp2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
220bn_exp2.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
221bn_exp2.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
222bn_exp2.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
223bn_exp2.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
224bn_exp2.o: ../cryptlib.h bn_exp2.c bn_lcl.h
225bn_gcd.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
226bn_gcd.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
227bn_gcd.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
228bn_gcd.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
229bn_gcd.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
230bn_gcd.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
231bn_gcd.o: ../cryptlib.h bn_gcd.c bn_lcl.h
232bn_kron.o: ../../include/openssl/bn.h ../../include/openssl/e_os2.h
233bn_kron.o: ../../include/openssl/opensslconf.h bn_kron.c bn_lcl.h
234bn_lib.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
235bn_lib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
236bn_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
237bn_lib.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
238bn_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
239bn_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
240bn_lib.o: ../cryptlib.h bn_lcl.h bn_lib.c
241bn_mod.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
242bn_mod.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
243bn_mod.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
244bn_mod.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
245bn_mod.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
246bn_mod.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
247bn_mod.o: ../cryptlib.h bn_lcl.h bn_mod.c
248bn_mont.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
249bn_mont.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
250bn_mont.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
251bn_mont.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
252bn_mont.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
253bn_mont.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
254bn_mont.o: ../cryptlib.h bn_lcl.h bn_mont.c
255bn_mpi.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
256bn_mpi.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
257bn_mpi.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
258bn_mpi.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
259bn_mpi.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
260bn_mpi.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
261bn_mpi.o: ../cryptlib.h bn_lcl.h bn_mpi.c
262bn_mul.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
263bn_mul.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
264bn_mul.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
265bn_mul.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
266bn_mul.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
267bn_mul.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
268bn_mul.o: ../cryptlib.h bn_lcl.h bn_mul.c
269bn_prime.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
270bn_prime.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
271bn_prime.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
272bn_prime.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
273bn_prime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
274bn_prime.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
275bn_prime.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
276bn_prime.o: ../cryptlib.h bn_lcl.h bn_prime.c bn_prime.h
277bn_print.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
278bn_print.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
279bn_print.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
280bn_print.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
281bn_print.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
282bn_print.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
283bn_print.o: ../cryptlib.h bn_lcl.h bn_print.c
284bn_rand.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
285bn_rand.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
286bn_rand.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
287bn_rand.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
288bn_rand.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
289bn_rand.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
290bn_rand.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
291bn_rand.o: ../cryptlib.h bn_lcl.h bn_rand.c
292bn_recp.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
293bn_recp.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
294bn_recp.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
295bn_recp.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
296bn_recp.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
297bn_recp.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
298bn_recp.o: ../cryptlib.h bn_lcl.h bn_recp.c
299bn_shift.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
300bn_shift.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
301bn_shift.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
302bn_shift.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
303bn_shift.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
304bn_shift.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
305bn_shift.o: ../cryptlib.h bn_lcl.h bn_shift.c
306bn_sqr.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
307bn_sqr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
308bn_sqr.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
309bn_sqr.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
310bn_sqr.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
311bn_sqr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
312bn_sqr.o: ../cryptlib.h bn_lcl.h bn_sqr.c
313bn_sqrt.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
314bn_sqrt.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
315bn_sqrt.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
316bn_sqrt.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
317bn_sqrt.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
318bn_sqrt.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
319bn_sqrt.o: ../cryptlib.h bn_lcl.h bn_sqrt.c
320bn_word.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
321bn_word.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
322bn_word.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
323bn_word.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
324bn_word.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
325bn_word.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
326bn_word.o: ../cryptlib.h bn_lcl.h bn_word.c
diff --git a/src/lib/libssl/src/crypto/bn/asm/sparcv8plus.S b/src/lib/libssl/src/crypto/bn/asm/sparcv8plus.S
index 8c56e2e7e7..0074dfdb75 100644
--- a/src/lib/libssl/src/crypto/bn/asm/sparcv8plus.S
+++ b/src/lib/libssl/src/crypto/bn/asm/sparcv8plus.S
@@ -162,14 +162,10 @@
162 * BN_ULONG w; 162 * BN_ULONG w;
163 */ 163 */
164bn_mul_add_words: 164bn_mul_add_words:
165 sra %o2,%g0,%o2 ! signx %o2
166 brgz,a %o2,.L_bn_mul_add_words_proceed 165 brgz,a %o2,.L_bn_mul_add_words_proceed
167 lduw [%o1],%g2 166 lduw [%o1],%g2
168 retl 167 retl
169 clr %o0 168 clr %o0
170 nop
171 nop
172 nop
173 169
174.L_bn_mul_add_words_proceed: 170.L_bn_mul_add_words_proceed:
175 srl %o3,%g0,%o3 ! clruw %o3 171 srl %o3,%g0,%o3 ! clruw %o3
@@ -264,14 +260,10 @@ bn_mul_add_words:
264 * BN_ULONG w; 260 * BN_ULONG w;
265 */ 261 */
266bn_mul_words: 262bn_mul_words:
267 sra %o2,%g0,%o2 ! signx %o2
268 brgz,a %o2,.L_bn_mul_words_proceeed 263 brgz,a %o2,.L_bn_mul_words_proceeed
269 lduw [%o1],%g2 264 lduw [%o1],%g2
270 retl 265 retl
271 clr %o0 266 clr %o0
272 nop
273 nop
274 nop
275 267
276.L_bn_mul_words_proceeed: 268.L_bn_mul_words_proceeed:
277 srl %o3,%g0,%o3 ! clruw %o3 269 srl %o3,%g0,%o3 ! clruw %o3
@@ -352,14 +344,10 @@ bn_mul_words:
352 * int n; 344 * int n;
353 */ 345 */
354bn_sqr_words: 346bn_sqr_words:
355 sra %o2,%g0,%o2 ! signx %o2
356 brgz,a %o2,.L_bn_sqr_words_proceeed 347 brgz,a %o2,.L_bn_sqr_words_proceeed
357 lduw [%o1],%g2 348 lduw [%o1],%g2
358 retl 349 retl
359 clr %o0 350 clr %o0
360 nop
361 nop
362 nop
363 351
364.L_bn_sqr_words_proceeed: 352.L_bn_sqr_words_proceeed:
365 andcc %o2,-4,%g0 353 andcc %o2,-4,%g0
@@ -457,7 +445,6 @@ bn_div_words:
457 * int n; 445 * int n;
458 */ 446 */
459bn_add_words: 447bn_add_words:
460 sra %o3,%g0,%o3 ! signx %o3
461 brgz,a %o3,.L_bn_add_words_proceed 448 brgz,a %o3,.L_bn_add_words_proceed
462 lduw [%o1],%o4 449 lduw [%o1],%o4
463 retl 450 retl
@@ -467,6 +454,7 @@ bn_add_words:
467 andcc %o3,-4,%g0 454 andcc %o3,-4,%g0
468 bz,pn %icc,.L_bn_add_words_tail 455 bz,pn %icc,.L_bn_add_words_tail
469 addcc %g0,0,%g0 ! clear carry flag 456 addcc %g0,0,%g0 ! clear carry flag
457 nop
470 458
471.L_bn_add_words_loop: ! wow! 32 aligned! 459.L_bn_add_words_loop: ! wow! 32 aligned!
472 dec 4,%o3 460 dec 4,%o3
@@ -535,7 +523,6 @@ bn_add_words:
535 * int n; 523 * int n;
536 */ 524 */
537bn_sub_words: 525bn_sub_words:
538 sra %o3,%g0,%o3 ! signx %o3
539 brgz,a %o3,.L_bn_sub_words_proceed 526 brgz,a %o3,.L_bn_sub_words_proceed
540 lduw [%o1],%o4 527 lduw [%o1],%o4
541 retl 528 retl
@@ -545,6 +532,7 @@ bn_sub_words:
545 andcc %o3,-4,%g0 532 andcc %o3,-4,%g0
546 bz,pn %icc,.L_bn_sub_words_tail 533 bz,pn %icc,.L_bn_sub_words_tail
547 addcc %g0,0,%g0 ! clear carry flag 534 addcc %g0,0,%g0 ! clear carry flag
535 nop
548 536
549.L_bn_sub_words_loop: ! wow! 32 aligned! 537.L_bn_sub_words_loop: ! wow! 32 aligned!
550 dec 4,%o3 538 dec 4,%o3
diff --git a/src/lib/libssl/src/crypto/bn/bn.h b/src/lib/libssl/src/crypto/bn/bn.h
index 1251521c54..3da6d8ced9 100644
--- a/src/lib/libssl/src/crypto/bn/bn.h
+++ b/src/lib/libssl/src/crypto/bn/bn.h
@@ -225,23 +225,10 @@ extern "C" {
225 225
226#define BN_FLG_MALLOCED 0x01 226#define BN_FLG_MALLOCED 0x01
227#define BN_FLG_STATIC_DATA 0x02 227#define BN_FLG_STATIC_DATA 0x02
228#define BN_FLG_EXP_CONSTTIME 0x04 /* avoid leaking exponent information through timings
229 * (BN_mod_exp_mont() will call BN_mod_exp_mont_consttime) */
230#define BN_FLG_FREE 0x8000 /* used for debuging */ 228#define BN_FLG_FREE 0x8000 /* used for debuging */
231#define BN_set_flags(b,n) ((b)->flags|=(n)) 229#define BN_set_flags(b,n) ((b)->flags|=(n))
232#define BN_get_flags(b,n) ((b)->flags&(n)) 230#define BN_get_flags(b,n) ((b)->flags&(n))
233 231
234/* get a clone of a BIGNUM with changed flags, for *temporary* use only
235 * (the two BIGNUMs cannot not be used in parallel!) */
236#define BN_with_flags(dest,b,n) ((dest)->d=(b)->d, \
237 (dest)->top=(b)->top, \
238 (dest)->dmax=(b)->dmax, \
239 (dest)->neg=(b)->neg, \
240 (dest)->flags=(((dest)->flags & BN_FLG_MALLOCED) \
241 | ((b)->flags & ~BN_FLG_MALLOCED) \
242 | BN_FLG_STATIC_DATA \
243 | (n)))
244
245typedef struct bignum_st 232typedef struct bignum_st
246 { 233 {
247 BN_ULONG *d; /* Pointer to an array of 'BN_BITS2' bit chunks. */ 234 BN_ULONG *d; /* Pointer to an array of 'BN_BITS2' bit chunks. */
@@ -391,8 +378,6 @@ int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
391 const BIGNUM *m,BN_CTX *ctx); 378 const BIGNUM *m,BN_CTX *ctx);
392int BN_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, 379int BN_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
393 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); 380 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
394int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
395 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *in_mont);
396int BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p, 381int BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p,
397 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); 382 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
398int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1, 383int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1,
@@ -438,19 +423,6 @@ int BN_is_prime_fasttest(const BIGNUM *p,int nchecks,
438 void (*callback)(int,int,void *),BN_CTX *ctx,void *cb_arg, 423 void (*callback)(int,int,void *),BN_CTX *ctx,void *cb_arg,
439 int do_trial_division); 424 int do_trial_division);
440 425
441#ifdef OPENSSL_FIPS
442int BN_X931_derive_prime(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
443 void (*cb)(int, int, void *), void *cb_arg,
444 const BIGNUM *Xp, const BIGNUM *Xp1, const BIGNUM *Xp2,
445 const BIGNUM *e, BN_CTX *ctx);
446int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx);
447int BN_X931_generate_prime(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
448 BIGNUM *Xp1, BIGNUM *Xp2,
449 const BIGNUM *Xp,
450 const BIGNUM *e, BN_CTX *ctx,
451 void (*cb)(int, int, void *), void *cb_arg);
452#endif
453
454BN_MONT_CTX *BN_MONT_CTX_new(void ); 426BN_MONT_CTX *BN_MONT_CTX_new(void );
455void BN_MONT_CTX_init(BN_MONT_CTX *ctx); 427void BN_MONT_CTX_init(BN_MONT_CTX *ctx);
456int BN_mod_mul_montgomery(BIGNUM *r,const BIGNUM *a,const BIGNUM *b, 428int BN_mod_mul_montgomery(BIGNUM *r,const BIGNUM *a,const BIGNUM *b,
@@ -462,8 +434,6 @@ int BN_from_montgomery(BIGNUM *r,const BIGNUM *a,
462void BN_MONT_CTX_free(BN_MONT_CTX *mont); 434void BN_MONT_CTX_free(BN_MONT_CTX *mont);
463int BN_MONT_CTX_set(BN_MONT_CTX *mont,const BIGNUM *mod,BN_CTX *ctx); 435int BN_MONT_CTX_set(BN_MONT_CTX *mont,const BIGNUM *mod,BN_CTX *ctx);
464BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to,BN_MONT_CTX *from); 436BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to,BN_MONT_CTX *from);
465BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock,
466 const BIGNUM *mod, BN_CTX *ctx);
467 437
468BN_BLINDING *BN_BLINDING_new(BIGNUM *A,BIGNUM *Ai,BIGNUM *mod); 438BN_BLINDING *BN_BLINDING_new(BIGNUM *A,BIGNUM *Ai,BIGNUM *mod);
469void BN_BLINDING_free(BN_BLINDING *b); 439void BN_BLINDING_free(BN_BLINDING *b);
@@ -540,15 +510,11 @@ void ERR_load_BN_strings(void);
540#define BN_F_BN_CTX_GET 116 510#define BN_F_BN_CTX_GET 116
541#define BN_F_BN_CTX_NEW 106 511#define BN_F_BN_CTX_NEW 106
542#define BN_F_BN_DIV 107 512#define BN_F_BN_DIV 107
543#define BN_F_BN_EXP 123
544#define BN_F_BN_EXPAND2 108 513#define BN_F_BN_EXPAND2 108
545#define BN_F_BN_EXPAND_INTERNAL 120 514#define BN_F_BN_EXPAND_INTERNAL 120
546#define BN_F_BN_MOD_EXP2_MONT 118 515#define BN_F_BN_MOD_EXP2_MONT 118
547#define BN_F_BN_MOD_EXP_MONT 109 516#define BN_F_BN_MOD_EXP_MONT 109
548#define BN_F_BN_MOD_EXP_MONT_CONSTTIME 124
549#define BN_F_BN_MOD_EXP_MONT_WORD 117 517#define BN_F_BN_MOD_EXP_MONT_WORD 117
550#define BN_F_BN_MOD_EXP_RECP 125
551#define BN_F_BN_MOD_EXP_SIMPLE 126
552#define BN_F_BN_MOD_INVERSE 110 518#define BN_F_BN_MOD_INVERSE 110
553#define BN_F_BN_MOD_LSHIFT_QUICK 119 519#define BN_F_BN_MOD_LSHIFT_QUICK 119
554#define BN_F_BN_MOD_MUL_RECIPROCAL 111 520#define BN_F_BN_MOD_MUL_RECIPROCAL 111
diff --git a/src/lib/libssl/src/crypto/bn/bn_asm.c b/src/lib/libssl/src/crypto/bn/bn_asm.c
index 19978085b2..be8aa3ffc5 100644
--- a/src/lib/libssl/src/crypto/bn/bn_asm.c
+++ b/src/lib/libssl/src/crypto/bn/bn_asm.c
@@ -237,7 +237,7 @@ BN_ULONG bn_div_words(BN_ULONG h, BN_ULONG l, BN_ULONG d)
237 if (d == 0) return(BN_MASK2); 237 if (d == 0) return(BN_MASK2);
238 238
239 i=BN_num_bits_word(d); 239 i=BN_num_bits_word(d);
240 assert((i == BN_BITS2) || (h <= (BN_ULONG)1<<i)); 240 assert((i == BN_BITS2) || (h > (BN_ULONG)1<<i));
241 241
242 i=BN_BITS2-i; 242 i=BN_BITS2-i;
243 if (h >= d) h-=d; 243 if (h >= d) h-=d;
diff --git a/src/lib/libssl/src/crypto/bn/bn_err.c b/src/lib/libssl/src/crypto/bn/bn_err.c
index 5dfac00c88..fb84ee96d8 100644
--- a/src/lib/libssl/src/crypto/bn/bn_err.c
+++ b/src/lib/libssl/src/crypto/bn/bn_err.c
@@ -1,6 +1,6 @@
1/* crypto/bn/bn_err.c */ 1/* crypto/bn/bn_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999 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
@@ -64,60 +64,52 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_BN,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_BN,0,reason)
70
71static ERR_STRING_DATA BN_str_functs[]= 67static ERR_STRING_DATA BN_str_functs[]=
72 { 68 {
73{ERR_FUNC(BN_F_BN_BLINDING_CONVERT), "BN_BLINDING_convert"}, 69{ERR_PACK(0,BN_F_BN_BLINDING_CONVERT,0), "BN_BLINDING_convert"},
74{ERR_FUNC(BN_F_BN_BLINDING_INVERT), "BN_BLINDING_invert"}, 70{ERR_PACK(0,BN_F_BN_BLINDING_INVERT,0), "BN_BLINDING_invert"},
75{ERR_FUNC(BN_F_BN_BLINDING_NEW), "BN_BLINDING_new"}, 71{ERR_PACK(0,BN_F_BN_BLINDING_NEW,0), "BN_BLINDING_new"},
76{ERR_FUNC(BN_F_BN_BLINDING_UPDATE), "BN_BLINDING_update"}, 72{ERR_PACK(0,BN_F_BN_BLINDING_UPDATE,0), "BN_BLINDING_update"},
77{ERR_FUNC(BN_F_BN_BN2DEC), "BN_bn2dec"}, 73{ERR_PACK(0,BN_F_BN_BN2DEC,0), "BN_bn2dec"},
78{ERR_FUNC(BN_F_BN_BN2HEX), "BN_bn2hex"}, 74{ERR_PACK(0,BN_F_BN_BN2HEX,0), "BN_bn2hex"},
79{ERR_FUNC(BN_F_BN_CTX_GET), "BN_CTX_get"}, 75{ERR_PACK(0,BN_F_BN_CTX_GET,0), "BN_CTX_get"},
80{ERR_FUNC(BN_F_BN_CTX_NEW), "BN_CTX_new"}, 76{ERR_PACK(0,BN_F_BN_CTX_NEW,0), "BN_CTX_new"},
81{ERR_FUNC(BN_F_BN_DIV), "BN_div"}, 77{ERR_PACK(0,BN_F_BN_DIV,0), "BN_div"},
82{ERR_FUNC(BN_F_BN_EXP), "BN_exp"}, 78{ERR_PACK(0,BN_F_BN_EXPAND2,0), "bn_expand2"},
83{ERR_FUNC(BN_F_BN_EXPAND2), "bn_expand2"}, 79{ERR_PACK(0,BN_F_BN_EXPAND_INTERNAL,0), "BN_EXPAND_INTERNAL"},
84{ERR_FUNC(BN_F_BN_EXPAND_INTERNAL), "BN_EXPAND_INTERNAL"}, 80{ERR_PACK(0,BN_F_BN_MOD_EXP2_MONT,0), "BN_mod_exp2_mont"},
85{ERR_FUNC(BN_F_BN_MOD_EXP2_MONT), "BN_mod_exp2_mont"}, 81{ERR_PACK(0,BN_F_BN_MOD_EXP_MONT,0), "BN_mod_exp_mont"},
86{ERR_FUNC(BN_F_BN_MOD_EXP_MONT), "BN_mod_exp_mont"}, 82{ERR_PACK(0,BN_F_BN_MOD_EXP_MONT_WORD,0), "BN_mod_exp_mont_word"},
87{ERR_FUNC(BN_F_BN_MOD_EXP_MONT_CONSTTIME), "BN_mod_exp_mont_consttime"}, 83{ERR_PACK(0,BN_F_BN_MOD_INVERSE,0), "BN_mod_inverse"},
88{ERR_FUNC(BN_F_BN_MOD_EXP_MONT_WORD), "BN_mod_exp_mont_word"}, 84{ERR_PACK(0,BN_F_BN_MOD_LSHIFT_QUICK,0), "BN_mod_lshift_quick"},
89{ERR_FUNC(BN_F_BN_MOD_EXP_RECP), "BN_mod_exp_recp"}, 85{ERR_PACK(0,BN_F_BN_MOD_MUL_RECIPROCAL,0), "BN_mod_mul_reciprocal"},
90{ERR_FUNC(BN_F_BN_MOD_EXP_SIMPLE), "BN_mod_exp_simple"}, 86{ERR_PACK(0,BN_F_BN_MOD_SQRT,0), "BN_mod_sqrt"},
91{ERR_FUNC(BN_F_BN_MOD_INVERSE), "BN_mod_inverse"}, 87{ERR_PACK(0,BN_F_BN_MPI2BN,0), "BN_mpi2bn"},
92{ERR_FUNC(BN_F_BN_MOD_LSHIFT_QUICK), "BN_mod_lshift_quick"}, 88{ERR_PACK(0,BN_F_BN_NEW,0), "BN_new"},
93{ERR_FUNC(BN_F_BN_MOD_MUL_RECIPROCAL), "BN_mod_mul_reciprocal"}, 89{ERR_PACK(0,BN_F_BN_RAND,0), "BN_rand"},
94{ERR_FUNC(BN_F_BN_MOD_SQRT), "BN_mod_sqrt"}, 90{ERR_PACK(0,BN_F_BN_RAND_RANGE,0), "BN_rand_range"},
95{ERR_FUNC(BN_F_BN_MPI2BN), "BN_mpi2bn"}, 91{ERR_PACK(0,BN_F_BN_USUB,0), "BN_usub"},
96{ERR_FUNC(BN_F_BN_NEW), "BN_new"},
97{ERR_FUNC(BN_F_BN_RAND), "BN_rand"},
98{ERR_FUNC(BN_F_BN_RAND_RANGE), "BN_rand_range"},
99{ERR_FUNC(BN_F_BN_USUB), "BN_usub"},
100{0,NULL} 92{0,NULL}
101 }; 93 };
102 94
103static ERR_STRING_DATA BN_str_reasons[]= 95static ERR_STRING_DATA BN_str_reasons[]=
104 { 96 {
105{ERR_REASON(BN_R_ARG2_LT_ARG3) ,"arg2 lt arg3"}, 97{BN_R_ARG2_LT_ARG3 ,"arg2 lt arg3"},
106{ERR_REASON(BN_R_BAD_RECIPROCAL) ,"bad reciprocal"}, 98{BN_R_BAD_RECIPROCAL ,"bad reciprocal"},
107{ERR_REASON(BN_R_BIGNUM_TOO_LONG) ,"bignum too long"}, 99{BN_R_BIGNUM_TOO_LONG ,"bignum too long"},
108{ERR_REASON(BN_R_CALLED_WITH_EVEN_MODULUS),"called with even modulus"}, 100{BN_R_CALLED_WITH_EVEN_MODULUS ,"called with even modulus"},
109{ERR_REASON(BN_R_DIV_BY_ZERO) ,"div by zero"}, 101{BN_R_DIV_BY_ZERO ,"div by zero"},
110{ERR_REASON(BN_R_ENCODING_ERROR) ,"encoding error"}, 102{BN_R_ENCODING_ERROR ,"encoding error"},
111{ERR_REASON(BN_R_EXPAND_ON_STATIC_BIGNUM_DATA),"expand on static bignum data"}, 103{BN_R_EXPAND_ON_STATIC_BIGNUM_DATA ,"expand on static bignum data"},
112{ERR_REASON(BN_R_INPUT_NOT_REDUCED) ,"input not reduced"}, 104{BN_R_INPUT_NOT_REDUCED ,"input not reduced"},
113{ERR_REASON(BN_R_INVALID_LENGTH) ,"invalid length"}, 105{BN_R_INVALID_LENGTH ,"invalid length"},
114{ERR_REASON(BN_R_INVALID_RANGE) ,"invalid range"}, 106{BN_R_INVALID_RANGE ,"invalid range"},
115{ERR_REASON(BN_R_NOT_A_SQUARE) ,"not a square"}, 107{BN_R_NOT_A_SQUARE ,"not a square"},
116{ERR_REASON(BN_R_NOT_INITIALIZED) ,"not initialized"}, 108{BN_R_NOT_INITIALIZED ,"not initialized"},
117{ERR_REASON(BN_R_NO_INVERSE) ,"no inverse"}, 109{BN_R_NO_INVERSE ,"no inverse"},
118{ERR_REASON(BN_R_P_IS_NOT_PRIME) ,"p is not prime"}, 110{BN_R_P_IS_NOT_PRIME ,"p is not prime"},
119{ERR_REASON(BN_R_TOO_MANY_ITERATIONS) ,"too many iterations"}, 111{BN_R_TOO_MANY_ITERATIONS ,"too many iterations"},
120{ERR_REASON(BN_R_TOO_MANY_TEMPORARY_VARIABLES),"too many temporary variables"}, 112{BN_R_TOO_MANY_TEMPORARY_VARIABLES ,"too many temporary variables"},
121{0,NULL} 113{0,NULL}
122 }; 114 };
123 115
@@ -131,8 +123,8 @@ void ERR_load_BN_strings(void)
131 { 123 {
132 init=0; 124 init=0;
133#ifndef OPENSSL_NO_ERR 125#ifndef OPENSSL_NO_ERR
134 ERR_load_strings(0,BN_str_functs); 126 ERR_load_strings(ERR_LIB_BN,BN_str_functs);
135 ERR_load_strings(0,BN_str_reasons); 127 ERR_load_strings(ERR_LIB_BN,BN_str_reasons);
136#endif 128#endif
137 129
138 } 130 }
diff --git a/src/lib/libssl/src/crypto/bn/bn_exp.c b/src/lib/libssl/src/crypto/bn/bn_exp.c
index 9e1e88abe8..afdfd580fb 100644
--- a/src/lib/libssl/src/crypto/bn/bn_exp.c
+++ b/src/lib/libssl/src/crypto/bn/bn_exp.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-2005 The OpenSSL Project. All rights reserved. 59 * Copyright (c) 1998-2000 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,7 +113,6 @@
113#include "cryptlib.h" 113#include "cryptlib.h"
114#include "bn_lcl.h" 114#include "bn_lcl.h"
115 115
116/* maximum precomputation table size for *variable* sliding windows */
117#define TABLE_SIZE 32 116#define TABLE_SIZE 32
118 117
119/* this one works - simple but works */ 118/* this one works - simple but works */
@@ -122,13 +121,6 @@ int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx)
122 int i,bits,ret=0; 121 int i,bits,ret=0;
123 BIGNUM *v,*rr; 122 BIGNUM *v,*rr;
124 123
125 if (BN_get_flags(p, BN_FLG_EXP_CONSTTIME) != 0)
126 {
127 /* BN_FLG_EXP_CONSTTIME only supported by BN_mod_exp_mont() */
128 BNerr(BN_F_BN_EXP,ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
129 return -1;
130 }
131
132 BN_CTX_start(ctx); 124 BN_CTX_start(ctx);
133 if ((r == a) || (r == p)) 125 if ((r == a) || (r == p))
134 rr = BN_CTX_get(ctx); 126 rr = BN_CTX_get(ctx);
@@ -212,7 +204,7 @@ int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, const BIGNUM *m,
212 if (BN_is_odd(m)) 204 if (BN_is_odd(m))
213 { 205 {
214# ifdef MONT_EXP_WORD 206# ifdef MONT_EXP_WORD
215 if (a->top == 1 && !a->neg && (BN_get_flags(p, BN_FLG_EXP_CONSTTIME) == 0)) 207 if (a->top == 1 && !a->neg)
216 { 208 {
217 BN_ULONG A = a->d[0]; 209 BN_ULONG A = a->d[0];
218 ret=BN_mod_exp_mont_word(r,A,p,m,ctx,NULL); 210 ret=BN_mod_exp_mont_word(r,A,p,m,ctx,NULL);
@@ -242,13 +234,6 @@ int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
242 BIGNUM val[TABLE_SIZE]; 234 BIGNUM val[TABLE_SIZE];
243 BN_RECP_CTX recp; 235 BN_RECP_CTX recp;
244 236
245 if (BN_get_flags(p, BN_FLG_EXP_CONSTTIME) != 0)
246 {
247 /* BN_FLG_EXP_CONSTTIME only supported by BN_mod_exp_mont() */
248 BNerr(BN_F_BN_MOD_EXP_RECP,ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
249 return -1;
250 }
251
252 bits=BN_num_bits(p); 237 bits=BN_num_bits(p);
253 238
254 if (bits == 0) 239 if (bits == 0)
@@ -376,11 +361,6 @@ int BN_mod_exp_mont(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
376 BIGNUM val[TABLE_SIZE]; 361 BIGNUM val[TABLE_SIZE];
377 BN_MONT_CTX *mont=NULL; 362 BN_MONT_CTX *mont=NULL;
378 363
379 if (BN_get_flags(p, BN_FLG_EXP_CONSTTIME) != 0)
380 {
381 return BN_mod_exp_mont_consttime(rr, a, p, m, ctx, in_mont);
382 }
383
384 bn_check_top(a); 364 bn_check_top(a);
385 bn_check_top(p); 365 bn_check_top(p);
386 bn_check_top(m); 366 bn_check_top(m);
@@ -513,212 +493,6 @@ err:
513 return(ret); 493 return(ret);
514 } 494 }
515 495
516
517/* BN_mod_exp_mont_consttime() stores the precomputed powers in a specific layout
518 * so that accessing any of these table values shows the same access pattern as far
519 * as cache lines are concerned. The following functions are used to transfer a BIGNUM
520 * from/to that table. */
521
522static int MOD_EXP_CTIME_COPY_TO_PREBUF(BIGNUM *b, int top, unsigned char *buf, int idx, int width)
523 {
524 size_t i, j;
525
526 if (bn_wexpand(b, top) == NULL)
527 return 0;
528 while (b->top < top)
529 {
530 b->d[b->top++] = 0;
531 }
532
533 for (i = 0, j=idx; i < top * sizeof b->d[0]; i++, j+=width)
534 {
535 buf[j] = ((unsigned char*)b->d)[i];
536 }
537
538 bn_fix_top(b);
539 return 1;
540 }
541
542static int MOD_EXP_CTIME_COPY_FROM_PREBUF(BIGNUM *b, int top, unsigned char *buf, int idx, int width)
543 {
544 size_t i, j;
545
546 if (bn_wexpand(b, top) == NULL)
547 return 0;
548
549 for (i=0, j=idx; i < top * sizeof b->d[0]; i++, j+=width)
550 {
551 ((unsigned char*)b->d)[i] = buf[j];
552 }
553
554 b->top = top;
555 bn_fix_top(b);
556 return 1;
557 }
558
559/* Given a pointer value, compute the next address that is a cache line multiple. */
560#define MOD_EXP_CTIME_ALIGN(x_) \
561 ((unsigned char*)(x_) + (MOD_EXP_CTIME_MIN_CACHE_LINE_WIDTH - (((BN_ULONG)(x_)) & (MOD_EXP_CTIME_MIN_CACHE_LINE_MASK))))
562
563/* This variant of BN_mod_exp_mont() uses fixed windows and the special
564 * precomputation memory layout to limit data-dependency to a minimum
565 * to protect secret exponents (cf. the hyper-threading timing attacks
566 * pointed out by Colin Percival,
567 * http://www.daemonology.net/hyperthreading-considered-harmful/)
568 */
569int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
570 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *in_mont)
571 {
572 int i,bits,ret=0,idx,window,wvalue;
573 int top;
574 BIGNUM *r;
575 const BIGNUM *aa;
576 BN_MONT_CTX *mont=NULL;
577
578 int numPowers;
579 unsigned char *powerbufFree=NULL;
580 int powerbufLen = 0;
581 unsigned char *powerbuf=NULL;
582 BIGNUM *computeTemp=NULL, *am=NULL;
583
584 bn_check_top(a);
585 bn_check_top(p);
586 bn_check_top(m);
587
588 top = m->top;
589
590 if (!(m->d[0] & 1))
591 {
592 BNerr(BN_F_BN_MOD_EXP_MONT_CONSTTIME,BN_R_CALLED_WITH_EVEN_MODULUS);
593 return(0);
594 }
595 bits=BN_num_bits(p);
596 if (bits == 0)
597 {
598 ret = BN_one(rr);
599 return ret;
600 }
601
602 /* Initialize BIGNUM context and allocate intermediate result */
603 BN_CTX_start(ctx);
604 r = BN_CTX_get(ctx);
605 if (r == NULL) goto err;
606
607 /* Allocate a montgomery context if it was not supplied by the caller.
608 * If this is not done, things will break in the montgomery part.
609 */
610 if (in_mont != NULL)
611 mont=in_mont;
612 else
613 {
614 if ((mont=BN_MONT_CTX_new()) == NULL) goto err;
615 if (!BN_MONT_CTX_set(mont,m,ctx)) goto err;
616 }
617
618 /* Get the window size to use with size of p. */
619 window = BN_window_bits_for_ctime_exponent_size(bits);
620
621 /* Allocate a buffer large enough to hold all of the pre-computed
622 * powers of a.
623 */
624 numPowers = 1 << window;
625 powerbufLen = sizeof(m->d[0])*top*numPowers;
626 if ((powerbufFree=(unsigned char*)OPENSSL_malloc(powerbufLen+MOD_EXP_CTIME_MIN_CACHE_LINE_WIDTH)) == NULL)
627 goto err;
628
629 powerbuf = MOD_EXP_CTIME_ALIGN(powerbufFree);
630 memset(powerbuf, 0, powerbufLen);
631
632 /* Initialize the intermediate result. Do this early to save double conversion,
633 * once each for a^0 and intermediate result.
634 */
635 if (!BN_to_montgomery(r,BN_value_one(),mont,ctx)) goto err;
636 if (!MOD_EXP_CTIME_COPY_TO_PREBUF(r, top, powerbuf, 0, numPowers)) goto err;
637
638 /* Initialize computeTemp as a^1 with montgomery precalcs */
639 computeTemp = BN_CTX_get(ctx);
640 am = BN_CTX_get(ctx);
641 if (computeTemp==NULL || am==NULL) goto err;
642
643 if (a->neg || BN_ucmp(a,m) >= 0)
644 {
645 if (!BN_mod(am,a,m,ctx))
646 goto err;
647 aa= am;
648 }
649 else
650 aa=a;
651 if (!BN_to_montgomery(am,aa,mont,ctx)) goto err;
652 if (!BN_copy(computeTemp, am)) goto err;
653 if (!MOD_EXP_CTIME_COPY_TO_PREBUF(am, top, powerbuf, 1, numPowers)) goto err;
654
655 /* If the window size is greater than 1, then calculate
656 * val[i=2..2^winsize-1]. Powers are computed as a*a^(i-1)
657 * (even powers could instead be computed as (a^(i/2))^2
658 * to use the slight performance advantage of sqr over mul).
659 */
660 if (window > 1)
661 {
662 for (i=2; i<numPowers; i++)
663 {
664 /* Calculate a^i = a^(i-1) * a */
665 if (!BN_mod_mul_montgomery(computeTemp,am,computeTemp,mont,ctx))
666 goto err;
667 if (!MOD_EXP_CTIME_COPY_TO_PREBUF(computeTemp, top, powerbuf, i, numPowers)) goto err;
668 }
669 }
670
671 /* Adjust the number of bits up to a multiple of the window size.
672 * If the exponent length is not a multiple of the window size, then
673 * this pads the most significant bits with zeros to normalize the
674 * scanning loop to there's no special cases.
675 *
676 * * NOTE: Making the window size a power of two less than the native
677 * * word size ensures that the padded bits won't go past the last
678 * * word in the internal BIGNUM structure. Going past the end will
679 * * still produce the correct result, but causes a different branch
680 * * to be taken in the BN_is_bit_set function.
681 */
682 bits = ((bits+window-1)/window)*window;
683 idx=bits-1; /* The top bit of the window */
684
685 /* Scan the exponent one window at a time starting from the most
686 * significant bits.
687 */
688 while (idx >= 0)
689 {
690 wvalue=0; /* The 'value' of the window */
691
692 /* Scan the window, squaring the result as we go */
693 for (i=0; i<window; i++,idx--)
694 {
695 if (!BN_mod_mul_montgomery(r,r,r,mont,ctx)) goto err;
696 wvalue = (wvalue<<1)+BN_is_bit_set(p,idx);
697 }
698
699 /* Fetch the appropriate pre-computed value from the pre-buf */
700 if (!MOD_EXP_CTIME_COPY_FROM_PREBUF(computeTemp, top, powerbuf, wvalue, numPowers)) goto err;
701
702 /* Multiply the result into the intermediate result */
703 if (!BN_mod_mul_montgomery(r,r,computeTemp,mont,ctx)) goto err;
704 }
705
706 /* Convert the final result from montgomery to standard format */
707 if (!BN_from_montgomery(rr,r,mont,ctx)) goto err;
708 ret=1;
709err:
710 if ((in_mont == NULL) && (mont != NULL)) BN_MONT_CTX_free(mont);
711 if (powerbuf!=NULL)
712 {
713 OPENSSL_cleanse(powerbuf,powerbufLen);
714 OPENSSL_free(powerbufFree);
715 }
716 if (am!=NULL) BN_clear(am);
717 if (computeTemp!=NULL) BN_clear(computeTemp);
718 BN_CTX_end(ctx);
719 return(ret);
720 }
721
722int BN_mod_exp_mont_word(BIGNUM *rr, BN_ULONG a, const BIGNUM *p, 496int BN_mod_exp_mont_word(BIGNUM *rr, BN_ULONG a, const BIGNUM *p,
723 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *in_mont) 497 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *in_mont)
724 { 498 {
@@ -743,13 +517,6 @@ int BN_mod_exp_mont_word(BIGNUM *rr, BN_ULONG a, const BIGNUM *p,
743#define BN_TO_MONTGOMERY_WORD(r, w, mont) \ 517#define BN_TO_MONTGOMERY_WORD(r, w, mont) \
744 (BN_set_word(r, (w)) && BN_to_montgomery(r, r, (mont), ctx)) 518 (BN_set_word(r, (w)) && BN_to_montgomery(r, r, (mont), ctx))
745 519
746 if (BN_get_flags(p, BN_FLG_EXP_CONSTTIME) != 0)
747 {
748 /* BN_FLG_EXP_CONSTTIME only supported by BN_mod_exp_mont() */
749 BNerr(BN_F_BN_MOD_EXP_MONT_WORD,ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
750 return -1;
751 }
752
753 bn_check_top(p); 520 bn_check_top(p);
754 bn_check_top(m); 521 bn_check_top(m);
755 522
@@ -877,13 +644,6 @@ int BN_mod_exp_simple(BIGNUM *r,
877 BIGNUM *d; 644 BIGNUM *d;
878 BIGNUM val[TABLE_SIZE]; 645 BIGNUM val[TABLE_SIZE];
879 646
880 if (BN_get_flags(p, BN_FLG_EXP_CONSTTIME) != 0)
881 {
882 /* BN_FLG_EXP_CONSTTIME only supported by BN_mod_exp_mont() */
883 BNerr(BN_F_BN_MOD_EXP_SIMPLE,ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
884 return -1;
885 }
886
887 bits=BN_num_bits(p); 647 bits=BN_num_bits(p);
888 648
889 if (bits == 0) 649 if (bits == 0)
diff --git a/src/lib/libssl/src/crypto/bn/bn_lcl.h b/src/lib/libssl/src/crypto/bn/bn_lcl.h
index a84998f2bd..253e195e23 100644
--- a/src/lib/libssl/src/crypto/bn/bn_lcl.h
+++ b/src/lib/libssl/src/crypto/bn/bn_lcl.h
@@ -177,45 +177,6 @@ struct bignum_ctx
177 177
178 178
179 179
180/* BN_mod_exp_mont_conttime is based on the assumption that the
181 * L1 data cache line width of the target processor is at least
182 * the following value.
183 */
184#define MOD_EXP_CTIME_MIN_CACHE_LINE_WIDTH ( 64 )
185#define MOD_EXP_CTIME_MIN_CACHE_LINE_MASK (MOD_EXP_CTIME_MIN_CACHE_LINE_WIDTH - 1)
186
187/* Window sizes optimized for fixed window size modular exponentiation
188 * algorithm (BN_mod_exp_mont_consttime).
189 *
190 * To achieve the security goals of BN_mode_exp_mont_consttime, the
191 * maximum size of the window must not exceed
192 * log_2(MOD_EXP_CTIME_MIN_CACHE_LINE_WIDTH).
193 *
194 * Window size thresholds are defined for cache line sizes of 32 and 64,
195 * cache line sizes where log_2(32)=5 and log_2(64)=6 respectively. A
196 * window size of 7 should only be used on processors that have a 128
197 * byte or greater cache line size.
198 */
199#if MOD_EXP_CTIME_MIN_CACHE_LINE_WIDTH == 64
200
201# define BN_window_bits_for_ctime_exponent_size(b) \
202 ((b) > 937 ? 6 : \
203 (b) > 306 ? 5 : \
204 (b) > 89 ? 4 : \
205 (b) > 22 ? 3 : 1)
206# define BN_MAX_WINDOW_BITS_FOR_CTIME_EXPONENT_SIZE (6)
207
208#elif MOD_EXP_CTIME_MIN_CACHE_LINE_WIDTH == 32
209
210# define BN_window_bits_for_ctime_exponent_size(b) \
211 ((b) > 306 ? 5 : \
212 (b) > 89 ? 4 : \
213 (b) > 22 ? 3 : 1)
214# define BN_MAX_WINDOW_BITS_FOR_CTIME_EXPONENT_SIZE (5)
215
216#endif
217
218
219/* Pentium pro 16,16,16,32,64 */ 180/* Pentium pro 16,16,16,32,64 */
220/* Alpha 16,16,16,16.64 */ 181/* Alpha 16,16,16,16.64 */
221#define BN_MULL_SIZE_NORMAL (16) /* 32 */ 182#define BN_MULL_SIZE_NORMAL (16) /* 32 */
diff --git a/src/lib/libssl/src/crypto/bn/bn_mont.c b/src/lib/libssl/src/crypto/bn/bn_mont.c
index 3572e5a690..b79b1b60da 100644
--- a/src/lib/libssl/src/crypto/bn/bn_mont.c
+++ b/src/lib/libssl/src/crypto/bn/bn_mont.c
@@ -347,23 +347,3 @@ BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from)
347 return(to); 347 return(to);
348 } 348 }
349 349
350BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock,
351 const BIGNUM *mod, BN_CTX *ctx)
352 {
353 if (*pmont)
354 return *pmont;
355 CRYPTO_w_lock(lock);
356 if (!*pmont)
357 {
358 *pmont = BN_MONT_CTX_new();
359 if (*pmont && !BN_MONT_CTX_set(*pmont, mod, ctx))
360 {
361 BN_MONT_CTX_free(*pmont);
362 *pmont = NULL;
363 }
364 }
365 CRYPTO_w_unlock(lock);
366 return *pmont;
367 }
368
369
diff --git a/src/lib/libssl/src/crypto/bn/bn_prime.c b/src/lib/libssl/src/crypto/bn/bn_prime.c
index e072d9255c..f422172f16 100644
--- a/src/lib/libssl/src/crypto/bn/bn_prime.c
+++ b/src/lib/libssl/src/crypto/bn/bn_prime.c
@@ -234,7 +234,9 @@ int BN_is_prime_fasttest(const BIGNUM *a, int checks,
234 234
235 /* first look for small factors */ 235 /* first look for small factors */
236 if (!BN_is_odd(a)) 236 if (!BN_is_odd(a))
237 return 0; 237 /* a is even => a is prime if and only if a == 2 */
238 return BN_is_word(a, 2);
239
238 if (do_trial_division) 240 if (do_trial_division)
239 { 241 {
240 for (i = 1; i < NUMPRIMES; i++) 242 for (i = 1; i < NUMPRIMES; i++)
diff --git a/src/lib/libssl/src/crypto/bn/bn_print.c b/src/lib/libssl/src/crypto/bn/bn_print.c
index 0d942603b1..acba7ed7ee 100644
--- a/src/lib/libssl/src/crypto/bn/bn_print.c
+++ b/src/lib/libssl/src/crypto/bn/bn_print.c
@@ -79,7 +79,7 @@ char *BN_bn2hex(const BIGNUM *a)
79 } 79 }
80 p=buf; 80 p=buf;
81 if (a->neg) *(p++)='-'; 81 if (a->neg) *(p++)='-';
82 if (a->top == 0) *(p++)='0'; 82 if (BN_is_zero(a)) *(p++)='0';
83 for (i=a->top-1; i >=0; i--) 83 for (i=a->top-1; i >=0; i--)
84 { 84 {
85 for (j=BN_BITS2-8; j >= 0; j-=8) 85 for (j=BN_BITS2-8; j >= 0; j-=8)
@@ -123,7 +123,7 @@ char *BN_bn2dec(const BIGNUM *a)
123 p=buf; 123 p=buf;
124 lp=bn_data; 124 lp=bn_data;
125 if (t->neg) *(p++)='-'; 125 if (t->neg) *(p++)='-';
126 if (t->top == 0) 126 if (BN_is_zero(t))
127 { 127 {
128 *(p++)='0'; 128 *(p++)='0';
129 *(p++)='\0'; 129 *(p++)='\0';
@@ -300,7 +300,7 @@ int BN_print(BIO *bp, const BIGNUM *a)
300 int ret=0; 300 int ret=0;
301 301
302 if ((a->neg) && (BIO_write(bp,"-",1) != 1)) goto end; 302 if ((a->neg) && (BIO_write(bp,"-",1) != 1)) goto end;
303 if ((a->top == 0) && (BIO_write(bp,"0",1) != 1)) goto end; 303 if ((BN_is_zero(a)) && (BIO_write(bp,"0",1) != 1)) goto end;
304 for (i=a->top-1; i >=0; i--) 304 for (i=a->top-1; i >=0; i--)
305 { 305 {
306 for (j=BN_BITS2-4; j >= 0; j-=4) 306 for (j=BN_BITS2-4; j >= 0; j-=4)
diff --git a/src/lib/libssl/src/crypto/bn/bn_word.c b/src/lib/libssl/src/crypto/bn/bn_word.c
index 988e0ca7b3..de610ce54c 100644
--- a/src/lib/libssl/src/crypto/bn/bn_word.c
+++ b/src/lib/libssl/src/crypto/bn/bn_word.c
@@ -110,6 +110,9 @@ int BN_add_word(BIGNUM *a, BN_ULONG w)
110 BN_ULONG l; 110 BN_ULONG l;
111 int i; 111 int i;
112 112
113 if ((w & BN_MASK2) == 0)
114 return(1);
115
113 if (a->neg) 116 if (a->neg)
114 { 117 {
115 a->neg=0; 118 a->neg=0;
@@ -143,6 +146,9 @@ int BN_sub_word(BIGNUM *a, BN_ULONG w)
143 { 146 {
144 int i; 147 int i;
145 148
149 if ((w & BN_MASK2) == 0)
150 return(1);
151
146 if (BN_is_zero(a) || a->neg) 152 if (BN_is_zero(a) || a->neg)
147 { 153 {
148 a->neg=0; 154 a->neg=0;
diff --git a/src/lib/libssl/src/crypto/bn/bn_x931p.c b/src/lib/libssl/src/crypto/bn/bn_x931p.c
new file mode 100644
index 0000000000..c64410dd3a
--- /dev/null
+++ b/src/lib/libssl/src/crypto/bn/bn_x931p.c
@@ -0,0 +1,282 @@
1/* bn_x931p.c */
2/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
3 * project 2005.
4 */
5/* ====================================================================
6 * Copyright (c) 2005 The OpenSSL Project. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 *
12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 *
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in
17 * the documentation and/or other materials provided with the
18 * distribution.
19 *
20 * 3. All advertising materials mentioning features or use of this
21 * software must display the following acknowledgment:
22 * "This product includes software developed by the OpenSSL Project
23 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
24 *
25 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
26 * endorse or promote products derived from this software without
27 * prior written permission. For written permission, please contact
28 * licensing@OpenSSL.org.
29 *
30 * 5. Products derived from this software may not be called "OpenSSL"
31 * nor may "OpenSSL" appear in their names without prior written
32 * permission of the OpenSSL Project.
33 *
34 * 6. Redistributions of any form whatsoever must retain the following
35 * acknowledgment:
36 * "This product includes software developed by the OpenSSL Project
37 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
38 *
39 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
40 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
43 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
46 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
48 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50 * OF THE POSSIBILITY OF SUCH DAMAGE.
51 * ====================================================================
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 */
58
59#include <stdio.h>
60#include <openssl/bn.h>
61
62#ifdef OPENSSL_FIPS
63
64/* X9.31 routines for prime derivation */
65
66
67/* X9.31 prime derivation. This is used to generate the primes pi
68 * (p1, p2, q1, q2) from a parameter Xpi by checking successive odd
69 * integers.
70 */
71
72static int bn_x931_derive_pi(BIGNUM *pi, const BIGNUM *Xpi, BN_CTX *ctx,
73 void (*cb)(int, int, void *), void *cb_arg)
74 {
75 int i = 0;
76 if (!BN_copy(pi, Xpi))
77 return 0;
78 if (!BN_is_odd(pi) && !BN_add_word(pi, 1))
79 return 0;
80 for(;;)
81 {
82 i++;
83 if (cb)
84 cb(0, i, cb_arg);
85 /* NB 27 MR is specificed in X9.31 */
86 if (BN_is_prime_fasttest(pi, 27, cb, ctx, cb_arg, 1))
87 break;
88 if (!BN_add_word(pi, 2))
89 return 0;
90 }
91 if (cb)
92 cb(2, i, cb_arg);
93 return 1;
94 }
95
96/* This is the main X9.31 prime derivation function. From parameters
97 * Xp1, Xp2 and Xp derive the prime p. If the parameters p1 or p2 are
98 * not NULL they will be returned too: this is needed for testing.
99 */
100
101int BN_X931_derive_prime(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
102 void (*cb)(int, int, void *), void *cb_arg,
103 const BIGNUM *Xp, const BIGNUM *Xp1, const BIGNUM *Xp2,
104 const BIGNUM *e, BN_CTX *ctx)
105 {
106 int ret = 0;
107
108 BIGNUM *t, *p1p2, *pm1;
109
110 /* Only even e supported */
111 if (!BN_is_odd(e))
112 return 0;
113
114 BN_CTX_start(ctx);
115 if (!p1)
116 p1 = BN_CTX_get(ctx);
117
118 if (!p2)
119 p2 = BN_CTX_get(ctx);
120
121 t = BN_CTX_get(ctx);
122
123 p1p2 = BN_CTX_get(ctx);
124
125 pm1 = BN_CTX_get(ctx);
126
127 if (!bn_x931_derive_pi(p1, Xp1, ctx, cb, cb_arg))
128 goto err;
129
130 if (!bn_x931_derive_pi(p2, Xp2, ctx, cb, cb_arg))
131 goto err;
132
133 if (!BN_mul(p1p2, p1, p2, ctx))
134 goto err;
135
136 /* First set p to value of Rp */
137
138 if (!BN_mod_inverse(p, p2, p1, ctx))
139 goto err;
140
141 if (!BN_mul(p, p, p2, ctx))
142 goto err;
143
144 if (!BN_mod_inverse(t, p1, p2, ctx))
145 goto err;
146
147 if (!BN_mul(t, t, p1, ctx))
148 goto err;
149
150 if (!BN_sub(p, p, t))
151 goto err;
152
153 if (p->neg && !BN_add(p, p, p1p2))
154 goto err;
155
156 /* p now equals Rp */
157
158 if (!BN_mod_sub(p, p, Xp, p1p2, ctx))
159 goto err;
160
161 if (!BN_add(p, p, Xp))
162 goto err;
163
164 /* p now equals Yp0 */
165
166 for (;;)
167 {
168 int i = 1;
169 if (cb)
170 cb(0, i++, cb_arg);
171 if (!BN_copy(pm1, p))
172 goto err;
173 if (!BN_sub_word(pm1, 1))
174 goto err;
175 if (!BN_gcd(t, pm1, e, ctx))
176 goto err;
177 if (BN_is_one(t)
178 /* X9.31 specifies 8 MR and 1 Lucas test or any prime test
179 * offering similar or better guarantees 50 MR is considerably
180 * better.
181 */
182 && BN_is_prime_fasttest(p, 50, cb, ctx, cb_arg, 1))
183 break;
184 if (!BN_add(p, p, p1p2))
185 goto err;
186 }
187
188 if (cb)
189 cb(3, 0, cb_arg);
190
191 ret = 1;
192
193 err:
194
195 BN_CTX_end(ctx);
196
197 return ret;
198 }
199
200/* Generate pair of paramters Xp, Xq for X9.31 prime generation.
201 * Note: nbits paramter is sum of number of bits in both.
202 */
203
204int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx)
205 {
206 BIGNUM *t;
207 int i;
208 /* Number of bits for each prime is of the form
209 * 512+128s for s = 0, 1, ...
210 */
211 if ((nbits < 1024) || (nbits & 0xff))
212 return 0;
213 nbits >>= 1;
214 /* The random value Xp must be between sqrt(2) * 2^(nbits-1) and
215 * 2^nbits - 1. By setting the top two bits we ensure that the lower
216 * bound is exceeded.
217 */
218 if (!BN_rand(Xp, nbits, 1, 0))
219 return 0;
220
221 BN_CTX_start(ctx);
222 t = BN_CTX_get(ctx);
223
224 for (i = 0; i < 1000; i++)
225 {
226 if (!BN_rand(Xq, nbits, 1, 0))
227 return 0;
228 /* Check that |Xp - Xq| > 2^(nbits - 100) */
229 BN_sub(t, Xp, Xq);
230 if (BN_num_bits(t) > (nbits - 100))
231 break;
232 }
233
234 BN_CTX_end(ctx);
235
236 if (i < 1000)
237 return 1;
238
239 return 0;
240
241 }
242
243/* Generate primes using X9.31 algorithm. Of the values p, p1, p2, Xp1
244 * and Xp2 only 'p' needs to be non-NULL. If any of the others are not NULL
245 * the relevant parameter will be stored in it.
246 *
247 * Due to the fact that |Xp - Xq| > 2^(nbits - 100) must be satisfied Xp and Xq
248 * are generated using the previous function and supplied as input.
249 */
250
251int BN_X931_generate_prime(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
252 BIGNUM *Xp1, BIGNUM *Xp2,
253 const BIGNUM *Xp,
254 const BIGNUM *e, BN_CTX *ctx,
255 void (*cb)(int, int, void *), void *cb_arg)
256 {
257 int ret = 0;
258
259 BN_CTX_start(ctx);
260 if (!Xp1)
261 Xp1 = BN_CTX_get(ctx);
262 if (!Xp2)
263 Xp2 = BN_CTX_get(ctx);
264
265 if (!BN_rand(Xp1, 101, 0, 0))
266 goto error;
267 if (!BN_rand(Xp2, 101, 0, 0))
268 goto error;
269 if (!BN_X931_derive_prime(p, p1, p2, cb, cb_arg,
270 Xp, Xp1, Xp2, e, ctx))
271 goto error;
272
273 ret = 1;
274
275 error:
276 BN_CTX_end(ctx);
277
278 return ret;
279
280 }
281
282#endif
diff --git a/src/lib/libssl/src/crypto/bn/bntest.c b/src/lib/libssl/src/crypto/bn/bntest.c
index 685007d330..79d813d85e 100644
--- a/src/lib/libssl/src/crypto/bn/bntest.c
+++ b/src/lib/libssl/src/crypto/bn/bntest.c
@@ -86,7 +86,6 @@ int test_mont(BIO *bp,BN_CTX *ctx);
86int test_mod(BIO *bp,BN_CTX *ctx); 86int test_mod(BIO *bp,BN_CTX *ctx);
87int test_mod_mul(BIO *bp,BN_CTX *ctx); 87int test_mod_mul(BIO *bp,BN_CTX *ctx);
88int test_mod_exp(BIO *bp,BN_CTX *ctx); 88int test_mod_exp(BIO *bp,BN_CTX *ctx);
89int test_mod_exp_mont_consttime(BIO *bp,BN_CTX *ctx);
90int test_exp(BIO *bp,BN_CTX *ctx); 89int test_exp(BIO *bp,BN_CTX *ctx);
91int test_kron(BIO *bp,BN_CTX *ctx); 90int test_kron(BIO *bp,BN_CTX *ctx);
92int test_sqrt(BIO *bp,BN_CTX *ctx); 91int test_sqrt(BIO *bp,BN_CTX *ctx);
@@ -214,10 +213,6 @@ int main(int argc, char *argv[])
214 if (!test_mod_exp(out,ctx)) goto err; 213 if (!test_mod_exp(out,ctx)) goto err;
215 BIO_flush(out); 214 BIO_flush(out);
216 215
217 message(out,"BN_mod_exp_mont_consttime");
218 if (!test_mod_exp_mont_consttime(out,ctx)) goto err;
219 BIO_flush(out);
220
221 message(out,"BN_exp"); 216 message(out,"BN_exp");
222 if (!test_exp(out,ctx)) goto err; 217 if (!test_exp(out,ctx)) goto err;
223 BIO_flush(out); 218 BIO_flush(out);
@@ -785,58 +780,7 @@ int test_mod_exp(BIO *bp, BN_CTX *ctx)
785 BN_bntest_rand(b,2+i,0,0); /**/ 780 BN_bntest_rand(b,2+i,0,0); /**/
786 781
787 if (!BN_mod_exp(d,a,b,c,ctx)) 782 if (!BN_mod_exp(d,a,b,c,ctx))
788 return(00); 783 return(0);
789
790 if (bp != NULL)
791 {
792 if (!results)
793 {
794 BN_print(bp,a);
795 BIO_puts(bp," ^ ");
796 BN_print(bp,b);
797 BIO_puts(bp," % ");
798 BN_print(bp,c);
799 BIO_puts(bp," - ");
800 }
801 BN_print(bp,d);
802 BIO_puts(bp,"\n");
803 }
804 BN_exp(e,a,b,ctx);
805 BN_sub(e,e,d);
806 BN_div(a,b,e,c,ctx);
807 if(!BN_is_zero(b))
808 {
809 fprintf(stderr,"Modulo exponentiation test failed!\n");
810 return 0;
811 }
812 }
813 BN_free(a);
814 BN_free(b);
815 BN_free(c);
816 BN_free(d);
817 BN_free(e);
818 return(1);
819 }
820
821int test_mod_exp_mont_consttime(BIO *bp, BN_CTX *ctx)
822 {
823 BIGNUM *a,*b,*c,*d,*e;
824 int i;
825
826 a=BN_new();
827 b=BN_new();
828 c=BN_new();
829 d=BN_new();
830 e=BN_new();
831
832 BN_bntest_rand(c,30,0,1); /* must be odd for montgomery */
833 for (i=0; i<num2; i++)
834 {
835 BN_bntest_rand(a,20+i*5,0,0); /**/
836 BN_bntest_rand(b,2+i,0,0); /**/
837
838 if (!BN_mod_exp_mont_consttime(d,a,b,c,ctx,NULL))
839 return(00);
840 784
841 if (bp != NULL) 785 if (bp != NULL)
842 { 786 {
@@ -887,7 +831,7 @@ int test_exp(BIO *bp, BN_CTX *ctx)
887 BN_bntest_rand(b,2+i,0,0); /**/ 831 BN_bntest_rand(b,2+i,0,0); /**/
888 832
889 if (!BN_exp(d,a,b,ctx)) 833 if (!BN_exp(d,a,b,ctx))
890 return(00); 834 return(0);
891 835
892 if (bp != NULL) 836 if (bp != NULL)
893 { 837 {
diff --git a/src/lib/libssl/src/crypto/bn/expspeed.c b/src/lib/libssl/src/crypto/bn/expspeed.c
index 4d5f221f33..07a1bcf51c 100644
--- a/src/lib/libssl/src/crypto/bn/expspeed.c
+++ b/src/lib/libssl/src/crypto/bn/expspeed.c
@@ -321,7 +321,7 @@ void do_mul_exp(BIGNUM *r, BIGNUM *a, BIGNUM *b, BIGNUM *c, BN_CTX *ctx)
321#else /* TEST_SQRT */ 321#else /* TEST_SQRT */
322 "2*sqrt [prime == %d (mod 64)] %4d %4d mod %4d" 322 "2*sqrt [prime == %d (mod 64)] %4d %4d mod %4d"
323#endif 323#endif
324 " -> %8.6fms %5.1f (%ld)\n", 324 " -> %8.3fms %5.1f (%ld)\n",
325#ifdef TEST_SQRT 325#ifdef TEST_SQRT
326 P_MOD_64, 326 P_MOD_64,
327#endif 327#endif
diff --git a/src/lib/libssl/src/crypto/bn/exptest.c b/src/lib/libssl/src/crypto/bn/exptest.c
index 28aaac2ac1..b09cf88705 100644
--- a/src/lib/libssl/src/crypto/bn/exptest.c
+++ b/src/lib/libssl/src/crypto/bn/exptest.c
@@ -77,7 +77,7 @@ int main(int argc, char *argv[])
77 BIO *out=NULL; 77 BIO *out=NULL;
78 int i,ret; 78 int i,ret;
79 unsigned char c; 79 unsigned char c;
80 BIGNUM *r_mont,*r_mont_const,*r_recp,*r_simple,*a,*b,*m; 80 BIGNUM *r_mont,*r_recp,*r_simple,*a,*b,*m;
81 81
82 RAND_seed(rnd_seed, sizeof rnd_seed); /* or BN_rand may fail, and we don't 82 RAND_seed(rnd_seed, sizeof rnd_seed); /* or BN_rand may fail, and we don't
83 * even check its return value 83 * even check its return value
@@ -88,7 +88,6 @@ int main(int argc, char *argv[])
88 ctx=BN_CTX_new(); 88 ctx=BN_CTX_new();
89 if (ctx == NULL) EXIT(1); 89 if (ctx == NULL) EXIT(1);
90 r_mont=BN_new(); 90 r_mont=BN_new();
91 r_mont_const=BN_new();
92 r_recp=BN_new(); 91 r_recp=BN_new();
93 r_simple=BN_new(); 92 r_simple=BN_new();
94 a=BN_new(); 93 a=BN_new();
@@ -144,17 +143,8 @@ int main(int argc, char *argv[])
144 EXIT(1); 143 EXIT(1);
145 } 144 }
146 145
147 ret=BN_mod_exp_mont_consttime(r_mont_const,a,b,m,ctx,NULL);
148 if (ret <= 0)
149 {
150 printf("BN_mod_exp_mont_consttime() problems\n");
151 ERR_print_errors(out);
152 EXIT(1);
153 }
154
155 if (BN_cmp(r_simple, r_mont) == 0 146 if (BN_cmp(r_simple, r_mont) == 0
156 && BN_cmp(r_simple,r_recp) == 0 147 && BN_cmp(r_simple,r_recp) == 0)
157 && BN_cmp(r_simple,r_mont_const) == 0)
158 { 148 {
159 printf("."); 149 printf(".");
160 fflush(stdout); 150 fflush(stdout);
@@ -163,8 +153,6 @@ int main(int argc, char *argv[])
163 { 153 {
164 if (BN_cmp(r_simple,r_mont) != 0) 154 if (BN_cmp(r_simple,r_mont) != 0)
165 printf("\nsimple and mont results differ\n"); 155 printf("\nsimple and mont results differ\n");
166 if (BN_cmp(r_simple,r_mont) != 0)
167 printf("\nsimple and mont const time results differ\n");
168 if (BN_cmp(r_simple,r_recp) != 0) 156 if (BN_cmp(r_simple,r_recp) != 0)
169 printf("\nsimple and recp results differ\n"); 157 printf("\nsimple and recp results differ\n");
170 158
@@ -174,13 +162,11 @@ int main(int argc, char *argv[])
174 printf("\nsimple ="); BN_print(out,r_simple); 162 printf("\nsimple ="); BN_print(out,r_simple);
175 printf("\nrecp ="); BN_print(out,r_recp); 163 printf("\nrecp ="); BN_print(out,r_recp);
176 printf("\nmont ="); BN_print(out,r_mont); 164 printf("\nmont ="); BN_print(out,r_mont);
177 printf("\nmont_ct ="); BN_print(out,r_mont_const);
178 printf("\n"); 165 printf("\n");
179 EXIT(1); 166 EXIT(1);
180 } 167 }
181 } 168 }
182 BN_free(r_mont); 169 BN_free(r_mont);
183 BN_free(r_mont_const);
184 BN_free(r_recp); 170 BN_free(r_recp);
185 BN_free(r_simple); 171 BN_free(r_simple);
186 BN_free(a); 172 BN_free(a);
diff --git a/src/lib/libssl/src/crypto/buffer/Makefile.ssl b/src/lib/libssl/src/crypto/buffer/Makefile.ssl
new file mode 100644
index 0000000000..b131ca3078
--- /dev/null
+++ b/src/lib/libssl/src/crypto/buffer/Makefile.ssl
@@ -0,0 +1,94 @@
1#
2# SSLeay/crypto/buffer/Makefile
3#
4
5DIR= buffer
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST=
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC= buffer.c buf_err.c
27LIBOBJ= buffer.o buf_err.o
28
29SRC= $(LIBSRC)
30
31EXHEADER= buffer.h
32HEADER= $(EXHEADER)
33
34ALL= $(GENERAL) $(SRC) $(HEADER)
35
36top:
37 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
38
39all: lib
40
41lib: $(LIBOBJ)
42 $(AR) $(LIB) $(LIBOBJ)
43 $(RANLIB) $(LIB) || echo Never mind.
44 @touch lib
45
46files:
47 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
48
49links:
50 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
51 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
52 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
53 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
54
55install:
56 @for i in $(EXHEADER) ; \
57 do \
58 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
59 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
60 done;
61
62tags:
63 ctags $(SRC)
64
65tests:
66
67lint:
68 lint -DLINT $(INCLUDES) $(SRC)>fluff
69
70depend:
71 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
72
73dclean:
74 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
75 mv -f Makefile.new $(MAKEFILE)
76
77clean:
78 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
79
80# DO NOT DELETE THIS LINE -- make depend depends on it.
81
82buf_err.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
83buf_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
84buf_err.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
85buf_err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
86buf_err.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
87buf_err.o: ../../include/openssl/symhacks.h buf_err.c
88buffer.o: ../../e_os.h ../../include/openssl/bio.h
89buffer.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
90buffer.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
91buffer.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
92buffer.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
93buffer.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
94buffer.o: ../cryptlib.h buffer.c
diff --git a/src/lib/libssl/src/crypto/buffer/buf_err.c b/src/lib/libssl/src/crypto/buffer/buf_err.c
index 1fc32a6861..5eee653e14 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 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
@@ -64,15 +64,11 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_BUF,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_BUF,0,reason)
70
71static ERR_STRING_DATA BUF_str_functs[]= 67static ERR_STRING_DATA BUF_str_functs[]=
72 { 68 {
73{ERR_FUNC(BUF_F_BUF_MEM_GROW), "BUF_MEM_grow"}, 69{ERR_PACK(0,BUF_F_BUF_MEM_GROW,0), "BUF_MEM_grow"},
74{ERR_FUNC(BUF_F_BUF_MEM_NEW), "BUF_MEM_new"}, 70{ERR_PACK(0,BUF_F_BUF_MEM_NEW,0), "BUF_MEM_new"},
75{ERR_FUNC(BUF_F_BUF_STRDUP), "BUF_strdup"}, 71{ERR_PACK(0,BUF_F_BUF_STRDUP,0), "BUF_strdup"},
76{0,NULL} 72{0,NULL}
77 }; 73 };
78 74
@@ -91,8 +87,8 @@ void ERR_load_BUF_strings(void)
91 { 87 {
92 init=0; 88 init=0;
93#ifndef OPENSSL_NO_ERR 89#ifndef OPENSSL_NO_ERR
94 ERR_load_strings(0,BUF_str_functs); 90 ERR_load_strings(ERR_LIB_BUF,BUF_str_functs);
95 ERR_load_strings(0,BUF_str_reasons); 91 ERR_load_strings(ERR_LIB_BUF,BUF_str_reasons);
96#endif 92#endif
97 93
98 } 94 }
diff --git a/src/lib/libssl/src/crypto/cast/Makefile.ssl b/src/lib/libssl/src/crypto/cast/Makefile.ssl
new file mode 100644
index 0000000000..98393a37ba
--- /dev/null
+++ b/src/lib/libssl/src/crypto/cast/Makefile.ssl
@@ -0,0 +1,120 @@
1#
2# SSLeay/crypto/cast/Makefile
3#
4
5DIR= cast
6TOP= ../..
7CC= cc
8CPP= $(CC) -E
9INCLUDES=
10CFLAG=-g
11INSTALL_PREFIX=
12OPENSSLDIR= /usr/local/ssl
13INSTALLTOP=/usr/local/ssl
14MAKE= make -f Makefile.ssl
15MAKEDEPPROG= makedepend
16MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
17MAKEFILE= Makefile.ssl
18AR= ar r
19
20CAST_ENC=c_enc.o
21# or use
22#CAST_ENC=asm/cx86-elf.o
23#CAST_ENC=asm/cx86-out.o
24#CAST_ENC=asm/cx86-sol.o
25#CAST_ENC=asm/cx86bdsi.o
26
27CFLAGS= $(INCLUDES) $(CFLAG)
28ASFLAGS= $(INCLUDES) $(ASFLAG)
29
30GENERAL=Makefile
31TEST=casttest.c
32APPS=
33
34LIB=$(TOP)/libcrypto.a
35LIBSRC=c_skey.c c_ecb.c c_enc.c c_cfb64.c c_ofb64.c
36LIBOBJ=c_skey.o c_ecb.o $(CAST_ENC) c_cfb64.o c_ofb64.o
37
38SRC= $(LIBSRC)
39
40EXHEADER= cast.h
41HEADER= cast_s.h cast_lcl.h $(EXHEADER)
42
43ALL= $(GENERAL) $(SRC) $(HEADER)
44
45top:
46 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
47
48all: lib
49
50lib: $(LIBOBJ)
51 $(AR) $(LIB) $(LIBOBJ)
52 $(RANLIB) $(LIB) || echo Never mind.
53 @touch lib
54
55# elf
56asm/cx86-elf.s: asm/cast-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
57 (cd asm; $(PERL) cast-586.pl elf $(CLAGS) $(PROCESSOR) > cx86-elf.s)
58
59# a.out
60asm/cx86-out.o: asm/cx86unix.cpp
61 $(CPP) -DOUT asm/cx86unix.cpp | as -o asm/cx86-out.o
62
63# bsdi
64asm/cx86bsdi.o: asm/cx86unix.cpp
65 $(CPP) -DBSDI asm/cx86unix.cpp | sed 's/ :/:/' | as -o asm/cx86bsdi.o
66
67asm/cx86unix.cpp: asm/cast-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
68 (cd asm; $(PERL) cast-586.pl cpp $(PROCESSOR) >cx86unix.cpp)
69
70files:
71 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
72
73links:
74 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
75 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
76 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
77 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
78
79install:
80 @for i in $(EXHEADER) ; \
81 do \
82 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
83 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
84 done;
85
86tags:
87 ctags $(SRC)
88
89tests:
90
91lint:
92 lint -DLINT $(INCLUDES) $(SRC)>fluff
93
94depend:
95 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
96
97dclean:
98 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
99 mv -f Makefile.new $(MAKEFILE)
100
101clean:
102 rm -f asm/cx86unix.cpp asm/*-elf.* *.o asm/*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
103
104# DO NOT DELETE THIS LINE -- make depend depends on it.
105
106c_cfb64.o: ../../e_os.h ../../include/openssl/cast.h
107c_cfb64.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
108c_cfb64.o: c_cfb64.c cast_lcl.h
109c_ecb.o: ../../e_os.h ../../include/openssl/cast.h
110c_ecb.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
111c_ecb.o: ../../include/openssl/opensslv.h c_ecb.c cast_lcl.h
112c_enc.o: ../../e_os.h ../../include/openssl/cast.h
113c_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
114c_enc.o: c_enc.c cast_lcl.h
115c_ofb64.o: ../../e_os.h ../../include/openssl/cast.h
116c_ofb64.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
117c_ofb64.o: c_ofb64.c cast_lcl.h
118c_skey.o: ../../e_os.h ../../include/openssl/cast.h
119c_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
120c_skey.o: 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..0ed55d1905 100644
--- a/src/lib/libssl/src/crypto/cast/asm/cast-586.pl
+++ b/src/lib/libssl/src/crypto/cast/asm/cast-586.pl
@@ -28,7 +28,7 @@ $S4="CAST_S_table3";
28 28
29&CAST_encrypt("CAST_encrypt",1); 29&CAST_encrypt("CAST_encrypt",1);
30&CAST_encrypt("CAST_decrypt",0); 30&CAST_encrypt("CAST_decrypt",0);
31&cbc("CAST_cbc_encrypt","CAST_encrypt","CAST_decrypt",1,4,5,3,-1,-1); 31&cbc("CAST_cbc_encrypt","CAST_encrypt","CAST_decrypt",1,4,5,3,-1,-1) unless $main'openbsd;
32 32
33&asm_finish(); 33&asm_finish();
34 34
diff --git a/src/lib/libssl/src/crypto/cast/c_enc.c b/src/lib/libssl/src/crypto/cast/c_enc.c
index 0fe2cffecc..e80f65b698 100644
--- a/src/lib/libssl/src/crypto/cast/c_enc.c
+++ b/src/lib/libssl/src/crypto/cast/c_enc.c
@@ -59,6 +59,7 @@
59#include <openssl/cast.h> 59#include <openssl/cast.h>
60#include "cast_lcl.h" 60#include "cast_lcl.h"
61 61
62#ifndef OPENBSD_CAST_ASM
62void CAST_encrypt(CAST_LONG *data, CAST_KEY *key) 63void CAST_encrypt(CAST_LONG *data, CAST_KEY *key)
63 { 64 {
64 register CAST_LONG l,r,*k,t; 65 register CAST_LONG l,r,*k,t;
@@ -122,6 +123,7 @@ void CAST_decrypt(CAST_LONG *data, CAST_KEY *key)
122 data[1]=l&0xffffffffL; 123 data[1]=l&0xffffffffL;
123 data[0]=r&0xffffffffL; 124 data[0]=r&0xffffffffL;
124 } 125 }
126#endif
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 CAST_KEY *ks, unsigned char *iv, int enc)
diff --git a/src/lib/libssl/src/crypto/cast/c_skey.c b/src/lib/libssl/src/crypto/cast/c_skey.c
index db9b7573e0..dc4791a8cf 100644
--- a/src/lib/libssl/src/crypto/cast/c_skey.c
+++ b/src/lib/libssl/src/crypto/cast/c_skey.c
@@ -57,7 +57,6 @@
57 */ 57 */
58 58
59#include <openssl/crypto.h> 59#include <openssl/crypto.h>
60#include <openssl/fips.h>
61#include <openssl/cast.h> 60#include <openssl/cast.h>
62 61
63#include "cast_lcl.h" 62#include "cast_lcl.h"
diff --git a/src/lib/libssl/src/crypto/cast/cast_lcl.h b/src/lib/libssl/src/crypto/cast/cast_lcl.h
index e756021a33..37f41cc6a4 100644
--- a/src/lib/libssl/src/crypto/cast/cast_lcl.h
+++ b/src/lib/libssl/src/crypto/cast/cast_lcl.h
@@ -64,6 +64,11 @@
64#endif 64#endif
65 65
66 66
67#ifdef OPENSSL_BUILD_SHLIBCRYPTO
68# undef OPENSSL_EXTERN
69# define OPENSSL_EXTERN OPENSSL_EXPORT
70#endif
71
67#undef c2l 72#undef c2l
68#define c2l(c,l) (l =((unsigned long)(*((c)++))) , \ 73#define c2l(c,l) (l =((unsigned long)(*((c)++))) , \
69 l|=((unsigned long)(*((c)++)))<< 8L, \ 74 l|=((unsigned long)(*((c)++)))<< 8L, \
@@ -217,11 +222,11 @@
217 } 222 }
218#endif 223#endif
219 224
220extern const CAST_LONG CAST_S_table0[256]; 225OPENSSL_EXTERN const CAST_LONG CAST_S_table0[256];
221extern const CAST_LONG CAST_S_table1[256]; 226OPENSSL_EXTERN const CAST_LONG CAST_S_table1[256];
222extern const CAST_LONG CAST_S_table2[256]; 227OPENSSL_EXTERN const CAST_LONG CAST_S_table2[256];
223extern const CAST_LONG CAST_S_table3[256]; 228OPENSSL_EXTERN const CAST_LONG CAST_S_table3[256];
224extern const CAST_LONG CAST_S_table4[256]; 229OPENSSL_EXTERN const CAST_LONG CAST_S_table4[256];
225extern const CAST_LONG CAST_S_table5[256]; 230OPENSSL_EXTERN const CAST_LONG CAST_S_table5[256];
226extern const CAST_LONG CAST_S_table6[256]; 231OPENSSL_EXTERN const CAST_LONG CAST_S_table6[256];
227extern const CAST_LONG CAST_S_table7[256]; 232OPENSSL_EXTERN const CAST_LONG CAST_S_table7[256];
diff --git a/src/lib/libssl/src/crypto/comp/Makefile.ssl b/src/lib/libssl/src/crypto/comp/Makefile.ssl
new file mode 100644
index 0000000000..f70ba1b285
--- /dev/null
+++ b/src/lib/libssl/src/crypto/comp/Makefile.ssl
@@ -0,0 +1,114 @@
1#
2# SSLeay/crypto/comp/Makefile
3#
4
5DIR= comp
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST=
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC= comp_lib.c comp_err.c \
27 c_rle.c c_zlib.c
28
29LIBOBJ= comp_lib.o comp_err.o \
30 c_rle.o c_zlib.o
31
32SRC= $(LIBSRC)
33
34EXHEADER= comp.h
35HEADER= $(EXHEADER)
36
37ALL= $(GENERAL) $(SRC) $(HEADER)
38
39top:
40 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
41
42all: lib
43
44lib: $(LIBOBJ)
45 $(AR) $(LIB) $(LIBOBJ)
46 $(RANLIB) $(LIB) || echo Never mind.
47 @touch lib
48
49files:
50 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
51
52links:
53 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
54 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
55 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
56 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
57
58install:
59 @for i in $(EXHEADER) ; \
60 do \
61 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
62 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
63 done;
64
65tags:
66 ctags $(SRC)
67
68tests:
69
70lint:
71 lint -DLINT $(INCLUDES) $(SRC)>fluff
72
73depend:
74 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(LIBSRC)
75
76dclean:
77 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
78 mv -f Makefile.new $(MAKEFILE)
79
80clean:
81 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
82
83# DO NOT DELETE THIS LINE -- make depend depends on it.
84
85c_rle.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
86c_rle.o: ../../include/openssl/bn.h ../../include/openssl/comp.h
87c_rle.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
88c_rle.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
89c_rle.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
90c_rle.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
91c_rle.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h c_rle.c
92c_zlib.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
93c_zlib.o: ../../include/openssl/bn.h ../../include/openssl/comp.h
94c_zlib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
95c_zlib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
96c_zlib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
97c_zlib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
98c_zlib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
99c_zlib.o: c_zlib.c
100comp_err.o: ../../include/openssl/bio.h ../../include/openssl/comp.h
101comp_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
102comp_err.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
103comp_err.o: ../../include/openssl/opensslconf.h
104comp_err.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
105comp_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
106comp_err.o: comp_err.c
107comp_lib.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
108comp_lib.o: ../../include/openssl/bn.h ../../include/openssl/comp.h
109comp_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
110comp_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
111comp_lib.o: ../../include/openssl/opensslconf.h
112comp_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
113comp_lib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
114comp_lib.o: ../../include/openssl/symhacks.h comp_lib.c
diff --git a/src/lib/libssl/src/crypto/comp/c_zlib.c b/src/lib/libssl/src/crypto/comp/c_zlib.c
index 5fcb521ffb..1bd2850d15 100644
--- a/src/lib/libssl/src/crypto/comp/c_zlib.c
+++ b/src/lib/libssl/src/crypto/comp/c_zlib.c
@@ -51,17 +51,30 @@ static COMP_METHOD zlib_method={
51 */ 51 */
52#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32) 52#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32)
53# include <windows.h> 53# include <windows.h>
54
55# define Z_CALLCONV _stdcall
56# define ZLIB_SHARED
57#else
58# define Z_CALLCONV
54#endif /* !(OPENSSL_SYS_WINDOWS || OPENSSL_SYS_WIN32) */ 59#endif /* !(OPENSSL_SYS_WINDOWS || OPENSSL_SYS_WIN32) */
55 60
56#ifdef ZLIB_SHARED 61#ifdef ZLIB_SHARED
57#include <openssl/dso.h> 62#include <openssl/dso.h>
58 63
64/* Prototypes for built in stubs */
65static int stub_compress(Bytef *dest,uLongf *destLen,
66 const Bytef *source, uLong sourceLen);
67static int stub_inflateEnd(z_streamp strm);
68static int stub_inflate(z_streamp strm, int flush);
69static int stub_inflateInit_(z_streamp strm, const char * version,
70 int stream_size);
71
59/* Function pointers */ 72/* Function pointers */
60typedef int (*compress_ft)(Bytef *dest,uLongf *destLen, 73typedef int (Z_CALLCONV *compress_ft)(Bytef *dest,uLongf *destLen,
61 const Bytef *source, uLong sourceLen); 74 const Bytef *source, uLong sourceLen);
62typedef int (*inflateEnd_ft)(z_streamp strm); 75typedef int (Z_CALLCONV *inflateEnd_ft)(z_streamp strm);
63typedef int (*inflate_ft)(z_streamp strm, int flush); 76typedef int (Z_CALLCONV *inflate_ft)(z_streamp strm, int flush);
64typedef int (*inflateInit__ft)(z_streamp strm, 77typedef int (Z_CALLCONV *inflateInit__ft)(z_streamp strm,
65 const char * version, int stream_size); 78 const char * version, int stream_size);
66static compress_ft p_compress=NULL; 79static compress_ft p_compress=NULL;
67static inflateEnd_ft p_inflateEnd=NULL; 80static inflateEnd_ft p_inflateEnd=NULL;
@@ -71,10 +84,10 @@ static inflateInit__ft p_inflateInit_=NULL;
71static int zlib_loaded = 0; /* only attempt to init func pts once */ 84static int zlib_loaded = 0; /* only attempt to init func pts once */
72static DSO *zlib_dso = NULL; 85static DSO *zlib_dso = NULL;
73 86
74#define compress p_compress 87#define compress stub_compress
75#define inflateEnd p_inflateEnd 88#define inflateEnd stub_inflateEnd
76#define inflate p_inflate 89#define inflate stub_inflate
77#define inflateInit_ p_inflateInit_ 90#define inflateInit_ stub_inflateInit_
78#endif /* ZLIB_SHARED */ 91#endif /* ZLIB_SHARED */
79 92
80static int zlib_compress_block(COMP_CTX *ctx, unsigned char *out, 93static int zlib_compress_block(COMP_CTX *ctx, unsigned char *out,
@@ -178,6 +191,16 @@ COMP_METHOD *COMP_zlib(void)
178 { 191 {
179#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32) 192#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32)
180 zlib_dso = DSO_load(NULL, "ZLIB1", NULL, 0); 193 zlib_dso = DSO_load(NULL, "ZLIB1", NULL, 0);
194 if (!zlib_dso)
195 {
196 zlib_dso = DSO_load(NULL, "ZLIB", NULL, 0);
197 if (zlib_dso)
198 {
199 /* Clear the errors from the first failed
200 DSO_load() */
201 ERR_clear_error();
202 }
203 }
181#else 204#else
182 zlib_dso = DSO_load(NULL, "z", NULL, 0); 205 zlib_dso = DSO_load(NULL, "z", NULL, 0);
183#endif 206#endif
@@ -195,21 +218,54 @@ COMP_METHOD *COMP_zlib(void)
195 p_inflateInit_ 218 p_inflateInit_
196 = (inflateInit__ft) DSO_bind_func(zlib_dso, 219 = (inflateInit__ft) DSO_bind_func(zlib_dso,
197 "inflateInit_"); 220 "inflateInit_");
198 221 zlib_loaded++;
199 if (p_compress && p_inflateEnd && p_inflate
200 && p_inflateInit_)
201 zlib_loaded++;
202 } 222 }
203 } 223 }
204 224
205#endif 225#endif
206#ifdef ZLIB_SHARED
207 if (zlib_loaded)
208#endif
209#if defined(ZLIB) || defined(ZLIB_SHARED) 226#if defined(ZLIB) || defined(ZLIB_SHARED)
210 meth = &zlib_method; 227 meth = &zlib_method;
211#endif 228#endif
212 229
213 return(meth); 230 return(meth);
214 } 231 }
215 232
233#ifdef ZLIB_SHARED
234/* Stubs for each function to be dynamicly loaded */
235static int
236stub_compress(Bytef *dest,uLongf *destLen,const Bytef *source, uLong sourceLen)
237 {
238 if (p_compress)
239 return(p_compress(dest,destLen,source,sourceLen));
240 else
241 return(Z_MEM_ERROR);
242 }
243
244static int
245stub_inflateEnd(z_streamp strm)
246 {
247 if ( p_inflateEnd )
248 return(p_inflateEnd(strm));
249 else
250 return(Z_MEM_ERROR);
251 }
252
253static int
254stub_inflate(z_streamp strm, int flush)
255 {
256 if ( p_inflate )
257 return(p_inflate(strm,flush));
258 else
259 return(Z_MEM_ERROR);
260 }
261
262static int
263stub_inflateInit_(z_streamp strm, const char * version, int stream_size)
264 {
265 if ( p_inflateInit_ )
266 return(p_inflateInit_(strm,version,stream_size));
267 else
268 return(Z_MEM_ERROR);
269 }
270
271#endif /* ZLIB_SHARED */
diff --git a/src/lib/libssl/src/crypto/conf/Makefile.ssl b/src/lib/libssl/src/crypto/conf/Makefile.ssl
new file mode 100644
index 0000000000..c5873bc6e7
--- /dev/null
+++ b/src/lib/libssl/src/crypto/conf/Makefile.ssl
@@ -0,0 +1,183 @@
1#
2# SSLeay/crypto/conf/Makefile
3#
4
5DIR= conf
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST=
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC= conf_err.c conf_lib.c conf_api.c conf_def.c conf_mod.c \
27 conf_mall.c conf_sap.c
28
29LIBOBJ= conf_err.o conf_lib.o conf_api.o conf_def.o conf_mod.o \
30 conf_mall.o conf_sap.o
31
32SRC= $(LIBSRC)
33
34EXHEADER= conf.h conf_api.h
35HEADER= conf_def.h $(EXHEADER)
36
37ALL= $(GENERAL) $(SRC) $(HEADER)
38
39top:
40 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
41
42all: lib
43
44lib: $(LIBOBJ)
45 $(AR) $(LIB) $(LIBOBJ)
46 $(RANLIB) $(LIB) || echo Never mind.
47 @touch lib
48
49files:
50 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
51
52links:
53 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
54 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
55 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
56 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
57
58install:
59 @for i in $(EXHEADER) ; \
60 do \
61 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
62 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
63 done;
64
65tags:
66 ctags $(SRC)
67
68tests:
69
70lint:
71 lint -DLINT $(INCLUDES) $(SRC)>fluff
72
73depend:
74 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(LIBSRC)
75
76dclean:
77 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
78 mv -f Makefile.new $(MAKEFILE)
79
80clean:
81 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
82
83# DO NOT DELETE THIS LINE -- make depend depends on it.
84
85conf_api.o: ../../e_os.h ../../include/openssl/bio.h
86conf_api.o: ../../include/openssl/conf.h ../../include/openssl/conf_api.h
87conf_api.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
88conf_api.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
89conf_api.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
90conf_api.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
91conf_api.o: conf_api.c
92conf_def.o: ../../e_os.h ../../include/openssl/bio.h
93conf_def.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
94conf_def.o: ../../include/openssl/conf_api.h ../../include/openssl/crypto.h
95conf_def.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
96conf_def.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
97conf_def.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
98conf_def.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
99conf_def.o: ../cryptlib.h conf_def.c conf_def.h
100conf_err.o: ../../include/openssl/bio.h ../../include/openssl/conf.h
101conf_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
102conf_err.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
103conf_err.o: ../../include/openssl/opensslconf.h
104conf_err.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
105conf_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
106conf_err.o: conf_err.c
107conf_lib.o: ../../include/openssl/bio.h ../../include/openssl/conf.h
108conf_lib.o: ../../include/openssl/conf_api.h ../../include/openssl/crypto.h
109conf_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
110conf_lib.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
111conf_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
112conf_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
113conf_lib.o: conf_lib.c
114conf_mall.o: ../../e_os.h ../../include/openssl/aes.h
115conf_mall.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
116conf_mall.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
117conf_mall.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
118conf_mall.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
119conf_mall.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
120conf_mall.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
121conf_mall.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
122conf_mall.o: ../../include/openssl/engine.h ../../include/openssl/err.h
123conf_mall.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
124conf_mall.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
125conf_mall.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
126conf_mall.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
127conf_mall.o: ../../include/openssl/objects.h
128conf_mall.o: ../../include/openssl/opensslconf.h
129conf_mall.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
130conf_mall.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
131conf_mall.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
132conf_mall.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
133conf_mall.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
134conf_mall.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
135conf_mall.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
136conf_mall.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
137conf_mall.o: ../../include/openssl/x509_vfy.h ../cryptlib.h conf_mall.c
138conf_mod.o: ../../e_os.h ../../include/openssl/aes.h
139conf_mod.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
140conf_mod.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
141conf_mod.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
142conf_mod.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
143conf_mod.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
144conf_mod.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
145conf_mod.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
146conf_mod.o: ../../include/openssl/err.h ../../include/openssl/evp.h
147conf_mod.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
148conf_mod.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
149conf_mod.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
150conf_mod.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
151conf_mod.o: ../../include/openssl/opensslconf.h
152conf_mod.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
153conf_mod.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
154conf_mod.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
155conf_mod.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
156conf_mod.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
157conf_mod.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
158conf_mod.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
159conf_mod.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
160conf_mod.o: ../cryptlib.h conf_mod.c
161conf_sap.o: ../../e_os.h ../../include/openssl/aes.h
162conf_sap.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
163conf_sap.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
164conf_sap.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
165conf_sap.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
166conf_sap.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
167conf_sap.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
168conf_sap.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
169conf_sap.o: ../../include/openssl/engine.h ../../include/openssl/err.h
170conf_sap.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
171conf_sap.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
172conf_sap.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
173conf_sap.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
174conf_sap.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
175conf_sap.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
176conf_sap.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
177conf_sap.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
178conf_sap.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
179conf_sap.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
180conf_sap.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
181conf_sap.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
182conf_sap.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
183conf_sap.o: ../../include/openssl/x509_vfy.h ../cryptlib.h conf_sap.c
diff --git a/src/lib/libssl/src/crypto/conf/conf_def.c b/src/lib/libssl/src/crypto/conf/conf_def.c
index 2464f8ed90..b5a876ae68 100644
--- a/src/lib/libssl/src/crypto/conf/conf_def.c
+++ b/src/lib/libssl/src/crypto/conf/conf_def.c
@@ -613,13 +613,13 @@ static int str_copy(CONF *conf, char *section, char **pto, char *from)
613 e++; 613 e++;
614 } 614 }
615 /* So at this point we have 615 /* So at this point we have
616 * np which is the start of the name string which is 616 * ns which is the start of the name string which is
617 * '\0' terminated. 617 * '\0' terminated.
618 * cp which is the start of the section string which is 618 * cs which is the start of the section string which is
619 * '\0' terminated. 619 * '\0' terminated.
620 * e is the 'next point after'. 620 * e is the 'next point after'.
621 * r and rr are the chars replaced by the '\0' 621 * r and s are the chars replaced by the '\0'
622 * rp and rrp is where 'r' and 'rr' came from. 622 * rp and sp is where 'r' and 's' came from.
623 */ 623 */
624 p=_CONF_get_string(conf,cp,np); 624 p=_CONF_get_string(conf,cp,np);
625 if (rrp != NULL) *rrp=rr; 625 if (rrp != NULL) *rrp=rr;
@@ -638,11 +638,6 @@ static int str_copy(CONF *conf, char *section, char **pto, char *from)
638 points at. /RL */ 638 points at. /RL */
639 len -= e-from; 639 len -= e-from;
640 from=e; 640 from=e;
641
642 /* In case there were no braces or parenthesis around
643 the variable reference, we have to put back the
644 character that was replaced with a '\0'. /RL */
645 *rp = r;
646 } 641 }
647 else 642 else
648 buf->data[to++]= *(from++); 643 buf->data[to++]= *(from++);
diff --git a/src/lib/libssl/src/crypto/conf/conf_err.c b/src/lib/libssl/src/crypto/conf/conf_err.c
index f5e2ca4bf0..ee07bfe9d9 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 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
@@ -64,51 +64,47 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_CONF,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_CONF,0,reason)
70
71static ERR_STRING_DATA CONF_str_functs[]= 67static ERR_STRING_DATA CONF_str_functs[]=
72 { 68 {
73{ERR_FUNC(CONF_F_CONF_DUMP_FP), "CONF_dump_fp"}, 69{ERR_PACK(0,CONF_F_CONF_DUMP_FP,0), "CONF_dump_fp"},
74{ERR_FUNC(CONF_F_CONF_LOAD), "CONF_load"}, 70{ERR_PACK(0,CONF_F_CONF_LOAD,0), "CONF_load"},
75{ERR_FUNC(CONF_F_CONF_LOAD_BIO), "CONF_load_bio"}, 71{ERR_PACK(0,CONF_F_CONF_LOAD_BIO,0), "CONF_load_bio"},
76{ERR_FUNC(CONF_F_CONF_LOAD_FP), "CONF_load_fp"}, 72{ERR_PACK(0,CONF_F_CONF_LOAD_FP,0), "CONF_load_fp"},
77{ERR_FUNC(CONF_F_CONF_MODULES_LOAD), "CONF_modules_load"}, 73{ERR_PACK(0,CONF_F_CONF_MODULES_LOAD,0), "CONF_modules_load"},
78{ERR_FUNC(CONF_F_MODULE_INIT), "MODULE_INIT"}, 74{ERR_PACK(0,CONF_F_MODULE_INIT,0), "MODULE_INIT"},
79{ERR_FUNC(CONF_F_MODULE_LOAD_DSO), "MODULE_LOAD_DSO"}, 75{ERR_PACK(0,CONF_F_MODULE_LOAD_DSO,0), "MODULE_LOAD_DSO"},
80{ERR_FUNC(CONF_F_MODULE_RUN), "MODULE_RUN"}, 76{ERR_PACK(0,CONF_F_MODULE_RUN,0), "MODULE_RUN"},
81{ERR_FUNC(CONF_F_NCONF_DUMP_BIO), "NCONF_dump_bio"}, 77{ERR_PACK(0,CONF_F_NCONF_DUMP_BIO,0), "NCONF_dump_bio"},
82{ERR_FUNC(CONF_F_NCONF_DUMP_FP), "NCONF_dump_fp"}, 78{ERR_PACK(0,CONF_F_NCONF_DUMP_FP,0), "NCONF_dump_fp"},
83{ERR_FUNC(CONF_F_NCONF_GET_NUMBER), "NCONF_get_number"}, 79{ERR_PACK(0,CONF_F_NCONF_GET_NUMBER,0), "NCONF_get_number"},
84{ERR_FUNC(CONF_F_NCONF_GET_NUMBER_E), "NCONF_get_number_e"}, 80{ERR_PACK(0,CONF_F_NCONF_GET_NUMBER_E,0), "NCONF_get_number_e"},
85{ERR_FUNC(CONF_F_NCONF_GET_SECTION), "NCONF_get_section"}, 81{ERR_PACK(0,CONF_F_NCONF_GET_SECTION,0), "NCONF_get_section"},
86{ERR_FUNC(CONF_F_NCONF_GET_STRING), "NCONF_get_string"}, 82{ERR_PACK(0,CONF_F_NCONF_GET_STRING,0), "NCONF_get_string"},
87{ERR_FUNC(CONF_F_NCONF_LOAD), "NCONF_load"}, 83{ERR_PACK(0,CONF_F_NCONF_LOAD,0), "NCONF_load"},
88{ERR_FUNC(CONF_F_NCONF_LOAD_BIO), "NCONF_load_bio"}, 84{ERR_PACK(0,CONF_F_NCONF_LOAD_BIO,0), "NCONF_load_bio"},
89{ERR_FUNC(CONF_F_NCONF_LOAD_FP), "NCONF_load_fp"}, 85{ERR_PACK(0,CONF_F_NCONF_LOAD_FP,0), "NCONF_load_fp"},
90{ERR_FUNC(CONF_F_NCONF_NEW), "NCONF_new"}, 86{ERR_PACK(0,CONF_F_NCONF_NEW,0), "NCONF_new"},
91{ERR_FUNC(CONF_F_STR_COPY), "STR_COPY"}, 87{ERR_PACK(0,CONF_F_STR_COPY,0), "STR_COPY"},
92{0,NULL} 88{0,NULL}
93 }; 89 };
94 90
95static ERR_STRING_DATA CONF_str_reasons[]= 91static ERR_STRING_DATA CONF_str_reasons[]=
96 { 92 {
97{ERR_REASON(CONF_R_ERROR_LOADING_DSO) ,"error loading dso"}, 93{CONF_R_ERROR_LOADING_DSO ,"error loading dso"},
98{ERR_REASON(CONF_R_MISSING_CLOSE_SQUARE_BRACKET),"missing close square bracket"}, 94{CONF_R_MISSING_CLOSE_SQUARE_BRACKET ,"missing close square bracket"},
99{ERR_REASON(CONF_R_MISSING_EQUAL_SIGN) ,"missing equal sign"}, 95{CONF_R_MISSING_EQUAL_SIGN ,"missing equal sign"},
100{ERR_REASON(CONF_R_MISSING_FINISH_FUNCTION),"missing finish function"}, 96{CONF_R_MISSING_FINISH_FUNCTION ,"missing finish function"},
101{ERR_REASON(CONF_R_MISSING_INIT_FUNCTION),"missing init function"}, 97{CONF_R_MISSING_INIT_FUNCTION ,"missing init function"},
102{ERR_REASON(CONF_R_MODULE_INITIALIZATION_ERROR),"module initialization error"}, 98{CONF_R_MODULE_INITIALIZATION_ERROR ,"module initialization error"},
103{ERR_REASON(CONF_R_NO_CLOSE_BRACE) ,"no close brace"}, 99{CONF_R_NO_CLOSE_BRACE ,"no close brace"},
104{ERR_REASON(CONF_R_NO_CONF) ,"no conf"}, 100{CONF_R_NO_CONF ,"no conf"},
105{ERR_REASON(CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE),"no conf or environment variable"}, 101{CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE ,"no conf or environment variable"},
106{ERR_REASON(CONF_R_NO_SECTION) ,"no section"}, 102{CONF_R_NO_SECTION ,"no section"},
107{ERR_REASON(CONF_R_NO_SUCH_FILE) ,"no such file"}, 103{CONF_R_NO_SUCH_FILE ,"no such file"},
108{ERR_REASON(CONF_R_NO_VALUE) ,"no value"}, 104{CONF_R_NO_VALUE ,"no value"},
109{ERR_REASON(CONF_R_UNABLE_TO_CREATE_NEW_SECTION),"unable to create new section"}, 105{CONF_R_UNABLE_TO_CREATE_NEW_SECTION ,"unable to create new section"},
110{ERR_REASON(CONF_R_UNKNOWN_MODULE_NAME) ,"unknown module name"}, 106{CONF_R_UNKNOWN_MODULE_NAME ,"unknown module name"},
111{ERR_REASON(CONF_R_VARIABLE_HAS_NO_VALUE),"variable has no value"}, 107{CONF_R_VARIABLE_HAS_NO_VALUE ,"variable has no value"},
112{0,NULL} 108{0,NULL}
113 }; 109 };
114 110
@@ -122,8 +118,8 @@ void ERR_load_CONF_strings(void)
122 { 118 {
123 init=0; 119 init=0;
124#ifndef OPENSSL_NO_ERR 120#ifndef OPENSSL_NO_ERR
125 ERR_load_strings(0,CONF_str_functs); 121 ERR_load_strings(ERR_LIB_CONF,CONF_str_functs);
126 ERR_load_strings(0,CONF_str_reasons); 122 ERR_load_strings(ERR_LIB_CONF,CONF_str_reasons);
127#endif 123#endif
128 124
129 } 125 }
diff --git a/src/lib/libssl/src/crypto/cpt_err.c b/src/lib/libssl/src/crypto/cpt_err.c
index 06a6109cce..1b4a1cb4d4 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 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
@@ -64,27 +64,23 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_CRYPTO,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_CRYPTO,0,reason)
70
71static ERR_STRING_DATA CRYPTO_str_functs[]= 67static ERR_STRING_DATA CRYPTO_str_functs[]=
72 { 68 {
73{ERR_FUNC(CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX), "CRYPTO_get_ex_new_index"}, 69{ERR_PACK(0,CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX,0), "CRYPTO_get_ex_new_index"},
74{ERR_FUNC(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID), "CRYPTO_get_new_dynlockid"}, 70{ERR_PACK(0,CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,0), "CRYPTO_get_new_dynlockid"},
75{ERR_FUNC(CRYPTO_F_CRYPTO_GET_NEW_LOCKID), "CRYPTO_get_new_lockid"}, 71{ERR_PACK(0,CRYPTO_F_CRYPTO_GET_NEW_LOCKID,0), "CRYPTO_get_new_lockid"},
76{ERR_FUNC(CRYPTO_F_CRYPTO_SET_EX_DATA), "CRYPTO_set_ex_data"}, 72{ERR_PACK(0,CRYPTO_F_CRYPTO_SET_EX_DATA,0), "CRYPTO_set_ex_data"},
77{ERR_FUNC(CRYPTO_F_DEF_ADD_INDEX), "DEF_ADD_INDEX"}, 73{ERR_PACK(0,CRYPTO_F_DEF_ADD_INDEX,0), "DEF_ADD_INDEX"},
78{ERR_FUNC(CRYPTO_F_DEF_GET_CLASS), "DEF_GET_CLASS"}, 74{ERR_PACK(0,CRYPTO_F_DEF_GET_CLASS,0), "DEF_GET_CLASS"},
79{ERR_FUNC(CRYPTO_F_INT_DUP_EX_DATA), "INT_DUP_EX_DATA"}, 75{ERR_PACK(0,CRYPTO_F_INT_DUP_EX_DATA,0), "INT_DUP_EX_DATA"},
80{ERR_FUNC(CRYPTO_F_INT_FREE_EX_DATA), "INT_FREE_EX_DATA"}, 76{ERR_PACK(0,CRYPTO_F_INT_FREE_EX_DATA,0), "INT_FREE_EX_DATA"},
81{ERR_FUNC(CRYPTO_F_INT_NEW_EX_DATA), "INT_NEW_EX_DATA"}, 77{ERR_PACK(0,CRYPTO_F_INT_NEW_EX_DATA,0), "INT_NEW_EX_DATA"},
82{0,NULL} 78{0,NULL}
83 }; 79 };
84 80
85static ERR_STRING_DATA CRYPTO_str_reasons[]= 81static ERR_STRING_DATA CRYPTO_str_reasons[]=
86 { 82 {
87{ERR_REASON(CRYPTO_R_NO_DYNLOCK_CREATE_CALLBACK),"no dynlock create callback"}, 83{CRYPTO_R_NO_DYNLOCK_CREATE_CALLBACK ,"no dynlock create callback"},
88{0,NULL} 84{0,NULL}
89 }; 85 };
90 86
@@ -98,8 +94,8 @@ void ERR_load_CRYPTO_strings(void)
98 { 94 {
99 init=0; 95 init=0;
100#ifndef OPENSSL_NO_ERR 96#ifndef OPENSSL_NO_ERR
101 ERR_load_strings(0,CRYPTO_str_functs); 97 ERR_load_strings(ERR_LIB_CRYPTO,CRYPTO_str_functs);
102 ERR_load_strings(0,CRYPTO_str_reasons); 98 ERR_load_strings(ERR_LIB_CRYPTO,CRYPTO_str_reasons);
103#endif 99#endif
104 100
105 } 101 }
diff --git a/src/lib/libssl/src/crypto/cryptlib.c b/src/lib/libssl/src/crypto/cryptlib.c
index e63bbe8dba..fef0afb29f 100644
--- a/src/lib/libssl/src/crypto/cryptlib.c
+++ b/src/lib/libssl/src/crypto/cryptlib.c
@@ -480,8 +480,6 @@ const char *CRYPTO_get_lock_name(int type)
480 return(sk_value(app_locks,type-CRYPTO_NUM_LOCKS)); 480 return(sk_value(app_locks,type-CRYPTO_NUM_LOCKS));
481 } 481 }
482 482
483int OPENSSL_NONPIC_relocated=0;
484
485#if defined(_WIN32) && defined(_WINDLL) 483#if defined(_WIN32) && defined(_WINDLL)
486 484
487/* All we really need to do is remove the 'error' state when a thread 485/* All we really need to do is remove the 'error' state when a thread
@@ -493,21 +491,6 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
493 switch(fdwReason) 491 switch(fdwReason)
494 { 492 {
495 case DLL_PROCESS_ATTACH: 493 case DLL_PROCESS_ATTACH:
496#if defined(_WIN32_WINNT)
497 {
498 IMAGE_DOS_HEADER *dos_header = (IMAGE_DOS_HEADER *)hinstDLL;
499 IMAGE_NT_HEADERS *nt_headers;
500
501 if (dos_header->e_magic==IMAGE_DOS_SIGNATURE)
502 {
503 nt_headers = (IMAGE_NT_HEADERS *)((char *)dos_header
504 + dos_header->e_lfanew);
505 if (nt_headers->Signature==IMAGE_NT_SIGNATURE &&
506 hinstDLL!=(HINSTANCE)(nt_headers->OptionalHeader.ImageBase))
507 OPENSSL_NONPIC_relocated=1;
508 }
509 }
510#endif
511 break; 494 break;
512 case DLL_THREAD_ATTACH: 495 case DLL_THREAD_ATTACH:
513 break; 496 break;
@@ -521,160 +504,18 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
521 } 504 }
522#endif 505#endif
523 506
524#if defined(_WIN32)
525#include <tchar.h>
526
527#if defined(_WIN32_WINNT) && _WIN32_WINNT>=0x0333
528static int IsService(void)
529{ HWINSTA h;
530 DWORD len;
531 WCHAR *name;
532
533 (void)GetDesktopWindow(); /* return value is ignored */
534
535 h = GetProcessWindowStation();
536 if (h==NULL) return -1;
537
538 if (GetUserObjectInformationW (h,UOI_NAME,NULL,0,&len) ||
539 GetLastError() != ERROR_INSUFFICIENT_BUFFER)
540 return -1;
541
542 if (len>512) return -1; /* paranoia */
543 len++,len&=~1; /* paranoia */
544#ifdef _MSC_VER
545 name=(WCHAR *)_alloca(len+sizeof(WCHAR));
546#else
547 name=(WCHAR *)alloca(len+sizeof(WCHAR));
548#endif
549 if (!GetUserObjectInformationW (h,UOI_NAME,name,len,&len))
550 return -1;
551
552 len++,len&=~1; /* paranoia */
553 name[len/sizeof(WCHAR)]=L'\0'; /* paranoia */
554#if 1
555 /* This doesn't cover "interactive" services [working with real
556 * WinSta0's] nor programs started non-interactively by Task
557 * Scheduler [those are working with SAWinSta]. */
558 if (wcsstr(name,L"Service-0x")) return 1;
559#else
560 /* This covers all non-interactive programs such as services. */
561 if (!wcsstr(name,L"WinSta0")) return 1;
562#endif
563 else return 0;
564}
565#endif
566
567void OPENSSL_showfatal (const char *fmta,...)
568{ va_list ap;
569 TCHAR buf[256];
570 const TCHAR *fmt;
571 HANDLE h;
572
573 if ((h=GetStdHandle(STD_ERROR_HANDLE)) != NULL &&
574 GetFileType(h)!=FILE_TYPE_UNKNOWN)
575 { /* must be console application */
576 va_start (ap,fmta);
577 vfprintf (stderr,fmta,ap);
578 va_end (ap);
579 return;
580 }
581
582 if (sizeof(TCHAR)==sizeof(char))
583 fmt=(const TCHAR *)fmta;
584 else do
585 { int keepgoing;
586 size_t len_0=strlen(fmta)+1,i;
587 WCHAR *fmtw;
588
589#ifdef _MSC_VER
590 fmtw = (WCHAR *)_alloca (len_0*sizeof(WCHAR));
591#else
592 fmtw = (WCHAR *)alloca (len_0*sizeof(WCHAR));
593#endif
594 if (fmtw == NULL) { fmt=(const TCHAR *)L"no stack?"; break; }
595
596#ifndef OPENSSL_NO_MULTIBYTE
597 if (!MultiByteToWideChar(CP_ACP,0,fmta,len_0,fmtw,len_0))
598#endif
599 for (i=0;i<len_0;i++) fmtw[i]=(WCHAR)fmta[i];
600
601 for (i=0;i<len_0;i++)
602 { if (fmtw[i]==L'%') do
603 { keepgoing=0;
604 switch (fmtw[i+1])
605 { case L'0': case L'1': case L'2': case L'3': case L'4':
606 case L'5': case L'6': case L'7': case L'8': case L'9':
607 case L'.': case L'*':
608 case L'-': i++; keepgoing=1; break;
609 case L's': fmtw[i+1]=L'S'; break;
610 case L'S': fmtw[i+1]=L's'; break;
611 case L'c': fmtw[i+1]=L'C'; break;
612 case L'C': fmtw[i+1]=L'c'; break;
613 }
614 } while (keepgoing);
615 }
616 fmt = (const TCHAR *)fmtw;
617 } while (0);
618
619 va_start (ap,fmta);
620 _vsntprintf (buf,sizeof(buf)/sizeof(TCHAR)-1,fmt,ap);
621 buf [sizeof(buf)/sizeof(TCHAR)-1] = _T('\0');
622 va_end (ap);
623
624#if defined(_WIN32_WINNT) && _WIN32_WINNT>=0x0333
625 /* this -------------v--- guards NT-specific calls */
626 if (GetVersion() < 0x80000000 && IsService())
627 { HANDLE h = RegisterEventSource(0,_T("OPENSSL"));
628 const TCHAR *pmsg=buf;
629 ReportEvent(h,EVENTLOG_ERROR_TYPE,0,0,0,1,0,&pmsg,0);
630 DeregisterEventSource(h);
631 }
632 else
633#endif
634 { MSGBOXPARAMS m;
635
636 m.cbSize = sizeof(m);
637 m.hwndOwner = NULL;
638 m.lpszCaption = _T("OpenSSL: FATAL");
639 m.dwStyle = MB_OK;
640 m.hInstance = NULL;
641 m.lpszIcon = IDI_ERROR;
642 m.dwContextHelpId = 0;
643 m.lpfnMsgBoxCallback = NULL;
644 m.dwLanguageId = MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US);
645 m.lpszText = buf;
646
647 MessageBoxIndirect (&m);
648 }
649}
650#else
651void OPENSSL_showfatal (const char *fmta,...)
652{ va_list ap;
653
654 va_start (ap,fmta);
655 vfprintf (stderr,fmta,ap);
656 va_end (ap);
657}
658#endif
659
660void OpenSSLDie(const char *file,int line,const char *assertion) 507void OpenSSLDie(const char *file,int line,const char *assertion)
661 { 508 {
662 OPENSSL_showfatal( 509 fprintf(stderr,
663 "%s(%d): OpenSSL internal error, assertion failed: %s\n", 510 "%s(%d): OpenSSL internal error, assertion failed: %s\n",
664 file,line,assertion); 511 file,line,assertion);
665 abort(); 512 abort();
666 } 513 }
667 514
668void *OPENSSL_stderr(void) { return stderr; }
669
670#ifdef OPENSSL_FIPS 515#ifdef OPENSSL_FIPS
671
672void fips_w_lock(void) { CRYPTO_w_lock(CRYPTO_LOCK_FIPS); }
673void fips_w_unlock(void) { CRYPTO_w_unlock(CRYPTO_LOCK_FIPS); }
674void fips_r_lock(void) { CRYPTO_r_lock(CRYPTO_LOCK_FIPS); }
675void fips_r_unlock(void) { CRYPTO_r_unlock(CRYPTO_LOCK_FIPS); }
676
677static int fips_started = 0; 516static int fips_started = 0;
517static int fips_mode = 0;
518static void *fips_rand_check = 0;
678static unsigned long fips_thread = 0; 519static unsigned long fips_thread = 0;
679 520
680void fips_set_started(void) 521void fips_set_started(void)
@@ -735,10 +576,57 @@ int fips_clear_owning_thread(void)
735 return ret; 576 return ret;
736 } 577 }
737 578
738unsigned char *fips_signature_witness(void) 579void fips_set_mode(int onoff)
580 {
581 int owning_thread = fips_is_owning_thread();
582
583 if (fips_is_started())
584 {
585 if (!owning_thread) CRYPTO_w_lock(CRYPTO_LOCK_FIPS);
586 fips_mode = onoff;
587 if (!owning_thread) CRYPTO_w_unlock(CRYPTO_LOCK_FIPS);
588 }
589 }
590
591void fips_set_rand_check(void *rand_check)
592 {
593 int owning_thread = fips_is_owning_thread();
594
595 if (fips_is_started())
596 {
597 if (!owning_thread) CRYPTO_w_lock(CRYPTO_LOCK_FIPS);
598 fips_rand_check = rand_check;
599 if (!owning_thread) CRYPTO_w_unlock(CRYPTO_LOCK_FIPS);
600 }
601 }
602
603int FIPS_mode(void)
604 {
605 int ret = 0;
606 int owning_thread = fips_is_owning_thread();
607
608 if (fips_is_started())
609 {
610 if (!owning_thread) CRYPTO_r_lock(CRYPTO_LOCK_FIPS);
611 ret = fips_mode;
612 if (!owning_thread) CRYPTO_r_unlock(CRYPTO_LOCK_FIPS);
613 }
614 return ret;
615 }
616
617void *FIPS_rand_check(void)
739 { 618 {
740 extern unsigned char FIPS_signature[]; 619 void *ret = 0;
741 return FIPS_signature; 620 int owning_thread = fips_is_owning_thread();
621
622 if (fips_is_started())
623 {
624 if (!owning_thread) CRYPTO_r_lock(CRYPTO_LOCK_FIPS);
625 ret = fips_rand_check;
626 if (!owning_thread) CRYPTO_r_unlock(CRYPTO_LOCK_FIPS);
627 }
628 return ret;
742 } 629 }
630
743#endif /* OPENSSL_FIPS */ 631#endif /* OPENSSL_FIPS */
744 632
diff --git a/src/lib/libssl/src/crypto/cryptlib.h b/src/lib/libssl/src/crypto/cryptlib.h
index 6f59e08ca6..0d6b9d59f0 100644
--- a/src/lib/libssl/src/crypto/cryptlib.h
+++ b/src/lib/libssl/src/crypto/cryptlib.h
@@ -93,10 +93,6 @@ extern "C" {
93#define DECIMAL_SIZE(type) ((sizeof(type)*8+2)/3+1) 93#define DECIMAL_SIZE(type) ((sizeof(type)*8+2)/3+1)
94#define HEX_SIZE(type) (sizeof(type)*2) 94#define HEX_SIZE(type) (sizeof(type)*2)
95 95
96void OPENSSL_showfatal(const char *,...);
97void *OPENSSL_stderr(void);
98extern int OPENSSL_NONPIC_relocated;
99
100#ifdef __cplusplus 96#ifdef __cplusplus
101} 97}
102#endif 98#endif
diff --git a/src/lib/libssl/src/crypto/crypto-lib.com b/src/lib/libssl/src/crypto/crypto-lib.com
index 427c321f25..c044ce0099 100644
--- a/src/lib/libssl/src/crypto/crypto-lib.com
+++ b/src/lib/libssl/src/crypto/crypto-lib.com
@@ -184,10 +184,10 @@ $ IF F$TRNLNM("OPENSSL_NO_ASM").OR.ARCH.EQS."AXP" THEN LIB_BN_ASM = "bn_asm"
184$ LIB_BN = "bn_add,bn_div,bn_exp,bn_lib,bn_ctx,bn_mul,bn_mod,"+ - 184$ LIB_BN = "bn_add,bn_div,bn_exp,bn_lib,bn_ctx,bn_mul,bn_mod,"+ -
185 "bn_print,bn_rand,bn_shift,bn_word,bn_blind,"+ - 185 "bn_print,bn_rand,bn_shift,bn_word,bn_blind,"+ -
186 "bn_kron,bn_sqrt,bn_gcd,bn_prime,bn_err,bn_sqr,"+LIB_BN_ASM+","+ - 186 "bn_kron,bn_sqrt,bn_gcd,bn_prime,bn_err,bn_sqr,"+LIB_BN_ASM+","+ -
187 "bn_recp,bn_mont,bn_mpi,bn_exp2,bn_x931p" 187 "bn_recp,bn_mont,bn_mpi,bn_exp2"
188$ LIB_RSA = "rsa_eay,rsa_gen,rsa_lib,rsa_sign,rsa_saos,rsa_err,"+ - 188$ LIB_RSA = "rsa_eay,rsa_gen,rsa_lib,rsa_sign,rsa_saos,rsa_err,"+ -
189 "rsa_pk1,rsa_ssl,rsa_none,rsa_oaep,rsa_chk,rsa_null,"+ - 189 "rsa_pk1,rsa_ssl,rsa_none,rsa_oaep,rsa_chk,rsa_null,"+ -
190 "rsa_pss,rsa_x931,rsa_asn1" 190 "rsa_asn1"
191$ LIB_EC = "ec_lib,ecp_smpl,ecp_mont,ecp_recp,ecp_nist,ec_cvt,ec_mult,"+ - 191$ LIB_EC = "ec_lib,ecp_smpl,ecp_mont,ecp_recp,ecp_nist,ec_cvt,ec_mult,"+ -
192 "ec_err" 192 "ec_err"
193$ LIB_DSA = "dsa_gen,dsa_key,dsa_lib,dsa_asn1,dsa_vrf,dsa_sign,dsa_err,dsa_ossl" 193$ LIB_DSA = "dsa_gen,dsa_key,dsa_lib,dsa_asn1,dsa_vrf,dsa_sign,dsa_err,dsa_ossl"
@@ -265,15 +265,10 @@ $ LIB_KRB5 = "krb5_asn"
265$! 265$!
266$! Setup exceptional compilations 266$! Setup exceptional compilations
267$! 267$!
268$ ! Add definitions for no threads on OpenVMS 7.1 and higher
269$ COMPILEWITH_CC3 = ",bss_rtcp," 268$ COMPILEWITH_CC3 = ",bss_rtcp,"
270$ ! Disable the DOLLARID warning
271$ COMPILEWITH_CC4 = ",a_utctm,bss_log,o_time," 269$ COMPILEWITH_CC4 = ",a_utctm,bss_log,o_time,"
272$ ! Disable disjoint optimization
273$ COMPILEWITH_CC5 = ",md2_dgst,md4_dgst,md5_dgst,mdc2dgst," + - 270$ COMPILEWITH_CC5 = ",md2_dgst,md4_dgst,md5_dgst,mdc2dgst," + -
274 "sha_dgst,sha1dgst,rmd_dgst,bf_enc," 271 "sha_dgst,sha1dgst,rmd_dgst,bf_enc,"
275$ ! Disable the MIXLINKAGE warning
276$ COMPILEWITH_CC6 = ",enc_read,set_key,"
277$! 272$!
278$! Figure Out What Other Modules We Are To Build. 273$! Figure Out What Other Modules We Are To Build.
279$! 274$!
@@ -502,12 +497,7 @@ $ IF COMPILEWITH_CC5 - FILE_NAME0 .NES. COMPILEWITH_CC5
502$ THEN 497$ THEN
503$ CC5/OBJECT='OBJECT_FILE' 'SOURCE_FILE' 498$ CC5/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
504$ ELSE 499$ ELSE
505$ IF COMPILEWITH_CC6 - FILE_NAME0 .NES. COMPILEWITH_CC6 500$ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
506$ THEN
507$ CC6/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
508$ ELSE
509$ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
510$ ENDIF
511$ ENDIF 501$ ENDIF
512$ ENDIF 502$ ENDIF
513$ ENDIF 503$ ENDIF
@@ -970,7 +960,7 @@ $ CCDEFS = "TCPIP_TYPE_''P4',DSO_VMS"
970$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS 960$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS
971$ CCEXTRAFLAGS = "" 961$ CCEXTRAFLAGS = ""
972$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS 962$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS
973$ CCDISABLEWARNINGS = "LONGLONGTYPE,LONGLONGSUFX,FOUNDCR" 963$ CCDISABLEWARNINGS = "LONGLONGTYPE,LONGLONGSUFX"
974$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN - 964$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN -
975 CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS 965 CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS
976$! 966$!
@@ -1087,18 +1077,14 @@ $ THEN
1087$ IF CCDISABLEWARNINGS .EQS. "" 1077$ IF CCDISABLEWARNINGS .EQS. ""
1088$ THEN 1078$ THEN
1089$ CC4DISABLEWARNINGS = "DOLLARID" 1079$ CC4DISABLEWARNINGS = "DOLLARID"
1090$ CC6DISABLEWARNINGS = "MIXLINKAGE"
1091$ ELSE 1080$ ELSE
1092$ CC4DISABLEWARNINGS = CCDISABLEWARNINGS + ",DOLLARID" 1081$ CC4DISABLEWARNINGS = CCDISABLEWARNINGS + ",DOLLARID"
1093$ CC6DISABLEWARNINGS = CCDISABLEWARNINGS + ",MIXLINKAGE"
1094$ CCDISABLEWARNINGS = "/WARNING=(DISABLE=(" + CCDISABLEWARNINGS + "))" 1082$ CCDISABLEWARNINGS = "/WARNING=(DISABLE=(" + CCDISABLEWARNINGS + "))"
1095$ ENDIF 1083$ ENDIF
1096$ CC4DISABLEWARNINGS = "/WARNING=(DISABLE=(" + CC4DISABLEWARNINGS + "))" 1084$ CC4DISABLEWARNINGS = "/WARNING=(DISABLE=(" + CC4DISABLEWARNINGS + "))"
1097$ CC6DISABLEWARNINGS = "/WARNING=(DISABLE=(" + CC6DISABLEWARNINGS + "))"
1098$ ELSE 1085$ ELSE
1099$ CCDISABLEWARNINGS = "" 1086$ CCDISABLEWARNINGS = ""
1100$ CC4DISABLEWARNINGS = "" 1087$ CC4DISABLEWARNINGS = ""
1101$ CC6DISABLEWARNINGS = ""
1102$ ENDIF 1088$ ENDIF
1103$ CC3 = CC + "/DEFINE=(" + CCDEFS + ISSEVEN + ")" + CCDISABLEWARNINGS 1089$ CC3 = CC + "/DEFINE=(" + CCDEFS + ISSEVEN + ")" + CCDISABLEWARNINGS
1104$ CC = CC + "/DEFINE=(" + CCDEFS + ")" + CCDISABLEWARNINGS 1090$ CC = CC + "/DEFINE=(" + CCDEFS + ")" + CCDISABLEWARNINGS
@@ -1109,7 +1095,6 @@ $ ELSE
1109$ CC5 = CC + "/NOOPTIMIZE" 1095$ CC5 = CC + "/NOOPTIMIZE"
1110$ ENDIF 1096$ ENDIF
1111$ CC4 = CC - CCDISABLEWARNINGS + CC4DISABLEWARNINGS 1097$ CC4 = CC - CCDISABLEWARNINGS + CC4DISABLEWARNINGS
1112$ CC6 = CC - CCDISABLEWARNINGS + CC6DISABLEWARNINGS
1113$! 1098$!
1114$! Show user the result 1099$! Show user the result
1115$! 1100$!
diff --git a/src/lib/libssl/src/crypto/crypto.h b/src/lib/libssl/src/crypto/crypto.h
index 22fd939e65..4d1dfac7f1 100644
--- a/src/lib/libssl/src/crypto/crypto.h
+++ b/src/lib/libssl/src/crypto/crypto.h
@@ -434,9 +434,12 @@ void CRYPTO_mem_leaks_cb(CRYPTO_MEM_LEAK_CB *cb);
434 434
435/* die if we have to */ 435/* die if we have to */
436void OpenSSLDie(const char *file,int line,const char *assertion); 436void OpenSSLDie(const char *file,int line,const char *assertion);
437#define OPENSSL_assert(e) (void)((e) ? 0 : (OpenSSLDie(__FILE__, __LINE__, #e),1)) 437#define OPENSSL_assert(e) ((e) ? (void)0 : OpenSSLDie(__FILE__, __LINE__, #e))
438 438
439#ifdef OPENSSL_FIPS 439#ifdef OPENSSL_FIPS
440int FIPS_mode(void);
441void *FIPS_rand_check(void);
442
440#define FIPS_ERROR_IGNORED(alg) OpenSSLDie(__FILE__, __LINE__, \ 443#define FIPS_ERROR_IGNORED(alg) OpenSSLDie(__FILE__, __LINE__, \
441 alg " previous FIPS forbidden algorithm error ignored"); 444 alg " previous FIPS forbidden algorithm error ignored");
442 445
diff --git a/src/lib/libssl/src/crypto/des/Makefile.ssl b/src/lib/libssl/src/crypto/des/Makefile.ssl
new file mode 100644
index 0000000000..0d9ba2b42f
--- /dev/null
+++ b/src/lib/libssl/src/crypto/des/Makefile.ssl
@@ -0,0 +1,316 @@
1#
2# SSLeay/crypto/des/Makefile
3#
4
5DIR= des
6TOP= ../..
7CC= cc
8CPP= $(CC) -E
9INCLUDES=-I$(TOP) -I../../include
10CFLAG=-g
11INSTALL_PREFIX=
12OPENSSLDIR= /usr/local/ssl
13INSTALLTOP=/usr/local/ssl
14MAKE= make -f Makefile.ssl
15MAKEDEPPROG= makedepend
16MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
17MAKEFILE= Makefile.ssl
18AR= ar r
19RANLIB= ranlib
20DES_ENC= des_enc.o fcrypt_b.o
21# or use
22#DES_ENC= dx86-elf.o yx86-elf.o
23
24CFLAGS= $(INCLUDES) $(CFLAG)
25ASFLAGS= $(INCLUDES) $(ASFLAG)
26
27GENERAL=Makefile
28TEST=destest.c
29APPS=
30
31LIB=$(TOP)/libcrypto.a
32LIBSRC= cbc_cksm.c cbc_enc.c cfb64enc.c cfb_enc.c \
33 ecb3_enc.c ecb_enc.c enc_read.c enc_writ.c \
34 fcrypt.c ofb64enc.c ofb_enc.c pcbc_enc.c \
35 qud_cksm.c rand_key.c rpc_enc.c set_key.c \
36 des_enc.c fcrypt_b.c \
37 xcbc_enc.c \
38 str2key.c cfb64ede.c ofb64ede.c ede_cbcm_enc.c des_old.c des_old2.c \
39 read2pwd.c
40
41LIBOBJ= set_key.o ecb_enc.o cbc_enc.o \
42 ecb3_enc.o cfb64enc.o cfb64ede.o cfb_enc.o ofb64ede.o \
43 enc_read.o enc_writ.o ofb64enc.o \
44 ofb_enc.o str2key.o pcbc_enc.o qud_cksm.o rand_key.o \
45 ${DES_ENC} \
46 fcrypt.o xcbc_enc.o rpc_enc.o cbc_cksm.o \
47 ede_cbcm_enc.o des_old.o des_old2.o read2pwd.o
48
49SRC= $(LIBSRC)
50
51EXHEADER= des.h des_old.h
52HEADER= des_locl.h rpc_des.h spr.h des_ver.h $(EXHEADER)
53
54ALL= $(GENERAL) $(SRC) $(HEADER)
55
56top:
57 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
58
59all: lib
60
61lib: $(LIBOBJ)
62 $(AR) $(LIB) $(LIBOBJ)
63 $(RANLIB) $(LIB) || echo Never mind.
64 @touch lib
65
66des: des.o cbc3_enc.o lib
67 $(CC) $(CFLAGS) -o des des.o cbc3_enc.o $(LIB)
68
69# elf
70asm/dx86-elf.s: asm/des-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
71 (cd asm; $(PERL) des-586.pl elf $(CFLAGS) > dx86-elf.s)
72
73asm/yx86-elf.s: asm/crypt586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
74 (cd asm; $(PERL) crypt586.pl elf $(CFLAGS) > yx86-elf.s)
75
76# a.out
77asm/dx86-out.o: asm/dx86unix.cpp
78 $(CPP) -DOUT asm/dx86unix.cpp | as -o asm/dx86-out.o
79
80asm/yx86-out.o: asm/yx86unix.cpp
81 $(CPP) -DOUT asm/yx86unix.cpp | as -o asm/yx86-out.o
82
83# bsdi
84asm/dx86bsdi.o: asm/dx86unix.cpp
85 $(CPP) -DBSDI asm/dx86unix.cpp | sed 's/ :/:/' | as -o asm/dx86bsdi.o
86
87asm/yx86bsdi.o: asm/yx86unix.cpp
88 $(CPP) -DBSDI asm/yx86unix.cpp | sed 's/ :/:/' | as -o asm/yx86bsdi.o
89
90asm/dx86unix.cpp: asm/des-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
91 (cd asm; $(PERL) des-586.pl cpp >dx86unix.cpp)
92
93asm/yx86unix.cpp: asm/crypt586.pl ../perlasm/x86asm.pl
94 (cd asm; $(PERL) crypt586.pl cpp >yx86unix.cpp)
95
96files:
97 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
98
99links:
100 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
101 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
102 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
103 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
104
105install: installs
106
107installs:
108 @for i in $(EXHEADER) ; \
109 do \
110 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
111 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
112 done;
113
114tags:
115 ctags $(SRC)
116
117tests:
118
119lint:
120 lint -DLINT $(INCLUDES) $(SRC)>fluff
121
122depend:
123 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
124
125dclean:
126 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
127 mv -f Makefile.new $(MAKEFILE)
128
129clean:
130 rm -f asm/dx86unix.cpp asm/yx86unix.cpp asm/*-elf.* *.o asm/*.o *.obj des lib tags core .pure .nfs* *.old *.bak fluff
131
132# DO NOT DELETE THIS LINE -- make depend depends on it.
133
134cbc_cksm.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
135cbc_cksm.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
136cbc_cksm.o: ../../include/openssl/opensslconf.h
137cbc_cksm.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
138cbc_cksm.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
139cbc_cksm.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
140cbc_cksm.o: cbc_cksm.c des_locl.h
141cbc_enc.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
142cbc_enc.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
143cbc_enc.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
144cbc_enc.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
145cbc_enc.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
146cbc_enc.o: ../../include/openssl/ui_compat.h cbc_enc.c des_locl.h ncbc_enc.c
147cfb64ede.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
148cfb64ede.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
149cfb64ede.o: ../../include/openssl/opensslconf.h
150cfb64ede.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
151cfb64ede.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
152cfb64ede.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
153cfb64ede.o: cfb64ede.c des_locl.h
154cfb64enc.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
155cfb64enc.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
156cfb64enc.o: ../../include/openssl/opensslconf.h
157cfb64enc.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
158cfb64enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
159cfb64enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
160cfb64enc.o: cfb64enc.c des_locl.h
161cfb_enc.o: ../../e_os.h ../../include/openssl/crypto.h
162cfb_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
163cfb_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
164cfb_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
165cfb_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
166cfb_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
167cfb_enc.o: cfb_enc.c des_locl.h
168des_enc.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
169des_enc.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
170des_enc.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
171des_enc.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
172des_enc.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
173des_enc.o: ../../include/openssl/ui_compat.h des_enc.c des_locl.h ncbc_enc.c
174des_old.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
175des_old.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
176des_old.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
177des_old.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
178des_old.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
179des_old.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
180des_old.o: ../../include/openssl/ui_compat.h des_old.c
181des_old2.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
182des_old2.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
183des_old2.o: ../../include/openssl/opensslconf.h
184des_old2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
185des_old2.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
186des_old2.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
187des_old2.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
188des_old2.o: des_old2.c
189ecb3_enc.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
190ecb3_enc.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
191ecb3_enc.o: ../../include/openssl/opensslconf.h
192ecb3_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
193ecb3_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
194ecb3_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
195ecb3_enc.o: des_locl.h ecb3_enc.c
196ecb_enc.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
197ecb_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
198ecb_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
199ecb_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
200ecb_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
201ecb_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
202ecb_enc.o: des_locl.h des_ver.h ecb_enc.c spr.h
203ede_cbcm_enc.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
204ede_cbcm_enc.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
205ede_cbcm_enc.o: ../../include/openssl/opensslconf.h
206ede_cbcm_enc.o: ../../include/openssl/opensslv.h
207ede_cbcm_enc.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
208ede_cbcm_enc.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
209ede_cbcm_enc.o: ../../include/openssl/ui_compat.h des_locl.h ede_cbcm_enc.c
210enc_read.o: ../../e_os.h ../../include/openssl/bio.h
211enc_read.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
212enc_read.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
213enc_read.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
214enc_read.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
215enc_read.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
216enc_read.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
217enc_read.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
218enc_read.o: ../cryptlib.h des_locl.h enc_read.c
219enc_writ.o: ../../e_os.h ../../include/openssl/bio.h
220enc_writ.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
221enc_writ.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
222enc_writ.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
223enc_writ.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
224enc_writ.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
225enc_writ.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
226enc_writ.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
227enc_writ.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
228enc_writ.o: ../cryptlib.h des_locl.h enc_writ.c
229fcrypt.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
230fcrypt.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
231fcrypt.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
232fcrypt.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
233fcrypt.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
234fcrypt.o: ../../include/openssl/ui_compat.h des_locl.h fcrypt.c
235fcrypt_b.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
236fcrypt_b.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
237fcrypt_b.o: ../../include/openssl/opensslconf.h
238fcrypt_b.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
239fcrypt_b.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
240fcrypt_b.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
241fcrypt_b.o: des_locl.h fcrypt_b.c
242ofb64ede.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
243ofb64ede.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
244ofb64ede.o: ../../include/openssl/opensslconf.h
245ofb64ede.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
246ofb64ede.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
247ofb64ede.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
248ofb64ede.o: des_locl.h ofb64ede.c
249ofb64enc.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
250ofb64enc.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
251ofb64enc.o: ../../include/openssl/opensslconf.h
252ofb64enc.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
253ofb64enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
254ofb64enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
255ofb64enc.o: des_locl.h ofb64enc.c
256ofb_enc.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
257ofb_enc.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
258ofb_enc.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
259ofb_enc.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
260ofb_enc.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
261ofb_enc.o: ../../include/openssl/ui_compat.h des_locl.h ofb_enc.c
262pcbc_enc.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
263pcbc_enc.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
264pcbc_enc.o: ../../include/openssl/opensslconf.h
265pcbc_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
266pcbc_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
267pcbc_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
268pcbc_enc.o: des_locl.h pcbc_enc.c
269qud_cksm.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
270qud_cksm.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
271qud_cksm.o: ../../include/openssl/opensslconf.h
272qud_cksm.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
273qud_cksm.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
274qud_cksm.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
275qud_cksm.o: des_locl.h qud_cksm.c
276rand_key.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
277rand_key.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
278rand_key.o: ../../include/openssl/opensslconf.h
279rand_key.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
280rand_key.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
281rand_key.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
282rand_key.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
283rand_key.o: rand_key.c
284read2pwd.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
285read2pwd.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
286read2pwd.o: ../../include/openssl/opensslconf.h
287read2pwd.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
288read2pwd.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
289read2pwd.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
290read2pwd.o: read2pwd.c
291rpc_enc.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
292rpc_enc.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
293rpc_enc.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
294rpc_enc.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
295rpc_enc.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
296rpc_enc.o: ../../include/openssl/ui_compat.h des_locl.h des_ver.h rpc_des.h
297rpc_enc.o: rpc_enc.c
298set_key.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
299set_key.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
300set_key.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
301set_key.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
302set_key.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
303set_key.o: ../../include/openssl/ui_compat.h des_locl.h set_key.c
304str2key.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
305str2key.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
306str2key.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
307str2key.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
308str2key.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
309str2key.o: ../../include/openssl/ui_compat.h des_locl.h str2key.c
310xcbc_enc.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
311xcbc_enc.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
312xcbc_enc.o: ../../include/openssl/opensslconf.h
313xcbc_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
314xcbc_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
315xcbc_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
316xcbc_enc.o: des_locl.h xcbc_enc.c
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..60d577cc8d 100644
--- a/src/lib/libssl/src/crypto/des/asm/des-586.pl
+++ b/src/lib/libssl/src/crypto/des/asm/des-586.pl
@@ -22,10 +22,14 @@ $R="esi";
22&external_label("DES_SPtrans"); 22&external_label("DES_SPtrans");
23&DES_encrypt("DES_encrypt1",1); 23&DES_encrypt("DES_encrypt1",1);
24&DES_encrypt("DES_encrypt2",0); 24&DES_encrypt("DES_encrypt2",0);
25&DES_encrypt3("DES_encrypt3",1); 25
26&DES_encrypt3("DES_decrypt3",0); 26if (!$main'openbsd)
27&cbc("DES_ncbc_encrypt","DES_encrypt1","DES_encrypt1",0,4,5,3,5,-1); 27 {
28&cbc("DES_ede3_cbc_encrypt","DES_encrypt3","DES_decrypt3",0,6,7,3,4,5); 28 &DES_encrypt3("DES_encrypt3",1);
29 &DES_encrypt3("DES_decrypt3",0);
30 &cbc("DES_ncbc_encrypt","DES_encrypt1","DES_encrypt1",0,4,5,3,5,-1);
31 &cbc("DES_ede3_cbc_encrypt","DES_encrypt3","DES_decrypt3",0,6,7,3,4,5);
32 }
29 33
30&asm_finish(); 34&asm_finish();
31 35
diff --git a/src/lib/libssl/src/crypto/des/des.h b/src/lib/libssl/src/crypto/des/des.h
index c5df1c9c7b..81bd874edd 100644
--- a/src/lib/libssl/src/crypto/des/des.h
+++ b/src/lib/libssl/src/crypto/des/des.h
@@ -56,8 +56,8 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58 58
59#ifndef HEADER_NEW_DES_H 59#ifndef HEADER_DES_H
60#define HEADER_NEW_DES_H 60#define HEADER_DES_H
61 61
62#ifdef OPENSSL_NO_DES 62#ifdef OPENSSL_NO_DES
63#error DES is disabled. 63#error DES is disabled.
@@ -71,6 +71,8 @@
71# define OPENSSL_EXTERN OPENSSL_EXPORT 71# define OPENSSL_EXTERN OPENSSL_EXPORT
72#endif 72#endif
73 73
74#define des_SPtrans DES_SPtrans
75
74#ifdef __cplusplus 76#ifdef __cplusplus
75extern "C" { 77extern "C" {
76#endif 78#endif
diff --git a/src/lib/libssl/src/crypto/des/des_enc.c b/src/lib/libssl/src/crypto/des/des_enc.c
index 72be2d98d7..6a49ec4a55 100644
--- a/src/lib/libssl/src/crypto/des/des_enc.c
+++ b/src/lib/libssl/src/crypto/des/des_enc.c
@@ -59,6 +59,7 @@
59#include "des_locl.h" 59#include "des_locl.h"
60 60
61#ifndef OPENSSL_FIPS 61#ifndef OPENSSL_FIPS
62#ifndef OPENBSD_DES_ASM
62 63
63void DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc) 64void DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc)
64 { 65 {
@@ -248,6 +249,7 @@ void DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc)
248 data[1]=ROTATE(r,3)&0xffffffffL; 249 data[1]=ROTATE(r,3)&0xffffffffL;
249 l=r=t=u=0; 250 l=r=t=u=0;
250 } 251 }
252#endif
251 253
252void DES_encrypt3(DES_LONG *data, DES_key_schedule *ks1, 254void DES_encrypt3(DES_LONG *data, DES_key_schedule *ks1,
253 DES_key_schedule *ks2, DES_key_schedule *ks3) 255 DES_key_schedule *ks2, DES_key_schedule *ks3)
diff --git a/src/lib/libssl/src/crypto/des/des_locl.h b/src/lib/libssl/src/crypto/des/des_locl.h
index 8f04b18c50..e44e8e98b2 100644
--- a/src/lib/libssl/src/crypto/des/des_locl.h
+++ b/src/lib/libssl/src/crypto/des/des_locl.h
@@ -421,7 +421,7 @@
421 PERM_OP(l,r,tt, 4,0x0f0f0f0fL); \ 421 PERM_OP(l,r,tt, 4,0x0f0f0f0fL); \
422 } 422 }
423 423
424extern const DES_LONG DES_SPtrans[8][64]; 424OPENSSL_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);
diff --git a/src/lib/libssl/src/crypto/des/des_old.h b/src/lib/libssl/src/crypto/des/des_old.h
index 1d840b474a..1d8bf65101 100644
--- a/src/lib/libssl/src/crypto/des/des_old.h
+++ b/src/lib/libssl/src/crypto/des/des_old.h
@@ -88,14 +88,14 @@
88 * 88 *
89 */ 89 */
90 90
91#ifndef HEADER_DES_H 91#ifndef HEADER_DES_OLD_H
92#define HEADER_DES_H 92#define HEADER_DES_OLD_H
93 93
94#ifdef OPENSSL_NO_DES 94#ifdef OPENSSL_NO_DES
95#error DES is disabled. 95#error DES is disabled.
96#endif 96#endif
97 97
98#ifndef HEADER_NEW_DES_H 98#ifndef HEADER_DES_H
99#error You must include des.h, not des_old.h directly. 99#error You must include des.h, not des_old.h directly.
100#endif 100#endif
101 101
diff --git a/src/lib/libssl/src/crypto/des/times/usparc.cc b/src/lib/libssl/src/crypto/des/times/usparc.cc
index f6ec8e8831..0864285ef6 100644
--- a/src/lib/libssl/src/crypto/des/times/usparc.cc
+++ b/src/lib/libssl/src/crypto/des/times/usparc.cc
@@ -2,7 +2,7 @@ solaris 2.5.1 usparc 167mhz?? - SC4.0 cc -fast -Xa -xO5
2 2
3For the ultra sparc, SunC 4.0 cc -fast -Xa -xO5, running 'des_opts' 3For the ultra sparc, SunC 4.0 cc -fast -Xa -xO5, running 'des_opts'
4gives a speed of 475,000 des/s while 'speed' gives 417,000 des/s. 4gives a speed of 475,000 des/s while 'speed' gives 417,000 des/s.
5I belive the difference is tied up in optimisation that the compiler 5I believe the difference is tied up in optimisation that the compiler
6is able to perform when the code is 'inlined'. For 'speed', the DES 6is able to perform when the code is 'inlined'. For 'speed', the DES
7routines are being linked from a library. I'll record the higher 7routines are being linked from a library. I'll record the higher
8speed since if performance is everything, you can always inline 8speed since if performance is everything, you can always inline
diff --git a/src/lib/libssl/src/crypto/dh/Makefile.ssl b/src/lib/libssl/src/crypto/dh/Makefile.ssl
new file mode 100644
index 0000000000..e05fc01a12
--- /dev/null
+++ b/src/lib/libssl/src/crypto/dh/Makefile.ssl
@@ -0,0 +1,133 @@
1#
2# SSLeay/crypto/dh/Makefile
3#
4
5DIR= dh
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST= dhtest.c
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC= dh_asn1.c dh_gen.c dh_key.c dh_lib.c dh_check.c dh_err.c
27LIBOBJ= dh_asn1.o dh_gen.o dh_key.o dh_lib.o dh_check.o dh_err.o
28
29SRC= $(LIBSRC)
30
31EXHEADER= dh.h
32HEADER= $(EXHEADER)
33
34ALL= $(GENERAL) $(SRC) $(HEADER)
35
36top:
37 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
38
39all: lib
40
41lib: $(LIBOBJ)
42 $(AR) $(LIB) $(LIBOBJ)
43 $(RANLIB) $(LIB) || echo Never mind.
44 @touch lib
45
46files:
47 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
48
49links:
50 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
51 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
52 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
53 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
54
55install:
56 @for i in $(EXHEADER) ; \
57 do \
58 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
59 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
60 done;
61
62tags:
63 ctags $(SRC)
64
65tests:
66
67lint:
68 lint -DLINT $(INCLUDES) $(SRC)>fluff
69
70depend:
71 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
72
73dclean:
74 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
75 mv -f Makefile.new $(MAKEFILE)
76
77clean:
78 rm -f *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
79
80# DO NOT DELETE THIS LINE -- make depend depends on it.
81
82dh_asn1.o: ../../e_os.h ../../include/openssl/asn1.h
83dh_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
84dh_asn1.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
85dh_asn1.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
86dh_asn1.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
87dh_asn1.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
88dh_asn1.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
89dh_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
90dh_asn1.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
91dh_asn1.o: ../../include/openssl/symhacks.h ../cryptlib.h dh_asn1.c
92dh_check.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
93dh_check.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
94dh_check.o: ../../include/openssl/dh.h ../../include/openssl/e_os2.h
95dh_check.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
96dh_check.o: ../../include/openssl/opensslconf.h
97dh_check.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
98dh_check.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
99dh_check.o: ../../include/openssl/symhacks.h ../cryptlib.h dh_check.c
100dh_err.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
101dh_err.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
102dh_err.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
103dh_err.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
104dh_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
105dh_err.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
106dh_err.o: ../../include/openssl/symhacks.h dh_err.c
107dh_gen.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
108dh_gen.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
109dh_gen.o: ../../include/openssl/dh.h ../../include/openssl/e_os2.h
110dh_gen.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
111dh_gen.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
112dh_gen.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
113dh_gen.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
114dh_gen.o: ../cryptlib.h dh_gen.c
115dh_key.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
116dh_key.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
117dh_key.o: ../../include/openssl/dh.h ../../include/openssl/e_os2.h
118dh_key.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
119dh_key.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
120dh_key.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
121dh_key.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
122dh_key.o: ../../include/openssl/symhacks.h ../cryptlib.h dh_key.c
123dh_lib.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
124dh_lib.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
125dh_lib.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
126dh_lib.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
127dh_lib.o: ../../include/openssl/engine.h ../../include/openssl/err.h
128dh_lib.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
129dh_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
130dh_lib.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
131dh_lib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
132dh_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
133dh_lib.o: ../cryptlib.h dh_lib.c
diff --git a/src/lib/libssl/src/crypto/dh/dh.h b/src/lib/libssl/src/crypto/dh/dh.h
index 92c7481e10..0aff7fe21f 100644
--- a/src/lib/libssl/src/crypto/dh/dh.h
+++ b/src/lib/libssl/src/crypto/dh/dh.h
@@ -70,14 +70,7 @@
70#include <openssl/crypto.h> 70#include <openssl/crypto.h>
71#include <openssl/ossl_typ.h> 71#include <openssl/ossl_typ.h>
72 72
73#define DH_FLAG_CACHE_MONT_P 0x01 73#define DH_FLAG_CACHE_MONT_P 0x01
74#define DH_FLAG_NO_EXP_CONSTTIME 0x02 /* new with 0.9.7h; the built-in DH
75 * implementation now uses constant time
76 * modular exponentiation for secret exponents
77 * by default. This flag causes the
78 * faster variable sliding window method to
79 * be used for all exponents.
80 */
81 74
82#ifdef __cplusplus 75#ifdef __cplusplus
83extern "C" { 76extern "C" {
@@ -108,7 +101,7 @@ struct dh_st
108 int version; 101 int version;
109 BIGNUM *p; 102 BIGNUM *p;
110 BIGNUM *g; 103 BIGNUM *g;
111 long length; /* optional */ 104 int length; /* optional */
112 BIGNUM *pub_key; /* g^x */ 105 BIGNUM *pub_key; /* g^x */
113 BIGNUM *priv_key; /* x */ 106 BIGNUM *priv_key; /* x */
114 107
@@ -137,6 +130,10 @@ struct dh_st
137#define DH_UNABLE_TO_CHECK_GENERATOR 0x04 130#define DH_UNABLE_TO_CHECK_GENERATOR 0x04
138#define DH_NOT_SUITABLE_GENERATOR 0x08 131#define DH_NOT_SUITABLE_GENERATOR 0x08
139 132
133/* DH_check_pub_key error codes */
134#define DH_CHECK_PUBKEY_TOO_SMALL 0x01
135#define DH_CHECK_PUBKEY_TOO_LARGE 0x02
136
140/* primes p where (p-1)/2 is prime too are called "safe"; we define 137/* primes p where (p-1)/2 is prime too are called "safe"; we define
141 this for backward compatibility: */ 138 this for backward compatibility: */
142#define DH_CHECK_P_NOT_STRONG_PRIME DH_CHECK_P_NOT_SAFE_PRIME 139#define DH_CHECK_P_NOT_STRONG_PRIME DH_CHECK_P_NOT_SAFE_PRIME
@@ -175,6 +172,7 @@ void *DH_get_ex_data(DH *d, int idx);
175DH * DH_generate_parameters(int prime_len,int generator, 172DH * DH_generate_parameters(int prime_len,int generator,
176 void (*callback)(int,int,void *),void *cb_arg); 173 void (*callback)(int,int,void *),void *cb_arg);
177int DH_check(const DH *dh,int *codes); 174int DH_check(const DH *dh,int *codes);
175int DH_check_pub_key(const DH *dh,const BIGNUM *pub_key, int *codes);
178int DH_generate_key(DH *dh); 176int DH_generate_key(DH *dh);
179int DH_compute_key(unsigned char *key,const BIGNUM *pub_key,DH *dh); 177int DH_compute_key(unsigned char *key,const BIGNUM *pub_key,DH *dh);
180DH * d2i_DHparams(DH **a,const unsigned char **pp, long length); 178DH * d2i_DHparams(DH **a,const unsigned char **pp, long length);
@@ -207,6 +205,7 @@ void ERR_load_DH_strings(void);
207/* Reason codes. */ 205/* Reason codes. */
208#define DH_R_BAD_GENERATOR 101 206#define DH_R_BAD_GENERATOR 101
209#define DH_R_NO_PRIVATE_VALUE 100 207#define DH_R_NO_PRIVATE_VALUE 100
208#define DH_R_INVALID_PUBKEY 102
210 209
211#ifdef __cplusplus 210#ifdef __cplusplus
212} 211}
diff --git a/src/lib/libssl/src/crypto/dh/dh_check.c b/src/lib/libssl/src/crypto/dh/dh_check.c
index a7e9920efb..17debff62d 100644
--- a/src/lib/libssl/src/crypto/dh/dh_check.c
+++ b/src/lib/libssl/src/crypto/dh/dh_check.c
@@ -121,4 +121,26 @@ err:
121 return(ok); 121 return(ok);
122 } 122 }
123 123
124int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, int *ret)
125 {
126 int ok=0;
127 BIGNUM *q=NULL;
128
129 *ret=0;
130 q=BN_new();
131 if (q == NULL) goto err;
132 BN_set_word(q,1);
133 if (BN_cmp(pub_key,q) <= 0)
134 *ret|=DH_CHECK_PUBKEY_TOO_SMALL;
135 BN_copy(q,dh->p);
136 BN_sub_word(q,1);
137 if (BN_cmp(pub_key,q) >= 0)
138 *ret|=DH_CHECK_PUBKEY_TOO_LARGE;
139
140 ok = 1;
141err:
142 if (q != NULL) BN_free(q);
143 return(ok);
144 }
145
124#endif 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 83ccb41221..914b8a9c53 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-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2003 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
@@ -64,25 +64,22 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_DH,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_DH,0,reason)
70
71static ERR_STRING_DATA DH_str_functs[]= 67static ERR_STRING_DATA DH_str_functs[]=
72 { 68 {
73{ERR_FUNC(DH_F_DHPARAMS_PRINT), "DHparams_print"}, 69{ERR_PACK(0,DH_F_DHPARAMS_PRINT,0), "DHparams_print"},
74{ERR_FUNC(DH_F_DHPARAMS_PRINT_FP), "DHparams_print_fp"}, 70{ERR_PACK(0,DH_F_DHPARAMS_PRINT_FP,0), "DHparams_print_fp"},
75{ERR_FUNC(DH_F_DH_COMPUTE_KEY), "DH_compute_key"}, 71{ERR_PACK(0,DH_F_DH_COMPUTE_KEY,0), "DH_compute_key"},
76{ERR_FUNC(DH_F_DH_GENERATE_KEY), "DH_generate_key"}, 72{ERR_PACK(0,DH_F_DH_GENERATE_KEY,0), "DH_generate_key"},
77{ERR_FUNC(DH_F_DH_GENERATE_PARAMETERS), "DH_generate_parameters"}, 73{ERR_PACK(0,DH_F_DH_GENERATE_PARAMETERS,0), "DH_generate_parameters"},
78{ERR_FUNC(DH_F_DH_NEW_METHOD), "DH_new_method"}, 74{ERR_PACK(0,DH_F_DH_NEW_METHOD,0), "DH_new_method"},
79{0,NULL} 75{0,NULL}
80 }; 76 };
81 77
82static ERR_STRING_DATA DH_str_reasons[]= 78static ERR_STRING_DATA DH_str_reasons[]=
83 { 79 {
84{ERR_REASON(DH_R_BAD_GENERATOR) ,"bad generator"}, 80{DH_R_BAD_GENERATOR ,"bad generator"},
85{ERR_REASON(DH_R_NO_PRIVATE_VALUE) ,"no private value"}, 81{DH_R_NO_PRIVATE_VALUE ,"no private value"},
82{DH_R_INVALID_PUBKEY ,"invalid public key"},
86{0,NULL} 83{0,NULL}
87 }; 84 };
88 85
@@ -96,8 +93,8 @@ void ERR_load_DH_strings(void)
96 { 93 {
97 init=0; 94 init=0;
98#ifndef OPENSSL_NO_ERR 95#ifndef OPENSSL_NO_ERR
99 ERR_load_strings(0,DH_str_functs); 96 ERR_load_strings(ERR_LIB_DH,DH_str_functs);
100 ERR_load_strings(0,DH_str_reasons); 97 ERR_load_strings(ERR_LIB_DH,DH_str_reasons);
101#endif 98#endif
102 99
103 } 100 }
diff --git a/src/lib/libssl/src/crypto/dh/dh_key.c b/src/lib/libssl/src/crypto/dh/dh_key.c
index 3a39f7c8ca..648766a6ec 100644
--- a/src/lib/libssl/src/crypto/dh/dh_key.c
+++ b/src/lib/libssl/src/crypto/dh/dh_key.c
@@ -105,7 +105,7 @@ static int generate_key(DH *dh)
105 int generate_new_key=0; 105 int generate_new_key=0;
106 unsigned l; 106 unsigned l;
107 BN_CTX *ctx; 107 BN_CTX *ctx;
108 BN_MONT_CTX *mont=NULL; 108 BN_MONT_CTX *mont;
109 BIGNUM *pub_key=NULL,*priv_key=NULL; 109 BIGNUM *pub_key=NULL,*priv_key=NULL;
110 110
111 ctx = BN_CTX_new(); 111 ctx = BN_CTX_new();
@@ -128,37 +128,21 @@ static int generate_key(DH *dh)
128 else 128 else
129 pub_key=dh->pub_key; 129 pub_key=dh->pub_key;
130 130
131 131 if ((dh->method_mont_p == NULL) && (dh->flags & DH_FLAG_CACHE_MONT_P))
132 if (dh->flags & DH_FLAG_CACHE_MONT_P)
133 { 132 {
134 mont = BN_MONT_CTX_set_locked( 133 if ((dh->method_mont_p=(char *)BN_MONT_CTX_new()) != NULL)
135 (BN_MONT_CTX **)&dh->method_mont_p, 134 if (!BN_MONT_CTX_set((BN_MONT_CTX *)dh->method_mont_p,
136 CRYPTO_LOCK_DH, dh->p, ctx); 135 dh->p,ctx)) goto err;
137 if (!mont)
138 goto err;
139 } 136 }
137 mont=(BN_MONT_CTX *)dh->method_mont_p;
140 138
141 if (generate_new_key) 139 if (generate_new_key)
142 { 140 {
143 l = dh->length ? dh->length : BN_num_bits(dh->p)-1; /* secret exponent length */ 141 l = dh->length ? dh->length : BN_num_bits(dh->p)-1; /* secret exponent length */
144 if (!BN_rand(priv_key, l, 0, 0)) goto err; 142 if (!BN_rand(priv_key, l, 0, 0)) goto err;
145 } 143 }
146 144 if (!dh->meth->bn_mod_exp(dh, pub_key, dh->g, priv_key,dh->p,ctx,mont))
147 { 145 goto err;
148 BIGNUM local_prk;
149 BIGNUM *prk;
150
151 if ((dh->flags & DH_FLAG_NO_EXP_CONSTTIME) == 0)
152 {
153 BN_init(&local_prk);
154 prk = &local_prk;
155 BN_with_flags(prk, priv_key, BN_FLG_EXP_CONSTTIME);
156 }
157 else
158 prk = priv_key;
159
160 if (!dh->meth->bn_mod_exp(dh, pub_key, dh->g, prk, dh->p, ctx, mont)) goto err;
161 }
162 146
163 dh->pub_key=pub_key; 147 dh->pub_key=pub_key;
164 dh->priv_key=priv_key; 148 dh->priv_key=priv_key;
@@ -176,9 +160,10 @@ err:
176static int compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh) 160static int compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh)
177 { 161 {
178 BN_CTX *ctx; 162 BN_CTX *ctx;
179 BN_MONT_CTX *mont=NULL; 163 BN_MONT_CTX *mont;
180 BIGNUM *tmp; 164 BIGNUM *tmp;
181 int ret= -1; 165 int ret= -1;
166 int check_result;
182 167
183 ctx = BN_CTX_new(); 168 ctx = BN_CTX_new();
184 if (ctx == NULL) goto err; 169 if (ctx == NULL) goto err;
@@ -190,21 +175,20 @@ static int compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh)
190 DHerr(DH_F_DH_COMPUTE_KEY,DH_R_NO_PRIVATE_VALUE); 175 DHerr(DH_F_DH_COMPUTE_KEY,DH_R_NO_PRIVATE_VALUE);
191 goto err; 176 goto err;
192 } 177 }
193 178 if ((dh->method_mont_p == NULL) && (dh->flags & DH_FLAG_CACHE_MONT_P))
194 if (dh->flags & DH_FLAG_CACHE_MONT_P)
195 { 179 {
196 mont = BN_MONT_CTX_set_locked( 180 if ((dh->method_mont_p=(char *)BN_MONT_CTX_new()) != NULL)
197 (BN_MONT_CTX **)&dh->method_mont_p, 181 if (!BN_MONT_CTX_set((BN_MONT_CTX *)dh->method_mont_p,
198 CRYPTO_LOCK_DH, dh->p, ctx); 182 dh->p,ctx)) goto err;
199 if ((dh->flags & DH_FLAG_NO_EXP_CONSTTIME) == 0)
200 {
201 /* XXX */
202 BN_set_flags(dh->priv_key, BN_FLG_EXP_CONSTTIME);
203 }
204 if (!mont)
205 goto err;
206 } 183 }
207 184
185 mont=(BN_MONT_CTX *)dh->method_mont_p;
186
187 if (!DH_check_pub_key(dh, pub_key, &check_result) || check_result)
188 {
189 DHerr(DH_F_DH_COMPUTE_KEY,DH_R_INVALID_PUBKEY);
190 goto err;
191 }
208 if (!dh->meth->bn_mod_exp(dh, tmp, pub_key, dh->priv_key,dh->p,ctx,mont)) 192 if (!dh->meth->bn_mod_exp(dh, tmp, pub_key, dh->priv_key,dh->p,ctx,mont))
209 { 193 {
210 DHerr(DH_F_DH_COMPUTE_KEY,ERR_R_BN_LIB); 194 DHerr(DH_F_DH_COMPUTE_KEY,ERR_R_BN_LIB);
@@ -213,11 +197,8 @@ static int compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh)
213 197
214 ret=BN_bn2bin(tmp,key); 198 ret=BN_bn2bin(tmp,key);
215err: 199err:
216 if (ctx != NULL) 200 BN_CTX_end(ctx);
217 { 201 BN_CTX_free(ctx);
218 BN_CTX_end(ctx);
219 BN_CTX_free(ctx);
220 }
221 return(ret); 202 return(ret);
222 } 203 }
223 204
@@ -226,10 +207,7 @@ static int dh_bn_mod_exp(const DH *dh, BIGNUM *r,
226 const BIGNUM *m, BN_CTX *ctx, 207 const BIGNUM *m, BN_CTX *ctx,
227 BN_MONT_CTX *m_ctx) 208 BN_MONT_CTX *m_ctx)
228 { 209 {
229 /* If a is only one word long and constant time is false, use the faster 210 if (a->top == 1)
230 * exponenentiation function.
231 */
232 if (a->top == 1 && ((dh->flags & DH_FLAG_NO_EXP_CONSTTIME) != 0))
233 { 211 {
234 BN_ULONG A = a->d[0]; 212 BN_ULONG A = a->d[0];
235 return BN_mod_exp_mont_word(r,A,p,m,ctx,m_ctx); 213 return BN_mod_exp_mont_word(r,A,p,m,ctx,m_ctx);
diff --git a/src/lib/libssl/src/crypto/dh/dhtest.c b/src/lib/libssl/src/crypto/dh/dhtest.c
index b76dede771..d75077f9fa 100644
--- a/src/lib/libssl/src/crypto/dh/dhtest.c
+++ b/src/lib/libssl/src/crypto/dh/dhtest.c
@@ -136,10 +136,6 @@ int main(int argc, char *argv[])
136 b->g=BN_dup(a->g); 136 b->g=BN_dup(a->g);
137 if ((b->p == NULL) || (b->g == NULL)) goto err; 137 if ((b->p == NULL) || (b->g == NULL)) goto err;
138 138
139 /* Set a to run with normal modexp and b to use constant time */
140 a->flags &= ~DH_FLAG_NO_EXP_CONSTTIME;
141 b->flags |= DH_FLAG_NO_EXP_CONSTTIME;
142
143 if (!DH_generate_key(a)) goto err; 139 if (!DH_generate_key(a)) goto err;
144 BIO_puts(out,"pri 1="); 140 BIO_puts(out,"pri 1=");
145 BN_print(out,a->priv_key); 141 BN_print(out,a->priv_key);
diff --git a/src/lib/libssl/src/crypto/dsa/Makefile.ssl b/src/lib/libssl/src/crypto/dsa/Makefile.ssl
new file mode 100644
index 0000000000..e5f8a8cf51
--- /dev/null
+++ b/src/lib/libssl/src/crypto/dsa/Makefile.ssl
@@ -0,0 +1,171 @@
1#
2# SSLeay/crypto/dsa/Makefile
3#
4
5DIR= dsa
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST=dsatest.c
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC= dsa_gen.c dsa_key.c dsa_lib.c dsa_asn1.c dsa_vrf.c dsa_sign.c \
27 dsa_err.c dsa_ossl.c
28LIBOBJ= dsa_gen.o dsa_key.o dsa_lib.o dsa_asn1.o dsa_vrf.o dsa_sign.o \
29 dsa_err.o dsa_ossl.o
30
31SRC= $(LIBSRC)
32
33EXHEADER= dsa.h
34HEADER= $(EXHEADER)
35
36ALL= $(GENERAL) $(SRC) $(HEADER)
37
38top:
39 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
40
41all: lib
42
43lib: $(LIBOBJ)
44 $(AR) $(LIB) $(LIBOBJ)
45 $(RANLIB) $(LIB) || echo Never mind.
46 @touch lib
47
48files:
49 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
50
51links:
52 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
53 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
54 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
55 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
56
57install:
58 @for i in $(EXHEADER) ; \
59 do \
60 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
61 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
62 done;
63
64tags:
65 ctags $(SRC)
66
67tests:
68
69lint:
70 lint -DLINT $(INCLUDES) $(SRC)>fluff
71
72depend:
73 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
74
75dclean:
76 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
77 mv -f Makefile.new $(MAKEFILE)
78
79clean:
80 rm -f *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
81
82# DO NOT DELETE THIS LINE -- make depend depends on it.
83
84dsa_asn1.o: ../../e_os.h ../../include/openssl/asn1.h
85dsa_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
86dsa_asn1.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
87dsa_asn1.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
88dsa_asn1.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
89dsa_asn1.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
90dsa_asn1.o: ../../include/openssl/opensslconf.h
91dsa_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
92dsa_asn1.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
93dsa_asn1.o: ../../include/openssl/symhacks.h ../cryptlib.h dsa_asn1.c
94dsa_err.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
95dsa_err.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
96dsa_err.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
97dsa_err.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
98dsa_err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
99dsa_err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
100dsa_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
101dsa_err.o: dsa_err.c
102dsa_gen.o: ../../e_os.h ../../include/openssl/aes.h
103dsa_gen.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
104dsa_gen.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
105dsa_gen.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
106dsa_gen.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
107dsa_gen.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
108dsa_gen.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
109dsa_gen.o: ../../include/openssl/err.h ../../include/openssl/evp.h
110dsa_gen.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
111dsa_gen.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
112dsa_gen.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
113dsa_gen.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
114dsa_gen.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
115dsa_gen.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
116dsa_gen.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
117dsa_gen.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
118dsa_gen.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
119dsa_gen.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
120dsa_gen.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
121dsa_gen.o: ../../include/openssl/ui_compat.h ../cryptlib.h dsa_gen.c
122dsa_key.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
123dsa_key.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
124dsa_key.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
125dsa_key.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
126dsa_key.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
127dsa_key.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
128dsa_key.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
129dsa_key.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
130dsa_key.o: ../cryptlib.h dsa_key.c
131dsa_lib.o: ../../e_os.h ../../include/openssl/asn1.h
132dsa_lib.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
133dsa_lib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
134dsa_lib.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
135dsa_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/engine.h
136dsa_lib.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
137dsa_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
138dsa_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
139dsa_lib.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
140dsa_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
141dsa_lib.o: ../../include/openssl/ui.h ../cryptlib.h dsa_lib.c
142dsa_ossl.o: ../../e_os.h ../../include/openssl/asn1.h
143dsa_ossl.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
144dsa_ossl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
145dsa_ossl.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
146dsa_ossl.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
147dsa_ossl.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
148dsa_ossl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
149dsa_ossl.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
150dsa_ossl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
151dsa_ossl.o: ../cryptlib.h dsa_ossl.c
152dsa_sign.o: ../../e_os.h ../../include/openssl/asn1.h
153dsa_sign.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
154dsa_sign.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
155dsa_sign.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
156dsa_sign.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
157dsa_sign.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
158dsa_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
159dsa_sign.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
160dsa_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
161dsa_sign.o: ../cryptlib.h dsa_sign.c
162dsa_vrf.o: ../../e_os.h ../../include/openssl/asn1.h
163dsa_vrf.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
164dsa_vrf.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
165dsa_vrf.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
166dsa_vrf.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
167dsa_vrf.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
168dsa_vrf.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
169dsa_vrf.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
170dsa_vrf.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
171dsa_vrf.o: ../../include/openssl/symhacks.h ../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 851e3f0445..225ff391f9 100644
--- a/src/lib/libssl/src/crypto/dsa/dsa.h
+++ b/src/lib/libssl/src/crypto/dsa/dsa.h
@@ -80,20 +80,6 @@
80#endif 80#endif
81 81
82#define DSA_FLAG_CACHE_MONT_P 0x01 82#define DSA_FLAG_CACHE_MONT_P 0x01
83#define DSA_FLAG_NO_EXP_CONSTTIME 0x02 /* new with 0.9.7h; the built-in DSA
84 * implementation now uses constant time
85 * modular exponentiation for secret exponents
86 * by default. This flag causes the
87 * faster variable sliding window method to
88 * be used for all exponents.
89 */
90
91/* If this flag is set external DSA_METHOD callbacks are allowed in FIPS mode
92 * it is then the applications responsibility to ensure the external method
93 * is compliant.
94 */
95
96#define DSA_FLAG_FIPS_EXTERNAL_METHOD_ALLOW 0x04
97 83
98#if defined(OPENSSL_FIPS) 84#if defined(OPENSSL_FIPS)
99#define FIPS_DSA_SIZE_T int 85#define FIPS_DSA_SIZE_T int
diff --git a/src/lib/libssl/src/crypto/dsa/dsa_err.c b/src/lib/libssl/src/crypto/dsa/dsa_err.c
index fd42053572..79aa4ff526 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-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999 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
@@ -64,33 +64,29 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_DSA,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_DSA,0,reason)
70
71static ERR_STRING_DATA DSA_str_functs[]= 67static ERR_STRING_DATA DSA_str_functs[]=
72 { 68 {
73{ERR_FUNC(DSA_F_D2I_DSA_SIG), "d2i_DSA_SIG"}, 69{ERR_PACK(0,DSA_F_D2I_DSA_SIG,0), "d2i_DSA_SIG"},
74{ERR_FUNC(DSA_F_DSAPARAMS_PRINT), "DSAparams_print"}, 70{ERR_PACK(0,DSA_F_DSAPARAMS_PRINT,0), "DSAparams_print"},
75{ERR_FUNC(DSA_F_DSAPARAMS_PRINT_FP), "DSAparams_print_fp"}, 71{ERR_PACK(0,DSA_F_DSAPARAMS_PRINT_FP,0), "DSAparams_print_fp"},
76{ERR_FUNC(DSA_F_DSA_DO_SIGN), "DSA_do_sign"}, 72{ERR_PACK(0,DSA_F_DSA_DO_SIGN,0), "DSA_do_sign"},
77{ERR_FUNC(DSA_F_DSA_DO_VERIFY), "DSA_do_verify"}, 73{ERR_PACK(0,DSA_F_DSA_DO_VERIFY,0), "DSA_do_verify"},
78{ERR_FUNC(DSA_F_DSA_NEW_METHOD), "DSA_new_method"}, 74{ERR_PACK(0,DSA_F_DSA_NEW_METHOD,0), "DSA_new_method"},
79{ERR_FUNC(DSA_F_DSA_PRINT), "DSA_print"}, 75{ERR_PACK(0,DSA_F_DSA_PRINT,0), "DSA_print"},
80{ERR_FUNC(DSA_F_DSA_PRINT_FP), "DSA_print_fp"}, 76{ERR_PACK(0,DSA_F_DSA_PRINT_FP,0), "DSA_print_fp"},
81{ERR_FUNC(DSA_F_DSA_SIGN), "DSA_sign"}, 77{ERR_PACK(0,DSA_F_DSA_SIGN,0), "DSA_sign"},
82{ERR_FUNC(DSA_F_DSA_SIGN_SETUP), "DSA_sign_setup"}, 78{ERR_PACK(0,DSA_F_DSA_SIGN_SETUP,0), "DSA_sign_setup"},
83{ERR_FUNC(DSA_F_DSA_SIG_NEW), "DSA_SIG_new"}, 79{ERR_PACK(0,DSA_F_DSA_SIG_NEW,0), "DSA_SIG_new"},
84{ERR_FUNC(DSA_F_DSA_VERIFY), "DSA_verify"}, 80{ERR_PACK(0,DSA_F_DSA_VERIFY,0), "DSA_verify"},
85{ERR_FUNC(DSA_F_I2D_DSA_SIG), "i2d_DSA_SIG"}, 81{ERR_PACK(0,DSA_F_I2D_DSA_SIG,0), "i2d_DSA_SIG"},
86{ERR_FUNC(DSA_F_SIG_CB), "SIG_CB"}, 82{ERR_PACK(0,DSA_F_SIG_CB,0), "SIG_CB"},
87{0,NULL} 83{0,NULL}
88 }; 84 };
89 85
90static ERR_STRING_DATA DSA_str_reasons[]= 86static ERR_STRING_DATA DSA_str_reasons[]=
91 { 87 {
92{ERR_REASON(DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE),"data too large for key size"}, 88{DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE ,"data too large for key size"},
93{ERR_REASON(DSA_R_MISSING_PARAMETERS) ,"missing parameters"}, 89{DSA_R_MISSING_PARAMETERS ,"missing parameters"},
94{0,NULL} 90{0,NULL}
95 }; 91 };
96 92
@@ -104,8 +100,8 @@ void ERR_load_DSA_strings(void)
104 { 100 {
105 init=0; 101 init=0;
106#ifndef OPENSSL_NO_ERR 102#ifndef OPENSSL_NO_ERR
107 ERR_load_strings(0,DSA_str_functs); 103 ERR_load_strings(ERR_LIB_DSA,DSA_str_functs);
108 ERR_load_strings(0,DSA_str_reasons); 104 ERR_load_strings(ERR_LIB_DSA,DSA_str_reasons);
109#endif 105#endif
110 106
111 } 107 }
diff --git a/src/lib/libssl/src/crypto/dsa/dsa_key.c b/src/lib/libssl/src/crypto/dsa/dsa_key.c
index 980b6dc2d3..30607ca579 100644
--- a/src/lib/libssl/src/crypto/dsa/dsa_key.c
+++ b/src/lib/libssl/src/crypto/dsa/dsa_key.c
@@ -90,22 +90,8 @@ int DSA_generate_key(DSA *dsa)
90 } 90 }
91 else 91 else
92 pub_key=dsa->pub_key; 92 pub_key=dsa->pub_key;
93
94 {
95 BIGNUM local_prk;
96 BIGNUM *prk;
97
98 if ((dsa->flags & DSA_FLAG_NO_EXP_CONSTTIME) == 0)
99 {
100 BN_init(&local_prk);
101 prk = &local_prk;
102 BN_with_flags(prk, priv_key, BN_FLG_EXP_CONSTTIME);
103 }
104 else
105 prk = priv_key;
106 93
107 if (!BN_mod_exp(pub_key,dsa->g,prk,dsa->p,ctx)) goto err; 94 if (!BN_mod_exp(pub_key,dsa->g,priv_key,dsa->p,ctx)) goto err;
108 }
109 95
110 dsa->priv_key=priv_key; 96 dsa->priv_key=priv_key;
111 dsa->pub_key=pub_key; 97 dsa->pub_key=pub_key;
diff --git a/src/lib/libssl/src/crypto/dsa/dsa_ossl.c b/src/lib/libssl/src/crypto/dsa/dsa_ossl.c
index 12509a7083..f1a85afcde 100644
--- a/src/lib/libssl/src/crypto/dsa/dsa_ossl.c
+++ b/src/lib/libssl/src/crypto/dsa/dsa_ossl.c
@@ -172,7 +172,7 @@ err:
172static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp) 172static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp)
173 { 173 {
174 BN_CTX *ctx; 174 BN_CTX *ctx;
175 BIGNUM k,kq,*K,*kinv=NULL,*r=NULL; 175 BIGNUM k,*kinv=NULL,*r=NULL;
176 int ret=0; 176 int ret=0;
177 177
178 if (!dsa->p || !dsa->q || !dsa->g) 178 if (!dsa->p || !dsa->q || !dsa->g)
@@ -182,7 +182,6 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp)
182 } 182 }
183 183
184 BN_init(&k); 184 BN_init(&k);
185 BN_init(&kq);
186 185
187 if (ctx_in == NULL) 186 if (ctx_in == NULL)
188 { 187 {
@@ -192,49 +191,22 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp)
192 ctx=ctx_in; 191 ctx=ctx_in;
193 192
194 if ((r=BN_new()) == NULL) goto err; 193 if ((r=BN_new()) == NULL) goto err;
194 kinv=NULL;
195 195
196 /* Get random k */ 196 /* Get random k */
197 do 197 do
198 if (!BN_rand_range(&k, dsa->q)) goto err; 198 if (!BN_rand_range(&k, dsa->q)) goto err;
199 while (BN_is_zero(&k)); 199 while (BN_is_zero(&k));
200 if ((dsa->flags & DSA_FLAG_NO_EXP_CONSTTIME) == 0)
201 {
202 BN_set_flags(&k, BN_FLG_EXP_CONSTTIME);
203 }
204 200
205 if (dsa->flags & DSA_FLAG_CACHE_MONT_P) 201 if ((dsa->method_mont_p == NULL) && (dsa->flags & DSA_FLAG_CACHE_MONT_P))
206 { 202 {
207 if (!BN_MONT_CTX_set_locked((BN_MONT_CTX **)&dsa->method_mont_p, 203 if ((dsa->method_mont_p=(char *)BN_MONT_CTX_new()) != NULL)
208 CRYPTO_LOCK_DSA, 204 if (!BN_MONT_CTX_set((BN_MONT_CTX *)dsa->method_mont_p,
209 dsa->p, ctx)) 205 dsa->p,ctx)) goto err;
210 goto err;
211 } 206 }
212 207
213 /* Compute r = (g^k mod p) mod q */ 208 /* Compute r = (g^k mod p) mod q */
214 209 if (!dsa->meth->bn_mod_exp(dsa, r,dsa->g,&k,dsa->p,ctx,
215 if ((dsa->flags & DSA_FLAG_NO_EXP_CONSTTIME) == 0)
216 {
217 if (!BN_copy(&kq, &k)) goto err;
218
219 /* We do not want timing information to leak the length of k,
220 * so we compute g^k using an equivalent exponent of fixed length.
221 *
222 * (This is a kludge that we need because the BN_mod_exp_mont()
223 * does not let us specify the desired timing behaviour.) */
224
225 if (!BN_add(&kq, &kq, dsa->q)) goto err;
226 if (BN_num_bits(&kq) <= BN_num_bits(dsa->q))
227 {
228 if (!BN_add(&kq, &kq, dsa->q)) goto err;
229 }
230
231 K = &kq;
232 }
233 else
234 {
235 K = &k;
236 }
237 if (!dsa->meth->bn_mod_exp(dsa, r,dsa->g,K,dsa->p,ctx,
238 (BN_MONT_CTX *)dsa->method_mont_p)) goto err; 210 (BN_MONT_CTX *)dsa->method_mont_p)) goto err;
239 if (!BN_mod(r,r,dsa->q,ctx)) goto err; 211 if (!BN_mod(r,r,dsa->q,ctx)) goto err;
240 212
@@ -257,7 +229,6 @@ err:
257 if (ctx_in == NULL) BN_CTX_free(ctx); 229 if (ctx_in == NULL) BN_CTX_free(ctx);
258 if (kinv != NULL) BN_clear_free(kinv); 230 if (kinv != NULL) BN_clear_free(kinv);
259 BN_clear_free(&k); 231 BN_clear_free(&k);
260 BN_clear_free(&kq);
261 return(ret); 232 return(ret);
262 } 233 }
263 234
@@ -304,15 +275,13 @@ static int dsa_do_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig,
304 /* u2 = r * w mod q */ 275 /* u2 = r * w mod q */
305 if (!BN_mod_mul(&u2,sig->r,&u2,dsa->q,ctx)) goto err; 276 if (!BN_mod_mul(&u2,sig->r,&u2,dsa->q,ctx)) goto err;
306 277
307 278 if ((dsa->method_mont_p == NULL) && (dsa->flags & DSA_FLAG_CACHE_MONT_P))
308 if (dsa->flags & DSA_FLAG_CACHE_MONT_P)
309 { 279 {
310 mont = BN_MONT_CTX_set_locked( 280 if ((dsa->method_mont_p=(char *)BN_MONT_CTX_new()) != NULL)
311 (BN_MONT_CTX **)&dsa->method_mont_p, 281 if (!BN_MONT_CTX_set((BN_MONT_CTX *)dsa->method_mont_p,
312 CRYPTO_LOCK_DSA, dsa->p, ctx); 282 dsa->p,ctx)) goto err;
313 if (!mont)
314 goto err;
315 } 283 }
284 mont=(BN_MONT_CTX *)dsa->method_mont_p;
316 285
317#if 0 286#if 0
318 { 287 {
diff --git a/src/lib/libssl/src/crypto/dsa/dsa_sign.c b/src/lib/libssl/src/crypto/dsa/dsa_sign.c
index 37c65efb20..3c9753bac3 100644
--- a/src/lib/libssl/src/crypto/dsa/dsa_sign.c
+++ b/src/lib/libssl/src/crypto/dsa/dsa_sign.c
@@ -72,8 +72,7 @@
72DSA_SIG * DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa) 72DSA_SIG * DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
73 { 73 {
74#ifdef OPENSSL_FIPS 74#ifdef OPENSSL_FIPS
75 if(FIPS_mode() && !(dsa->flags & DSA_FLAG_FIPS_EXTERNAL_METHOD_ALLOW) 75 if(FIPS_mode() && !FIPS_dsa_check(dsa))
76 && !FIPS_dsa_check(dsa))
77 return NULL; 76 return NULL;
78#endif 77#endif
79 return dsa->meth->dsa_do_sign(dgst, dlen, dsa); 78 return dsa->meth->dsa_do_sign(dgst, dlen, dsa);
@@ -97,8 +96,7 @@ int DSA_sign(int type, const unsigned char *dgst, int dlen, unsigned char *sig,
97int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp) 96int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp)
98 { 97 {
99#ifdef OPENSSL_FIPS 98#ifdef OPENSSL_FIPS
100 if(FIPS_mode() && !(dsa->flags & DSA_FLAG_FIPS_EXTERNAL_METHOD_ALLOW) 99 if(FIPS_mode() && !FIPS_dsa_check(dsa))
101 && !FIPS_dsa_check(dsa))
102 return 0; 100 return 0;
103#endif 101#endif
104 return dsa->meth->dsa_sign_setup(dsa, ctx_in, kinvp, rp); 102 return dsa->meth->dsa_sign_setup(dsa, ctx_in, kinvp, rp);
diff --git a/src/lib/libssl/src/crypto/dsa/dsa_vrf.c b/src/lib/libssl/src/crypto/dsa/dsa_vrf.c
index c9784bed48..8ef0c45025 100644
--- a/src/lib/libssl/src/crypto/dsa/dsa_vrf.c
+++ b/src/lib/libssl/src/crypto/dsa/dsa_vrf.c
@@ -74,8 +74,7 @@ int DSA_do_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig,
74 DSA *dsa) 74 DSA *dsa)
75 { 75 {
76#ifdef OPENSSL_FIPS 76#ifdef OPENSSL_FIPS
77 if(FIPS_mode() && !(dsa->flags & DSA_FLAG_FIPS_EXTERNAL_METHOD_ALLOW) 77 if(FIPS_mode() && !FIPS_dsa_check(dsa))
78 && !FIPS_dsa_check(dsa))
79 return -1; 78 return -1;
80#endif 79#endif
81 return dsa->meth->dsa_do_verify(dgst, dgst_len, sig, dsa); 80 return dsa->meth->dsa_do_verify(dgst, dgst_len, sig, dsa);
diff --git a/src/lib/libssl/src/crypto/dsa/dsatest.c b/src/lib/libssl/src/crypto/dsa/dsatest.c
index 55a3756aff..4734ce4af8 100644
--- a/src/lib/libssl/src/crypto/dsa/dsatest.c
+++ b/src/lib/libssl/src/crypto/dsa/dsatest.c
@@ -194,19 +194,10 @@ int main(int argc, char **argv)
194 BIO_printf(bio_err,"g value is wrong\n"); 194 BIO_printf(bio_err,"g value is wrong\n");
195 goto end; 195 goto end;
196 } 196 }
197
198 dsa->flags |= DSA_FLAG_NO_EXP_CONSTTIME;
199 DSA_generate_key(dsa); 197 DSA_generate_key(dsa);
200 DSA_sign(0, str1, 20, sig, &siglen, dsa); 198 DSA_sign(0, str1, 20, sig, &siglen, dsa);
201 if (DSA_verify(0, str1, 20, sig, siglen, dsa) == 1) 199 if (DSA_verify(0, str1, 20, sig, siglen, dsa) == 1)
202 ret=1; 200 ret=1;
203
204 dsa->flags &= ~DSA_FLAG_NO_EXP_CONSTTIME;
205 DSA_generate_key(dsa);
206 DSA_sign(0, str1, 20, sig, &siglen, dsa);
207 if (DSA_verify(0, str1, 20, sig, siglen, dsa) == 1)
208 ret=1;
209
210end: 201end:
211 if (!ret) 202 if (!ret)
212 ERR_print_errors(bio_err); 203 ERR_print_errors(bio_err);
diff --git a/src/lib/libssl/src/crypto/dso/Makefile.ssl b/src/lib/libssl/src/crypto/dso/Makefile.ssl
new file mode 100644
index 0000000000..c0449d184e
--- /dev/null
+++ b/src/lib/libssl/src/crypto/dso/Makefile.ssl
@@ -0,0 +1,142 @@
1#
2# SSLeay/crypto/dso/Makefile
3#
4
5DIR= dso
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST=
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC= dso_dl.c dso_dlfcn.c dso_err.c dso_lib.c dso_null.c \
27 dso_openssl.c dso_win32.c dso_vms.c
28LIBOBJ= dso_dl.o dso_dlfcn.o dso_err.o dso_lib.o dso_null.o \
29 dso_openssl.o dso_win32.o dso_vms.o
30
31SRC= $(LIBSRC)
32
33EXHEADER= dso.h
34HEADER= $(EXHEADER)
35
36ALL= $(GENERAL) $(SRC) $(HEADER)
37
38top:
39 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
40
41all: lib
42
43lib: $(LIBOBJ)
44 $(AR) $(LIB) $(LIBOBJ)
45 $(RANLIB) $(LIB) || echo Never mind.
46 @touch lib
47
48files:
49 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
50
51links:
52 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
53 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
54 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
55 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
56
57install:
58 @for i in $(EXHEADER) ; \
59 do \
60 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
61 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
62 done;
63
64tags:
65 ctags $(SRC)
66
67tests:
68
69lint:
70 lint -DLINT $(INCLUDES) $(SRC)>fluff
71
72depend:
73 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
74
75dclean:
76 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
77 mv -f Makefile.new $(MAKEFILE)
78
79clean:
80 rm -f *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
81
82# DO NOT DELETE THIS LINE -- make depend depends on it.
83
84dso_dl.o: ../../e_os.h ../../include/openssl/bio.h
85dso_dl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
86dso_dl.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
87dso_dl.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
88dso_dl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
89dso_dl.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
90dso_dl.o: ../../include/openssl/symhacks.h ../cryptlib.h dso_dl.c
91dso_dlfcn.o: ../../e_os.h ../../include/openssl/bio.h
92dso_dlfcn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
93dso_dlfcn.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
94dso_dlfcn.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
95dso_dlfcn.o: ../../include/openssl/opensslconf.h
96dso_dlfcn.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
97dso_dlfcn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
98dso_dlfcn.o: ../cryptlib.h dso_dlfcn.c
99dso_err.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
100dso_err.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
101dso_err.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
102dso_err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
103dso_err.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
104dso_err.o: ../../include/openssl/symhacks.h dso_err.c
105dso_lib.o: ../../e_os.h ../../include/openssl/bio.h
106dso_lib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
107dso_lib.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
108dso_lib.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
109dso_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
110dso_lib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
111dso_lib.o: ../../include/openssl/symhacks.h ../cryptlib.h dso_lib.c
112dso_null.o: ../../e_os.h ../../include/openssl/bio.h
113dso_null.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
114dso_null.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
115dso_null.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
116dso_null.o: ../../include/openssl/opensslconf.h
117dso_null.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
118dso_null.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
119dso_null.o: ../cryptlib.h dso_null.c
120dso_openssl.o: ../../e_os.h ../../include/openssl/bio.h
121dso_openssl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
122dso_openssl.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
123dso_openssl.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
124dso_openssl.o: ../../include/openssl/opensslconf.h
125dso_openssl.o: ../../include/openssl/opensslv.h
126dso_openssl.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
127dso_openssl.o: ../../include/openssl/symhacks.h ../cryptlib.h dso_openssl.c
128dso_vms.o: ../../e_os.h ../../include/openssl/bio.h
129dso_vms.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
130dso_vms.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
131dso_vms.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
132dso_vms.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
133dso_vms.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
134dso_vms.o: ../../include/openssl/symhacks.h ../cryptlib.h dso_vms.c
135dso_win32.o: ../../e_os.h ../../include/openssl/bio.h
136dso_win32.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
137dso_win32.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
138dso_win32.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
139dso_win32.o: ../../include/openssl/opensslconf.h
140dso_win32.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
141dso_win32.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
142dso_win32.o: ../cryptlib.h dso_win32.c
diff --git a/src/lib/libssl/src/crypto/dso/dso_dl.c b/src/lib/libssl/src/crypto/dso/dso_dl.c
index f7b4dfc0c3..79d2cb4d8c 100644
--- a/src/lib/libssl/src/crypto/dso/dso_dl.c
+++ b/src/lib/libssl/src/crypto/dso/dso_dl.c
@@ -126,8 +126,7 @@ static int dl_load(DSO *dso)
126 DSOerr(DSO_F_DL_LOAD,DSO_R_NO_FILENAME); 126 DSOerr(DSO_F_DL_LOAD,DSO_R_NO_FILENAME);
127 goto err; 127 goto err;
128 } 128 }
129 ptr = shl_load(filename, BIND_IMMEDIATE | 129 ptr = shl_load(filename, BIND_IMMEDIATE|DYNAMIC_PATH, 0L);
130 (dso->flags&DSO_FLAG_NO_NAME_TRANSLATION?0:DYNAMIC_PATH), 0L);
131 if(ptr == NULL) 130 if(ptr == NULL)
132 { 131 {
133 DSOerr(DSO_F_DL_LOAD,DSO_R_LOAD_FAILED); 132 DSOerr(DSO_F_DL_LOAD,DSO_R_LOAD_FAILED);
@@ -282,36 +281,4 @@ static char *dl_name_converter(DSO *dso, const char *filename)
282 return(translated); 281 return(translated);
283 } 282 }
284 283
285#ifdef OPENSSL_FIPS
286static void dl_ref_point(){}
287
288int DSO_pathbyaddr(void *addr,char *path,int sz)
289 {
290 struct shl_descriptor inf;
291 int i,len;
292
293 if (addr == NULL)
294 {
295 union { void(*f)(); void *p; } t = { dl_ref_point };
296 addr = t.p;
297 }
298
299 for (i=-1;shl_get_r(i,&inf)==0;i++)
300 {
301 if (((size_t)addr >= inf.tstart && (size_t)addr < inf.tend) ||
302 ((size_t)addr >= inf.dstart && (size_t)addr < inf.dend))
303 {
304 len = (int)strlen(inf.filename);
305 if (sz <= 0) return len+1;
306 if (len >= sz) len=sz-1;
307 memcpy(path,inf.filename,len);
308 path[len++] = 0;
309 return len;
310 }
311 }
312
313 return -1;
314 }
315#endif
316
317#endif /* DSO_DL */ 284#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 0422a4859a..2e72969431 100644
--- a/src/lib/libssl/src/crypto/dso/dso_dlfcn.c
+++ b/src/lib/libssl/src/crypto/dso/dso_dlfcn.c
@@ -56,10 +56,6 @@
56 * 56 *
57 */ 57 */
58 58
59#ifdef __linux
60#define _GNU_SOURCE
61#endif
62
63#include <stdio.h> 59#include <stdio.h>
64#include "cryptlib.h" 60#include "cryptlib.h"
65#include <openssl/dso.h> 61#include <openssl/dso.h>
@@ -232,7 +228,7 @@ static void *dlfcn_bind_var(DSO *dso, const char *symname)
232static DSO_FUNC_TYPE dlfcn_bind_func(DSO *dso, const char *symname) 228static DSO_FUNC_TYPE dlfcn_bind_func(DSO *dso, const char *symname)
233 { 229 {
234 void *ptr; 230 void *ptr;
235 DSO_FUNC_TYPE sym, *tsym = &sym; 231 DSO_FUNC_TYPE sym;
236 232
237 if((dso == NULL) || (symname == NULL)) 233 if((dso == NULL) || (symname == NULL))
238 { 234 {
@@ -250,7 +246,7 @@ static DSO_FUNC_TYPE dlfcn_bind_func(DSO *dso, const char *symname)
250 DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_NULL_HANDLE); 246 DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_NULL_HANDLE);
251 return(NULL); 247 return(NULL);
252 } 248 }
253 *(void**)(tsym) = dlsym(ptr, symname); 249 sym = (DSO_FUNC_TYPE)dlsym(ptr, symname);
254 if(sym == NULL) 250 if(sym == NULL)
255 { 251 {
256 DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_SYM_FAILURE); 252 DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_SYM_FAILURE);
@@ -285,41 +281,13 @@ static char *dlfcn_name_converter(DSO *dso, const char *filename)
285 if(transform) 281 if(transform)
286 { 282 {
287 if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0) 283 if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0)
288 sprintf(translated, "lib%s.so", filename); 284 snprintf(translated, rsize, "lib%s.so", filename);
289 else 285 else
290 sprintf(translated, "%s.so", filename); 286 snprintf(translated, rsize, "%s.so", filename);
291 } 287 }
292 else 288 else
293 sprintf(translated, "%s", filename); 289 snprintf(translated, rsize, "%s", filename);
294 return(translated); 290 return(translated);
295 } 291 }
296 292
297#ifdef OPENSSL_FIPS
298static void dlfcn_ref_point(){}
299
300int DSO_pathbyaddr(void *addr,char *path,int sz)
301 {
302 Dl_info dli;
303 int len;
304
305 if (addr == NULL)
306 {
307 union { void(*f)(void); void *p; } t = { dlfcn_ref_point };
308 addr = t.p;
309 }
310
311 if (dladdr(addr,&dli))
312 {
313 len = (int)strlen(dli.dli_fname);
314 if (sz <= 0) return len+1;
315 if (len >= sz) len=sz-1;
316 memcpy(path,dli.dli_fname,len);
317 path[len++]=0;
318 return len;
319 }
320
321 ERR_add_error_data(4, "dlfcn_pathbyaddr(): ", dlerror());
322 return -1;
323 }
324#endif
325#endif /* DSO_DLFCN */ 293#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 581677cc36..cf452de1aa 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 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
@@ -64,60 +64,56 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_DSO,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_DSO,0,reason)
70
71static ERR_STRING_DATA DSO_str_functs[]= 67static ERR_STRING_DATA DSO_str_functs[]=
72 { 68 {
73{ERR_FUNC(DSO_F_DLFCN_BIND_FUNC), "DLFCN_BIND_FUNC"}, 69{ERR_PACK(0,DSO_F_DLFCN_BIND_FUNC,0), "DLFCN_BIND_FUNC"},
74{ERR_FUNC(DSO_F_DLFCN_BIND_VAR), "DLFCN_BIND_VAR"}, 70{ERR_PACK(0,DSO_F_DLFCN_BIND_VAR,0), "DLFCN_BIND_VAR"},
75{ERR_FUNC(DSO_F_DLFCN_LOAD), "DLFCN_LOAD"}, 71{ERR_PACK(0,DSO_F_DLFCN_LOAD,0), "DLFCN_LOAD"},
76{ERR_FUNC(DSO_F_DLFCN_NAME_CONVERTER), "DLFCN_NAME_CONVERTER"}, 72{ERR_PACK(0,DSO_F_DLFCN_NAME_CONVERTER,0), "DLFCN_NAME_CONVERTER"},
77{ERR_FUNC(DSO_F_DLFCN_UNLOAD), "DLFCN_UNLOAD"}, 73{ERR_PACK(0,DSO_F_DLFCN_UNLOAD,0), "DLFCN_UNLOAD"},
78{ERR_FUNC(DSO_F_DL_BIND_FUNC), "DL_BIND_FUNC"}, 74{ERR_PACK(0,DSO_F_DL_BIND_FUNC,0), "DL_BIND_FUNC"},
79{ERR_FUNC(DSO_F_DL_BIND_VAR), "DL_BIND_VAR"}, 75{ERR_PACK(0,DSO_F_DL_BIND_VAR,0), "DL_BIND_VAR"},
80{ERR_FUNC(DSO_F_DL_LOAD), "DL_LOAD"}, 76{ERR_PACK(0,DSO_F_DL_LOAD,0), "DL_LOAD"},
81{ERR_FUNC(DSO_F_DL_NAME_CONVERTER), "DL_NAME_CONVERTER"}, 77{ERR_PACK(0,DSO_F_DL_NAME_CONVERTER,0), "DL_NAME_CONVERTER"},
82{ERR_FUNC(DSO_F_DL_UNLOAD), "DL_UNLOAD"}, 78{ERR_PACK(0,DSO_F_DL_UNLOAD,0), "DL_UNLOAD"},
83{ERR_FUNC(DSO_F_DSO_BIND_FUNC), "DSO_bind_func"}, 79{ERR_PACK(0,DSO_F_DSO_BIND_FUNC,0), "DSO_bind_func"},
84{ERR_FUNC(DSO_F_DSO_BIND_VAR), "DSO_bind_var"}, 80{ERR_PACK(0,DSO_F_DSO_BIND_VAR,0), "DSO_bind_var"},
85{ERR_FUNC(DSO_F_DSO_CONVERT_FILENAME), "DSO_convert_filename"}, 81{ERR_PACK(0,DSO_F_DSO_CONVERT_FILENAME,0), "DSO_convert_filename"},
86{ERR_FUNC(DSO_F_DSO_CTRL), "DSO_ctrl"}, 82{ERR_PACK(0,DSO_F_DSO_CTRL,0), "DSO_ctrl"},
87{ERR_FUNC(DSO_F_DSO_FREE), "DSO_free"}, 83{ERR_PACK(0,DSO_F_DSO_FREE,0), "DSO_free"},
88{ERR_FUNC(DSO_F_DSO_GET_FILENAME), "DSO_get_filename"}, 84{ERR_PACK(0,DSO_F_DSO_GET_FILENAME,0), "DSO_get_filename"},
89{ERR_FUNC(DSO_F_DSO_GET_LOADED_FILENAME), "DSO_get_loaded_filename"}, 85{ERR_PACK(0,DSO_F_DSO_GET_LOADED_FILENAME,0), "DSO_get_loaded_filename"},
90{ERR_FUNC(DSO_F_DSO_LOAD), "DSO_load"}, 86{ERR_PACK(0,DSO_F_DSO_LOAD,0), "DSO_load"},
91{ERR_FUNC(DSO_F_DSO_NEW_METHOD), "DSO_new_method"}, 87{ERR_PACK(0,DSO_F_DSO_NEW_METHOD,0), "DSO_new_method"},
92{ERR_FUNC(DSO_F_DSO_SET_FILENAME), "DSO_set_filename"}, 88{ERR_PACK(0,DSO_F_DSO_SET_FILENAME,0), "DSO_set_filename"},
93{ERR_FUNC(DSO_F_DSO_SET_NAME_CONVERTER), "DSO_set_name_converter"}, 89{ERR_PACK(0,DSO_F_DSO_SET_NAME_CONVERTER,0), "DSO_set_name_converter"},
94{ERR_FUNC(DSO_F_DSO_UP_REF), "DSO_up_ref"}, 90{ERR_PACK(0,DSO_F_DSO_UP_REF,0), "DSO_up_ref"},
95{ERR_FUNC(DSO_F_VMS_BIND_VAR), "VMS_BIND_VAR"}, 91{ERR_PACK(0,DSO_F_VMS_BIND_VAR,0), "VMS_BIND_VAR"},
96{ERR_FUNC(DSO_F_VMS_LOAD), "VMS_LOAD"}, 92{ERR_PACK(0,DSO_F_VMS_LOAD,0), "VMS_LOAD"},
97{ERR_FUNC(DSO_F_VMS_UNLOAD), "VMS_UNLOAD"}, 93{ERR_PACK(0,DSO_F_VMS_UNLOAD,0), "VMS_UNLOAD"},
98{ERR_FUNC(DSO_F_WIN32_BIND_FUNC), "WIN32_BIND_FUNC"}, 94{ERR_PACK(0,DSO_F_WIN32_BIND_FUNC,0), "WIN32_BIND_FUNC"},
99{ERR_FUNC(DSO_F_WIN32_BIND_VAR), "WIN32_BIND_VAR"}, 95{ERR_PACK(0,DSO_F_WIN32_BIND_VAR,0), "WIN32_BIND_VAR"},
100{ERR_FUNC(DSO_F_WIN32_LOAD), "WIN32_LOAD"}, 96{ERR_PACK(0,DSO_F_WIN32_LOAD,0), "WIN32_LOAD"},
101{ERR_FUNC(DSO_F_WIN32_NAME_CONVERTER), "WIN32_NAME_CONVERTER"}, 97{ERR_PACK(0,DSO_F_WIN32_NAME_CONVERTER,0), "WIN32_NAME_CONVERTER"},
102{ERR_FUNC(DSO_F_WIN32_UNLOAD), "WIN32_UNLOAD"}, 98{ERR_PACK(0,DSO_F_WIN32_UNLOAD,0), "WIN32_UNLOAD"},
103{0,NULL} 99{0,NULL}
104 }; 100 };
105 101
106static ERR_STRING_DATA DSO_str_reasons[]= 102static ERR_STRING_DATA DSO_str_reasons[]=
107 { 103 {
108{ERR_REASON(DSO_R_CTRL_FAILED) ,"control command failed"}, 104{DSO_R_CTRL_FAILED ,"control command failed"},
109{ERR_REASON(DSO_R_DSO_ALREADY_LOADED) ,"dso already loaded"}, 105{DSO_R_DSO_ALREADY_LOADED ,"dso already loaded"},
110{ERR_REASON(DSO_R_FILENAME_TOO_BIG) ,"filename too big"}, 106{DSO_R_FILENAME_TOO_BIG ,"filename too big"},
111{ERR_REASON(DSO_R_FINISH_FAILED) ,"cleanup method function failed"}, 107{DSO_R_FINISH_FAILED ,"cleanup method function failed"},
112{ERR_REASON(DSO_R_LOAD_FAILED) ,"could not load the shared library"}, 108{DSO_R_LOAD_FAILED ,"could not load the shared library"},
113{ERR_REASON(DSO_R_NAME_TRANSLATION_FAILED),"name translation failed"}, 109{DSO_R_NAME_TRANSLATION_FAILED ,"name translation failed"},
114{ERR_REASON(DSO_R_NO_FILENAME) ,"no filename"}, 110{DSO_R_NO_FILENAME ,"no filename"},
115{ERR_REASON(DSO_R_NULL_HANDLE) ,"a null shared library handle was used"}, 111{DSO_R_NULL_HANDLE ,"a null shared library handle was used"},
116{ERR_REASON(DSO_R_SET_FILENAME_FAILED) ,"set filename failed"}, 112{DSO_R_SET_FILENAME_FAILED ,"set filename failed"},
117{ERR_REASON(DSO_R_STACK_ERROR) ,"the meth_data stack is corrupt"}, 113{DSO_R_STACK_ERROR ,"the meth_data stack is corrupt"},
118{ERR_REASON(DSO_R_SYM_FAILURE) ,"could not bind to the requested symbol name"}, 114{DSO_R_SYM_FAILURE ,"could not bind to the requested symbol name"},
119{ERR_REASON(DSO_R_UNLOAD_FAILED) ,"could not unload the shared library"}, 115{DSO_R_UNLOAD_FAILED ,"could not unload the shared library"},
120{ERR_REASON(DSO_R_UNSUPPORTED) ,"functionality not supported"}, 116{DSO_R_UNSUPPORTED ,"functionality not supported"},
121{0,NULL} 117{0,NULL}
122 }; 118 };
123 119
@@ -131,8 +127,8 @@ void ERR_load_DSO_strings(void)
131 { 127 {
132 init=0; 128 init=0;
133#ifndef OPENSSL_NO_ERR 129#ifndef OPENSSL_NO_ERR
134 ERR_load_strings(0,DSO_str_functs); 130 ERR_load_strings(ERR_LIB_DSO,DSO_str_functs);
135 ERR_load_strings(0,DSO_str_reasons); 131 ERR_load_strings(ERR_LIB_DSO,DSO_str_reasons);
136#endif 132#endif
137 133
138 } 134 }
diff --git a/src/lib/libssl/src/crypto/dso/dso_win32.c b/src/lib/libssl/src/crypto/dso/dso_win32.c
index cc4ac68696..3fa90eb27c 100644
--- a/src/lib/libssl/src/crypto/dso/dso_win32.c
+++ b/src/lib/libssl/src/crypto/dso/dso_win32.c
@@ -68,25 +68,6 @@ DSO_METHOD *DSO_METHOD_win32(void)
68 } 68 }
69#else 69#else
70 70
71#ifdef _WIN32_WCE
72# if _WIN32_WCE < 300
73static FARPROC GetProcAddressA(HMODULE hModule,LPCSTR lpProcName)
74 {
75 WCHAR lpProcNameW[64];
76 int i;
77
78 for (i=0;lpProcName[i] && i<64;i++)
79 lpProcNameW[i] = (WCHAR)lpProcName[i];
80 if (i==64) return NULL;
81 lpProcNameW[i] = 0;
82
83 return GetProcAddressW(hModule,lpProcNameW);
84 }
85# endif
86# undef GetProcAddress
87# define GetProcAddress GetProcAddressA
88#endif
89
90/* Part of the hack in "win32_load" ... */ 71/* Part of the hack in "win32_load" ... */
91#define DSO_MAX_TRANSLATED_SIZE 256 72#define DSO_MAX_TRANSLATED_SIZE 256
92 73
@@ -141,7 +122,7 @@ static int win32_load(DSO *dso)
141 DSOerr(DSO_F_WIN32_LOAD,DSO_R_NO_FILENAME); 122 DSOerr(DSO_F_WIN32_LOAD,DSO_R_NO_FILENAME);
142 goto err; 123 goto err;
143 } 124 }
144 h = LoadLibraryA(filename); 125 h = LoadLibrary(filename);
145 if(h == NULL) 126 if(h == NULL)
146 { 127 {
147 DSOerr(DSO_F_WIN32_LOAD,DSO_R_LOAD_FAILED); 128 DSOerr(DSO_F_WIN32_LOAD,DSO_R_LOAD_FAILED);
diff --git a/src/lib/libssl/src/crypto/ec/Makefile.ssl b/src/lib/libssl/src/crypto/ec/Makefile.ssl
new file mode 100644
index 0000000000..a2805c47a2
--- /dev/null
+++ b/src/lib/libssl/src/crypto/ec/Makefile.ssl
@@ -0,0 +1,128 @@
1#
2# crypto/ec/Makefile
3#
4
5DIR= ec
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST=ectest.c
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC= ec_lib.c ecp_smpl.c ecp_mont.c ecp_recp.c ecp_nist.c ec_cvt.c ec_mult.c \
27 ec_err.c
28
29LIBOBJ= ec_lib.o ecp_smpl.o ecp_mont.o ecp_recp.o ecp_nist.o ec_cvt.o ec_mult.o \
30 ec_err.o
31
32SRC= $(LIBSRC)
33
34EXHEADER= ec.h
35HEADER= ec_lcl.h $(EXHEADER)
36
37ALL= $(GENERAL) $(SRC) $(HEADER)
38
39top:
40 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
41
42all: lib
43
44lib: $(LIBOBJ)
45 $(AR) $(LIB) $(LIBOBJ)
46 $(RANLIB) $(LIB) || echo Never mind.
47 @touch lib
48
49files:
50 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
51
52links:
53 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
54 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
55 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
56 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
57
58install:
59 @for i in $(EXHEADER) ; \
60 do \
61 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
62 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
63 done;
64
65tags:
66 ctags $(SRC)
67
68tests:
69
70lint:
71 lint -DLINT $(INCLUDES) $(SRC)>fluff
72
73depend:
74 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
75
76dclean:
77 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
78 mv -f Makefile.new $(MAKEFILE)
79
80clean:
81 rm -f *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
82
83# DO NOT DELETE THIS LINE -- make depend depends on it.
84
85ec_cvt.o: ../../include/openssl/bn.h ../../include/openssl/e_os2.h
86ec_cvt.o: ../../include/openssl/ec.h ../../include/openssl/opensslconf.h
87ec_cvt.o: ../../include/openssl/symhacks.h ec_cvt.c ec_lcl.h
88ec_err.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
89ec_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
90ec_err.o: ../../include/openssl/ec.h ../../include/openssl/err.h
91ec_err.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
92ec_err.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
93ec_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
94ec_err.o: ec_err.c
95ec_lib.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
96ec_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
97ec_lib.o: ../../include/openssl/ec.h ../../include/openssl/err.h
98ec_lib.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
99ec_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
100ec_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
101ec_lib.o: ec_lcl.h ec_lib.c
102ec_mult.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
103ec_mult.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
104ec_mult.o: ../../include/openssl/ec.h ../../include/openssl/err.h
105ec_mult.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
106ec_mult.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
107ec_mult.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
108ec_mult.o: ec_lcl.h ec_mult.c
109ecp_mont.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
110ecp_mont.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
111ecp_mont.o: ../../include/openssl/ec.h ../../include/openssl/err.h
112ecp_mont.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
113ecp_mont.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
114ecp_mont.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
115ecp_mont.o: ec_lcl.h ecp_mont.c
116ecp_nist.o: ../../include/openssl/bn.h ../../include/openssl/e_os2.h
117ecp_nist.o: ../../include/openssl/ec.h ../../include/openssl/opensslconf.h
118ecp_nist.o: ../../include/openssl/symhacks.h ec_lcl.h ecp_nist.c
119ecp_recp.o: ../../include/openssl/bn.h ../../include/openssl/e_os2.h
120ecp_recp.o: ../../include/openssl/ec.h ../../include/openssl/opensslconf.h
121ecp_recp.o: ../../include/openssl/symhacks.h ec_lcl.h ecp_recp.c
122ecp_smpl.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
123ecp_smpl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
124ecp_smpl.o: ../../include/openssl/ec.h ../../include/openssl/err.h
125ecp_smpl.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
126ecp_smpl.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
127ecp_smpl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
128ecp_smpl.o: ec_lcl.h ecp_smpl.c
diff --git a/src/lib/libssl/src/crypto/ec/ec_err.c b/src/lib/libssl/src/crypto/ec/ec_err.c
index 5b70f94382..d37b6aba87 100644
--- a/src/lib/libssl/src/crypto/ec/ec_err.c
+++ b/src/lib/libssl/src/crypto/ec/ec_err.c
@@ -1,6 +1,6 @@
1/* crypto/ec/ec_err.c */ 1/* crypto/ec/ec_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999 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
@@ -64,74 +64,70 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_EC,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_EC,0,reason)
70
71static ERR_STRING_DATA EC_str_functs[]= 67static ERR_STRING_DATA EC_str_functs[]=
72 { 68 {
73{ERR_FUNC(EC_F_COMPUTE_WNAF), "COMPUTE_WNAF"}, 69{ERR_PACK(0,EC_F_COMPUTE_WNAF,0), "COMPUTE_WNAF"},
74{ERR_FUNC(EC_F_EC_GFP_MONT_FIELD_DECODE), "ec_GFp_mont_field_decode"}, 70{ERR_PACK(0,EC_F_EC_GFP_MONT_FIELD_DECODE,0), "ec_GFp_mont_field_decode"},
75{ERR_FUNC(EC_F_EC_GFP_MONT_FIELD_ENCODE), "ec_GFp_mont_field_encode"}, 71{ERR_PACK(0,EC_F_EC_GFP_MONT_FIELD_ENCODE,0), "ec_GFp_mont_field_encode"},
76{ERR_FUNC(EC_F_EC_GFP_MONT_FIELD_MUL), "ec_GFp_mont_field_mul"}, 72{ERR_PACK(0,EC_F_EC_GFP_MONT_FIELD_MUL,0), "ec_GFp_mont_field_mul"},
77{ERR_FUNC(EC_F_EC_GFP_MONT_FIELD_SQR), "ec_GFp_mont_field_sqr"}, 73{ERR_PACK(0,EC_F_EC_GFP_MONT_FIELD_SQR,0), "ec_GFp_mont_field_sqr"},
78{ERR_FUNC(EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE_GFP), "ec_GFp_simple_group_set_curve_GFp"}, 74{ERR_PACK(0,EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE_GFP,0), "ec_GFp_simple_group_set_curve_GFp"},
79{ERR_FUNC(EC_F_EC_GFP_SIMPLE_GROUP_SET_GENERATOR), "ec_GFp_simple_group_set_generator"}, 75{ERR_PACK(0,EC_F_EC_GFP_SIMPLE_GROUP_SET_GENERATOR,0), "ec_GFp_simple_group_set_generator"},
80{ERR_FUNC(EC_F_EC_GFP_SIMPLE_MAKE_AFFINE), "ec_GFp_simple_make_affine"}, 76{ERR_PACK(0,EC_F_EC_GFP_SIMPLE_MAKE_AFFINE,0), "ec_GFp_simple_make_affine"},
81{ERR_FUNC(EC_F_EC_GFP_SIMPLE_OCT2POINT), "ec_GFp_simple_oct2point"}, 77{ERR_PACK(0,EC_F_EC_GFP_SIMPLE_OCT2POINT,0), "ec_GFp_simple_oct2point"},
82{ERR_FUNC(EC_F_EC_GFP_SIMPLE_POINT2OCT), "ec_GFp_simple_point2oct"}, 78{ERR_PACK(0,EC_F_EC_GFP_SIMPLE_POINT2OCT,0), "ec_GFp_simple_point2oct"},
83{ERR_FUNC(EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE), "ec_GFp_simple_points_make_affine"}, 79{ERR_PACK(0,EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE,0), "ec_GFp_simple_points_make_affine"},
84{ERR_FUNC(EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES_GFP), "ec_GFp_simple_point_get_affine_coordinates_GFp"}, 80{ERR_PACK(0,EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES_GFP,0), "ec_GFp_simple_point_get_affine_coordinates_GFp"},
85{ERR_FUNC(EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES_GFP), "ec_GFp_simple_point_set_affine_coordinates_GFp"}, 81{ERR_PACK(0,EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES_GFP,0), "ec_GFp_simple_point_set_affine_coordinates_GFp"},
86{ERR_FUNC(EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES_GFP), "ec_GFp_simple_set_compressed_coordinates_GFp"}, 82{ERR_PACK(0,EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES_GFP,0), "ec_GFp_simple_set_compressed_coordinates_GFp"},
87{ERR_FUNC(EC_F_EC_GROUP_COPY), "EC_GROUP_copy"}, 83{ERR_PACK(0,EC_F_EC_GROUP_COPY,0), "EC_GROUP_copy"},
88{ERR_FUNC(EC_F_EC_GROUP_GET0_GENERATOR), "EC_GROUP_get0_generator"}, 84{ERR_PACK(0,EC_F_EC_GROUP_GET0_GENERATOR,0), "EC_GROUP_get0_generator"},
89{ERR_FUNC(EC_F_EC_GROUP_GET_COFACTOR), "EC_GROUP_get_cofactor"}, 85{ERR_PACK(0,EC_F_EC_GROUP_GET_COFACTOR,0), "EC_GROUP_get_cofactor"},
90{ERR_FUNC(EC_F_EC_GROUP_GET_CURVE_GFP), "EC_GROUP_get_curve_GFp"}, 86{ERR_PACK(0,EC_F_EC_GROUP_GET_CURVE_GFP,0), "EC_GROUP_get_curve_GFp"},
91{ERR_FUNC(EC_F_EC_GROUP_GET_ORDER), "EC_GROUP_get_order"}, 87{ERR_PACK(0,EC_F_EC_GROUP_GET_ORDER,0), "EC_GROUP_get_order"},
92{ERR_FUNC(EC_F_EC_GROUP_NEW), "EC_GROUP_new"}, 88{ERR_PACK(0,EC_F_EC_GROUP_NEW,0), "EC_GROUP_new"},
93{ERR_FUNC(EC_F_EC_GROUP_PRECOMPUTE_MULT), "EC_GROUP_precompute_mult"}, 89{ERR_PACK(0,EC_F_EC_GROUP_PRECOMPUTE_MULT,0), "EC_GROUP_precompute_mult"},
94{ERR_FUNC(EC_F_EC_GROUP_SET_CURVE_GFP), "EC_GROUP_set_curve_GFp"}, 90{ERR_PACK(0,EC_F_EC_GROUP_SET_CURVE_GFP,0), "EC_GROUP_set_curve_GFp"},
95{ERR_FUNC(EC_F_EC_GROUP_SET_EXTRA_DATA), "EC_GROUP_set_extra_data"}, 91{ERR_PACK(0,EC_F_EC_GROUP_SET_EXTRA_DATA,0), "EC_GROUP_set_extra_data"},
96{ERR_FUNC(EC_F_EC_GROUP_SET_GENERATOR), "EC_GROUP_set_generator"}, 92{ERR_PACK(0,EC_F_EC_GROUP_SET_GENERATOR,0), "EC_GROUP_set_generator"},
97{ERR_FUNC(EC_F_EC_POINTS_MAKE_AFFINE), "EC_POINTs_make_affine"}, 93{ERR_PACK(0,EC_F_EC_POINTS_MAKE_AFFINE,0), "EC_POINTs_make_affine"},
98{ERR_FUNC(EC_F_EC_POINTS_MUL), "EC_POINTs_mul"}, 94{ERR_PACK(0,EC_F_EC_POINTS_MUL,0), "EC_POINTs_mul"},
99{ERR_FUNC(EC_F_EC_POINT_ADD), "EC_POINT_add"}, 95{ERR_PACK(0,EC_F_EC_POINT_ADD,0), "EC_POINT_add"},
100{ERR_FUNC(EC_F_EC_POINT_CMP), "EC_POINT_cmp"}, 96{ERR_PACK(0,EC_F_EC_POINT_CMP,0), "EC_POINT_cmp"},
101{ERR_FUNC(EC_F_EC_POINT_COPY), "EC_POINT_copy"}, 97{ERR_PACK(0,EC_F_EC_POINT_COPY,0), "EC_POINT_copy"},
102{ERR_FUNC(EC_F_EC_POINT_DBL), "EC_POINT_dbl"}, 98{ERR_PACK(0,EC_F_EC_POINT_DBL,0), "EC_POINT_dbl"},
103{ERR_FUNC(EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP), "EC_POINT_get_affine_coordinates_GFp"}, 99{ERR_PACK(0,EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP,0), "EC_POINT_get_affine_coordinates_GFp"},
104{ERR_FUNC(EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP), "EC_POINT_get_Jprojective_coordinates_GFp"}, 100{ERR_PACK(0,EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP,0), "EC_POINT_get_Jprojective_coordinates_GFp"},
105{ERR_FUNC(EC_F_EC_POINT_IS_AT_INFINITY), "EC_POINT_is_at_infinity"}, 101{ERR_PACK(0,EC_F_EC_POINT_IS_AT_INFINITY,0), "EC_POINT_is_at_infinity"},
106{ERR_FUNC(EC_F_EC_POINT_IS_ON_CURVE), "EC_POINT_is_on_curve"}, 102{ERR_PACK(0,EC_F_EC_POINT_IS_ON_CURVE,0), "EC_POINT_is_on_curve"},
107{ERR_FUNC(EC_F_EC_POINT_MAKE_AFFINE), "EC_POINT_make_affine"}, 103{ERR_PACK(0,EC_F_EC_POINT_MAKE_AFFINE,0), "EC_POINT_make_affine"},
108{ERR_FUNC(EC_F_EC_POINT_NEW), "EC_POINT_new"}, 104{ERR_PACK(0,EC_F_EC_POINT_NEW,0), "EC_POINT_new"},
109{ERR_FUNC(EC_F_EC_POINT_OCT2POINT), "EC_POINT_oct2point"}, 105{ERR_PACK(0,EC_F_EC_POINT_OCT2POINT,0), "EC_POINT_oct2point"},
110{ERR_FUNC(EC_F_EC_POINT_POINT2OCT), "EC_POINT_point2oct"}, 106{ERR_PACK(0,EC_F_EC_POINT_POINT2OCT,0), "EC_POINT_point2oct"},
111{ERR_FUNC(EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP), "EC_POINT_set_affine_coordinates_GFp"}, 107{ERR_PACK(0,EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP,0), "EC_POINT_set_affine_coordinates_GFp"},
112{ERR_FUNC(EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP), "EC_POINT_set_compressed_coordinates_GFp"}, 108{ERR_PACK(0,EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP,0), "EC_POINT_set_compressed_coordinates_GFp"},
113{ERR_FUNC(EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP), "EC_POINT_set_Jprojective_coordinates_GFp"}, 109{ERR_PACK(0,EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP,0), "EC_POINT_set_Jprojective_coordinates_GFp"},
114{ERR_FUNC(EC_F_EC_POINT_SET_TO_INFINITY), "EC_POINT_set_to_infinity"}, 110{ERR_PACK(0,EC_F_EC_POINT_SET_TO_INFINITY,0), "EC_POINT_set_to_infinity"},
115{ERR_FUNC(EC_F_GFP_MONT_GROUP_SET_CURVE_GFP), "GFP_MONT_GROUP_SET_CURVE_GFP"}, 111{ERR_PACK(0,EC_F_GFP_MONT_GROUP_SET_CURVE_GFP,0), "GFP_MONT_GROUP_SET_CURVE_GFP"},
116{0,NULL} 112{0,NULL}
117 }; 113 };
118 114
119static ERR_STRING_DATA EC_str_reasons[]= 115static ERR_STRING_DATA EC_str_reasons[]=
120 { 116 {
121{ERR_REASON(EC_R_BUFFER_TOO_SMALL) ,"buffer too small"}, 117{EC_R_BUFFER_TOO_SMALL ,"buffer too small"},
122{ERR_REASON(EC_R_INCOMPATIBLE_OBJECTS) ,"incompatible objects"}, 118{EC_R_INCOMPATIBLE_OBJECTS ,"incompatible objects"},
123{ERR_REASON(EC_R_INVALID_ARGUMENT) ,"invalid argument"}, 119{EC_R_INVALID_ARGUMENT ,"invalid argument"},
124{ERR_REASON(EC_R_INVALID_COMPRESSED_POINT),"invalid compressed point"}, 120{EC_R_INVALID_COMPRESSED_POINT ,"invalid compressed point"},
125{ERR_REASON(EC_R_INVALID_COMPRESSION_BIT),"invalid compression bit"}, 121{EC_R_INVALID_COMPRESSION_BIT ,"invalid compression bit"},
126{ERR_REASON(EC_R_INVALID_ENCODING) ,"invalid encoding"}, 122{EC_R_INVALID_ENCODING ,"invalid encoding"},
127{ERR_REASON(EC_R_INVALID_FIELD) ,"invalid field"}, 123{EC_R_INVALID_FIELD ,"invalid field"},
128{ERR_REASON(EC_R_INVALID_FORM) ,"invalid form"}, 124{EC_R_INVALID_FORM ,"invalid form"},
129{ERR_REASON(EC_R_NOT_INITIALIZED) ,"not initialized"}, 125{EC_R_NOT_INITIALIZED ,"not initialized"},
130{ERR_REASON(EC_R_POINT_AT_INFINITY) ,"point at infinity"}, 126{EC_R_POINT_AT_INFINITY ,"point at infinity"},
131{ERR_REASON(EC_R_POINT_IS_NOT_ON_CURVE) ,"point is not on curve"}, 127{EC_R_POINT_IS_NOT_ON_CURVE ,"point is not on curve"},
132{ERR_REASON(EC_R_SLOT_FULL) ,"slot full"}, 128{EC_R_SLOT_FULL ,"slot full"},
133{ERR_REASON(EC_R_UNDEFINED_GENERATOR) ,"undefined generator"}, 129{EC_R_UNDEFINED_GENERATOR ,"undefined generator"},
134{ERR_REASON(EC_R_UNKNOWN_ORDER) ,"unknown order"}, 130{EC_R_UNKNOWN_ORDER ,"unknown order"},
135{0,NULL} 131{0,NULL}
136 }; 132 };
137 133
@@ -145,8 +141,8 @@ void ERR_load_EC_strings(void)
145 { 141 {
146 init=0; 142 init=0;
147#ifndef OPENSSL_NO_ERR 143#ifndef OPENSSL_NO_ERR
148 ERR_load_strings(0,EC_str_functs); 144 ERR_load_strings(ERR_LIB_EC,EC_str_functs);
149 ERR_load_strings(0,EC_str_reasons); 145 ERR_load_strings(ERR_LIB_EC,EC_str_reasons);
150#endif 146#endif
151 147
152 } 148 }
diff --git a/src/lib/libssl/src/crypto/ec/ectest.c b/src/lib/libssl/src/crypto/ec/ectest.c
index 345d3e4289..fcf969f3cf 100644
--- a/src/lib/libssl/src/crypto/ec/ectest.c
+++ b/src/lib/libssl/src/crypto/ec/ectest.c
@@ -197,7 +197,7 @@ int main(int argc, char *argv[])
197 EC_GROUP *tmp; 197 EC_GROUP *tmp;
198 tmp = EC_GROUP_new(EC_GROUP_method_of(group)); 198 tmp = EC_GROUP_new(EC_GROUP_method_of(group));
199 if (!tmp) ABORT; 199 if (!tmp) ABORT;
200 if (!EC_GROUP_copy(tmp, group)); 200 if (!EC_GROUP_copy(tmp, group)) ABORT;
201 EC_GROUP_free(group); 201 EC_GROUP_free(group);
202 group = tmp; 202 group = tmp;
203 } 203 }
diff --git a/src/lib/libssl/src/crypto/engine/Makefile.ssl b/src/lib/libssl/src/crypto/engine/Makefile.ssl
new file mode 100644
index 0000000000..30a4446ff9
--- /dev/null
+++ b/src/lib/libssl/src/crypto/engine/Makefile.ssl
@@ -0,0 +1,538 @@
1#
2# OpenSSL/crypto/engine/Makefile
3#
4
5DIR= engine
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST= enginetest.c
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC= eng_err.c eng_lib.c eng_list.c eng_init.c eng_ctrl.c \
27 eng_table.c eng_pkey.c eng_fat.c eng_all.c \
28 tb_rsa.c tb_dsa.c tb_dh.c tb_rand.c tb_cipher.c tb_digest.c \
29 eng_openssl.c eng_dyn.c eng_cnf.c \
30 hw_atalla.c hw_cswift.c hw_ncipher.c hw_nuron.c hw_ubsec.c \
31 hw_cryptodev.c hw_aep.c hw_sureware.c hw_4758_cca.c
32LIBOBJ= eng_err.o eng_lib.o eng_list.o eng_init.o eng_ctrl.o \
33 eng_table.o eng_pkey.o eng_fat.o eng_all.o \
34 tb_rsa.o tb_dsa.o tb_dh.o tb_rand.o tb_cipher.o tb_digest.o \
35 eng_openssl.o eng_dyn.o eng_cnf.o \
36 hw_atalla.o hw_cswift.o hw_ncipher.o hw_nuron.o hw_ubsec.o \
37 hw_cryptodev.o hw_aep.o hw_sureware.o hw_4758_cca.o
38
39SRC= $(LIBSRC)
40
41EXHEADER= engine.h
42HEADER= $(EXHEADER)
43
44ALL= $(GENERAL) $(SRC) $(HEADER)
45
46top:
47 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
48
49all: lib
50
51lib: $(LIBOBJ)
52 $(AR) $(LIB) $(LIBOBJ)
53 $(RANLIB) $(LIB) || echo Never mind.
54 @touch lib
55
56files:
57 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
58
59links:
60 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
61 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
62 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
63 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
64
65install:
66 @for i in $(EXHEADER) ; \
67 do \
68 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
69 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
70 done;
71
72tags:
73 ctags $(SRC)
74
75errors:
76 $(PERL) $(TOP)/util/mkerr.pl -conf hw.ec \
77 -nostatic -staticloader -write hw_*.c
78
79tests:
80
81lint:
82 lint -DLINT $(INCLUDES) $(SRC)>fluff
83
84depend:
85 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
86
87dclean:
88 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
89 mv -f Makefile.new $(MAKEFILE)
90
91clean:
92 rm -f *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
93
94# DO NOT DELETE THIS LINE -- make depend depends on it.
95
96eng_all.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
97eng_all.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
98eng_all.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
99eng_all.o: ../../include/openssl/e_os2.h ../../include/openssl/engine.h
100eng_all.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
101eng_all.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
102eng_all.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
103eng_all.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
104eng_all.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
105eng_all.o: ../../include/openssl/ui.h eng_all.c eng_int.h
106eng_cnf.o: ../../e_os.h ../../include/openssl/asn1.h
107eng_cnf.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
108eng_cnf.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
109eng_cnf.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
110eng_cnf.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
111eng_cnf.o: ../../include/openssl/engine.h ../../include/openssl/err.h
112eng_cnf.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
113eng_cnf.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
114eng_cnf.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
115eng_cnf.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
116eng_cnf.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
117eng_cnf.o: ../cryptlib.h eng_cnf.c
118eng_ctrl.o: ../../e_os.h ../../include/openssl/asn1.h
119eng_ctrl.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
120eng_ctrl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
121eng_ctrl.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
122eng_ctrl.o: ../../include/openssl/e_os2.h ../../include/openssl/engine.h
123eng_ctrl.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
124eng_ctrl.o: ../../include/openssl/opensslconf.h
125eng_ctrl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
126eng_ctrl.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
127eng_ctrl.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
128eng_ctrl.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
129eng_ctrl.o: ../cryptlib.h eng_ctrl.c eng_int.h
130eng_dyn.o: ../../e_os.h ../../include/openssl/asn1.h
131eng_dyn.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
132eng_dyn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
133eng_dyn.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
134eng_dyn.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
135eng_dyn.o: ../../include/openssl/engine.h ../../include/openssl/err.h
136eng_dyn.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
137eng_dyn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
138eng_dyn.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
139eng_dyn.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
140eng_dyn.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
141eng_dyn.o: ../cryptlib.h eng_dyn.c eng_int.h
142eng_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
143eng_err.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
144eng_err.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
145eng_err.o: ../../include/openssl/e_os2.h ../../include/openssl/engine.h
146eng_err.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
147eng_err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
148eng_err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
149eng_err.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
150eng_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
151eng_err.o: ../../include/openssl/ui.h eng_err.c
152eng_fat.o: ../../e_os.h ../../include/openssl/asn1.h
153eng_fat.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
154eng_fat.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
155eng_fat.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
156eng_fat.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
157eng_fat.o: ../../include/openssl/engine.h ../../include/openssl/err.h
158eng_fat.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
159eng_fat.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
160eng_fat.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
161eng_fat.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
162eng_fat.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
163eng_fat.o: ../cryptlib.h eng_fat.c eng_int.h
164eng_init.o: ../../e_os.h ../../include/openssl/asn1.h
165eng_init.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
166eng_init.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
167eng_init.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
168eng_init.o: ../../include/openssl/e_os2.h ../../include/openssl/engine.h
169eng_init.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
170eng_init.o: ../../include/openssl/opensslconf.h
171eng_init.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
172eng_init.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
173eng_init.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
174eng_init.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
175eng_init.o: ../cryptlib.h eng_init.c eng_int.h
176eng_lib.o: ../../e_os.h ../../include/openssl/asn1.h
177eng_lib.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
178eng_lib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
179eng_lib.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
180eng_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/engine.h
181eng_lib.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
182eng_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
183eng_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
184eng_lib.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
185eng_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
186eng_lib.o: ../../include/openssl/ui.h ../cryptlib.h eng_int.h eng_lib.c
187eng_list.o: ../../e_os.h ../../include/openssl/asn1.h
188eng_list.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
189eng_list.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
190eng_list.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
191eng_list.o: ../../include/openssl/e_os2.h ../../include/openssl/engine.h
192eng_list.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
193eng_list.o: ../../include/openssl/opensslconf.h
194eng_list.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
195eng_list.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
196eng_list.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
197eng_list.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
198eng_list.o: ../cryptlib.h eng_int.h eng_list.c
199eng_openssl.o: ../../e_os.h ../../include/openssl/aes.h
200eng_openssl.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
201eng_openssl.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
202eng_openssl.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
203eng_openssl.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
204eng_openssl.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
205eng_openssl.o: ../../include/openssl/dsa.h ../../include/openssl/dso.h
206eng_openssl.o: ../../include/openssl/e_os2.h ../../include/openssl/engine.h
207eng_openssl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
208eng_openssl.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
209eng_openssl.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
210eng_openssl.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
211eng_openssl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
212eng_openssl.o: ../../include/openssl/opensslconf.h
213eng_openssl.o: ../../include/openssl/opensslv.h
214eng_openssl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
215eng_openssl.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h
216eng_openssl.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
217eng_openssl.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
218eng_openssl.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
219eng_openssl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
220eng_openssl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
221eng_openssl.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
222eng_openssl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
223eng_openssl.o: ../cryptlib.h eng_openssl.c
224eng_pkey.o: ../../e_os.h ../../include/openssl/asn1.h
225eng_pkey.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
226eng_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
227eng_pkey.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
228eng_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/engine.h
229eng_pkey.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
230eng_pkey.o: ../../include/openssl/opensslconf.h
231eng_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
232eng_pkey.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
233eng_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
234eng_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
235eng_pkey.o: ../cryptlib.h eng_int.h eng_pkey.c
236eng_table.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
237eng_table.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
238eng_table.o: ../../include/openssl/bn.h ../../include/openssl/cast.h
239eng_table.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
240eng_table.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
241eng_table.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
242eng_table.o: ../../include/openssl/engine.h ../../include/openssl/err.h
243eng_table.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
244eng_table.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
245eng_table.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
246eng_table.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
247eng_table.o: ../../include/openssl/objects.h
248eng_table.o: ../../include/openssl/opensslconf.h
249eng_table.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
250eng_table.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
251eng_table.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
252eng_table.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
253eng_table.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
254eng_table.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
255eng_table.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
256eng_table.o: eng_int.h eng_table.c
257hw_4758_cca.o: ../../e_os.h ../../include/openssl/aes.h
258hw_4758_cca.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
259hw_4758_cca.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
260hw_4758_cca.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
261hw_4758_cca.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
262hw_4758_cca.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
263hw_4758_cca.o: ../../include/openssl/dsa.h ../../include/openssl/dso.h
264hw_4758_cca.o: ../../include/openssl/e_os2.h ../../include/openssl/engine.h
265hw_4758_cca.o: ../../include/openssl/err.h ../../include/openssl/evp.h
266hw_4758_cca.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
267hw_4758_cca.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
268hw_4758_cca.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
269hw_4758_cca.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
270hw_4758_cca.o: ../../include/openssl/opensslconf.h
271hw_4758_cca.o: ../../include/openssl/opensslv.h
272hw_4758_cca.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
273hw_4758_cca.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
274hw_4758_cca.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
275hw_4758_cca.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
276hw_4758_cca.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
277hw_4758_cca.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
278hw_4758_cca.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
279hw_4758_cca.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
280hw_4758_cca.o: ../cryptlib.h hw_4758_cca.c hw_4758_cca_err.c hw_4758_cca_err.h
281hw_4758_cca.o: vendor_defns/hw_4758_cca.h
282hw_aep.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
283hw_aep.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
284hw_aep.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
285hw_aep.o: ../../include/openssl/dsa.h ../../include/openssl/dso.h
286hw_aep.o: ../../include/openssl/e_os2.h ../../include/openssl/engine.h
287hw_aep.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
288hw_aep.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
289hw_aep.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
290hw_aep.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
291hw_aep.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
292hw_aep.o: ../../include/openssl/ui.h hw_aep.c hw_aep_err.c hw_aep_err.h
293hw_aep.o: vendor_defns/aep.h
294hw_atalla.o: ../../e_os.h ../../include/openssl/asn1.h
295hw_atalla.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
296hw_atalla.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
297hw_atalla.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
298hw_atalla.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
299hw_atalla.o: ../../include/openssl/engine.h ../../include/openssl/err.h
300hw_atalla.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
301hw_atalla.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
302hw_atalla.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
303hw_atalla.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
304hw_atalla.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
305hw_atalla.o: ../cryptlib.h hw_atalla.c hw_atalla_err.c hw_atalla_err.h
306hw_atalla.o: vendor_defns/atalla.h
307hw_cryptodev.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
308hw_cryptodev.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
309hw_cryptodev.o: ../../include/openssl/bn.h ../../include/openssl/cast.h
310hw_cryptodev.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
311hw_cryptodev.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
312hw_cryptodev.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
313hw_cryptodev.o: ../../include/openssl/engine.h ../../include/openssl/err.h
314hw_cryptodev.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
315hw_cryptodev.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
316hw_cryptodev.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
317hw_cryptodev.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
318hw_cryptodev.o: ../../include/openssl/objects.h
319hw_cryptodev.o: ../../include/openssl/opensslconf.h
320hw_cryptodev.o: ../../include/openssl/opensslv.h
321hw_cryptodev.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
322hw_cryptodev.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
323hw_cryptodev.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
324hw_cryptodev.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
325hw_cryptodev.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
326hw_cryptodev.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
327hw_cryptodev.o: ../../include/openssl/ui_compat.h hw_cryptodev.c
328hw_cswift.o: ../../e_os.h ../../include/openssl/asn1.h
329hw_cswift.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
330hw_cswift.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
331hw_cswift.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
332hw_cswift.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
333hw_cswift.o: ../../include/openssl/engine.h ../../include/openssl/err.h
334hw_cswift.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
335hw_cswift.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
336hw_cswift.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
337hw_cswift.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
338hw_cswift.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
339hw_cswift.o: ../cryptlib.h hw_cswift.c hw_cswift_err.c hw_cswift_err.h
340hw_cswift.o: vendor_defns/cswift.h
341hw_ncipher.o: ../../e_os.h ../../include/openssl/aes.h
342hw_ncipher.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
343hw_ncipher.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
344hw_ncipher.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
345hw_ncipher.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
346hw_ncipher.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
347hw_ncipher.o: ../../include/openssl/dsa.h ../../include/openssl/dso.h
348hw_ncipher.o: ../../include/openssl/e_os2.h ../../include/openssl/engine.h
349hw_ncipher.o: ../../include/openssl/err.h ../../include/openssl/evp.h
350hw_ncipher.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
351hw_ncipher.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
352hw_ncipher.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
353hw_ncipher.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
354hw_ncipher.o: ../../include/openssl/opensslconf.h
355hw_ncipher.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
356hw_ncipher.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
357hw_ncipher.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
358hw_ncipher.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
359hw_ncipher.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
360hw_ncipher.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
361hw_ncipher.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
362hw_ncipher.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
363hw_ncipher.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
364hw_ncipher.o: ../../include/openssl/x509_vfy.h ../cryptlib.h hw_ncipher.c
365hw_ncipher.o: hw_ncipher_err.c hw_ncipher_err.h vendor_defns/hwcryptohook.h
366hw_nuron.o: ../../e_os.h ../../include/openssl/asn1.h
367hw_nuron.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
368hw_nuron.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
369hw_nuron.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
370hw_nuron.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
371hw_nuron.o: ../../include/openssl/engine.h ../../include/openssl/err.h
372hw_nuron.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
373hw_nuron.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
374hw_nuron.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
375hw_nuron.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
376hw_nuron.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
377hw_nuron.o: ../cryptlib.h hw_nuron.c hw_nuron_err.c hw_nuron_err.h
378hw_sureware.o: ../../e_os.h ../../include/openssl/aes.h
379hw_sureware.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
380hw_sureware.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
381hw_sureware.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
382hw_sureware.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
383hw_sureware.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
384hw_sureware.o: ../../include/openssl/dsa.h ../../include/openssl/dso.h
385hw_sureware.o: ../../include/openssl/e_os2.h ../../include/openssl/engine.h
386hw_sureware.o: ../../include/openssl/err.h ../../include/openssl/evp.h
387hw_sureware.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
388hw_sureware.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
389hw_sureware.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
390hw_sureware.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
391hw_sureware.o: ../../include/openssl/opensslconf.h
392hw_sureware.o: ../../include/openssl/opensslv.h
393hw_sureware.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
394hw_sureware.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h
395hw_sureware.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
396hw_sureware.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
397hw_sureware.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
398hw_sureware.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
399hw_sureware.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
400hw_sureware.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
401hw_sureware.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
402hw_sureware.o: ../cryptlib.h eng_int.h engine.h hw_sureware.c hw_sureware_err.c
403hw_sureware.o: hw_sureware_err.h vendor_defns/sureware.h
404hw_ubsec.o: ../../e_os.h ../../include/openssl/asn1.h
405hw_ubsec.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
406hw_ubsec.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
407hw_ubsec.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
408hw_ubsec.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
409hw_ubsec.o: ../../include/openssl/engine.h ../../include/openssl/err.h
410hw_ubsec.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
411hw_ubsec.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
412hw_ubsec.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
413hw_ubsec.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
414hw_ubsec.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
415hw_ubsec.o: ../cryptlib.h hw_ubsec.c hw_ubsec_err.c hw_ubsec_err.h
416hw_ubsec.o: vendor_defns/hw_ubsec.h
417tb_cipher.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
418tb_cipher.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
419tb_cipher.o: ../../include/openssl/bn.h ../../include/openssl/cast.h
420tb_cipher.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
421tb_cipher.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
422tb_cipher.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
423tb_cipher.o: ../../include/openssl/engine.h ../../include/openssl/err.h
424tb_cipher.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
425tb_cipher.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
426tb_cipher.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
427tb_cipher.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
428tb_cipher.o: ../../include/openssl/objects.h
429tb_cipher.o: ../../include/openssl/opensslconf.h
430tb_cipher.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
431tb_cipher.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
432tb_cipher.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
433tb_cipher.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
434tb_cipher.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
435tb_cipher.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
436tb_cipher.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
437tb_cipher.o: eng_int.h tb_cipher.c
438tb_dh.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
439tb_dh.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
440tb_dh.o: ../../include/openssl/bn.h ../../include/openssl/cast.h
441tb_dh.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
442tb_dh.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
443tb_dh.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
444tb_dh.o: ../../include/openssl/engine.h ../../include/openssl/err.h
445tb_dh.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
446tb_dh.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
447tb_dh.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
448tb_dh.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
449tb_dh.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
450tb_dh.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
451tb_dh.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
452tb_dh.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
453tb_dh.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
454tb_dh.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
455tb_dh.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
456tb_dh.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h eng_int.h
457tb_dh.o: tb_dh.c
458tb_digest.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
459tb_digest.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
460tb_digest.o: ../../include/openssl/bn.h ../../include/openssl/cast.h
461tb_digest.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
462tb_digest.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
463tb_digest.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
464tb_digest.o: ../../include/openssl/engine.h ../../include/openssl/err.h
465tb_digest.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
466tb_digest.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
467tb_digest.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
468tb_digest.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
469tb_digest.o: ../../include/openssl/objects.h
470tb_digest.o: ../../include/openssl/opensslconf.h
471tb_digest.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
472tb_digest.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
473tb_digest.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
474tb_digest.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
475tb_digest.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
476tb_digest.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
477tb_digest.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
478tb_digest.o: eng_int.h tb_digest.c
479tb_dsa.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
480tb_dsa.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
481tb_dsa.o: ../../include/openssl/bn.h ../../include/openssl/cast.h
482tb_dsa.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
483tb_dsa.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
484tb_dsa.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
485tb_dsa.o: ../../include/openssl/engine.h ../../include/openssl/err.h
486tb_dsa.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
487tb_dsa.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
488tb_dsa.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
489tb_dsa.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
490tb_dsa.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
491tb_dsa.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
492tb_dsa.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
493tb_dsa.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
494tb_dsa.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
495tb_dsa.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
496tb_dsa.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
497tb_dsa.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
498tb_dsa.o: eng_int.h tb_dsa.c
499tb_rand.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
500tb_rand.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
501tb_rand.o: ../../include/openssl/bn.h ../../include/openssl/cast.h
502tb_rand.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
503tb_rand.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
504tb_rand.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
505tb_rand.o: ../../include/openssl/engine.h ../../include/openssl/err.h
506tb_rand.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
507tb_rand.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
508tb_rand.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
509tb_rand.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
510tb_rand.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
511tb_rand.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
512tb_rand.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
513tb_rand.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
514tb_rand.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
515tb_rand.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
516tb_rand.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
517tb_rand.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
518tb_rand.o: eng_int.h tb_rand.c
519tb_rsa.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
520tb_rsa.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
521tb_rsa.o: ../../include/openssl/bn.h ../../include/openssl/cast.h
522tb_rsa.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
523tb_rsa.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
524tb_rsa.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
525tb_rsa.o: ../../include/openssl/engine.h ../../include/openssl/err.h
526tb_rsa.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
527tb_rsa.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
528tb_rsa.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
529tb_rsa.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
530tb_rsa.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
531tb_rsa.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
532tb_rsa.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
533tb_rsa.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
534tb_rsa.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
535tb_rsa.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
536tb_rsa.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
537tb_rsa.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
538tb_rsa.o: eng_int.h tb_rsa.c
diff --git a/src/lib/libssl/src/crypto/engine/eng_cnf.c b/src/lib/libssl/src/crypto/engine/eng_cnf.c
index 4225760af1..cdf670901a 100644
--- a/src/lib/libssl/src/crypto/engine/eng_cnf.c
+++ b/src/lib/libssl/src/crypto/engine/eng_cnf.c
@@ -158,7 +158,7 @@ static int int_engine_configure(char *name, char *value, const CONF *cnf)
158 */ 158 */
159 if (!strcmp(ctrlvalue, "EMPTY")) 159 if (!strcmp(ctrlvalue, "EMPTY"))
160 ctrlvalue = NULL; 160 ctrlvalue = NULL;
161 if (!strcmp(ctrlname, "init")) 161 else if (!strcmp(ctrlname, "init"))
162 { 162 {
163 if (!NCONF_get_number_e(cnf, value, "init", &do_init)) 163 if (!NCONF_get_number_e(cnf, value, "init", &do_init))
164 goto err; 164 goto err;
diff --git a/src/lib/libssl/src/crypto/engine/eng_err.c b/src/lib/libssl/src/crypto/engine/eng_err.c
index fdc0e7be0f..814d95ee32 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-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2002 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
@@ -64,91 +64,87 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_ENGINE,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_ENGINE,0,reason)
70
71static ERR_STRING_DATA ENGINE_str_functs[]= 67static ERR_STRING_DATA ENGINE_str_functs[]=
72 { 68 {
73{ERR_FUNC(ENGINE_F_DYNAMIC_CTRL), "DYNAMIC_CTRL"}, 69{ERR_PACK(0,ENGINE_F_DYNAMIC_CTRL,0), "DYNAMIC_CTRL"},
74{ERR_FUNC(ENGINE_F_DYNAMIC_GET_DATA_CTX), "DYNAMIC_GET_DATA_CTX"}, 70{ERR_PACK(0,ENGINE_F_DYNAMIC_GET_DATA_CTX,0), "DYNAMIC_GET_DATA_CTX"},
75{ERR_FUNC(ENGINE_F_DYNAMIC_LOAD), "DYNAMIC_LOAD"}, 71{ERR_PACK(0,ENGINE_F_DYNAMIC_LOAD,0), "DYNAMIC_LOAD"},
76{ERR_FUNC(ENGINE_F_ENGINE_ADD), "ENGINE_add"}, 72{ERR_PACK(0,ENGINE_F_ENGINE_ADD,0), "ENGINE_add"},
77{ERR_FUNC(ENGINE_F_ENGINE_BY_ID), "ENGINE_by_id"}, 73{ERR_PACK(0,ENGINE_F_ENGINE_BY_ID,0), "ENGINE_by_id"},
78{ERR_FUNC(ENGINE_F_ENGINE_CMD_IS_EXECUTABLE), "ENGINE_cmd_is_executable"}, 74{ERR_PACK(0,ENGINE_F_ENGINE_CMD_IS_EXECUTABLE,0), "ENGINE_cmd_is_executable"},
79{ERR_FUNC(ENGINE_F_ENGINE_CTRL), "ENGINE_ctrl"}, 75{ERR_PACK(0,ENGINE_F_ENGINE_CTRL,0), "ENGINE_ctrl"},
80{ERR_FUNC(ENGINE_F_ENGINE_CTRL_CMD), "ENGINE_ctrl_cmd"}, 76{ERR_PACK(0,ENGINE_F_ENGINE_CTRL_CMD,0), "ENGINE_ctrl_cmd"},
81{ERR_FUNC(ENGINE_F_ENGINE_CTRL_CMD_STRING), "ENGINE_ctrl_cmd_string"}, 77{ERR_PACK(0,ENGINE_F_ENGINE_CTRL_CMD_STRING,0), "ENGINE_ctrl_cmd_string"},
82{ERR_FUNC(ENGINE_F_ENGINE_FINISH), "ENGINE_finish"}, 78{ERR_PACK(0,ENGINE_F_ENGINE_FINISH,0), "ENGINE_finish"},
83{ERR_FUNC(ENGINE_F_ENGINE_FREE), "ENGINE_free"}, 79{ERR_PACK(0,ENGINE_F_ENGINE_FREE,0), "ENGINE_free"},
84{ERR_FUNC(ENGINE_F_ENGINE_GET_CIPHER), "ENGINE_get_cipher"}, 80{ERR_PACK(0,ENGINE_F_ENGINE_GET_CIPHER,0), "ENGINE_get_cipher"},
85{ERR_FUNC(ENGINE_F_ENGINE_GET_DEFAULT_TYPE), "ENGINE_GET_DEFAULT_TYPE"}, 81{ERR_PACK(0,ENGINE_F_ENGINE_GET_DEFAULT_TYPE,0), "ENGINE_GET_DEFAULT_TYPE"},
86{ERR_FUNC(ENGINE_F_ENGINE_GET_DIGEST), "ENGINE_get_digest"}, 82{ERR_PACK(0,ENGINE_F_ENGINE_GET_DIGEST,0), "ENGINE_get_digest"},
87{ERR_FUNC(ENGINE_F_ENGINE_GET_NEXT), "ENGINE_get_next"}, 83{ERR_PACK(0,ENGINE_F_ENGINE_GET_NEXT,0), "ENGINE_get_next"},
88{ERR_FUNC(ENGINE_F_ENGINE_GET_PREV), "ENGINE_get_prev"}, 84{ERR_PACK(0,ENGINE_F_ENGINE_GET_PREV,0), "ENGINE_get_prev"},
89{ERR_FUNC(ENGINE_F_ENGINE_INIT), "ENGINE_init"}, 85{ERR_PACK(0,ENGINE_F_ENGINE_INIT,0), "ENGINE_init"},
90{ERR_FUNC(ENGINE_F_ENGINE_LIST_ADD), "ENGINE_LIST_ADD"}, 86{ERR_PACK(0,ENGINE_F_ENGINE_LIST_ADD,0), "ENGINE_LIST_ADD"},
91{ERR_FUNC(ENGINE_F_ENGINE_LIST_REMOVE), "ENGINE_LIST_REMOVE"}, 87{ERR_PACK(0,ENGINE_F_ENGINE_LIST_REMOVE,0), "ENGINE_LIST_REMOVE"},
92{ERR_FUNC(ENGINE_F_ENGINE_LOAD_PRIVATE_KEY), "ENGINE_load_private_key"}, 88{ERR_PACK(0,ENGINE_F_ENGINE_LOAD_PRIVATE_KEY,0), "ENGINE_load_private_key"},
93{ERR_FUNC(ENGINE_F_ENGINE_LOAD_PUBLIC_KEY), "ENGINE_load_public_key"}, 89{ERR_PACK(0,ENGINE_F_ENGINE_LOAD_PUBLIC_KEY,0), "ENGINE_load_public_key"},
94{ERR_FUNC(ENGINE_F_ENGINE_MODULE_INIT), "ENGINE_MODULE_INIT"}, 90{ERR_PACK(0,ENGINE_F_ENGINE_MODULE_INIT,0), "ENGINE_MODULE_INIT"},
95{ERR_FUNC(ENGINE_F_ENGINE_NEW), "ENGINE_new"}, 91{ERR_PACK(0,ENGINE_F_ENGINE_NEW,0), "ENGINE_new"},
96{ERR_FUNC(ENGINE_F_ENGINE_REMOVE), "ENGINE_remove"}, 92{ERR_PACK(0,ENGINE_F_ENGINE_REMOVE,0), "ENGINE_remove"},
97{ERR_FUNC(ENGINE_F_ENGINE_SET_DEFAULT_STRING), "ENGINE_set_default_string"}, 93{ERR_PACK(0,ENGINE_F_ENGINE_SET_DEFAULT_STRING,0), "ENGINE_set_default_string"},
98{ERR_FUNC(ENGINE_F_ENGINE_SET_DEFAULT_TYPE), "ENGINE_SET_DEFAULT_TYPE"}, 94{ERR_PACK(0,ENGINE_F_ENGINE_SET_DEFAULT_TYPE,0), "ENGINE_SET_DEFAULT_TYPE"},
99{ERR_FUNC(ENGINE_F_ENGINE_SET_ID), "ENGINE_set_id"}, 95{ERR_PACK(0,ENGINE_F_ENGINE_SET_ID,0), "ENGINE_set_id"},
100{ERR_FUNC(ENGINE_F_ENGINE_SET_NAME), "ENGINE_set_name"}, 96{ERR_PACK(0,ENGINE_F_ENGINE_SET_NAME,0), "ENGINE_set_name"},
101{ERR_FUNC(ENGINE_F_ENGINE_TABLE_REGISTER), "ENGINE_TABLE_REGISTER"}, 97{ERR_PACK(0,ENGINE_F_ENGINE_TABLE_REGISTER,0), "ENGINE_TABLE_REGISTER"},
102{ERR_FUNC(ENGINE_F_ENGINE_UNLOAD_KEY), "ENGINE_UNLOAD_KEY"}, 98{ERR_PACK(0,ENGINE_F_ENGINE_UNLOAD_KEY,0), "ENGINE_UNLOAD_KEY"},
103{ERR_FUNC(ENGINE_F_ENGINE_UP_REF), "ENGINE_up_ref"}, 99{ERR_PACK(0,ENGINE_F_ENGINE_UP_REF,0), "ENGINE_up_ref"},
104{ERR_FUNC(ENGINE_F_INT_CTRL_HELPER), "INT_CTRL_HELPER"}, 100{ERR_PACK(0,ENGINE_F_INT_CTRL_HELPER,0), "INT_CTRL_HELPER"},
105{ERR_FUNC(ENGINE_F_INT_ENGINE_CONFIGURE), "INT_ENGINE_CONFIGURE"}, 101{ERR_PACK(0,ENGINE_F_INT_ENGINE_CONFIGURE,0), "INT_ENGINE_CONFIGURE"},
106{ERR_FUNC(ENGINE_F_LOG_MESSAGE), "LOG_MESSAGE"}, 102{ERR_PACK(0,ENGINE_F_LOG_MESSAGE,0), "LOG_MESSAGE"},
107{ERR_FUNC(ENGINE_F_SET_DATA_CTX), "SET_DATA_CTX"}, 103{ERR_PACK(0,ENGINE_F_SET_DATA_CTX,0), "SET_DATA_CTX"},
108{0,NULL} 104{0,NULL}
109 }; 105 };
110 106
111static ERR_STRING_DATA ENGINE_str_reasons[]= 107static ERR_STRING_DATA ENGINE_str_reasons[]=
112 { 108 {
113{ERR_REASON(ENGINE_R_ALREADY_LOADED) ,"already loaded"}, 109{ENGINE_R_ALREADY_LOADED ,"already loaded"},
114{ERR_REASON(ENGINE_R_ARGUMENT_IS_NOT_A_NUMBER),"argument is not a number"}, 110{ENGINE_R_ARGUMENT_IS_NOT_A_NUMBER ,"argument is not a number"},
115{ERR_REASON(ENGINE_R_CMD_NOT_EXECUTABLE) ,"cmd not executable"}, 111{ENGINE_R_CMD_NOT_EXECUTABLE ,"cmd not executable"},
116{ERR_REASON(ENGINE_R_COMMAND_TAKES_INPUT),"command takes input"}, 112{ENGINE_R_COMMAND_TAKES_INPUT ,"command takes input"},
117{ERR_REASON(ENGINE_R_COMMAND_TAKES_NO_INPUT),"command takes no input"}, 113{ENGINE_R_COMMAND_TAKES_NO_INPUT ,"command takes no input"},
118{ERR_REASON(ENGINE_R_CONFLICTING_ENGINE_ID),"conflicting engine id"}, 114{ENGINE_R_CONFLICTING_ENGINE_ID ,"conflicting engine id"},
119{ERR_REASON(ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED),"ctrl command not implemented"}, 115{ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED ,"ctrl command not implemented"},
120{ERR_REASON(ENGINE_R_DH_NOT_IMPLEMENTED) ,"dh not implemented"}, 116{ENGINE_R_DH_NOT_IMPLEMENTED ,"dh not implemented"},
121{ERR_REASON(ENGINE_R_DSA_NOT_IMPLEMENTED),"dsa not implemented"}, 117{ENGINE_R_DSA_NOT_IMPLEMENTED ,"dsa not implemented"},
122{ERR_REASON(ENGINE_R_DSO_FAILURE) ,"DSO failure"}, 118{ENGINE_R_DSO_FAILURE ,"DSO failure"},
123{ERR_REASON(ENGINE_R_DSO_NOT_FOUND) ,"dso not found"}, 119{ENGINE_R_DSO_NOT_FOUND ,"dso not found"},
124{ERR_REASON(ENGINE_R_ENGINES_SECTION_ERROR),"engines section error"}, 120{ENGINE_R_ENGINES_SECTION_ERROR ,"engines section error"},
125{ERR_REASON(ENGINE_R_ENGINE_IS_NOT_IN_LIST),"engine is not in the list"}, 121{ENGINE_R_ENGINE_IS_NOT_IN_LIST ,"engine is not in the list"},
126{ERR_REASON(ENGINE_R_ENGINE_SECTION_ERROR),"engine section error"}, 122{ENGINE_R_ENGINE_SECTION_ERROR ,"engine section error"},
127{ERR_REASON(ENGINE_R_FAILED_LOADING_PRIVATE_KEY),"failed loading private key"}, 123{ENGINE_R_FAILED_LOADING_PRIVATE_KEY ,"failed loading private key"},
128{ERR_REASON(ENGINE_R_FAILED_LOADING_PUBLIC_KEY),"failed loading public key"}, 124{ENGINE_R_FAILED_LOADING_PUBLIC_KEY ,"failed loading public key"},
129{ERR_REASON(ENGINE_R_FINISH_FAILED) ,"finish failed"}, 125{ENGINE_R_FINISH_FAILED ,"finish failed"},
130{ERR_REASON(ENGINE_R_GET_HANDLE_FAILED) ,"could not obtain hardware handle"}, 126{ENGINE_R_GET_HANDLE_FAILED ,"could not obtain hardware handle"},
131{ERR_REASON(ENGINE_R_ID_OR_NAME_MISSING) ,"'id' or 'name' missing"}, 127{ENGINE_R_ID_OR_NAME_MISSING ,"'id' or 'name' missing"},
132{ERR_REASON(ENGINE_R_INIT_FAILED) ,"init failed"}, 128{ENGINE_R_INIT_FAILED ,"init failed"},
133{ERR_REASON(ENGINE_R_INTERNAL_LIST_ERROR),"internal list error"}, 129{ENGINE_R_INTERNAL_LIST_ERROR ,"internal list error"},
134{ERR_REASON(ENGINE_R_INVALID_ARGUMENT) ,"invalid argument"}, 130{ENGINE_R_INVALID_ARGUMENT ,"invalid argument"},
135{ERR_REASON(ENGINE_R_INVALID_CMD_NAME) ,"invalid cmd name"}, 131{ENGINE_R_INVALID_CMD_NAME ,"invalid cmd name"},
136{ERR_REASON(ENGINE_R_INVALID_CMD_NUMBER) ,"invalid cmd number"}, 132{ENGINE_R_INVALID_CMD_NUMBER ,"invalid cmd number"},
137{ERR_REASON(ENGINE_R_INVALID_INIT_VALUE) ,"invalid init value"}, 133{ENGINE_R_INVALID_INIT_VALUE ,"invalid init value"},
138{ERR_REASON(ENGINE_R_INVALID_STRING) ,"invalid string"}, 134{ENGINE_R_INVALID_STRING ,"invalid string"},
139{ERR_REASON(ENGINE_R_NOT_INITIALISED) ,"not initialised"}, 135{ENGINE_R_NOT_INITIALISED ,"not initialised"},
140{ERR_REASON(ENGINE_R_NOT_LOADED) ,"not loaded"}, 136{ENGINE_R_NOT_LOADED ,"not loaded"},
141{ERR_REASON(ENGINE_R_NO_CONTROL_FUNCTION),"no control function"}, 137{ENGINE_R_NO_CONTROL_FUNCTION ,"no control function"},
142{ERR_REASON(ENGINE_R_NO_INDEX) ,"no index"}, 138{ENGINE_R_NO_INDEX ,"no index"},
143{ERR_REASON(ENGINE_R_NO_LOAD_FUNCTION) ,"no load function"}, 139{ENGINE_R_NO_LOAD_FUNCTION ,"no load function"},
144{ERR_REASON(ENGINE_R_NO_REFERENCE) ,"no reference"}, 140{ENGINE_R_NO_REFERENCE ,"no reference"},
145{ERR_REASON(ENGINE_R_NO_SUCH_ENGINE) ,"no such engine"}, 141{ENGINE_R_NO_SUCH_ENGINE ,"no such engine"},
146{ERR_REASON(ENGINE_R_NO_UNLOAD_FUNCTION) ,"no unload function"}, 142{ENGINE_R_NO_UNLOAD_FUNCTION ,"no unload function"},
147{ERR_REASON(ENGINE_R_PROVIDE_PARAMETERS) ,"provide parameters"}, 143{ENGINE_R_PROVIDE_PARAMETERS ,"provide parameters"},
148{ERR_REASON(ENGINE_R_RSA_NOT_IMPLEMENTED),"rsa not implemented"}, 144{ENGINE_R_RSA_NOT_IMPLEMENTED ,"rsa not implemented"},
149{ERR_REASON(ENGINE_R_UNIMPLEMENTED_CIPHER),"unimplemented cipher"}, 145{ENGINE_R_UNIMPLEMENTED_CIPHER ,"unimplemented cipher"},
150{ERR_REASON(ENGINE_R_UNIMPLEMENTED_DIGEST),"unimplemented digest"}, 146{ENGINE_R_UNIMPLEMENTED_DIGEST ,"unimplemented digest"},
151{ERR_REASON(ENGINE_R_VERSION_INCOMPATIBILITY),"version incompatibility"}, 147{ENGINE_R_VERSION_INCOMPATIBILITY ,"version incompatibility"},
152{0,NULL} 148{0,NULL}
153 }; 149 };
154 150
@@ -162,8 +158,8 @@ void ERR_load_ENGINE_strings(void)
162 { 158 {
163 init=0; 159 init=0;
164#ifndef OPENSSL_NO_ERR 160#ifndef OPENSSL_NO_ERR
165 ERR_load_strings(0,ENGINE_str_functs); 161 ERR_load_strings(ERR_LIB_ENGINE,ENGINE_str_functs);
166 ERR_load_strings(0,ENGINE_str_reasons); 162 ERR_load_strings(ERR_LIB_ENGINE,ENGINE_str_reasons);
167#endif 163#endif
168 164
169 } 165 }
diff --git a/src/lib/libssl/src/crypto/engine/hw_aep.c b/src/lib/libssl/src/crypto/engine/hw_aep.c
index 5f1772ea99..8b8380a582 100644
--- a/src/lib/libssl/src/crypto/engine/hw_aep.c
+++ b/src/lib/libssl/src/crypto/engine/hw_aep.c
@@ -474,7 +474,6 @@ static int aep_init(ENGINE *e)
474 474
475 if(aep_dso) 475 if(aep_dso)
476 DSO_free(aep_dso); 476 DSO_free(aep_dso);
477 aep_dso = NULL;
478 477
479 p_AEP_OpenConnection = NULL; 478 p_AEP_OpenConnection = NULL;
480 p_AEP_ModExp = NULL; 479 p_AEP_ModExp = NULL;
diff --git a/src/lib/libssl/src/crypto/engine/hw_atalla.c b/src/lib/libssl/src/crypto/engine/hw_atalla.c
index 2b8342bbdd..e9eff9fad1 100644
--- a/src/lib/libssl/src/crypto/engine/hw_atalla.c
+++ b/src/lib/libssl/src/crypto/engine/hw_atalla.c
@@ -375,7 +375,6 @@ static int atalla_init(ENGINE *e)
375err: 375err:
376 if(atalla_dso) 376 if(atalla_dso)
377 DSO_free(atalla_dso); 377 DSO_free(atalla_dso);
378 atalla_dso = NULL;
379 p_Atalla_GetHardwareConfig = NULL; 378 p_Atalla_GetHardwareConfig = NULL;
380 p_Atalla_RSAPrivateKeyOpFn = NULL; 379 p_Atalla_RSAPrivateKeyOpFn = NULL;
381 p_Atalla_GetPerformanceStatistics = NULL; 380 p_Atalla_GetPerformanceStatistics = NULL;
diff --git a/src/lib/libssl/src/crypto/engine/hw_cryptodev.c b/src/lib/libssl/src/crypto/engine/hw_cryptodev.c
index 3e7fff1c1e..d3b186c132 100644
--- a/src/lib/libssl/src/crypto/engine/hw_cryptodev.c
+++ b/src/lib/libssl/src/crypto/engine/hw_cryptodev.c
@@ -1,6 +1,6 @@
1/* 1/*
2 * Copyright (c) 2002-2004 Theo de Raadt
2 * Copyright (c) 2002 Bob Beck <beck@openbsd.org> 3 * Copyright (c) 2002 Bob Beck <beck@openbsd.org>
3 * Copyright (c) 2002 Theo de Raadt
4 * Copyright (c) 2002 Markus Friedl 4 * Copyright (c) 2002 Markus Friedl
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
@@ -49,11 +49,12 @@ ENGINE_load_cryptodev(void)
49 return; 49 return;
50} 50}
51 51
52#else 52#else
53 53
54#include <sys/types.h> 54#include <sys/types.h>
55#include <crypto/cryptodev.h> 55#include <crypto/cryptodev.h>
56#include <sys/ioctl.h> 56#include <sys/ioctl.h>
57
57#include <errno.h> 58#include <errno.h>
58#include <stdio.h> 59#include <stdio.h>
59#include <unistd.h> 60#include <unistd.h>
@@ -63,19 +64,34 @@ ENGINE_load_cryptodev(void)
63#include <errno.h> 64#include <errno.h>
64#include <string.h> 65#include <string.h>
65 66
67#ifdef __i386__
68#include <sys/sysctl.h>
69#include <machine/cpu.h>
70#include <machine/specialreg.h>
71
72#include <ssl/aes.h>
73
74static int check_viac3aes(void);
75#endif
76
66struct dev_crypto_state { 77struct dev_crypto_state {
67 struct session_op d_sess; 78 struct session_op d_sess;
68 int d_fd; 79 int d_fd;
69}; 80};
70 81
82struct dev_crypto_cipher {
83 int c_id;
84 int c_nid;
85 int c_ivmax;
86 int c_keylen;
87};
88
71static u_int32_t cryptodev_asymfeat = 0; 89static u_int32_t cryptodev_asymfeat = 0;
72 90
73static int get_asym_dev_crypto(void); 91static int get_asym_dev_crypto(void);
74static int open_dev_crypto(void); 92static int open_dev_crypto(void);
75static int get_dev_crypto(void); 93static int get_dev_crypto(void);
76static int cryptodev_max_iv(int cipher); 94static struct dev_crypto_cipher *cipher_nid_to_cryptodev(int nid);
77static int cryptodev_key_length_valid(int cipher, int len);
78static int cipher_nid_to_cryptodev(int nid);
79static int get_cryptodev_ciphers(const int **cnids); 95static int get_cryptodev_ciphers(const int **cnids);
80/*static int get_cryptodev_digests(const int **cnids);*/ 96/*static int get_cryptodev_digests(const int **cnids);*/
81static int cryptodev_usable_ciphers(const int **nids); 97static int cryptodev_usable_ciphers(const int **nids);
@@ -122,15 +138,12 @@ static const ENGINE_CMD_DEFN cryptodev_defns[] = {
122 { 0, NULL, NULL, 0 } 138 { 0, NULL, NULL, 0 }
123}; 139};
124 140
125static struct { 141static struct dev_crypto_cipher ciphers[] = {
126 int id;
127 int nid;
128 int ivmax;
129 int keylen;
130} ciphers[] = {
131 { CRYPTO_DES_CBC, NID_des_cbc, 8, 8, }, 142 { CRYPTO_DES_CBC, NID_des_cbc, 8, 8, },
132 { CRYPTO_3DES_CBC, NID_des_ede3_cbc, 8, 24, }, 143 { CRYPTO_3DES_CBC, NID_des_ede3_cbc, 8, 24, },
133 { CRYPTO_AES_CBC, NID_aes_128_cbc, 16, 16, }, 144 { CRYPTO_AES_CBC, NID_aes_128_cbc, 16, 16, },
145 { CRYPTO_AES_CBC, NID_aes_192_cbc, 16, 24, },
146 { CRYPTO_AES_CBC, NID_aes_256_cbc, 16, 32, },
134 { CRYPTO_BLF_CBC, NID_bf_cbc, 8, 16, }, 147 { CRYPTO_BLF_CBC, NID_bf_cbc, 8, 16, },
135 { CRYPTO_CAST_CBC, NID_cast5_cbc, 8, 16, }, 148 { CRYPTO_CAST_CBC, NID_cast5_cbc, 8, 16, },
136 { CRYPTO_SKIPJACK_CBC, NID_undef, 0, 0, }, 149 { CRYPTO_SKIPJACK_CBC, NID_undef, 0, 0, },
@@ -153,7 +166,7 @@ static struct {
153#endif 166#endif
154 167
155/* 168/*
156 * Return a fd if /dev/crypto seems usable, 0 otherwise. 169 * Return a fd if /dev/crypto seems usable, -1 otherwise.
157 */ 170 */
158static int 171static int
159open_dev_crypto(void) 172open_dev_crypto(void)
@@ -180,8 +193,10 @@ get_dev_crypto(void)
180 193
181 if ((fd = open_dev_crypto()) == -1) 194 if ((fd = open_dev_crypto()) == -1)
182 return (-1); 195 return (-1);
183 if (ioctl(fd, CRIOGET, &retfd) == -1) 196 if (ioctl(fd, CRIOGET, &retfd) == -1) {
197 close(fd);
184 return (-1); 198 return (-1);
199 }
185 200
186 /* close on exec */ 201 /* close on exec */
187 if (fcntl(retfd, F_SETFD, 1) == -1) { 202 if (fcntl(retfd, F_SETFD, 1) == -1) {
@@ -202,48 +217,16 @@ get_asym_dev_crypto(void)
202 return fd; 217 return fd;
203} 218}
204 219
205/*
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 */ 220/* convert libcrypto nids to cryptodev */
238static int 221static struct dev_crypto_cipher *
239cipher_nid_to_cryptodev(int nid) 222cipher_nid_to_cryptodev(int nid)
240{ 223{
241 int i; 224 int i;
242 225
243 for (i = 0; ciphers[i].id; i++) 226 for (i = 0; ciphers[i].c_id; i++)
244 if (ciphers[i].nid == nid) 227 if (ciphers[i].c_nid == nid)
245 return (ciphers[i].id); 228 return (&ciphers[i]);
246 return (0); 229 return (NULL);
247} 230}
248 231
249/* 232/*
@@ -266,18 +249,45 @@ get_cryptodev_ciphers(const int **cnids)
266 memset(&sess, 0, sizeof(sess)); 249 memset(&sess, 0, sizeof(sess));
267 sess.key = (caddr_t)"123456781234567812345678"; 250 sess.key = (caddr_t)"123456781234567812345678";
268 251
269 for (i = 0; ciphers[i].id && count < CRYPTO_ALGORITHM_MAX; i++) { 252 for (i = 0; ciphers[i].c_id && count < CRYPTO_ALGORITHM_MAX; i++) {
270 if (ciphers[i].nid == NID_undef) 253 if (ciphers[i].c_nid == NID_undef)
271 continue; 254 continue;
272 sess.cipher = ciphers[i].id; 255 sess.cipher = ciphers[i].c_id;
273 sess.keylen = ciphers[i].keylen; 256 sess.keylen = ciphers[i].c_keylen;
274 sess.mac = 0; 257 sess.mac = 0;
275 if (ioctl(fd, CIOCGSESSION, &sess) != -1 && 258 if (ioctl(fd, CIOCGSESSION, &sess) != -1 &&
276 ioctl(fd, CIOCFSESSION, &sess.ses) != -1) 259 ioctl(fd, CIOCFSESSION, &sess.ses) != -1)
277 nids[count++] = ciphers[i].nid; 260 nids[count++] = ciphers[i].c_nid;
278 } 261 }
279 close(fd); 262 close(fd);
280 263
264#if defined(__i386__)
265 /*
266 * On i386, always check for the VIA C3 AES instructions;
267 * even if /dev/crypto is disabled.
268 */
269 if (check_viac3aes() >= 1) {
270 int have_NID_aes_128_cbc = 0;
271 int have_NID_aes_192_cbc = 0;
272 int have_NID_aes_256_cbc = 0;
273
274 for (i = 0; i < count; i++) {
275 if (nids[i] == NID_aes_128_cbc)
276 have_NID_aes_128_cbc = 1;
277 if (nids[i] == NID_aes_192_cbc)
278 have_NID_aes_192_cbc = 1;
279 if (nids[i] == NID_aes_256_cbc)
280 have_NID_aes_256_cbc = 1;
281 }
282 if (!have_NID_aes_128_cbc)
283 nids[count++] = NID_aes_128_cbc;
284 if (!have_NID_aes_192_cbc)
285 nids[count++] = NID_aes_192_cbc;
286 if (!have_NID_aes_256_cbc)
287 nids[count++] = NID_aes_256_cbc;
288 }
289#endif
290
281 if (count > 0) 291 if (count > 0)
282 *cnids = nids; 292 *cnids = nids;
283 else 293 else
@@ -429,15 +439,15 @@ cryptodev_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
429{ 439{
430 struct dev_crypto_state *state = ctx->cipher_data; 440 struct dev_crypto_state *state = ctx->cipher_data;
431 struct session_op *sess = &state->d_sess; 441 struct session_op *sess = &state->d_sess;
432 int cipher; 442 struct dev_crypto_cipher *cipher;
433 443
434 if ((cipher = cipher_nid_to_cryptodev(ctx->cipher->nid)) == NID_undef) 444 if ((cipher = cipher_nid_to_cryptodev(ctx->cipher->nid)) == NULL)
435 return (0); 445 return (0);
436 446
437 if (ctx->cipher->iv_len > cryptodev_max_iv(cipher)) 447 if (ctx->cipher->iv_len > cipher->c_ivmax)
438 return (0); 448 return (0);
439 449
440 if (!cryptodev_key_length_valid(cipher, ctx->key_len)) 450 if (ctx->key_len != cipher->c_keylen)
441 return (0); 451 return (0);
442 452
443 memset(sess, 0, sizeof(struct session_op)); 453 memset(sess, 0, sizeof(struct session_op));
@@ -447,7 +457,7 @@ cryptodev_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
447 457
448 sess->key = (unsigned char *)key; 458 sess->key = (unsigned char *)key;
449 sess->keylen = ctx->key_len; 459 sess->keylen = ctx->key_len;
450 sess->cipher = cipher; 460 sess->cipher = cipher->c_id;
451 461
452 if (ioctl(state->d_fd, CIOCGSESSION, sess) == -1) { 462 if (ioctl(state->d_fd, CIOCGSESSION, sess) == -1) {
453 close(state->d_fd); 463 close(state->d_fd);
@@ -552,7 +562,7 @@ const EVP_CIPHER cryptodev_cast_cbc = {
552 NULL 562 NULL
553}; 563};
554 564
555const EVP_CIPHER cryptodev_aes_cbc = { 565EVP_CIPHER cryptodev_aes_128_cbc = {
556 NID_aes_128_cbc, 566 NID_aes_128_cbc,
557 16, 16, 16, 567 16, 16, 16,
558 EVP_CIPH_CBC_MODE, 568 EVP_CIPH_CBC_MODE,
@@ -565,6 +575,209 @@ const EVP_CIPHER cryptodev_aes_cbc = {
565 NULL 575 NULL
566}; 576};
567 577
578EVP_CIPHER cryptodev_aes_192_cbc = {
579 NID_aes_192_cbc,
580 16, 24, 16,
581 EVP_CIPH_CBC_MODE,
582 cryptodev_init_key,
583 cryptodev_cipher,
584 cryptodev_cleanup,
585 sizeof(struct dev_crypto_state),
586 EVP_CIPHER_set_asn1_iv,
587 EVP_CIPHER_get_asn1_iv,
588 NULL
589};
590
591EVP_CIPHER cryptodev_aes_256_cbc = {
592 NID_aes_256_cbc,
593 16, 32, 16,
594 EVP_CIPH_CBC_MODE,
595 cryptodev_init_key,
596 cryptodev_cipher,
597 cryptodev_cleanup,
598 sizeof(struct dev_crypto_state),
599 EVP_CIPHER_set_asn1_iv,
600 EVP_CIPHER_get_asn1_iv,
601 NULL
602};
603
604#if defined(__i386__)
605
606static inline void
607viac3_xcrypt_cbc(int *cw, const void *src, void *dst, void *key, int rep,
608 void *iv)
609{
610#ifdef notdef
611 printf("cw %x[%x %x %x %x] src %x dst %x key %x rep %x iv %x\n",
612 cw, cw[0], cw[1], cw[2], cw[3],
613 src, dst, key, rep, iv);
614#endif
615 /*
616 * Clear bit 30 of EFLAGS.
617 */
618 __asm __volatile("pushfl; popfl");
619
620 /*
621 * Cannot simply place key into "b" register, since the compiler
622 * -pic mode uses that register; so instead we must dance a little.
623 */
624 __asm __volatile("pushl %%ebx; movl %0, %%ebx; rep xcrypt-cbc; popl %%ebx" :
625 : "mr" (key), "a" (iv), "c" (rep), "d" (cw), "S" (src), "D" (dst)
626 : "memory", "cc");
627}
628
629#define ISUNALIGNED(x) ((long)(x)) & 15
630#define DOALIGN(v) ((void *)(((long)(v) + 15) & ~15))
631
632static int
633xcrypt_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
634 const unsigned char *in, unsigned int inl)
635{
636 unsigned char *save_iv_store[EVP_MAX_IV_LENGTH + 15];
637 unsigned char *save_iv = DOALIGN(save_iv_store);
638 unsigned char *ivs_store[EVP_MAX_IV_LENGTH + 15];
639 unsigned char *ivs = DOALIGN(ivs_store);
640 void *iiv, *iv = NULL, *ivp = NULL;
641 const void *usein = in;
642 void *useout = out, *spare;
643 int cws[4 + 3], *cw = DOALIGN(cws);
644
645 if (!inl)
646 return (1);
647 if ((inl % ctx->cipher->block_size) != 0)
648 return (0);
649
650 if (ISUNALIGNED(in) || ISUNALIGNED(out)) {
651 spare = malloc(inl);
652 if (spare == NULL)
653 return (0);
654
655 if (ISUNALIGNED(in)) {
656 bcopy(in, spare, inl);
657 usein = spare;
658 }
659 if (ISUNALIGNED(out))
660 useout = spare;
661 }
662
663 cw[0] = C3_CRYPT_CWLO_ALG_AES | C3_CRYPT_CWLO_KEYGEN_SW |
664 C3_CRYPT_CWLO_NORMAL;
665 cw[0] |= ctx->encrypt ? C3_CRYPT_CWLO_ENCRYPT : C3_CRYPT_CWLO_DECRYPT;
666 cw[1] = cw[2] = cw[3] = 0;
667
668 switch (ctx->key_len * 8) {
669 case 128:
670 cw[0] |= C3_CRYPT_CWLO_KEY128;
671 break;
672 case 192:
673 cw[0] |= C3_CRYPT_CWLO_KEY192;
674 break;
675 case 256:
676 cw[0] |= C3_CRYPT_CWLO_KEY256;
677 break;
678 }
679
680 if (ctx->cipher->iv_len) {
681 iv = (caddr_t) ctx->iv;
682 if (!ctx->encrypt) {
683 iiv = (void *) in + inl - ctx->cipher->iv_len;
684 memcpy(save_iv, iiv, ctx->cipher->iv_len);
685 }
686 }
687
688 ivp = iv;
689 if (ISUNALIGNED(iv)) {
690 bcopy(iv, ivs, ctx->cipher->iv_len);
691 ivp = ivs;
692 }
693
694 viac3_xcrypt_cbc(cw, usein, useout, ctx->cipher_data, inl / 16, ivp);
695
696 if (ISUNALIGNED(out)) {
697 bcopy(spare, out, inl);
698 free(spare);
699 }
700
701 if (ivp == ivs)
702 bcopy(ivp, iv, ctx->cipher->iv_len);
703
704 if (ctx->cipher->iv_len) {
705 if (ctx->encrypt)
706 iiv = (void *) out + inl - ctx->cipher->iv_len;
707 else
708 iiv = save_iv;
709 memcpy(ctx->iv, iiv, ctx->cipher->iv_len);
710 }
711 return (1);
712}
713
714static int
715xcrypt_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
716 const unsigned char *iv, int enc)
717{
718 AES_KEY *k = ctx->cipher_data;
719#ifndef AES_ASM
720 int i;
721#endif
722
723 bzero(k, sizeof *k);
724 if (enc)
725 AES_set_encrypt_key(key, ctx->key_len * 8, k);
726 else
727 AES_set_decrypt_key(key, ctx->key_len * 8, k);
728
729#ifndef AES_ASM
730 /*
731 * XXX Damn OpenSSL byte swaps the expanded key!!
732 *
733 * XXX But only if we're using the C implementation of AES
734 */
735 for (i = 0; i < 4 * (AES_MAXNR + 1); i++)
736 k->rd_key[i] = htonl(k->rd_key[i]);
737#endif
738
739 return (1);
740}
741
742static int
743xcrypt_cleanup(EVP_CIPHER_CTX *ctx)
744{
745 bzero(ctx->cipher_data, ctx->cipher->ctx_size);
746 return (1);
747}
748
749static int
750check_viac3aes(void)
751{
752 int mib[2] = { CTL_MACHDEP, CPU_XCRYPT }, value;
753 size_t size = sizeof(value);
754
755 if (sysctl(mib, sizeof(mib)/sizeof(mib[0]), &value, &size,
756 NULL, 0) < 0)
757 return (0);
758 if (value == 0)
759 return (0);
760
761 if (value & C3_HAS_AES) {
762 cryptodev_aes_128_cbc.init = xcrypt_init_key;
763 cryptodev_aes_128_cbc.do_cipher = xcrypt_cipher;
764 cryptodev_aes_128_cbc.cleanup = xcrypt_cleanup;
765 cryptodev_aes_128_cbc.ctx_size = sizeof(AES_KEY);
766
767 cryptodev_aes_192_cbc.init = xcrypt_init_key;
768 cryptodev_aes_192_cbc.do_cipher = xcrypt_cipher;
769 cryptodev_aes_192_cbc.cleanup = xcrypt_cleanup;
770 cryptodev_aes_192_cbc.ctx_size = sizeof(AES_KEY);
771
772 cryptodev_aes_256_cbc.init = xcrypt_init_key;
773 cryptodev_aes_256_cbc.do_cipher = xcrypt_cipher;
774 cryptodev_aes_256_cbc.cleanup = xcrypt_cleanup;
775 cryptodev_aes_256_cbc.ctx_size = sizeof(AES_KEY);
776 }
777 return (value);
778}
779#endif /* __i386__ */
780
568/* 781/*
569 * Registered by the ENGINE when used to find out how to deal with 782 * Registered by the ENGINE when used to find out how to deal with
570 * a particular NID in the ENGINE. this says what we'll do at the 783 * a particular NID in the ENGINE. this says what we'll do at the
@@ -591,7 +804,13 @@ cryptodev_engine_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
591 *cipher = &cryptodev_cast_cbc; 804 *cipher = &cryptodev_cast_cbc;
592 break; 805 break;
593 case NID_aes_128_cbc: 806 case NID_aes_128_cbc:
594 *cipher = &cryptodev_aes_cbc; 807 *cipher = &cryptodev_aes_128_cbc;
808 break;
809 case NID_aes_192_cbc:
810 *cipher = &cryptodev_aes_192_cbc;
811 break;
812 case NID_aes_256_cbc:
813 *cipher = &cryptodev_aes_256_cbc;
595 break; 814 break;
596 default: 815 default:
597 *cipher = NULL; 816 *cipher = NULL;
diff --git a/src/lib/libssl/src/crypto/engine/hw_cswift.c b/src/lib/libssl/src/crypto/engine/hw_cswift.c
index 1411fd8333..f128ee5a68 100644
--- a/src/lib/libssl/src/crypto/engine/hw_cswift.c
+++ b/src/lib/libssl/src/crypto/engine/hw_cswift.c
@@ -90,7 +90,6 @@ static int cswift_destroy(ENGINE *e);
90static int cswift_init(ENGINE *e); 90static int cswift_init(ENGINE *e);
91static int cswift_finish(ENGINE *e); 91static int cswift_finish(ENGINE *e);
92static int cswift_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)()); 92static int cswift_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)());
93static int cswift_bn_32copy(SW_LARGENUMBER * out, const BIGNUM * in);
94 93
95/* BIGNUM stuff */ 94/* BIGNUM stuff */
96static int cswift_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, 95static int cswift_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
@@ -404,10 +403,7 @@ static int cswift_init(ENGINE *e)
404 return 1; 403 return 1;
405err: 404err:
406 if(cswift_dso) 405 if(cswift_dso)
407 {
408 DSO_free(cswift_dso); 406 DSO_free(cswift_dso);
409 cswift_dso = NULL;
410 }
411 p_CSwift_AcquireAccContext = NULL; 407 p_CSwift_AcquireAccContext = NULL;
412 p_CSwift_AttachKeyParam = NULL; 408 p_CSwift_AttachKeyParam = NULL;
413 p_CSwift_SimpleRequest = NULL; 409 p_CSwift_SimpleRequest = NULL;
@@ -557,29 +553,6 @@ err:
557 return to_return; 553 return to_return;
558 } 554 }
559 555
560
561int cswift_bn_32copy(SW_LARGENUMBER * out, const BIGNUM * in)
562{
563 int mod;
564 int numbytes = BN_num_bytes(in);
565
566 mod = 0;
567 while( ((out->nbytes = (numbytes+mod)) % 32) )
568 {
569 mod++;
570 }
571 out->value = (unsigned char*)OPENSSL_malloc(out->nbytes);
572 if(!out->value)
573 {
574 return 0;
575 }
576 BN_bn2bin(in, &out->value[mod]);
577 if(mod)
578 memset(out->value, 0, mod);
579
580 return 1;
581}
582
583/* Un petit mod_exp chinois */ 556/* Un petit mod_exp chinois */
584static int cswift_mod_exp_crt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, 557static int cswift_mod_exp_crt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
585 const BIGNUM *q, const BIGNUM *dmp1, 558 const BIGNUM *q, const BIGNUM *dmp1,
@@ -589,16 +562,15 @@ static int cswift_mod_exp_crt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
589 SW_LARGENUMBER arg, res; 562 SW_LARGENUMBER arg, res;
590 SW_PARAM sw_param; 563 SW_PARAM sw_param;
591 SW_CONTEXT_HANDLE hac; 564 SW_CONTEXT_HANDLE hac;
592 BIGNUM *result = NULL; 565 BIGNUM *rsa_p = NULL;
566 BIGNUM *rsa_q = NULL;
567 BIGNUM *rsa_dmp1 = NULL;
568 BIGNUM *rsa_dmq1 = NULL;
569 BIGNUM *rsa_iqmp = NULL;
593 BIGNUM *argument = NULL; 570 BIGNUM *argument = NULL;
571 BIGNUM *result = NULL;
594 int to_return = 0; /* expect failure */ 572 int to_return = 0; /* expect failure */
595 int acquired = 0; 573 int acquired = 0;
596
597 sw_param.up.crt.p.value = NULL;
598 sw_param.up.crt.q.value = NULL;
599 sw_param.up.crt.dmp1.value = NULL;
600 sw_param.up.crt.dmq1.value = NULL;
601 sw_param.up.crt.iqmp.value = NULL;
602 574
603 if(!get_context(&hac)) 575 if(!get_context(&hac))
604 { 576 {
@@ -606,55 +578,44 @@ static int cswift_mod_exp_crt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
606 goto err; 578 goto err;
607 } 579 }
608 acquired = 1; 580 acquired = 1;
609
610 /* Prepare the params */ 581 /* Prepare the params */
611 argument = BN_new(); 582 BN_CTX_start(ctx);
612 result = BN_new(); 583 rsa_p = BN_CTX_get(ctx);
613 if(!result || !argument) 584 rsa_q = BN_CTX_get(ctx);
585 rsa_dmp1 = BN_CTX_get(ctx);
586 rsa_dmq1 = BN_CTX_get(ctx);
587 rsa_iqmp = BN_CTX_get(ctx);
588 argument = BN_CTX_get(ctx);
589 result = BN_CTX_get(ctx);
590 if(!result)
614 { 591 {
615 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_CTX_FULL); 592 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_CTX_FULL);
616 goto err; 593 goto err;
617 } 594 }
618 595 if(!bn_wexpand(rsa_p, p->top) || !bn_wexpand(rsa_q, q->top) ||
619 596 !bn_wexpand(rsa_dmp1, dmp1->top) ||
620 sw_param.type = SW_ALG_CRT; 597 !bn_wexpand(rsa_dmq1, dmq1->top) ||
621 /************************************************************************/ 598 !bn_wexpand(rsa_iqmp, iqmp->top) ||
622 /* 04/02/2003 */ 599 !bn_wexpand(argument, a->top) ||
623 /* Modified by Frederic Giudicelli (deny-all.com) to overcome the */
624 /* limitation of cswift with values not a multiple of 32 */
625 /************************************************************************/
626 if(!cswift_bn_32copy(&sw_param.up.crt.p, p))
627 {
628 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL);
629 goto err;
630 }
631 if(!cswift_bn_32copy(&sw_param.up.crt.q, q))
632 {
633 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL);
634 goto err;
635 }
636 if(!cswift_bn_32copy(&sw_param.up.crt.dmp1, dmp1))
637 {
638 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL);
639 goto err;
640 }
641 if(!cswift_bn_32copy(&sw_param.up.crt.dmq1, dmq1))
642 {
643 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL);
644 goto err;
645 }
646 if(!cswift_bn_32copy(&sw_param.up.crt.iqmp, iqmp))
647 {
648 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL);
649 goto err;
650 }
651 if( !bn_wexpand(argument, a->top) ||
652 !bn_wexpand(result, p->top + q->top)) 600 !bn_wexpand(result, p->top + q->top))
653 { 601 {
654 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL); 602 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL);
655 goto err; 603 goto err;
656 } 604 }
657 605 sw_param.type = SW_ALG_CRT;
606 sw_param.up.crt.p.nbytes = BN_bn2bin(p, (unsigned char *)rsa_p->d);
607 sw_param.up.crt.p.value = (unsigned char *)rsa_p->d;
608 sw_param.up.crt.q.nbytes = BN_bn2bin(q, (unsigned char *)rsa_q->d);
609 sw_param.up.crt.q.value = (unsigned char *)rsa_q->d;
610 sw_param.up.crt.dmp1.nbytes = BN_bn2bin(dmp1,
611 (unsigned char *)rsa_dmp1->d);
612 sw_param.up.crt.dmp1.value = (unsigned char *)rsa_dmp1->d;
613 sw_param.up.crt.dmq1.nbytes = BN_bn2bin(dmq1,
614 (unsigned char *)rsa_dmq1->d);
615 sw_param.up.crt.dmq1.value = (unsigned char *)rsa_dmq1->d;
616 sw_param.up.crt.iqmp.nbytes = BN_bn2bin(iqmp,
617 (unsigned char *)rsa_iqmp->d);
618 sw_param.up.crt.iqmp.value = (unsigned char *)rsa_iqmp->d;
658 /* Attach the key params */ 619 /* Attach the key params */
659 sw_status = p_CSwift_AttachKeyParam(hac, &sw_param); 620 sw_status = p_CSwift_AttachKeyParam(hac, &sw_param);
660 switch(sw_status) 621 switch(sw_status)
@@ -693,22 +654,9 @@ static int cswift_mod_exp_crt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
693 BN_bin2bn((unsigned char *)result->d, res.nbytes, r); 654 BN_bin2bn((unsigned char *)result->d, res.nbytes, r);
694 to_return = 1; 655 to_return = 1;
695err: 656err:
696 if(sw_param.up.crt.p.value)
697 OPENSSL_free(sw_param.up.crt.p.value);
698 if(sw_param.up.crt.q.value)
699 OPENSSL_free(sw_param.up.crt.q.value);
700 if(sw_param.up.crt.dmp1.value)
701 OPENSSL_free(sw_param.up.crt.dmp1.value);
702 if(sw_param.up.crt.dmq1.value)
703 OPENSSL_free(sw_param.up.crt.dmq1.value);
704 if(sw_param.up.crt.iqmp.value)
705 OPENSSL_free(sw_param.up.crt.iqmp.value);
706 if(result)
707 BN_free(result);
708 if(argument)
709 BN_free(argument);
710 if(acquired) 657 if(acquired)
711 release_context(hac); 658 release_context(hac);
659 BN_CTX_end(ctx);
712 return to_return; 660 return to_return;
713 } 661 }
714 662
@@ -717,27 +665,6 @@ static int cswift_rsa_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa)
717 { 665 {
718 BN_CTX *ctx; 666 BN_CTX *ctx;
719 int to_return = 0; 667 int to_return = 0;
720 const RSA_METHOD * def_rsa_method;
721
722 /* Try the limits of RSA (2048 bits) */
723 if(BN_num_bytes(rsa->p) > 128 ||
724 BN_num_bytes(rsa->q) > 128 ||
725 BN_num_bytes(rsa->dmp1) > 128 ||
726 BN_num_bytes(rsa->dmq1) > 128 ||
727 BN_num_bytes(rsa->iqmp) > 128)
728 {
729#ifdef RSA_NULL
730 def_rsa_method=RSA_null_method();
731#else
732#if 0
733 def_rsa_method=RSA_PKCS1_RSAref();
734#else
735 def_rsa_method=RSA_PKCS1_SSLeay();
736#endif
737#endif
738 if(def_rsa_method)
739 return def_rsa_method->rsa_mod_exp(r0, I, rsa);
740 }
741 668
742 if((ctx = BN_CTX_new()) == NULL) 669 if((ctx = BN_CTX_new()) == NULL)
743 goto err; 670 goto err;
@@ -759,26 +686,6 @@ err:
759static int cswift_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, 686static int cswift_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
760 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx) 687 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx)
761 { 688 {
762 const RSA_METHOD * def_rsa_method;
763
764 /* Try the limits of RSA (2048 bits) */
765 if(BN_num_bytes(r) > 256 ||
766 BN_num_bytes(a) > 256 ||
767 BN_num_bytes(m) > 256)
768 {
769#ifdef RSA_NULL
770 def_rsa_method=RSA_null_method();
771#else
772#if 0
773 def_rsa_method=RSA_PKCS1_RSAref();
774#else
775 def_rsa_method=RSA_PKCS1_SSLeay();
776#endif
777#endif
778 if(def_rsa_method)
779 return def_rsa_method->bn_mod_exp(r, a, p, m, ctx, m_ctx);
780 }
781
782 return cswift_mod_exp(r, a, p, m, ctx); 689 return cswift_mod_exp(r, a, p, m, ctx);
783 } 690 }
784 691
@@ -1023,10 +930,9 @@ static int cswift_rand_bytes(unsigned char *buf, int num)
1023 SW_CONTEXT_HANDLE hac; 930 SW_CONTEXT_HANDLE hac;
1024 SW_STATUS swrc; 931 SW_STATUS swrc;
1025 SW_LARGENUMBER largenum; 932 SW_LARGENUMBER largenum;
933 size_t nbytes = 0;
1026 int acquired = 0; 934 int acquired = 0;
1027 int to_return = 0; /* assume failure */ 935 int to_return = 0; /* assume failure */
1028 unsigned char buf32[1024];
1029
1030 936
1031 if (!get_context(&hac)) 937 if (!get_context(&hac))
1032 { 938 {
@@ -1035,19 +941,17 @@ static int cswift_rand_bytes(unsigned char *buf, int num)
1035 } 941 }
1036 acquired = 1; 942 acquired = 1;
1037 943
1038 /************************************************************************/ 944 while (nbytes < (size_t)num)
1039 /* 04/02/2003 */
1040 /* Modified by Frederic Giudicelli (deny-all.com) to overcome the */
1041 /* limitation of cswift with values not a multiple of 32 */
1042 /************************************************************************/
1043
1044 while(num >= sizeof(buf32))
1045 { 945 {
1046 largenum.value = buf;
1047 largenum.nbytes = sizeof(buf32);
1048 /* tell CryptoSwift how many bytes we want and where we want it. 946 /* tell CryptoSwift how many bytes we want and where we want it.
1049 * Note: - CryptoSwift cannot do more than 4096 bytes at a time. 947 * Note: - CryptoSwift cannot do more than 4096 bytes at a time.
1050 * - CryptoSwift can only do multiple of 32-bits. */ 948 * - CryptoSwift can only do multiple of 32-bits. */
949 largenum.value = (SW_BYTE *) buf + nbytes;
950 if (4096 > num - nbytes)
951 largenum.nbytes = num - nbytes;
952 else
953 largenum.nbytes = 4096;
954
1051 swrc = p_CSwift_SimpleRequest(hac, SW_CMD_RAND, NULL, 0, &largenum, 1); 955 swrc = p_CSwift_SimpleRequest(hac, SW_CMD_RAND, NULL, 0, &largenum, 1);
1052 if (swrc != SW_OK) 956 if (swrc != SW_OK)
1053 { 957 {
@@ -1057,30 +961,14 @@ static int cswift_rand_bytes(unsigned char *buf, int num)
1057 ERR_add_error_data(2, "CryptoSwift error number is ", tmpbuf); 961 ERR_add_error_data(2, "CryptoSwift error number is ", tmpbuf);
1058 goto err; 962 goto err;
1059 } 963 }
1060 buf += sizeof(buf32);
1061 num -= sizeof(buf32);
1062 }
1063 if(num)
1064 {
1065 largenum.nbytes = sizeof(buf32);
1066 largenum.value = buf32;
1067 swrc = p_CSwift_SimpleRequest(hac, SW_CMD_RAND, NULL, 0, &largenum, 1);
1068 if (swrc != SW_OK)
1069 {
1070 char tmpbuf[20];
1071 CSWIFTerr(CSWIFT_F_CSWIFT_CTRL, CSWIFT_R_REQUEST_FAILED);
1072 sprintf(tmpbuf, "%ld", swrc);
1073 ERR_add_error_data(2, "CryptoSwift error number is ", tmpbuf);
1074 goto err;
1075 }
1076 memcpy(buf, largenum.value, num);
1077 }
1078 964
965 nbytes += largenum.nbytes;
966 }
1079 to_return = 1; /* success */ 967 to_return = 1; /* success */
968
1080err: 969err:
1081 if (acquired) 970 if (acquired)
1082 release_context(hac); 971 release_context(hac);
1083
1084 return to_return; 972 return to_return;
1085} 973}
1086 974
diff --git a/src/lib/libssl/src/crypto/engine/hw_ubsec.c b/src/lib/libssl/src/crypto/engine/hw_ubsec.c
index 8fb834af31..5234a08a07 100644
--- a/src/lib/libssl/src/crypto/engine/hw_ubsec.c
+++ b/src/lib/libssl/src/crypto/engine/hw_ubsec.c
@@ -454,7 +454,6 @@ static int ubsec_init(ENGINE *e)
454err: 454err:
455 if(ubsec_dso) 455 if(ubsec_dso)
456 DSO_free(ubsec_dso); 456 DSO_free(ubsec_dso);
457 ubsec_dso = NULL;
458 p_UBSEC_ubsec_bytes_to_bits = NULL; 457 p_UBSEC_ubsec_bytes_to_bits = NULL;
459 p_UBSEC_ubsec_bits_to_bytes = NULL; 458 p_UBSEC_ubsec_bits_to_bytes = NULL;
460 p_UBSEC_ubsec_open = NULL; 459 p_UBSEC_ubsec_open = NULL;
diff --git a/src/lib/libssl/src/crypto/engine/tb_dsa.c b/src/lib/libssl/src/crypto/engine/tb_dsa.c
index 7efe181927..80170591f2 100644
--- a/src/lib/libssl/src/crypto/engine/tb_dsa.c
+++ b/src/lib/libssl/src/crypto/engine/tb_dsa.c
@@ -94,7 +94,7 @@ int ENGINE_set_default_DSA(ENGINE *e)
94 { 94 {
95 if(e->dsa_meth) 95 if(e->dsa_meth)
96 return engine_table_register(&dsa_table, 96 return engine_table_register(&dsa_table,
97 engine_unregister_all_DSA, e, &dummy_nid, 1, 1); 97 engine_unregister_all_DSA, e, &dummy_nid, 1, 0);
98 return 1; 98 return 1;
99 } 99 }
100 100
diff --git a/src/lib/libssl/src/crypto/err/Makefile.ssl b/src/lib/libssl/src/crypto/err/Makefile.ssl
new file mode 100644
index 0000000000..b253061d07
--- /dev/null
+++ b/src/lib/libssl/src/crypto/err/Makefile.ssl
@@ -0,0 +1,119 @@
1#
2# SSLeay/crypto/err/Makefile
3#
4
5DIR= err
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST=
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC=err.c err_all.c err_prn.c
27LIBOBJ=err.o err_all.o err_prn.o
28
29SRC= $(LIBSRC)
30
31EXHEADER= err.h
32HEADER= $(EXHEADER)
33
34ALL= $(GENERAL) $(SRC) $(HEADER)
35
36top:
37 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
38
39all: lib
40
41lib: $(LIBOBJ)
42 $(AR) $(LIB) $(LIBOBJ)
43 $(RANLIB) $(LIB) || echo Never mind.
44 @touch lib
45
46files:
47 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
48
49links:
50 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
51 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
52 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
53 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
54
55install:
56 @for i in $(EXHEADER) ; \
57 do \
58 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
59 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
60 done;
61
62tags:
63 ctags $(SRC)
64
65tests:
66
67lint:
68 lint -DLINT $(INCLUDES) $(SRC)>fluff
69
70depend:
71 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
72
73dclean:
74 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
75 mv -f Makefile.new $(MAKEFILE)
76
77clean:
78 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
79
80# DO NOT DELETE THIS LINE -- make depend depends on it.
81
82err.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/buffer.h
83err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
84err.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
85err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
86err.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
87err.o: ../../include/openssl/symhacks.h ../cryptlib.h err.c
88err_all.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
89err_all.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
90err_all.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
91err_all.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
92err_all.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
93err_all.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
94err_all.o: ../../include/openssl/dsa.h ../../include/openssl/dso.h
95err_all.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
96err_all.o: ../../include/openssl/engine.h ../../include/openssl/err.h
97err_all.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
98err_all.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
99err_all.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
100err_all.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
101err_all.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h
102err_all.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
103err_all.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem2.h
104err_all.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
105err_all.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
106err_all.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
107err_all.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
108err_all.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
109err_all.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
110err_all.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
111err_all.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
112err_all.o: ../../include/openssl/x509v3.h err_all.c
113err_prn.o: ../../e_os.h ../../include/openssl/bio.h
114err_prn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
115err_prn.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
116err_prn.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
117err_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
118err_prn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
119err_prn.o: ../cryptlib.h err_prn.c
diff --git a/src/lib/libssl/src/crypto/err/err.c b/src/lib/libssl/src/crypto/err/err.c
index 53687d79ab..c78790a54c 100644
--- a/src/lib/libssl/src/crypto/err/err.c
+++ b/src/lib/libssl/src/crypto/err/err.c
@@ -621,8 +621,7 @@ static void err_load_strings(int lib, ERR_STRING_DATA *str)
621 { 621 {
622 while (str->error) 622 while (str->error)
623 { 623 {
624 if (lib) 624 str->error|=ERR_PACK(lib,0,0);
625 str->error|=ERR_PACK(lib,0,0);
626 ERRFN(err_set_item)(str); 625 ERRFN(err_set_item)(str);
627 str++; 626 str++;
628 } 627 }
@@ -638,8 +637,7 @@ void ERR_unload_strings(int lib, ERR_STRING_DATA *str)
638 { 637 {
639 while (str->error) 638 while (str->error)
640 { 639 {
641 if (lib) 640 str->error|=ERR_PACK(lib,0,0);
642 str->error|=ERR_PACK(lib,0,0);
643 ERRFN(err_del_item)(str); 641 ERRFN(err_del_item)(str);
644 str++; 642 str++;
645 } 643 }
diff --git a/src/lib/libssl/src/crypto/err/openssl.ec b/src/lib/libssl/src/crypto/err/openssl.ec
index f8cd6937e7..447a7f87ed 100644
--- a/src/lib/libssl/src/crypto/err/openssl.ec
+++ b/src/lib/libssl/src/crypto/err/openssl.ec
@@ -27,7 +27,7 @@ L DSO crypto/dso/dso.h crypto/dso/dso_err.c
27L ENGINE crypto/engine/engine.h crypto/engine/eng_err.c 27L ENGINE crypto/engine/engine.h crypto/engine/eng_err.c
28L OCSP crypto/ocsp/ocsp.h crypto/ocsp/ocsp_err.c 28L OCSP crypto/ocsp/ocsp.h crypto/ocsp/ocsp_err.c
29L UI crypto/ui/ui.h crypto/ui/ui_err.c 29L UI crypto/ui/ui.h crypto/ui/ui_err.c
30L FIPS fips-1.0/fips.h fips-1.0/fips_err.h 30L FIPS fips/fips.h fips/fips_err.h
31 31
32# additional header files to be scanned for function names 32# additional header files to be scanned for function names
33L NONE crypto/x509/x509_vfy.h NONE 33L NONE crypto/x509/x509_vfy.h NONE
diff --git a/src/lib/libssl/src/crypto/evp/Makefile.ssl b/src/lib/libssl/src/crypto/evp/Makefile.ssl
new file mode 100644
index 0000000000..f33aebd33a
--- /dev/null
+++ b/src/lib/libssl/src/crypto/evp/Makefile.ssl
@@ -0,0 +1,1059 @@
1#
2# SSLeay/crypto/evp/Makefile
3#
4
5DIR= evp
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST=evp_test.c
23TESTDATA=evptests.txt
24APPS=
25
26LIB=$(TOP)/libcrypto.a
27LIBSRC= encode.c digest.c evp_enc.c evp_key.c evp_acnf.c \
28 e_des.c e_bf.c e_idea.c e_des3.c \
29 e_rc4.c e_aes.c names.c \
30 e_xcbc_d.c e_rc2.c e_cast.c e_rc5.c \
31 m_null.c m_md2.c m_md4.c m_md5.c m_sha.c m_sha1.c \
32 m_dss.c m_dss1.c m_mdc2.c m_ripemd.c \
33 p_open.c p_seal.c p_sign.c p_verify.c p_lib.c p_enc.c p_dec.c \
34 bio_md.c bio_b64.c bio_enc.c evp_err.c e_null.c \
35 c_all.c c_allc.c c_alld.c evp_lib.c bio_ok.c \
36 evp_pkey.c evp_pbe.c p5_crpt.c p5_crpt2.c
37
38LIBOBJ= encode.o digest.o evp_enc.o evp_key.o evp_acnf.o \
39 e_des.o e_bf.o e_idea.o e_des3.o \
40 e_rc4.o e_aes.o names.o \
41 e_xcbc_d.o e_rc2.o e_cast.o e_rc5.o \
42 m_null.o m_md2.o m_md4.o m_md5.o m_sha.o m_sha1.o \
43 m_dss.o m_dss1.o m_mdc2.o m_ripemd.o \
44 p_open.o p_seal.o p_sign.o p_verify.o p_lib.o p_enc.o p_dec.o \
45 bio_md.o bio_b64.o bio_enc.o evp_err.o e_null.o \
46 c_all.o c_allc.o c_alld.o evp_lib.o bio_ok.o \
47 evp_pkey.o evp_pbe.o p5_crpt.o p5_crpt2.o
48
49SRC= $(LIBSRC)
50
51EXHEADER= evp.h
52HEADER= $(EXHEADER)
53
54ALL= $(GENERAL) $(SRC) $(HEADER)
55
56top:
57 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
58
59all: lib
60
61lib: $(LIBOBJ)
62 $(AR) $(LIB) $(LIBOBJ)
63 $(RANLIB) $(LIB) || echo Never mind.
64 @touch lib
65
66files:
67 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
68
69links:
70 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
71 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
72 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
73 cp $(TESTDATA) ../../test
74 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
75
76install:
77 @for i in $(EXHEADER) ; \
78 do \
79 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
80 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
81 done;
82
83tags:
84 ctags $(SRC)
85
86tests:
87
88lint:
89 lint -DLINT $(INCLUDES) $(SRC)>fluff
90
91depend:
92 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(LIBSRC)
93
94dclean:
95 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
96 mv -f Makefile.new $(MAKEFILE)
97
98clean:
99 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
100
101# DO NOT DELETE THIS LINE -- make depend depends on it.
102
103bio_b64.o: ../../e_os.h ../../include/openssl/aes.h
104bio_b64.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
105bio_b64.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
106bio_b64.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
107bio_b64.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
108bio_b64.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
109bio_b64.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
110bio_b64.o: ../../include/openssl/err.h ../../include/openssl/evp.h
111bio_b64.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
112bio_b64.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
113bio_b64.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
114bio_b64.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
115bio_b64.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
116bio_b64.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rc2.h
117bio_b64.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
118bio_b64.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
119bio_b64.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
120bio_b64.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
121bio_b64.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
122bio_b64.o: ../cryptlib.h bio_b64.c
123bio_enc.o: ../../e_os.h ../../include/openssl/aes.h
124bio_enc.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
125bio_enc.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
126bio_enc.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
127bio_enc.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
128bio_enc.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
129bio_enc.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
130bio_enc.o: ../../include/openssl/err.h ../../include/openssl/evp.h
131bio_enc.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
132bio_enc.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
133bio_enc.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
134bio_enc.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
135bio_enc.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
136bio_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rc2.h
137bio_enc.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
138bio_enc.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
139bio_enc.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
140bio_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
141bio_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
142bio_enc.o: ../cryptlib.h bio_enc.c
143bio_md.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
144bio_md.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
145bio_md.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
146bio_md.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
147bio_md.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
148bio_md.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
149bio_md.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
150bio_md.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
151bio_md.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
152bio_md.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
153bio_md.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
154bio_md.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
155bio_md.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
156bio_md.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
157bio_md.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
158bio_md.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
159bio_md.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
160bio_md.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
161bio_md.o: ../../include/openssl/ui_compat.h ../cryptlib.h bio_md.c
162bio_ok.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
163bio_ok.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
164bio_ok.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
165bio_ok.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
166bio_ok.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
167bio_ok.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
168bio_ok.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
169bio_ok.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
170bio_ok.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
171bio_ok.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
172bio_ok.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
173bio_ok.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
174bio_ok.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
175bio_ok.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
176bio_ok.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
177bio_ok.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
178bio_ok.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
179bio_ok.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
180bio_ok.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
181bio_ok.o: ../cryptlib.h bio_ok.c
182c_all.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
183c_all.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
184c_all.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
185c_all.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
186c_all.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
187c_all.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
188c_all.o: ../../include/openssl/e_os2.h ../../include/openssl/engine.h
189c_all.o: ../../include/openssl/err.h ../../include/openssl/evp.h
190c_all.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
191c_all.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
192c_all.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
193c_all.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
194c_all.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
195c_all.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
196c_all.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
197c_all.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
198c_all.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
199c_all.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
200c_all.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
201c_all.o: ../../include/openssl/ui_compat.h ../cryptlib.h c_all.c
202c_allc.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
203c_allc.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
204c_allc.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
205c_allc.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
206c_allc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
207c_allc.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
208c_allc.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
209c_allc.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
210c_allc.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
211c_allc.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
212c_allc.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
213c_allc.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
214c_allc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
215c_allc.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
216c_allc.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
217c_allc.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
218c_allc.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
219c_allc.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
220c_allc.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
221c_allc.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
222c_allc.o: ../../include/openssl/x509_vfy.h ../cryptlib.h c_allc.c
223c_alld.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
224c_alld.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
225c_alld.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
226c_alld.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
227c_alld.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
228c_alld.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
229c_alld.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
230c_alld.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
231c_alld.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
232c_alld.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
233c_alld.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
234c_alld.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
235c_alld.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
236c_alld.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
237c_alld.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
238c_alld.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
239c_alld.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
240c_alld.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
241c_alld.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
242c_alld.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
243c_alld.o: ../../include/openssl/x509_vfy.h ../cryptlib.h c_alld.c
244digest.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
245digest.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
246digest.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
247digest.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
248digest.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
249digest.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
250digest.o: ../../include/openssl/e_os2.h ../../include/openssl/engine.h
251digest.o: ../../include/openssl/err.h ../../include/openssl/evp.h
252digest.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
253digest.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
254digest.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
255digest.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
256digest.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
257digest.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
258digest.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
259digest.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
260digest.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
261digest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
262digest.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
263digest.o: ../../include/openssl/ui_compat.h ../cryptlib.h digest.c
264e_aes.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
265e_aes.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
266e_aes.o: ../../include/openssl/bn.h ../../include/openssl/cast.h
267e_aes.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
268e_aes.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
269e_aes.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
270e_aes.o: ../../include/openssl/err.h ../../include/openssl/evp.h
271e_aes.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
272e_aes.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
273e_aes.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
274e_aes.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
275e_aes.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
276e_aes.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rc2.h
277e_aes.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
278e_aes.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
279e_aes.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
280e_aes.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
281e_aes.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h e_aes.c
282e_aes.o: evp_locl.h
283e_bf.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
284e_bf.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
285e_bf.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
286e_bf.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
287e_bf.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
288e_bf.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
289e_bf.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
290e_bf.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
291e_bf.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
292e_bf.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
293e_bf.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
294e_bf.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
295e_bf.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
296e_bf.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
297e_bf.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
298e_bf.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
299e_bf.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
300e_bf.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
301e_bf.o: ../../include/openssl/ui_compat.h ../cryptlib.h e_bf.c evp_locl.h
302e_cast.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
303e_cast.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
304e_cast.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
305e_cast.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
306e_cast.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
307e_cast.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
308e_cast.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
309e_cast.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
310e_cast.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
311e_cast.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
312e_cast.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
313e_cast.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
314e_cast.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
315e_cast.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
316e_cast.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
317e_cast.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
318e_cast.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
319e_cast.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
320e_cast.o: ../../include/openssl/ui_compat.h ../cryptlib.h e_cast.c evp_locl.h
321e_des.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
322e_des.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
323e_des.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
324e_des.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
325e_des.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
326e_des.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
327e_des.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
328e_des.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
329e_des.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
330e_des.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
331e_des.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
332e_des.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
333e_des.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
334e_des.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
335e_des.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
336e_des.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
337e_des.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
338e_des.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
339e_des.o: ../../include/openssl/ui_compat.h ../cryptlib.h e_des.c evp_locl.h
340e_des3.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
341e_des3.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
342e_des3.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
343e_des3.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
344e_des3.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
345e_des3.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
346e_des3.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
347e_des3.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
348e_des3.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
349e_des3.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
350e_des3.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
351e_des3.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
352e_des3.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
353e_des3.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
354e_des3.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
355e_des3.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
356e_des3.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
357e_des3.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
358e_des3.o: ../../include/openssl/ui_compat.h ../cryptlib.h e_des3.c evp_locl.h
359e_idea.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
360e_idea.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
361e_idea.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
362e_idea.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
363e_idea.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
364e_idea.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
365e_idea.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
366e_idea.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
367e_idea.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
368e_idea.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
369e_idea.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
370e_idea.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
371e_idea.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
372e_idea.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
373e_idea.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
374e_idea.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
375e_idea.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
376e_idea.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
377e_idea.o: ../../include/openssl/ui_compat.h ../cryptlib.h e_idea.c evp_locl.h
378e_null.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
379e_null.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
380e_null.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
381e_null.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
382e_null.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
383e_null.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
384e_null.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
385e_null.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
386e_null.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
387e_null.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
388e_null.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
389e_null.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
390e_null.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
391e_null.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
392e_null.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
393e_null.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
394e_null.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
395e_null.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
396e_null.o: ../../include/openssl/ui_compat.h ../cryptlib.h e_null.c
397e_rc2.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
398e_rc2.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
399e_rc2.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
400e_rc2.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
401e_rc2.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
402e_rc2.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
403e_rc2.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
404e_rc2.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
405e_rc2.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
406e_rc2.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
407e_rc2.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
408e_rc2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
409e_rc2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
410e_rc2.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
411e_rc2.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
412e_rc2.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
413e_rc2.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
414e_rc2.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
415e_rc2.o: ../../include/openssl/ui_compat.h ../cryptlib.h e_rc2.c evp_locl.h
416e_rc4.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
417e_rc4.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
418e_rc4.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
419e_rc4.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
420e_rc4.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
421e_rc4.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
422e_rc4.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
423e_rc4.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
424e_rc4.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
425e_rc4.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
426e_rc4.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
427e_rc4.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
428e_rc4.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
429e_rc4.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
430e_rc4.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
431e_rc4.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
432e_rc4.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
433e_rc4.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
434e_rc4.o: ../../include/openssl/ui_compat.h ../cryptlib.h e_rc4.c
435e_rc5.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
436e_rc5.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
437e_rc5.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
438e_rc5.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
439e_rc5.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
440e_rc5.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
441e_rc5.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
442e_rc5.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
443e_rc5.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
444e_rc5.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
445e_rc5.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
446e_rc5.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
447e_rc5.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
448e_rc5.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
449e_rc5.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
450e_rc5.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
451e_rc5.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
452e_rc5.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
453e_rc5.o: ../../include/openssl/ui_compat.h ../cryptlib.h e_rc5.c evp_locl.h
454e_xcbc_d.o: ../../e_os.h ../../include/openssl/aes.h
455e_xcbc_d.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
456e_xcbc_d.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
457e_xcbc_d.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
458e_xcbc_d.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
459e_xcbc_d.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
460e_xcbc_d.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
461e_xcbc_d.o: ../../include/openssl/err.h ../../include/openssl/evp.h
462e_xcbc_d.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
463e_xcbc_d.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
464e_xcbc_d.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
465e_xcbc_d.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
466e_xcbc_d.o: ../../include/openssl/opensslconf.h
467e_xcbc_d.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
468e_xcbc_d.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
469e_xcbc_d.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
470e_xcbc_d.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
471e_xcbc_d.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
472e_xcbc_d.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
473e_xcbc_d.o: ../../include/openssl/ui_compat.h ../cryptlib.h e_xcbc_d.c
474encode.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
475encode.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
476encode.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
477encode.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
478encode.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
479encode.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
480encode.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
481encode.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
482encode.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
483encode.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
484encode.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
485encode.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
486encode.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
487encode.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
488encode.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
489encode.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
490encode.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
491encode.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
492encode.o: ../../include/openssl/ui_compat.h ../cryptlib.h encode.c
493evp_acnf.o: ../../e_os.h ../../include/openssl/aes.h
494evp_acnf.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
495evp_acnf.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
496evp_acnf.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
497evp_acnf.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
498evp_acnf.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
499evp_acnf.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
500evp_acnf.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
501evp_acnf.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
502evp_acnf.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
503evp_acnf.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
504evp_acnf.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
505evp_acnf.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
506evp_acnf.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
507evp_acnf.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
508evp_acnf.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
509evp_acnf.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
510evp_acnf.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
511evp_acnf.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
512evp_acnf.o: ../../include/openssl/ui_compat.h ../cryptlib.h evp_acnf.c
513evp_enc.o: ../../e_os.h ../../include/openssl/aes.h
514evp_enc.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
515evp_enc.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
516evp_enc.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
517evp_enc.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
518evp_enc.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
519evp_enc.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
520evp_enc.o: ../../include/openssl/engine.h ../../include/openssl/err.h
521evp_enc.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
522evp_enc.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
523evp_enc.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
524evp_enc.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
525evp_enc.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
526evp_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
527evp_enc.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
528evp_enc.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
529evp_enc.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
530evp_enc.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
531evp_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
532evp_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
533evp_enc.o: ../cryptlib.h evp_enc.c evp_locl.h
534evp_err.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
535evp_err.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
536evp_err.o: ../../include/openssl/bn.h ../../include/openssl/cast.h
537evp_err.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
538evp_err.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
539evp_err.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
540evp_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h
541evp_err.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
542evp_err.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
543evp_err.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
544evp_err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
545evp_err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
546evp_err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rc2.h
547evp_err.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
548evp_err.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
549evp_err.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
550evp_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
551evp_err.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
552evp_err.o: evp_err.c
553evp_key.o: ../../e_os.h ../../include/openssl/aes.h
554evp_key.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
555evp_key.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
556evp_key.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
557evp_key.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
558evp_key.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
559evp_key.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
560evp_key.o: ../../include/openssl/err.h ../../include/openssl/evp.h
561evp_key.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
562evp_key.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
563evp_key.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
564evp_key.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
565evp_key.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
566evp_key.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
567evp_key.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
568evp_key.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
569evp_key.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
570evp_key.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
571evp_key.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
572evp_key.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
573evp_key.o: ../../include/openssl/x509_vfy.h ../cryptlib.h evp_key.c
574evp_lib.o: ../../e_os.h ../../include/openssl/aes.h
575evp_lib.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
576evp_lib.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
577evp_lib.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
578evp_lib.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
579evp_lib.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
580evp_lib.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
581evp_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
582evp_lib.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
583evp_lib.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
584evp_lib.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
585evp_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
586evp_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
587evp_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rc2.h
588evp_lib.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
589evp_lib.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
590evp_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
591evp_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
592evp_lib.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
593evp_lib.o: ../cryptlib.h evp_lib.c
594evp_pbe.o: ../../e_os.h ../../include/openssl/aes.h
595evp_pbe.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
596evp_pbe.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
597evp_pbe.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
598evp_pbe.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
599evp_pbe.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
600evp_pbe.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
601evp_pbe.o: ../../include/openssl/err.h ../../include/openssl/evp.h
602evp_pbe.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
603evp_pbe.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
604evp_pbe.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
605evp_pbe.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
606evp_pbe.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
607evp_pbe.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
608evp_pbe.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
609evp_pbe.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
610evp_pbe.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
611evp_pbe.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
612evp_pbe.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
613evp_pbe.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
614evp_pbe.o: ../../include/openssl/x509_vfy.h ../cryptlib.h evp_pbe.c
615evp_pkey.o: ../../e_os.h ../../include/openssl/aes.h
616evp_pkey.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
617evp_pkey.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
618evp_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
619evp_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
620evp_pkey.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
621evp_pkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
622evp_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
623evp_pkey.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
624evp_pkey.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
625evp_pkey.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
626evp_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
627evp_pkey.o: ../../include/openssl/opensslconf.h
628evp_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
629evp_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
630evp_pkey.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
631evp_pkey.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
632evp_pkey.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
633evp_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
634evp_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
635evp_pkey.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
636evp_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h evp_pkey.c
637m_dss.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
638m_dss.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
639m_dss.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
640m_dss.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
641m_dss.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
642m_dss.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
643m_dss.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
644m_dss.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
645m_dss.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
646m_dss.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
647m_dss.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
648m_dss.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
649m_dss.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
650m_dss.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
651m_dss.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
652m_dss.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
653m_dss.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
654m_dss.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
655m_dss.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
656m_dss.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
657m_dss.o: ../cryptlib.h m_dss.c
658m_dss1.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
659m_dss1.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
660m_dss1.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
661m_dss1.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
662m_dss1.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
663m_dss1.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
664m_dss1.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
665m_dss1.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
666m_dss1.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
667m_dss1.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
668m_dss1.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
669m_dss1.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
670m_dss1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
671m_dss1.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
672m_dss1.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
673m_dss1.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
674m_dss1.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
675m_dss1.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
676m_dss1.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
677m_dss1.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
678m_dss1.o: ../cryptlib.h m_dss1.c
679m_md2.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
680m_md2.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
681m_md2.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
682m_md2.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
683m_md2.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
684m_md2.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
685m_md2.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
686m_md2.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
687m_md2.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
688m_md2.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
689m_md2.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
690m_md2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
691m_md2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
692m_md2.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
693m_md2.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
694m_md2.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
695m_md2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
696m_md2.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
697m_md2.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
698m_md2.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
699m_md2.o: ../cryptlib.h m_md2.c
700m_md4.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
701m_md4.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
702m_md4.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
703m_md4.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
704m_md4.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
705m_md4.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
706m_md4.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
707m_md4.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
708m_md4.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
709m_md4.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
710m_md4.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
711m_md4.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
712m_md4.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
713m_md4.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
714m_md4.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
715m_md4.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
716m_md4.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
717m_md4.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
718m_md4.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
719m_md4.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
720m_md4.o: ../cryptlib.h m_md4.c
721m_md5.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
722m_md5.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
723m_md5.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
724m_md5.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
725m_md5.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
726m_md5.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
727m_md5.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
728m_md5.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
729m_md5.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
730m_md5.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
731m_md5.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
732m_md5.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
733m_md5.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
734m_md5.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
735m_md5.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
736m_md5.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
737m_md5.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
738m_md5.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
739m_md5.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
740m_md5.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
741m_md5.o: ../cryptlib.h m_md5.c
742m_mdc2.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
743m_mdc2.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
744m_mdc2.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
745m_mdc2.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
746m_mdc2.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
747m_mdc2.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
748m_mdc2.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
749m_mdc2.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
750m_mdc2.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
751m_mdc2.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
752m_mdc2.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
753m_mdc2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
754m_mdc2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
755m_mdc2.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
756m_mdc2.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
757m_mdc2.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
758m_mdc2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
759m_mdc2.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
760m_mdc2.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
761m_mdc2.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
762m_mdc2.o: ../cryptlib.h m_mdc2.c
763m_null.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
764m_null.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
765m_null.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
766m_null.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
767m_null.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
768m_null.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
769m_null.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
770m_null.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
771m_null.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
772m_null.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
773m_null.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
774m_null.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
775m_null.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
776m_null.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
777m_null.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
778m_null.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
779m_null.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
780m_null.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
781m_null.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
782m_null.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
783m_null.o: ../cryptlib.h m_null.c
784m_ripemd.o: ../../e_os.h ../../include/openssl/aes.h
785m_ripemd.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
786m_ripemd.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
787m_ripemd.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
788m_ripemd.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
789m_ripemd.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
790m_ripemd.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
791m_ripemd.o: ../../include/openssl/err.h ../../include/openssl/evp.h
792m_ripemd.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
793m_ripemd.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
794m_ripemd.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
795m_ripemd.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
796m_ripemd.o: ../../include/openssl/opensslconf.h
797m_ripemd.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
798m_ripemd.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
799m_ripemd.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
800m_ripemd.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
801m_ripemd.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
802m_ripemd.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
803m_ripemd.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
804m_ripemd.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
805m_ripemd.o: ../cryptlib.h m_ripemd.c
806m_sha.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
807m_sha.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
808m_sha.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
809m_sha.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
810m_sha.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
811m_sha.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
812m_sha.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
813m_sha.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
814m_sha.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
815m_sha.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
816m_sha.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
817m_sha.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
818m_sha.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
819m_sha.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
820m_sha.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
821m_sha.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
822m_sha.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
823m_sha.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
824m_sha.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
825m_sha.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
826m_sha.o: ../cryptlib.h m_sha.c
827m_sha1.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
828m_sha1.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
829m_sha1.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
830m_sha1.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
831m_sha1.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
832m_sha1.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
833m_sha1.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
834m_sha1.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
835m_sha1.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
836m_sha1.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
837m_sha1.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
838m_sha1.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
839m_sha1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
840m_sha1.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
841m_sha1.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
842m_sha1.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
843m_sha1.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
844m_sha1.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
845m_sha1.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
846m_sha1.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
847m_sha1.o: ../cryptlib.h m_sha1.c
848names.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
849names.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
850names.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
851names.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
852names.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
853names.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
854names.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
855names.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
856names.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
857names.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
858names.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
859names.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
860names.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
861names.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
862names.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
863names.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
864names.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
865names.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
866names.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
867names.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
868names.o: ../cryptlib.h names.c
869p5_crpt.o: ../../e_os.h ../../include/openssl/aes.h
870p5_crpt.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
871p5_crpt.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
872p5_crpt.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
873p5_crpt.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
874p5_crpt.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
875p5_crpt.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
876p5_crpt.o: ../../include/openssl/err.h ../../include/openssl/evp.h
877p5_crpt.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
878p5_crpt.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
879p5_crpt.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
880p5_crpt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
881p5_crpt.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
882p5_crpt.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
883p5_crpt.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
884p5_crpt.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
885p5_crpt.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
886p5_crpt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
887p5_crpt.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
888p5_crpt.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
889p5_crpt.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p5_crpt.c
890p5_crpt2.o: ../../e_os.h ../../include/openssl/aes.h
891p5_crpt2.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
892p5_crpt2.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
893p5_crpt2.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
894p5_crpt2.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
895p5_crpt2.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
896p5_crpt2.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
897p5_crpt2.o: ../../include/openssl/err.h ../../include/openssl/evp.h
898p5_crpt2.o: ../../include/openssl/hmac.h ../../include/openssl/idea.h
899p5_crpt2.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
900p5_crpt2.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
901p5_crpt2.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
902p5_crpt2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
903p5_crpt2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
904p5_crpt2.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
905p5_crpt2.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
906p5_crpt2.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
907p5_crpt2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
908p5_crpt2.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
909p5_crpt2.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
910p5_crpt2.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
911p5_crpt2.o: ../cryptlib.h p5_crpt2.c
912p_dec.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
913p_dec.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
914p_dec.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
915p_dec.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
916p_dec.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
917p_dec.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
918p_dec.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
919p_dec.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
920p_dec.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
921p_dec.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
922p_dec.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
923p_dec.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
924p_dec.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
925p_dec.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
926p_dec.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
927p_dec.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
928p_dec.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
929p_dec.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
930p_dec.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
931p_dec.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
932p_dec.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p_dec.c
933p_enc.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
934p_enc.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
935p_enc.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
936p_enc.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
937p_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
938p_enc.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
939p_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
940p_enc.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
941p_enc.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
942p_enc.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
943p_enc.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
944p_enc.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
945p_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
946p_enc.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
947p_enc.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
948p_enc.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
949p_enc.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
950p_enc.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
951p_enc.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
952p_enc.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
953p_enc.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p_enc.c
954p_lib.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
955p_lib.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
956p_lib.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
957p_lib.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
958p_lib.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
959p_lib.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
960p_lib.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
961p_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
962p_lib.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
963p_lib.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
964p_lib.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
965p_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
966p_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
967p_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
968p_lib.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
969p_lib.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
970p_lib.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
971p_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
972p_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
973p_lib.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
974p_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p_lib.c
975p_open.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
976p_open.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
977p_open.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
978p_open.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
979p_open.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
980p_open.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
981p_open.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
982p_open.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
983p_open.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
984p_open.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
985p_open.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
986p_open.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
987p_open.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
988p_open.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
989p_open.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
990p_open.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
991p_open.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
992p_open.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
993p_open.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
994p_open.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
995p_open.o: ../cryptlib.h p_open.c
996p_seal.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
997p_seal.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
998p_seal.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
999p_seal.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
1000p_seal.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
1001p_seal.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
1002p_seal.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
1003p_seal.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
1004p_seal.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
1005p_seal.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
1006p_seal.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
1007p_seal.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
1008p_seal.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
1009p_seal.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
1010p_seal.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
1011p_seal.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
1012p_seal.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
1013p_seal.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
1014p_seal.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
1015p_seal.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
1016p_seal.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p_seal.c
1017p_sign.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
1018p_sign.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
1019p_sign.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
1020p_sign.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
1021p_sign.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
1022p_sign.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
1023p_sign.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
1024p_sign.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
1025p_sign.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
1026p_sign.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
1027p_sign.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
1028p_sign.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
1029p_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
1030p_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
1031p_sign.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
1032p_sign.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
1033p_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
1034p_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
1035p_sign.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
1036p_sign.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
1037p_sign.o: ../cryptlib.h p_sign.c
1038p_verify.o: ../../e_os.h ../../include/openssl/aes.h
1039p_verify.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
1040p_verify.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
1041p_verify.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
1042p_verify.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
1043p_verify.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
1044p_verify.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
1045p_verify.o: ../../include/openssl/err.h ../../include/openssl/evp.h
1046p_verify.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
1047p_verify.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
1048p_verify.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
1049p_verify.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
1050p_verify.o: ../../include/openssl/opensslconf.h
1051p_verify.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
1052p_verify.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
1053p_verify.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
1054p_verify.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
1055p_verify.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
1056p_verify.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
1057p_verify.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
1058p_verify.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
1059p_verify.o: ../cryptlib.h p_verify.c
diff --git a/src/lib/libssl/src/crypto/evp/bio_enc.c b/src/lib/libssl/src/crypto/evp/bio_enc.c
index b8cda1a9f0..ab81851503 100644
--- a/src/lib/libssl/src/crypto/evp/bio_enc.c
+++ b/src/lib/libssl/src/crypto/evp/bio_enc.c
@@ -71,7 +71,7 @@ static int enc_new(BIO *h);
71static int enc_free(BIO *data); 71static int enc_free(BIO *data);
72static long enc_callback_ctrl(BIO *h, int cmd, bio_info_cb *fps); 72static long enc_callback_ctrl(BIO *h, int cmd, bio_info_cb *fps);
73#define ENC_BLOCK_SIZE (1024*4) 73#define ENC_BLOCK_SIZE (1024*4)
74#define BUF_OFFSET (EVP_MAX_BLOCK_LENGTH*2) 74#define BUF_OFFSET EVP_MAX_BLOCK_LENGTH
75 75
76typedef struct enc_struct 76typedef struct enc_struct
77 { 77 {
diff --git a/src/lib/libssl/src/crypto/evp/c_alld.c b/src/lib/libssl/src/crypto/evp/c_alld.c
index 929ea56a3e..aae7bf7482 100644
--- a/src/lib/libssl/src/crypto/evp/c_alld.c
+++ b/src/lib/libssl/src/crypto/evp/c_alld.c
@@ -100,14 +100,4 @@ void OpenSSL_add_all_digests(void)
100 EVP_add_digest_alias(SN_ripemd160,"ripemd"); 100 EVP_add_digest_alias(SN_ripemd160,"ripemd");
101 EVP_add_digest_alias(SN_ripemd160,"rmd160"); 101 EVP_add_digest_alias(SN_ripemd160,"rmd160");
102#endif 102#endif
103#ifdef OPENSSL_FIPS
104#ifndef OPENSSL_NO_SHA256
105 EVP_add_digest(EVP_sha224());
106 EVP_add_digest(EVP_sha256());
107#endif
108#ifndef OPENSSL_NO_SHA512
109 EVP_add_digest(EVP_sha384());
110 EVP_add_digest(EVP_sha512());
111#endif
112#endif
113 } 103 }
diff --git a/src/lib/libssl/src/crypto/evp/e_acss.c b/src/lib/libssl/src/crypto/evp/e_acss.c
new file mode 100644
index 0000000000..a16b85c627
--- /dev/null
+++ b/src/lib/libssl/src/crypto/evp/e_acss.c
@@ -0,0 +1,85 @@
1/* $Id: e_acss.c,v 1.2 2004/02/13 10:05:44 hshoexer Exp $ */
2/*
3 * Copyright (c) 2004 The OpenBSD project
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#ifndef OPENSSL_NO_ACSS
19
20#include "cryptlib.h"
21#include <openssl/evp.h>
22#include <openssl/objects.h>
23#include "evp_locl.h"
24#include <openssl/acss.h>
25
26typedef struct {
27 ACSS_KEY ks;
28} EVP_ACSS_KEY;
29
30#define data(ctx) EVP_C_DATA(EVP_ACSS_KEY,ctx)
31
32static int acss_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
33 const unsigned char *iv, int enc);
34static int acss_ciph(EVP_CIPHER_CTX *ctx, unsigned char *out,
35 const unsigned char *in, unsigned int inl);
36static int acss_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr);
37static const EVP_CIPHER acss_cipher = {
38 NID_undef,
39 1,5,0,
40 0,
41 acss_init_key,
42 acss_ciph,
43 NULL,
44 sizeof(EVP_ACSS_KEY),
45 NULL,
46 NULL,
47 acss_ctrl,
48 NULL
49};
50
51const
52EVP_CIPHER *EVP_acss(void)
53{
54 return(&acss_cipher);
55}
56
57static int
58acss_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
59 const unsigned char *iv, int enc)
60{
61 acss_setkey(&data(ctx)->ks,key,enc,ACSS_MODE1);
62 return 1;
63}
64
65static int
66acss_ciph(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in,
67 unsigned int inl)
68{
69 acss(&data(ctx)->ks,inl,in,out);
70 return 1;
71}
72
73static int
74acss_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr)
75{
76 switch(type) {
77 case EVP_CTRL_SET_ACSS_MODE:
78 data(ctx)->ks.mode = arg;
79 return 1;
80
81 default:
82 return -1;
83 }
84}
85#endif
diff --git a/src/lib/libssl/src/crypto/evp/e_aes.c b/src/lib/libssl/src/crypto/evp/e_aes.c
index 7b67984fa1..f35036c9d7 100644
--- a/src/lib/libssl/src/crypto/evp/e_aes.c
+++ b/src/lib/libssl/src/crypto/evp/e_aes.c
@@ -86,9 +86,9 @@ IMPLEMENT_BLOCK_CIPHER(aes_256, ks, AES, EVP_AES_KEY,
86 86
87#define IMPLEMENT_AES_CFBR(ksize,cbits,flags) IMPLEMENT_CFBR(aes,AES,EVP_AES_KEY,ks,ksize,cbits,16,flags) 87#define IMPLEMENT_AES_CFBR(ksize,cbits,flags) IMPLEMENT_CFBR(aes,AES,EVP_AES_KEY,ks,ksize,cbits,16,flags)
88 88
89IMPLEMENT_AES_CFBR(128,1,EVP_CIPH_FLAG_FIPS) 89IMPLEMENT_AES_CFBR(128,1,0)
90IMPLEMENT_AES_CFBR(192,1,EVP_CIPH_FLAG_FIPS) 90IMPLEMENT_AES_CFBR(192,1,0)
91IMPLEMENT_AES_CFBR(256,1,EVP_CIPH_FLAG_FIPS) 91IMPLEMENT_AES_CFBR(256,1,0)
92 92
93IMPLEMENT_AES_CFBR(128,8,EVP_CIPH_FLAG_FIPS) 93IMPLEMENT_AES_CFBR(128,8,EVP_CIPH_FLAG_FIPS)
94IMPLEMENT_AES_CFBR(192,8,EVP_CIPH_FLAG_FIPS) 94IMPLEMENT_AES_CFBR(192,8,EVP_CIPH_FLAG_FIPS)
diff --git a/src/lib/libssl/src/crypto/evp/encode.c b/src/lib/libssl/src/crypto/evp/encode.c
index 33e540087d..08209357ce 100644
--- a/src/lib/libssl/src/crypto/evp/encode.c
+++ b/src/lib/libssl/src/crypto/evp/encode.c
@@ -313,7 +313,7 @@ int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
313 /* There will never be more than two '=' */ 313 /* There will never be more than two '=' */
314 } 314 }
315 315
316 if ((v == B64_EOF && (n&3) == 0) || (n >= 64)) 316 if ((v == B64_EOF) || (n >= 64))
317 { 317 {
318 /* This is needed to work correctly on 64 byte input 318 /* This is needed to work correctly on 64 byte input
319 * lines. We process the line and then need to 319 * lines. We process the line and then need to
diff --git a/src/lib/libssl/src/crypto/evp/evp.h b/src/lib/libssl/src/crypto/evp/evp.h
index 56eec23fef..09e597f631 100644
--- a/src/lib/libssl/src/crypto/evp/evp.h
+++ b/src/lib/libssl/src/crypto/evp/evp.h
@@ -74,52 +74,6 @@
74#ifndef OPENSSL_NO_BIO 74#ifndef OPENSSL_NO_BIO
75#include <openssl/bio.h> 75#include <openssl/bio.h>
76#endif 76#endif
77#ifndef OPENSSL_NO_MD2
78#include <openssl/md2.h>
79#endif
80#ifndef OPENSSL_NO_MD4
81#include <openssl/md4.h>
82#endif
83#ifndef OPENSSL_NO_MD5
84#include <openssl/md5.h>
85#endif
86#ifndef OPENSSL_NO_SHA
87#ifndef OPENSSL_FIPS
88#include <openssl/sha.h>
89#else
90#include <openssl/fips_sha.h>
91#endif
92#endif
93#ifndef OPENSSL_NO_RIPEMD
94#include <openssl/ripemd.h>
95#endif
96#ifndef OPENSSL_NO_DES
97#include <openssl/des.h>
98#endif
99#ifndef OPENSSL_NO_RC4
100#include <openssl/rc4.h>
101#endif
102#ifndef OPENSSL_NO_RC2
103#include <openssl/rc2.h>
104#endif
105#ifndef OPENSSL_NO_RC5
106#include <openssl/rc5.h>
107#endif
108#ifndef OPENSSL_NO_BF
109#include <openssl/blowfish.h>
110#endif
111#ifndef OPENSSL_NO_CAST
112#include <openssl/cast.h>
113#endif
114#ifndef OPENSSL_NO_IDEA
115#include <openssl/idea.h>
116#endif
117#ifndef OPENSSL_NO_MDC2
118#include <openssl/mdc2.h>
119#endif
120#ifndef OPENSSL_NO_AES
121#include <openssl/aes.h>
122#endif
123 77
124#ifdef OPENSSL_FIPS 78#ifdef OPENSSL_FIPS
125#include <openssl/fips.h> 79#include <openssl/fips.h>
@@ -132,11 +86,7 @@
132#define EVP_CAST5_KEY_SIZE 16 86#define EVP_CAST5_KEY_SIZE 16
133#define EVP_RC5_32_12_16_KEY_SIZE 16 87#define EVP_RC5_32_12_16_KEY_SIZE 16
134*/ 88*/
135#ifdef OPENSSL_FIPS 89#define EVP_MAX_MD_SIZE 64 /* to fit SHA512 */
136#define EVP_MAX_MD_SIZE 64 /* longest known SHA512 */
137#else
138#define EVP_MAX_MD_SIZE (16+20) /* The SSLv3 md5+sha1 type */
139#endif
140#define EVP_MAX_KEY_LENGTH 32 90#define EVP_MAX_KEY_LENGTH 32
141#define EVP_MAX_IV_LENGTH 16 91#define EVP_MAX_IV_LENGTH 16
142#define EVP_MAX_BLOCK_LENGTH 32 92#define EVP_MAX_BLOCK_LENGTH 32
@@ -145,18 +95,6 @@
145/* Default PKCS#5 iteration count */ 95/* Default PKCS#5 iteration count */
146#define PKCS5_DEFAULT_ITER 2048 96#define PKCS5_DEFAULT_ITER 2048
147 97
148#ifndef OPENSSL_NO_RSA
149#include <openssl/rsa.h>
150#endif
151
152#ifndef OPENSSL_NO_DSA
153#include <openssl/dsa.h>
154#endif
155
156#ifndef OPENSSL_NO_DH
157#include <openssl/dh.h>
158#endif
159
160#include <openssl/objects.h> 98#include <openssl/objects.h>
161 99
162#define EVP_PK_RSA 0x0001 100#define EVP_PK_RSA 0x0001
@@ -402,6 +340,7 @@ struct evp_cipher_st
402#define EVP_CTRL_SET_RC2_KEY_BITS 0x3 340#define EVP_CTRL_SET_RC2_KEY_BITS 0x3
403#define EVP_CTRL_GET_RC5_ROUNDS 0x4 341#define EVP_CTRL_GET_RC5_ROUNDS 0x4
404#define EVP_CTRL_SET_RC5_ROUNDS 0x5 342#define EVP_CTRL_SET_RC5_ROUNDS 0x5
343#define EVP_CTRL_SET_ACSS_MODE 0x6
405 344
406typedef struct evp_cipher_info_st 345typedef struct evp_cipher_info_st
407 { 346 {
@@ -650,16 +589,6 @@ const EVP_MD *EVP_sha(void);
650const EVP_MD *EVP_sha1(void); 589const EVP_MD *EVP_sha1(void);
651const EVP_MD *EVP_dss(void); 590const EVP_MD *EVP_dss(void);
652const EVP_MD *EVP_dss1(void); 591const EVP_MD *EVP_dss1(void);
653#ifdef OPENSSL_FIPS
654#ifndef OPENSSL_NO_SHA256
655const EVP_MD *EVP_sha224(void);
656const EVP_MD *EVP_sha256(void);
657#endif
658#ifndef OPENSSL_NO_SHA512
659const EVP_MD *EVP_sha384(void);
660const EVP_MD *EVP_sha512(void);
661#endif
662#endif
663#endif 592#endif
664#ifndef OPENSSL_NO_MDC2 593#ifndef OPENSSL_NO_MDC2
665const EVP_MD *EVP_mdc2(void); 594const EVP_MD *EVP_mdc2(void);
@@ -778,6 +707,9 @@ const EVP_CIPHER *EVP_aes_256_ofb(void);
778const EVP_CIPHER *EVP_aes_256_ctr(void); 707const EVP_CIPHER *EVP_aes_256_ctr(void);
779#endif 708#endif
780#endif 709#endif
710#ifndef OPENSSL_NO_ACSS
711const EVP_CIPHER *EVP_acss(void);
712#endif
781 713
782void OPENSSL_add_all_algorithms_noconf(void); 714void OPENSSL_add_all_algorithms_noconf(void);
783void OPENSSL_add_all_algorithms_conf(void); 715void OPENSSL_add_all_algorithms_conf(void);
diff --git a/src/lib/libssl/src/crypto/evp/evp_err.c b/src/lib/libssl/src/crypto/evp/evp_err.c
index 77eee070d3..40135d0729 100644
--- a/src/lib/libssl/src/crypto/evp/evp_err.c
+++ b/src/lib/libssl/src/crypto/evp/evp_err.c
@@ -64,92 +64,88 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_EVP,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_EVP,0,reason)
70
71static ERR_STRING_DATA EVP_str_functs[]= 67static ERR_STRING_DATA EVP_str_functs[]=
72 { 68 {
73{ERR_FUNC(EVP_F_AES_INIT_KEY), "AES_INIT_KEY"}, 69{ERR_PACK(0,EVP_F_AES_INIT_KEY,0), "AES_INIT_KEY"},
74{ERR_FUNC(EVP_F_D2I_PKEY), "D2I_PKEY"}, 70{ERR_PACK(0,EVP_F_D2I_PKEY,0), "D2I_PKEY"},
75{ERR_FUNC(EVP_F_EVP_ADD_CIPHER), "EVP_add_cipher"}, 71{ERR_PACK(0,EVP_F_EVP_ADD_CIPHER,0), "EVP_add_cipher"},
76{ERR_FUNC(EVP_F_EVP_ADD_DIGEST), "EVP_add_digest"}, 72{ERR_PACK(0,EVP_F_EVP_ADD_DIGEST,0), "EVP_add_digest"},
77{ERR_FUNC(EVP_F_EVP_CIPHERINIT), "EVP_CipherInit"}, 73{ERR_PACK(0,EVP_F_EVP_CIPHERINIT,0), "EVP_CipherInit"},
78{ERR_FUNC(EVP_F_EVP_CIPHER_CTX_CTRL), "EVP_CIPHER_CTX_ctrl"}, 74{ERR_PACK(0,EVP_F_EVP_CIPHER_CTX_CTRL,0), "EVP_CIPHER_CTX_ctrl"},
79{ERR_FUNC(EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH), "EVP_CIPHER_CTX_set_key_length"}, 75{ERR_PACK(0,EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH,0), "EVP_CIPHER_CTX_set_key_length"},
80{ERR_FUNC(EVP_F_EVP_DECRYPTFINAL), "EVP_DecryptFinal"}, 76{ERR_PACK(0,EVP_F_EVP_DECRYPTFINAL,0), "EVP_DecryptFinal"},
81{ERR_FUNC(EVP_F_EVP_DIGESTINIT), "EVP_DigestInit"}, 77{ERR_PACK(0,EVP_F_EVP_DIGESTINIT,0), "EVP_DigestInit"},
82{ERR_FUNC(EVP_F_EVP_ENCRYPTFINAL), "EVP_EncryptFinal"}, 78{ERR_PACK(0,EVP_F_EVP_ENCRYPTFINAL,0), "EVP_EncryptFinal"},
83{ERR_FUNC(EVP_F_EVP_GET_CIPHERBYNAME), "EVP_get_cipherbyname"}, 79{ERR_PACK(0,EVP_F_EVP_GET_CIPHERBYNAME,0), "EVP_get_cipherbyname"},
84{ERR_FUNC(EVP_F_EVP_GET_DIGESTBYNAME), "EVP_get_digestbyname"}, 80{ERR_PACK(0,EVP_F_EVP_GET_DIGESTBYNAME,0), "EVP_get_digestbyname"},
85{ERR_FUNC(EVP_F_EVP_MD_CTX_COPY), "EVP_MD_CTX_copy"}, 81{ERR_PACK(0,EVP_F_EVP_MD_CTX_COPY,0), "EVP_MD_CTX_copy"},
86{ERR_FUNC(EVP_F_EVP_OPENINIT), "EVP_OpenInit"}, 82{ERR_PACK(0,EVP_F_EVP_OPENINIT,0), "EVP_OpenInit"},
87{ERR_FUNC(EVP_F_EVP_PBE_ALG_ADD), "EVP_PBE_alg_add"}, 83{ERR_PACK(0,EVP_F_EVP_PBE_ALG_ADD,0), "EVP_PBE_alg_add"},
88{ERR_FUNC(EVP_F_EVP_PBE_CIPHERINIT), "EVP_PBE_CipherInit"}, 84{ERR_PACK(0,EVP_F_EVP_PBE_CIPHERINIT,0), "EVP_PBE_CipherInit"},
89{ERR_FUNC(EVP_F_EVP_PKCS82PKEY), "EVP_PKCS82PKEY"}, 85{ERR_PACK(0,EVP_F_EVP_PKCS82PKEY,0), "EVP_PKCS82PKEY"},
90{ERR_FUNC(EVP_F_EVP_PKCS8_SET_BROKEN), "EVP_PKCS8_SET_BROKEN"}, 86{ERR_PACK(0,EVP_F_EVP_PKCS8_SET_BROKEN,0), "EVP_PKCS8_SET_BROKEN"},
91{ERR_FUNC(EVP_F_EVP_PKEY2PKCS8), "EVP_PKEY2PKCS8"}, 87{ERR_PACK(0,EVP_F_EVP_PKEY2PKCS8,0), "EVP_PKEY2PKCS8"},
92{ERR_FUNC(EVP_F_EVP_PKEY_COPY_PARAMETERS), "EVP_PKEY_copy_parameters"}, 88{ERR_PACK(0,EVP_F_EVP_PKEY_COPY_PARAMETERS,0), "EVP_PKEY_copy_parameters"},
93{ERR_FUNC(EVP_F_EVP_PKEY_DECRYPT), "EVP_PKEY_decrypt"}, 89{ERR_PACK(0,EVP_F_EVP_PKEY_DECRYPT,0), "EVP_PKEY_decrypt"},
94{ERR_FUNC(EVP_F_EVP_PKEY_ENCRYPT), "EVP_PKEY_encrypt"}, 90{ERR_PACK(0,EVP_F_EVP_PKEY_ENCRYPT,0), "EVP_PKEY_encrypt"},
95{ERR_FUNC(EVP_F_EVP_PKEY_GET1_DH), "EVP_PKEY_get1_DH"}, 91{ERR_PACK(0,EVP_F_EVP_PKEY_GET1_DH,0), "EVP_PKEY_get1_DH"},
96{ERR_FUNC(EVP_F_EVP_PKEY_GET1_DSA), "EVP_PKEY_get1_DSA"}, 92{ERR_PACK(0,EVP_F_EVP_PKEY_GET1_DSA,0), "EVP_PKEY_get1_DSA"},
97{ERR_FUNC(EVP_F_EVP_PKEY_GET1_RSA), "EVP_PKEY_get1_RSA"}, 93{ERR_PACK(0,EVP_F_EVP_PKEY_GET1_RSA,0), "EVP_PKEY_get1_RSA"},
98{ERR_FUNC(EVP_F_EVP_PKEY_NEW), "EVP_PKEY_new"}, 94{ERR_PACK(0,EVP_F_EVP_PKEY_NEW,0), "EVP_PKEY_new"},
99{ERR_FUNC(EVP_F_EVP_RIJNDAEL), "EVP_RIJNDAEL"}, 95{ERR_PACK(0,EVP_F_EVP_RIJNDAEL,0), "EVP_RIJNDAEL"},
100{ERR_FUNC(EVP_F_EVP_SIGNFINAL), "EVP_SignFinal"}, 96{ERR_PACK(0,EVP_F_EVP_SIGNFINAL,0), "EVP_SignFinal"},
101{ERR_FUNC(EVP_F_EVP_VERIFYFINAL), "EVP_VerifyFinal"}, 97{ERR_PACK(0,EVP_F_EVP_VERIFYFINAL,0), "EVP_VerifyFinal"},
102{ERR_FUNC(EVP_F_PKCS5_PBE_KEYIVGEN), "PKCS5_PBE_keyivgen"}, 98{ERR_PACK(0,EVP_F_PKCS5_PBE_KEYIVGEN,0), "PKCS5_PBE_keyivgen"},
103{ERR_FUNC(EVP_F_PKCS5_V2_PBE_KEYIVGEN), "PKCS5_v2_PBE_keyivgen"}, 99{ERR_PACK(0,EVP_F_PKCS5_V2_PBE_KEYIVGEN,0), "PKCS5_v2_PBE_keyivgen"},
104{ERR_FUNC(EVP_F_RC2_MAGIC_TO_METH), "RC2_MAGIC_TO_METH"}, 100{ERR_PACK(0,EVP_F_RC2_MAGIC_TO_METH,0), "RC2_MAGIC_TO_METH"},
105{ERR_FUNC(EVP_F_RC5_CTRL), "RC5_CTRL"}, 101{ERR_PACK(0,EVP_F_RC5_CTRL,0), "RC5_CTRL"},
106{0,NULL} 102{0,NULL}
107 }; 103 };
108 104
109static ERR_STRING_DATA EVP_str_reasons[]= 105static ERR_STRING_DATA EVP_str_reasons[]=
110 { 106 {
111{ERR_REASON(EVP_R_AES_KEY_SETUP_FAILED) ,"aes key setup failed"}, 107{EVP_R_AES_KEY_SETUP_FAILED ,"aes key setup failed"},
112{ERR_REASON(EVP_R_BAD_BLOCK_LENGTH) ,"bad block length"}, 108{EVP_R_BAD_BLOCK_LENGTH ,"bad block length"},
113{ERR_REASON(EVP_R_BAD_DECRYPT) ,"bad decrypt"}, 109{EVP_R_BAD_DECRYPT ,"bad decrypt"},
114{ERR_REASON(EVP_R_BAD_KEY_LENGTH) ,"bad key length"}, 110{EVP_R_BAD_KEY_LENGTH ,"bad key length"},
115{ERR_REASON(EVP_R_BN_DECODE_ERROR) ,"bn decode error"}, 111{EVP_R_BN_DECODE_ERROR ,"bn decode error"},
116{ERR_REASON(EVP_R_BN_PUBKEY_ERROR) ,"bn pubkey error"}, 112{EVP_R_BN_PUBKEY_ERROR ,"bn pubkey error"},
117{ERR_REASON(EVP_R_CIPHER_PARAMETER_ERROR),"cipher parameter error"}, 113{EVP_R_CIPHER_PARAMETER_ERROR ,"cipher parameter error"},
118{ERR_REASON(EVP_R_CTRL_NOT_IMPLEMENTED) ,"ctrl not implemented"}, 114{EVP_R_CTRL_NOT_IMPLEMENTED ,"ctrl not implemented"},
119{ERR_REASON(EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED),"ctrl operation not implemented"}, 115{EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED ,"ctrl operation not implemented"},
120{ERR_REASON(EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH),"data not multiple of block length"}, 116{EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH ,"data not multiple of block length"},
121{ERR_REASON(EVP_R_DECODE_ERROR) ,"decode error"}, 117{EVP_R_DECODE_ERROR ,"decode error"},
122{ERR_REASON(EVP_R_DIFFERENT_KEY_TYPES) ,"different key types"}, 118{EVP_R_DIFFERENT_KEY_TYPES ,"different key types"},
123{ERR_REASON(EVP_R_DISABLED_FOR_FIPS) ,"disabled for fips"}, 119{EVP_R_DISABLED_FOR_FIPS ,"disabled for fips"},
124{ERR_REASON(EVP_R_ENCODE_ERROR) ,"encode error"}, 120{EVP_R_ENCODE_ERROR ,"encode error"},
125{ERR_REASON(EVP_R_EVP_PBE_CIPHERINIT_ERROR),"evp pbe cipherinit error"}, 121{EVP_R_EVP_PBE_CIPHERINIT_ERROR ,"evp pbe cipherinit error"},
126{ERR_REASON(EVP_R_EXPECTING_AN_RSA_KEY) ,"expecting an rsa key"}, 122{EVP_R_EXPECTING_AN_RSA_KEY ,"expecting an rsa key"},
127{ERR_REASON(EVP_R_EXPECTING_A_DH_KEY) ,"expecting a dh key"}, 123{EVP_R_EXPECTING_A_DH_KEY ,"expecting a dh key"},
128{ERR_REASON(EVP_R_EXPECTING_A_DSA_KEY) ,"expecting a dsa key"}, 124{EVP_R_EXPECTING_A_DSA_KEY ,"expecting a dsa key"},
129{ERR_REASON(EVP_R_INITIALIZATION_ERROR) ,"initialization error"}, 125{EVP_R_INITIALIZATION_ERROR ,"initialization error"},
130{ERR_REASON(EVP_R_INPUT_NOT_INITIALIZED) ,"input not initialized"}, 126{EVP_R_INPUT_NOT_INITIALIZED ,"input not initialized"},
131{ERR_REASON(EVP_R_INVALID_KEY_LENGTH) ,"invalid key length"}, 127{EVP_R_INVALID_KEY_LENGTH ,"invalid key length"},
132{ERR_REASON(EVP_R_IV_TOO_LARGE) ,"iv too large"}, 128{EVP_R_IV_TOO_LARGE ,"iv too large"},
133{ERR_REASON(EVP_R_KEYGEN_FAILURE) ,"keygen failure"}, 129{EVP_R_KEYGEN_FAILURE ,"keygen failure"},
134{ERR_REASON(EVP_R_MISSING_PARAMETERS) ,"missing parameters"}, 130{EVP_R_MISSING_PARAMETERS ,"missing parameters"},
135{ERR_REASON(EVP_R_NO_CIPHER_SET) ,"no cipher set"}, 131{EVP_R_NO_CIPHER_SET ,"no cipher set"},
136{ERR_REASON(EVP_R_NO_DIGEST_SET) ,"no digest set"}, 132{EVP_R_NO_DIGEST_SET ,"no digest set"},
137{ERR_REASON(EVP_R_NO_DSA_PARAMETERS) ,"no dsa parameters"}, 133{EVP_R_NO_DSA_PARAMETERS ,"no dsa parameters"},
138{ERR_REASON(EVP_R_NO_SIGN_FUNCTION_CONFIGURED),"no sign function configured"}, 134{EVP_R_NO_SIGN_FUNCTION_CONFIGURED ,"no sign function configured"},
139{ERR_REASON(EVP_R_NO_VERIFY_FUNCTION_CONFIGURED),"no verify function configured"}, 135{EVP_R_NO_VERIFY_FUNCTION_CONFIGURED ,"no verify function configured"},
140{ERR_REASON(EVP_R_PKCS8_UNKNOWN_BROKEN_TYPE),"pkcs8 unknown broken type"}, 136{EVP_R_PKCS8_UNKNOWN_BROKEN_TYPE ,"pkcs8 unknown broken type"},
141{ERR_REASON(EVP_R_PUBLIC_KEY_NOT_RSA) ,"public key not rsa"}, 137{EVP_R_PUBLIC_KEY_NOT_RSA ,"public key not rsa"},
142{ERR_REASON(EVP_R_UNKNOWN_PBE_ALGORITHM) ,"unknown pbe algorithm"}, 138{EVP_R_UNKNOWN_PBE_ALGORITHM ,"unknown pbe algorithm"},
143{ERR_REASON(EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS),"unsuported number of rounds"}, 139{EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS ,"unsuported number of rounds"},
144{ERR_REASON(EVP_R_UNSUPPORTED_CIPHER) ,"unsupported cipher"}, 140{EVP_R_UNSUPPORTED_CIPHER ,"unsupported cipher"},
145{ERR_REASON(EVP_R_UNSUPPORTED_KEYLENGTH) ,"unsupported keylength"}, 141{EVP_R_UNSUPPORTED_KEYLENGTH ,"unsupported keylength"},
146{ERR_REASON(EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION),"unsupported key derivation function"}, 142{EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION,"unsupported key derivation function"},
147{ERR_REASON(EVP_R_UNSUPPORTED_KEY_SIZE) ,"unsupported key size"}, 143{EVP_R_UNSUPPORTED_KEY_SIZE ,"unsupported key size"},
148{ERR_REASON(EVP_R_UNSUPPORTED_PRF) ,"unsupported prf"}, 144{EVP_R_UNSUPPORTED_PRF ,"unsupported prf"},
149{ERR_REASON(EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM),"unsupported private key algorithm"}, 145{EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM ,"unsupported private key algorithm"},
150{ERR_REASON(EVP_R_UNSUPPORTED_SALT_TYPE) ,"unsupported salt type"}, 146{EVP_R_UNSUPPORTED_SALT_TYPE ,"unsupported salt type"},
151{ERR_REASON(EVP_R_WRONG_FINAL_BLOCK_LENGTH),"wrong final block length"}, 147{EVP_R_WRONG_FINAL_BLOCK_LENGTH ,"wrong final block length"},
152{ERR_REASON(EVP_R_WRONG_PUBLIC_KEY_TYPE) ,"wrong public key type"}, 148{EVP_R_WRONG_PUBLIC_KEY_TYPE ,"wrong public key type"},
153{0,NULL} 149{0,NULL}
154 }; 150 };
155 151
@@ -163,8 +159,8 @@ void ERR_load_EVP_strings(void)
163 { 159 {
164 init=0; 160 init=0;
165#ifndef OPENSSL_NO_ERR 161#ifndef OPENSSL_NO_ERR
166 ERR_load_strings(0,EVP_str_functs); 162 ERR_load_strings(ERR_LIB_EVP,EVP_str_functs);
167 ERR_load_strings(0,EVP_str_reasons); 163 ERR_load_strings(ERR_LIB_EVP,EVP_str_reasons);
168#endif 164#endif
169 165
170 } 166 }
diff --git a/src/lib/libssl/src/crypto/evp/evp_key.c b/src/lib/libssl/src/crypto/evp/evp_key.c
index f8650d5df6..5f387a94d3 100644
--- a/src/lib/libssl/src/crypto/evp/evp_key.c
+++ b/src/lib/libssl/src/crypto/evp/evp_key.c
@@ -126,8 +126,7 @@ int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md,
126 EVP_MD_CTX_init(&c); 126 EVP_MD_CTX_init(&c);
127 for (;;) 127 for (;;)
128 { 128 {
129 if (!EVP_DigestInit_ex(&c,md, NULL)) 129 EVP_DigestInit_ex(&c,md, NULL);
130 return 0;
131 if (addmd++) 130 if (addmd++)
132 EVP_DigestUpdate(&c,&(md_buf[0]),mds); 131 EVP_DigestUpdate(&c,&(md_buf[0]),mds);
133 EVP_DigestUpdate(&c,data,datal); 132 EVP_DigestUpdate(&c,data,datal);
diff --git a/src/lib/libssl/src/crypto/evp/m_dss1.c b/src/lib/libssl/src/crypto/evp/m_dss1.c
index 23b90d0538..f5668ebda0 100644
--- a/src/lib/libssl/src/crypto/evp/m_dss1.c
+++ b/src/lib/libssl/src/crypto/evp/m_dss1.c
@@ -67,14 +67,7 @@ static int init(EVP_MD_CTX *ctx)
67 { return SHA1_Init(ctx->md_data); } 67 { return SHA1_Init(ctx->md_data); }
68 68
69static int update(EVP_MD_CTX *ctx,const void *data,unsigned long count) 69static int update(EVP_MD_CTX *ctx,const void *data,unsigned long count)
70#ifndef OPENSSL_FIPS
71 { return SHA1_Update(ctx->md_data,data,count); } 70 { return SHA1_Update(ctx->md_data,data,count); }
72#else
73 {
74 OPENSSL_assert(sizeof(count)<=sizeof(size_t));
75 return SHA1_Update(ctx->md_data,data,count);
76 }
77#endif
78 71
79static int final(EVP_MD_CTX *ctx,unsigned char *md) 72static int final(EVP_MD_CTX *ctx,unsigned char *md)
80 { return SHA1_Final(md,ctx->md_data); } 73 { return SHA1_Final(md,ctx->md_data); }
@@ -84,7 +77,7 @@ static const EVP_MD dss1_md=
84 NID_dsa, 77 NID_dsa,
85 NID_dsaWithSHA1, 78 NID_dsaWithSHA1,
86 SHA_DIGEST_LENGTH, 79 SHA_DIGEST_LENGTH,
87 EVP_MD_FLAG_FIPS, 80 0,
88 init, 81 init,
89 update, 82 update,
90 final, 83 final,
diff --git a/src/lib/libssl/src/crypto/evp/m_sha.c b/src/lib/libssl/src/crypto/evp/m_sha.c
index ed54909b16..d1785e5f74 100644
--- a/src/lib/libssl/src/crypto/evp/m_sha.c
+++ b/src/lib/libssl/src/crypto/evp/m_sha.c
@@ -59,9 +59,6 @@
59#if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA0) 59#if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA0)
60#include <stdio.h> 60#include <stdio.h>
61#include "cryptlib.h" 61#include "cryptlib.h"
62/* Including sha.h prior evp.h masks FIPS SHA declarations, but that's
63 * exactly what we want to achieve here... */
64#include <openssl/sha.h>
65#include <openssl/evp.h> 62#include <openssl/evp.h>
66#include "evp_locl.h" 63#include "evp_locl.h"
67#include <openssl/objects.h> 64#include <openssl/objects.h>
diff --git a/src/lib/libssl/src/crypto/evp/m_sha1.c b/src/lib/libssl/src/crypto/evp/m_sha1.c
index 60da93873c..fe4402389a 100644
--- a/src/lib/libssl/src/crypto/evp/m_sha1.c
+++ b/src/lib/libssl/src/crypto/evp/m_sha1.c
@@ -67,14 +67,7 @@ static int init(EVP_MD_CTX *ctx)
67 { return SHA1_Init(ctx->md_data); } 67 { return SHA1_Init(ctx->md_data); }
68 68
69static int update(EVP_MD_CTX *ctx,const void *data,unsigned long count) 69static int update(EVP_MD_CTX *ctx,const void *data,unsigned long count)
70#ifndef OPENSSL_FIPS
71 { return SHA1_Update(ctx->md_data,data,count); } 70 { return SHA1_Update(ctx->md_data,data,count); }
72#else
73 {
74 OPENSSL_assert(sizeof(count)<=sizeof(size_t));
75 return SHA1_Update(ctx->md_data,data,count);
76 }
77#endif
78 71
79static int final(EVP_MD_CTX *ctx,unsigned char *md) 72static int final(EVP_MD_CTX *ctx,unsigned char *md)
80 { return SHA1_Final(md,ctx->md_data); } 73 { return SHA1_Final(md,ctx->md_data); }
@@ -100,115 +93,3 @@ const EVP_MD *EVP_sha1(void)
100 return(&sha1_md); 93 return(&sha1_md);
101 } 94 }
102#endif 95#endif
103
104#ifdef OPENSSL_FIPS
105#ifndef OPENSSL_NO_SHA256
106static int init224(EVP_MD_CTX *ctx)
107 { return SHA224_Init(ctx->md_data); }
108static int init256(EVP_MD_CTX *ctx)
109 { return SHA256_Init(ctx->md_data); }
110/*
111 * Even though there're separate SHA224_[Update|Final], we call
112 * SHA256 functions even in SHA224 context. This is what happens
113 * there anyway, so we can spare few CPU cycles:-)
114 */
115static int update256(EVP_MD_CTX *ctx,const void *data,unsigned long count)
116 {
117 OPENSSL_assert(sizeof(count)<=sizeof(size_t));
118 return SHA256_Update(ctx->md_data,data,count);
119 }
120static int final256(EVP_MD_CTX *ctx,unsigned char *md)
121 { return SHA256_Final(md,ctx->md_data); }
122
123static const EVP_MD sha224_md=
124 {
125 NID_sha224,
126 NID_sha224WithRSAEncryption,
127 SHA224_DIGEST_LENGTH,
128 EVP_MD_FLAG_FIPS,
129 init224,
130 update256,
131 final256,
132 NULL,
133 NULL,
134 EVP_PKEY_RSA_method,
135 SHA256_CBLOCK,
136 sizeof(EVP_MD *)+sizeof(SHA256_CTX),
137 };
138
139const EVP_MD *EVP_sha224(void)
140 { return(&sha224_md); }
141
142static const EVP_MD sha256_md=
143 {
144 NID_sha256,
145 NID_sha256WithRSAEncryption,
146 SHA256_DIGEST_LENGTH,
147 EVP_MD_FLAG_FIPS,
148 init256,
149 update256,
150 final256,
151 NULL,
152 NULL,
153 EVP_PKEY_RSA_method,
154 SHA256_CBLOCK,
155 sizeof(EVP_MD *)+sizeof(SHA256_CTX),
156 };
157
158const EVP_MD *EVP_sha256(void)
159 { return(&sha256_md); }
160#endif /* ifndef OPENSSL_NO_SHA256 */
161
162#ifndef OPENSSL_NO_SHA512
163static int init384(EVP_MD_CTX *ctx)
164 { return SHA384_Init(ctx->md_data); }
165static int init512(EVP_MD_CTX *ctx)
166 { return SHA512_Init(ctx->md_data); }
167/* See comment in SHA224/256 section */
168static int update512(EVP_MD_CTX *ctx,const void *data,unsigned long count)
169 {
170 OPENSSL_assert(sizeof(count)<=sizeof(size_t));
171 return SHA512_Update(ctx->md_data,data,count);
172 }
173static int final512(EVP_MD_CTX *ctx,unsigned char *md)
174 { return SHA512_Final(md,ctx->md_data); }
175
176static const EVP_MD sha384_md=
177 {
178 NID_sha384,
179 NID_sha384WithRSAEncryption,
180 SHA384_DIGEST_LENGTH,
181 EVP_MD_FLAG_FIPS,
182 init384,
183 update512,
184 final512,
185 NULL,
186 NULL,
187 EVP_PKEY_RSA_method,
188 SHA512_CBLOCK,
189 sizeof(EVP_MD *)+sizeof(SHA512_CTX),
190 };
191
192const EVP_MD *EVP_sha384(void)
193 { return(&sha384_md); }
194
195static const EVP_MD sha512_md=
196 {
197 NID_sha512,
198 NID_sha512WithRSAEncryption,
199 SHA512_DIGEST_LENGTH,
200 EVP_MD_FLAG_FIPS,
201 init512,
202 update512,
203 final512,
204 NULL,
205 NULL,
206 EVP_PKEY_RSA_method,
207 SHA512_CBLOCK,
208 sizeof(EVP_MD *)+sizeof(SHA512_CTX),
209 };
210
211const EVP_MD *EVP_sha512(void)
212 { return(&sha512_md); }
213#endif /* ifndef OPENSSL_NO_SHA512 */
214#endif /* ifdef OPENSSL_FIPS */
diff --git a/src/lib/libssl/src/crypto/evp/p5_crpt2.c b/src/lib/libssl/src/crypto/evp/p5_crpt2.c
index 1d5fabc4b2..1f94e1ef88 100644
--- a/src/lib/libssl/src/crypto/evp/p5_crpt2.c
+++ b/src/lib/libssl/src/crypto/evp/p5_crpt2.c
@@ -194,16 +194,11 @@ int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
194 194
195 /* Now decode key derivation function */ 195 /* Now decode key derivation function */
196 196
197 if(!pbe2->keyfunc->parameter ||
198 (pbe2->keyfunc->parameter->type != V_ASN1_SEQUENCE))
199 {
200 EVPerr(EVP_F_PKCS5_V2_PBE_KEYIVGEN,EVP_R_DECODE_ERROR);
201 goto err;
202 }
203
204 pbuf = pbe2->keyfunc->parameter->value.sequence->data; 197 pbuf = pbe2->keyfunc->parameter->value.sequence->data;
205 plen = pbe2->keyfunc->parameter->value.sequence->length; 198 plen = pbe2->keyfunc->parameter->value.sequence->length;
206 if(!(kdf = d2i_PBKDF2PARAM(NULL, &pbuf, plen)) ) { 199 if(!pbe2->keyfunc->parameter ||
200 (pbe2->keyfunc->parameter->type != V_ASN1_SEQUENCE) ||
201 !(kdf = d2i_PBKDF2PARAM(NULL, &pbuf, plen)) ) {
207 EVPerr(EVP_F_PKCS5_V2_PBE_KEYIVGEN,EVP_R_DECODE_ERROR); 202 EVPerr(EVP_F_PKCS5_V2_PBE_KEYIVGEN,EVP_R_DECODE_ERROR);
208 goto err; 203 goto err;
209 } 204 }
diff --git a/src/lib/libssl/src/crypto/hmac/Makefile.ssl b/src/lib/libssl/src/crypto/hmac/Makefile.ssl
new file mode 100644
index 0000000000..f1c07322c4
--- /dev/null
+++ b/src/lib/libssl/src/crypto/hmac/Makefile.ssl
@@ -0,0 +1,101 @@
1#
2# SSLeay/crypto/md/Makefile
3#
4
5DIR= hmac
6TOP= ../..
7CC= cc
8INCLUDES=
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST=hmactest.c
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC=hmac.c
27LIBOBJ=hmac.o
28
29SRC= $(LIBSRC)
30
31EXHEADER= hmac.h
32HEADER= $(EXHEADER)
33
34ALL= $(GENERAL) $(SRC) $(HEADER)
35
36top:
37 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
38
39all: lib
40
41lib: $(LIBOBJ)
42 $(AR) $(LIB) $(LIBOBJ)
43 $(RANLIB) $(LIB) || echo Never mind.
44 @touch lib
45
46files:
47 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
48
49links:
50 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
51 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
52 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
53 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
54
55install:
56 @for i in $(EXHEADER) ; \
57 do \
58 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
59 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
60 done;
61
62tags:
63 ctags $(SRC)
64
65tests:
66
67lint:
68 lint -DLINT $(INCLUDES) $(SRC)>fluff
69
70depend:
71 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
72
73dclean:
74 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
75 mv -f Makefile.new $(MAKEFILE)
76
77clean:
78 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
79
80# DO NOT DELETE THIS LINE -- make depend depends on it.
81
82hmac.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
83hmac.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
84hmac.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
85hmac.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
86hmac.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
87hmac.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
88hmac.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
89hmac.o: ../../include/openssl/evp.h ../../include/openssl/hmac.h
90hmac.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
91hmac.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
92hmac.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
93hmac.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
94hmac.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
95hmac.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rc2.h
96hmac.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
97hmac.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
98hmac.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
99hmac.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
100hmac.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
101hmac.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 6c110bd52b..06ee80761f 100644
--- a/src/lib/libssl/src/crypto/hmac/hmac.c
+++ b/src/lib/libssl/src/crypto/hmac/hmac.c
@@ -61,8 +61,6 @@
61#include <openssl/hmac.h> 61#include <openssl/hmac.h>
62#include "cryptlib.h" 62#include "cryptlib.h"
63 63
64#ifndef OPENSSL_FIPS
65
66void HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, 64void 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 {
@@ -79,6 +77,15 @@ void HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
79 77
80 if (key != NULL) 78 if (key != NULL)
81 { 79 {
80#ifdef OPENSSL_FIPS
81 if (FIPS_mode() && !(md->flags & EVP_MD_FLAG_FIPS)
82 && (!(ctx->md_ctx.flags & EVP_MD_CTX_FLAG_NON_FIPS_ALLOW)
83 || !(ctx->i_ctx.flags & EVP_MD_CTX_FLAG_NON_FIPS_ALLOW)
84 || !(ctx->o_ctx.flags & EVP_MD_CTX_FLAG_NON_FIPS_ALLOW)))
85 OpenSSLDie(__FILE__,__LINE__,
86 "HMAC: digest not allowed in FIPS mode");
87#endif
88
82 reset=1; 89 reset=1;
83 j=EVP_MD_block_size(md); 90 j=EVP_MD_block_size(md);
84 OPENSSL_assert(j <= sizeof ctx->key); 91 OPENSSL_assert(j <= sizeof ctx->key);
@@ -180,4 +187,3 @@ void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags)
180 EVP_MD_CTX_set_flags(&ctx->md_ctx, flags); 187 EVP_MD_CTX_set_flags(&ctx->md_ctx, flags);
181 } 188 }
182 189
183#endif
diff --git a/src/lib/libssl/src/crypto/hmac/hmac.h b/src/lib/libssl/src/crypto/hmac/hmac.h
index c6489c04c8..294ab3b36a 100644
--- a/src/lib/libssl/src/crypto/hmac/hmac.h
+++ b/src/lib/libssl/src/crypto/hmac/hmac.h
@@ -64,11 +64,7 @@
64 64
65#include <openssl/evp.h> 65#include <openssl/evp.h>
66 66
67#ifdef OPENSSL_FIPS
68#define HMAC_MAX_MD_CBLOCK 128
69#else
70#define HMAC_MAX_MD_CBLOCK 64 67#define HMAC_MAX_MD_CBLOCK 64
71#endif
72 68
73#ifdef __cplusplus 69#ifdef __cplusplus
74extern "C" { 70extern "C" {
diff --git a/src/lib/libssl/src/crypto/idea/Makefile.ssl b/src/lib/libssl/src/crypto/idea/Makefile.ssl
new file mode 100644
index 0000000000..fa016ea399
--- /dev/null
+++ b/src/lib/libssl/src/crypto/idea/Makefile.ssl
@@ -0,0 +1,91 @@
1#
2# SSLeay/crypto/idea/Makefile
3#
4
5DIR= idea
6TOP= ../..
7CC= cc
8INCLUDES=
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST=ideatest.c
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC=i_cbc.c i_cfb64.c i_ofb64.c i_ecb.c i_skey.c
27LIBOBJ=i_cbc.o i_cfb64.o i_ofb64.o i_ecb.o i_skey.o
28
29SRC= $(LIBSRC)
30
31EXHEADER= idea.h
32HEADER= idea_lcl.h $(EXHEADER)
33
34ALL= $(GENERAL) $(SRC) $(HEADER)
35
36top:
37 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
38
39all: lib
40
41lib: $(LIBOBJ)
42 $(AR) $(LIB) $(LIBOBJ)
43 $(RANLIB) $(LIB) || echo Never mind.
44 @touch lib
45
46files:
47 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
48
49links:
50 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
51 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
52 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
53 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
54
55install:
56 @for i in $(EXHEADER) ; \
57 do \
58 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
59 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
60 done;
61
62tags:
63 ctags $(SRC)
64
65tests:
66
67lint:
68 lint -DLINT $(INCLUDES) $(SRC)>fluff
69
70depend:
71 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
72
73dclean:
74 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
75 mv -f Makefile.new $(MAKEFILE)
76
77clean:
78 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
79
80# DO NOT DELETE THIS LINE -- make depend depends on it.
81
82i_cbc.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h
83i_cbc.o: i_cbc.c idea_lcl.h
84i_cfb64.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h
85i_cfb64.o: i_cfb64.c idea_lcl.h
86i_ecb.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h
87i_ecb.o: ../../include/openssl/opensslv.h i_ecb.c idea_lcl.h
88i_ofb64.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h
89i_ofb64.o: i_ofb64.c idea_lcl.h
90i_skey.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h
91i_skey.o: i_skey.c idea_lcl.h
diff --git a/src/lib/libssl/src/crypto/krb5/Makefile.ssl b/src/lib/libssl/src/crypto/krb5/Makefile.ssl
new file mode 100644
index 0000000000..d9224c0f09
--- /dev/null
+++ b/src/lib/libssl/src/crypto/krb5/Makefile.ssl
@@ -0,0 +1,90 @@
1#
2# OpenSSL/krb5/Makefile.ssl
3#
4
5DIR= krb5
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile README
22TEST=
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC= krb5_asn.c
27
28LIBOBJ= krb5_asn.o
29
30SRC= $(LIBSRC)
31
32EXHEADER= krb5_asn.h
33HEADER= $(EXHEADER)
34
35ALL= $(GENERAL) $(SRC) $(HEADER)
36
37top:
38 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
39
40all: lib
41
42lib: $(LIBOBJ)
43 $(AR) $(LIB) $(LIBOBJ)
44 $(RANLIB) $(LIB) || echo Never mind.
45 @touch lib
46
47files:
48 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
49
50links:
51 @sh $(TOP)/util/point.sh Makefile.ssl Makefile ;
52 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
53 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
54 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
55
56install:
57 @for i in $(EXHEADER) ; \
58 do \
59 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
60 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
61 done;
62
63tags:
64 ctags $(SRC)
65
66tests:
67
68lint:
69 lint -DLINT $(INCLUDES) $(SRC)>fluff
70
71depend:
72 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(LIBSRC)
73
74dclean:
75 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
76 mv -f Makefile.new $(MAKEFILE)
77
78clean:
79 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
80
81# DO NOT DELETE THIS LINE -- make depend depends on it.
82
83krb5_asn.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
84krb5_asn.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
85krb5_asn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
86krb5_asn.o: ../../include/openssl/krb5_asn.h
87krb5_asn.o: ../../include/openssl/opensslconf.h
88krb5_asn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
89krb5_asn.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
90krb5_asn.o: ../../include/openssl/symhacks.h krb5_asn.c
diff --git a/src/lib/libssl/src/crypto/lhash/Makefile.ssl b/src/lib/libssl/src/crypto/lhash/Makefile.ssl
new file mode 100644
index 0000000000..60e7ee3393
--- /dev/null
+++ b/src/lib/libssl/src/crypto/lhash/Makefile.ssl
@@ -0,0 +1,93 @@
1#
2# SSLeay/crypto/lhash/Makefile
3#
4
5DIR= lhash
6TOP= ../..
7CC= cc
8INCLUDES=
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST=
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC=lhash.c lh_stats.c
27LIBOBJ=lhash.o lh_stats.o
28
29SRC= $(LIBSRC)
30
31EXHEADER= lhash.h
32HEADER= $(EXHEADER)
33
34ALL= $(GENERAL) $(SRC) $(HEADER)
35
36top:
37 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
38
39all: lib
40
41lib: $(LIBOBJ)
42 $(AR) $(LIB) $(LIBOBJ)
43 $(RANLIB) $(LIB) || echo Never mind.
44 @touch lib
45
46files:
47 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
48
49links:
50 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
51 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
52 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
53 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
54
55install:
56 @for i in $(EXHEADER) ; \
57 do \
58 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
59 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
60 done;
61
62tags:
63 ctags $(SRC)
64
65tests:
66
67lint:
68 lint -DLINT $(INCLUDES) $(SRC)>fluff
69
70depend:
71 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
72
73dclean:
74 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
75 mv -f Makefile.new $(MAKEFILE)
76
77clean:
78 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
79
80# DO NOT DELETE THIS LINE -- make depend depends on it.
81
82lh_stats.o: ../../e_os.h ../../include/openssl/bio.h
83lh_stats.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
84lh_stats.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
85lh_stats.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
86lh_stats.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
87lh_stats.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
88lh_stats.o: ../cryptlib.h lh_stats.c
89lhash.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
90lhash.o: ../../include/openssl/e_os2.h ../../include/openssl/lhash.h
91lhash.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
92lhash.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
93lhash.o: ../../include/openssl/symhacks.h lhash.c
diff --git a/src/lib/libssl/src/crypto/md2/Makefile.ssl b/src/lib/libssl/src/crypto/md2/Makefile.ssl
new file mode 100644
index 0000000000..3206924c90
--- /dev/null
+++ b/src/lib/libssl/src/crypto/md2/Makefile.ssl
@@ -0,0 +1,93 @@
1#
2# SSLeay/crypto/md/Makefile
3#
4
5DIR= md2
6TOP= ../..
7CC= cc
8INCLUDES=
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST=md2test.c
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC=md2_dgst.c md2_one.c
27LIBOBJ=md2_dgst.o md2_one.o
28
29SRC= $(LIBSRC)
30
31EXHEADER= md2.h
32HEADER= $(EXHEADER)
33
34ALL= $(GENERAL) $(SRC) $(HEADER)
35
36top:
37 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
38
39all: lib
40
41lib: $(LIBOBJ)
42 $(AR) $(LIB) $(LIBOBJ)
43 $(RANLIB) $(LIB) || echo Never mind.
44 @touch lib
45
46files:
47 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
48
49links:
50 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
51 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
52 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
53 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
54
55install:
56 @for i in $(EXHEADER) ; \
57 do \
58 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
59 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
60 done;
61
62tags:
63 ctags $(SRC)
64
65tests:
66
67lint:
68 lint -DLINT $(INCLUDES) $(SRC)>fluff
69
70depend:
71 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
72
73dclean:
74 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
75 mv -f Makefile.new $(MAKEFILE)
76
77clean:
78 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
79
80# DO NOT DELETE THIS LINE -- make depend depends on it.
81
82md2_dgst.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
83md2_dgst.o: ../../include/openssl/md2.h ../../include/openssl/opensslconf.h
84md2_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
85md2_dgst.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
86md2_dgst.o: md2_dgst.c
87md2_one.o: ../../e_os.h ../../include/openssl/bio.h
88md2_one.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
89md2_one.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
90md2_one.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
91md2_one.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
92md2_one.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
93md2_one.o: ../../include/openssl/symhacks.h ../cryptlib.h md2_one.c
diff --git a/src/lib/libssl/src/crypto/md2/md2_one.c b/src/lib/libssl/src/crypto/md2/md2_one.c
index 8c36ba5779..835160ef56 100644
--- a/src/lib/libssl/src/crypto/md2/md2_one.c
+++ b/src/lib/libssl/src/crypto/md2/md2_one.c
@@ -69,8 +69,7 @@ unsigned char *MD2(const unsigned char *d, unsigned long n, unsigned char *md)
69 static unsigned char m[MD2_DIGEST_LENGTH]; 69 static unsigned char m[MD2_DIGEST_LENGTH];
70 70
71 if (md == NULL) md=m; 71 if (md == NULL) md=m;
72 if (!MD2_Init(&c)) 72 MD2_Init(&c);
73 return NULL;
74#ifndef CHARSET_EBCDIC 73#ifndef CHARSET_EBCDIC
75 MD2_Update(&c,d,n); 74 MD2_Update(&c,d,n);
76#else 75#else
diff --git a/src/lib/libssl/src/crypto/md4/Makefile.ssl b/src/lib/libssl/src/crypto/md4/Makefile.ssl
new file mode 100644
index 0000000000..7d2e8d8d3b
--- /dev/null
+++ b/src/lib/libssl/src/crypto/md4/Makefile.ssl
@@ -0,0 +1,91 @@
1#
2# SSLeay/crypto/md4/Makefile
3#
4
5DIR= md4
6TOP= ../..
7CC= cc
8CPP= $(CC) -E
9INCLUDES=
10CFLAG=-g
11INSTALL_PREFIX=
12OPENSSLDIR= /usr/local/ssl
13INSTALLTOP=/usr/local/ssl
14MAKE= make -f Makefile.ssl
15MAKEDEPPROG= makedepend
16MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
17MAKEFILE= Makefile.ssl
18AR= ar r
19
20CFLAGS= $(INCLUDES) $(CFLAG)
21
22GENERAL=Makefile
23TEST=md4test.c
24APPS=md4.c
25
26LIB=$(TOP)/libcrypto.a
27LIBSRC=md4_dgst.c md4_one.c
28LIBOBJ=md4_dgst.o md4_one.o
29
30SRC= $(LIBSRC)
31
32EXHEADER= md4.h
33HEADER= md4_locl.h $(EXHEADER)
34
35ALL= $(GENERAL) $(SRC) $(HEADER)
36
37top:
38 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
39
40all: lib
41
42lib: $(LIBOBJ)
43 $(AR) $(LIB) $(LIBOBJ)
44 $(RANLIB) $(LIB) || echo Never mind.
45 @touch lib
46
47files:
48 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
49
50links:
51 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
52 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
53 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
54 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
55
56install:
57 @for i in $(EXHEADER) ; \
58 do \
59 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
60 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
61 done;
62
63tags:
64 ctags $(SRC)
65
66tests:
67
68lint:
69 lint -DLINT $(INCLUDES) $(SRC)>fluff
70
71depend:
72 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
73
74dclean:
75 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
76 mv -f Makefile.new $(MAKEFILE)
77
78clean:
79 rm -f asm/mx86unix.cpp *.o asm/*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
80
81# DO NOT DELETE THIS LINE -- make depend depends on it.
82
83md4_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/md4.h
84md4_dgst.o: ../../include/openssl/opensslconf.h
85md4_dgst.o: ../../include/openssl/opensslv.h ../md32_common.h md4_dgst.c
86md4_dgst.o: md4_locl.h
87md4_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
88md4_one.o: ../../include/openssl/md4.h ../../include/openssl/opensslconf.h
89md4_one.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
90md4_one.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
91md4_one.o: md4_one.c
diff --git a/src/lib/libssl/src/crypto/md4/md4_one.c b/src/lib/libssl/src/crypto/md4/md4_one.c
index 50f79352f6..00565507e4 100644
--- a/src/lib/libssl/src/crypto/md4/md4_one.c
+++ b/src/lib/libssl/src/crypto/md4/md4_one.c
@@ -71,8 +71,7 @@ unsigned char *MD4(const unsigned char *d, unsigned long n, unsigned char *md)
71 static unsigned char m[MD4_DIGEST_LENGTH]; 71 static unsigned char m[MD4_DIGEST_LENGTH];
72 72
73 if (md == NULL) md=m; 73 if (md == NULL) md=m;
74 if (!MD4_Init(&c)) 74 MD4_Init(&c);
75 return NULL;
76#ifndef CHARSET_EBCDIC 75#ifndef CHARSET_EBCDIC
77 MD4_Update(&c,d,n); 76 MD4_Update(&c,d,n);
78#else 77#else
diff --git a/src/lib/libssl/src/crypto/md5/Makefile.ssl b/src/lib/libssl/src/crypto/md5/Makefile.ssl
new file mode 100644
index 0000000000..2361775a2d
--- /dev/null
+++ b/src/lib/libssl/src/crypto/md5/Makefile.ssl
@@ -0,0 +1,127 @@
1#
2# SSLeay/crypto/md5/Makefile
3#
4
5DIR= md5
6TOP= ../..
7CC= cc
8CPP= $(CC) -E
9INCLUDES=-I.. -I$(TOP) -I../../include
10CFLAG=-g
11INSTALL_PREFIX=
12OPENSSLDIR= /usr/local/ssl
13INSTALLTOP=/usr/local/ssl
14MAKE= make -f Makefile.ssl
15MAKEDEPPROG= makedepend
16MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
17MAKEFILE= Makefile.ssl
18AR= ar r
19
20MD5_ASM_OBJ=
21
22CFLAGS= $(INCLUDES) $(CFLAG)
23ASFLAGS= $(INCLUDES) $(ASFLAG)
24
25GENERAL=Makefile
26TEST=md5test.c
27APPS=
28
29LIB=$(TOP)/libcrypto.a
30LIBSRC=md5_dgst.c md5_one.c
31LIBOBJ=md5_dgst.o md5_one.o $(MD5_ASM_OBJ)
32
33SRC= $(LIBSRC)
34
35EXHEADER= md5.h
36HEADER= md5_locl.h $(EXHEADER)
37
38ALL= $(GENERAL) $(SRC) $(HEADER)
39
40top:
41 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
42
43all: lib
44
45lib: $(LIBOBJ)
46 $(AR) $(LIB) $(LIBOBJ)
47 $(RANLIB) $(LIB) || echo Never mind.
48 @touch lib
49
50# elf
51asm/mx86-elf.s: asm/md5-586.pl ../perlasm/x86asm.pl
52 (cd asm; $(PERL) md5-586.pl elf $(CFLAGS) > mx86-elf.s)
53
54# a.out
55asm/mx86-out.o: asm/mx86unix.cpp
56 $(CPP) -DOUT asm/mx86unix.cpp | as -o asm/mx86-out.o
57
58# bsdi
59asm/mx86bsdi.o: asm/mx86unix.cpp
60 $(CPP) -DBSDI asm/mx86unix.cpp | sed 's/ :/:/' | as -o asm/mx86bsdi.o
61
62asm/mx86unix.cpp: asm/md5-586.pl ../perlasm/x86asm.pl
63 (cd asm; $(PERL) md5-586.pl cpp >mx86unix.cpp)
64
65asm/md5-sparcv8plus.o: asm/md5-sparcv9.S
66 $(CC) $(ASFLAGS) -DMD5_BLOCK_DATA_ORDER -c \
67 -o asm/md5-sparcv8plus.o asm/md5-sparcv9.S
68
69# Old GNU assembler doesn't understand V9 instructions, so we
70# hire /usr/ccs/bin/as to do the job. Note that option is called
71# *-gcc27, but even gcc 2>=8 users may experience similar problem
72# if they didn't bother to upgrade GNU assembler. Such users should
73# not choose this option, but be adviced to *remove* GNU assembler
74# or upgrade it.
75asm/md5-sparcv8plus-gcc27.o: asm/md5-sparcv9.S
76 $(CC) $(ASFLAGS) -DMD5_BLOCK_DATA_ORDER -E asm/md5-sparcv9.S | \
77 /usr/ccs/bin/as -xarch=v8plus - -o asm/md5-sparcv8plus-gcc27.o
78
79asm/md5-sparcv9.o: asm/md5-sparcv9.S
80 $(CC) $(ASFLAGS) -DMD5_BLOCK_DATA_ORDER -c \
81 -o asm/md5-sparcv9.o asm/md5-sparcv9.S
82
83files:
84 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
85
86links:
87 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
88 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
89 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
90 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
91
92install:
93 @for i in $(EXHEADER) ; \
94 do \
95 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
96 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
97 done;
98
99tags:
100 ctags $(SRC)
101
102tests:
103
104lint:
105 lint -DLINT $(INCLUDES) $(SRC)>fluff
106
107depend:
108 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
109
110dclean:
111 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
112 mv -f Makefile.new $(MAKEFILE)
113
114clean:
115 rm -f asm/mx86unix.cpp asm/*-elf.* *.o asm/*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
116
117# DO NOT DELETE THIS LINE -- make depend depends on it.
118
119md5_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/md5.h
120md5_dgst.o: ../../include/openssl/opensslconf.h
121md5_dgst.o: ../../include/openssl/opensslv.h ../md32_common.h md5_dgst.c
122md5_dgst.o: md5_locl.h
123md5_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
124md5_one.o: ../../include/openssl/md5.h ../../include/openssl/opensslconf.h
125md5_one.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
126md5_one.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
127md5_one.o: md5_one.c
diff --git a/src/lib/libssl/src/crypto/md5/md5_one.c b/src/lib/libssl/src/crypto/md5/md5_one.c
index 44c6c455d1..c5dd2d81db 100644
--- a/src/lib/libssl/src/crypto/md5/md5_one.c
+++ b/src/lib/libssl/src/crypto/md5/md5_one.c
@@ -71,8 +71,7 @@ unsigned char *MD5(const unsigned char *d, unsigned long n, unsigned char *md)
71 static unsigned char m[MD5_DIGEST_LENGTH]; 71 static unsigned char m[MD5_DIGEST_LENGTH];
72 72
73 if (md == NULL) md=m; 73 if (md == NULL) md=m;
74 if (!MD5_Init(&c)) 74 MD5_Init(&c);
75 return NULL;
76#ifndef CHARSET_EBCDIC 75#ifndef CHARSET_EBCDIC
77 MD5_Update(&c,d,n); 76 MD5_Update(&c,d,n);
78#else 77#else
diff --git a/src/lib/libssl/src/crypto/mdc2/Makefile b/src/lib/libssl/src/crypto/mdc2/Makefile
index b8e9a9a4fa..38c785bf95 100644
--- a/src/lib/libssl/src/crypto/mdc2/Makefile
+++ b/src/lib/libssl/src/crypto/mdc2/Makefile
@@ -1,5 +1,5 @@
1# 1#
2# OpenSSL/crypto/mdc2/Makefile 2# SSLeay/crypto/mdc2/Makefile
3# 3#
4 4
5DIR= mdc2 5DIR= mdc2
diff --git a/src/lib/libssl/src/crypto/mdc2/Makefile.ssl b/src/lib/libssl/src/crypto/mdc2/Makefile.ssl
new file mode 100644
index 0000000000..33f366fb08
--- /dev/null
+++ b/src/lib/libssl/src/crypto/mdc2/Makefile.ssl
@@ -0,0 +1,98 @@
1#
2# SSLeay/crypto/mdc2/Makefile
3#
4
5DIR= mdc2
6TOP= ../..
7CC= cc
8INCLUDES=
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST= mdc2test.c
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC=mdc2dgst.c mdc2_one.c
27LIBOBJ=mdc2dgst.o mdc2_one.o
28
29SRC= $(LIBSRC)
30
31EXHEADER= mdc2.h
32HEADER= $(EXHEADER)
33
34ALL= $(GENERAL) $(SRC) $(HEADER)
35
36top:
37 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
38
39all: lib
40
41lib: $(LIBOBJ)
42 $(AR) $(LIB) $(LIBOBJ)
43 $(RANLIB) $(LIB) || echo Never mind.
44 @touch lib
45
46files:
47 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
48
49links:
50 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
51 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
52 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
53 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
54
55install:
56 @for i in $(EXHEADER) ; \
57 do \
58 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
59 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
60 done;
61
62tags:
63 ctags $(SRC)
64
65tests:
66
67lint:
68 lint -DLINT $(INCLUDES) $(SRC)>fluff
69
70depend:
71 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
72
73dclean:
74 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
75 mv -f Makefile.new $(MAKEFILE)
76
77clean:
78 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
79
80# DO NOT DELETE THIS LINE -- make depend depends on it.
81
82mdc2_one.o: ../../e_os.h ../../include/openssl/bio.h
83mdc2_one.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
84mdc2_one.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
85mdc2_one.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
86mdc2_one.o: ../../include/openssl/lhash.h ../../include/openssl/mdc2.h
87mdc2_one.o: ../../include/openssl/opensslconf.h
88mdc2_one.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
89mdc2_one.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
90mdc2_one.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
91mdc2_one.o: ../cryptlib.h mdc2_one.c
92mdc2dgst.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
93mdc2dgst.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
94mdc2dgst.o: ../../include/openssl/mdc2.h ../../include/openssl/opensslconf.h
95mdc2dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
96mdc2dgst.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
97mdc2dgst.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
98mdc2dgst.o: mdc2dgst.c
diff --git a/src/lib/libssl/src/crypto/objects/Makefile.ssl b/src/lib/libssl/src/crypto/objects/Makefile.ssl
new file mode 100644
index 0000000000..3e7a194cf9
--- /dev/null
+++ b/src/lib/libssl/src/crypto/objects/Makefile.ssl
@@ -0,0 +1,123 @@
1#
2# SSLeay/crypto/objects/Makefile
3#
4
5DIR= objects
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18PERL= perl
19
20CFLAGS= $(INCLUDES) $(CFLAG)
21
22GENERAL=Makefile README
23TEST=
24APPS=
25
26LIB=$(TOP)/libcrypto.a
27LIBSRC= o_names.c obj_dat.c obj_lib.c obj_err.c
28LIBOBJ= o_names.o obj_dat.o obj_lib.o obj_err.o
29
30SRC= $(LIBSRC)
31
32EXHEADER= objects.h obj_mac.h
33HEADER= $(EXHEADER) obj_dat.h
34
35ALL= $(GENERAL) $(SRC) $(HEADER)
36
37top:
38 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
39
40all: obj_dat.h lib
41
42lib: $(LIBOBJ)
43 $(AR) $(LIB) $(LIBOBJ)
44 $(RANLIB) $(LIB) || echo Never mind.
45 @touch lib
46
47obj_dat.h: obj_dat.pl obj_mac.h
48 $(PERL) obj_dat.pl obj_mac.h obj_dat.h
49
50# objects.pl both reads and writes obj_mac.num
51obj_mac.h: objects.pl objects.txt obj_mac.num
52 $(PERL) objects.pl objects.txt obj_mac.num obj_mac.h
53
54files:
55 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
56
57links:
58 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
59 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
60 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
61 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
62
63install:
64 @for i in $(EXHEADER) ; \
65 do \
66 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
67 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
68 done;
69
70tags:
71 ctags $(SRC)
72
73tests:
74
75lint:
76 lint -DLINT $(INCLUDES) $(SRC)>fluff
77
78depend:
79 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
80
81dclean:
82 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
83 mv -f Makefile.new $(MAKEFILE)
84
85clean:
86 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
87
88# DO NOT DELETE THIS LINE -- make depend depends on it.
89
90o_names.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
91o_names.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
92o_names.o: ../../include/openssl/e_os2.h ../../include/openssl/lhash.h
93o_names.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
94o_names.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
95o_names.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
96o_names.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
97o_names.o: o_names.c
98obj_dat.o: ../../e_os.h ../../include/openssl/asn1.h
99obj_dat.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
100obj_dat.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
101obj_dat.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
102obj_dat.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
103obj_dat.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
104obj_dat.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
105obj_dat.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
106obj_dat.o: ../../include/openssl/symhacks.h ../cryptlib.h obj_dat.c obj_dat.h
107obj_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
108obj_err.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
109obj_err.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
110obj_err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
111obj_err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
112obj_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
113obj_err.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
114obj_err.o: ../../include/openssl/symhacks.h obj_err.c
115obj_lib.o: ../../e_os.h ../../include/openssl/asn1.h
116obj_lib.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
117obj_lib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
118obj_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
119obj_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
120obj_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
121obj_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
122obj_lib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
123obj_lib.o: ../../include/openssl/symhacks.h ../cryptlib.h obj_lib.c
diff --git a/src/lib/libssl/src/crypto/objects/obj_dat.h b/src/lib/libssl/src/crypto/objects/obj_dat.h
deleted file mode 100644
index cc22152682..0000000000
--- a/src/lib/libssl/src/crypto/objects/obj_dat.h
+++ /dev/null
@@ -1,3762 +0,0 @@
1/* crypto/objects/obj_dat.h */
2
3/* THIS FILE IS GENERATED FROM objects.h by obj_dat.pl via the
4 * following command:
5 * perl obj_dat.pl obj_mac.h obj_dat.h
6 */
7
8/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
9 * All rights reserved.
10 *
11 * This package is an SSL implementation written
12 * by Eric Young (eay@cryptsoft.com).
13 * The implementation was written so as to conform with Netscapes SSL.
14 *
15 * This library is free for commercial and non-commercial use as long as
16 * the following conditions are aheared to. The following conditions
17 * apply to all code found in this distribution, be it the RC4, RSA,
18 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
19 * included with this distribution is covered by the same copyright terms
20 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
21 *
22 * Copyright remains Eric Young's, and as such any Copyright notices in
23 * the code are not to be removed.
24 * If this package is used in a product, Eric Young should be given attribution
25 * as the author of the parts of the library used.
26 * This can be in the form of a textual message at program startup or
27 * in documentation (online or textual) provided with the package.
28 *
29 * Redistribution and use in source and binary forms, with or without
30 * modification, are permitted provided that the following conditions
31 * are met:
32 * 1. Redistributions of source code must retain the copyright
33 * notice, this list of conditions and the following disclaimer.
34 * 2. Redistributions in binary form must reproduce the above copyright
35 * notice, this list of conditions and the following disclaimer in the
36 * documentation and/or other materials provided with the distribution.
37 * 3. All advertising materials mentioning features or use of this software
38 * must display the following acknowledgement:
39 * "This product includes cryptographic software written by
40 * Eric Young (eay@cryptsoft.com)"
41 * The word 'cryptographic' can be left out if the rouines from the library
42 * being used are not cryptographic related :-).
43 * 4. If you include any Windows specific code (or a derivative thereof) from
44 * the apps directory (application code) you must include an acknowledgement:
45 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
46 *
47 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
48 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
49 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
50 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
51 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
52 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
53 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
54 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
55 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
56 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
57 * SUCH DAMAGE.
58 *
59 * The licence and distribution terms for any publically available version or
60 * derivative of this code cannot be changed. i.e. this code cannot simply be
61 * copied and put under another distribution licence
62 * [including the GNU Public Licence.]
63 */
64
65#define NUM_NID 676
66#define NUM_SN 669
67#define NUM_LN 669
68#define NUM_OBJ 633
69
70static unsigned char lvalues[4575]={
710x00, /* [ 0] OBJ_undef */
720x2A,0x86,0x48,0x86,0xF7,0x0D, /* [ 1] OBJ_rsadsi */
730x2A,0x86,0x48,0x86,0xF7,0x0D,0x01, /* [ 7] OBJ_pkcs */
740x2A,0x86,0x48,0x86,0xF7,0x0D,0x02,0x02, /* [ 14] OBJ_md2 */
750x2A,0x86,0x48,0x86,0xF7,0x0D,0x02,0x05, /* [ 22] OBJ_md5 */
760x2A,0x86,0x48,0x86,0xF7,0x0D,0x03,0x04, /* [ 30] OBJ_rc4 */
770x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x01,/* [ 38] OBJ_rsaEncryption */
780x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x02,/* [ 47] OBJ_md2WithRSAEncryption */
790x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x04,/* [ 56] OBJ_md5WithRSAEncryption */
800x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x01,/* [ 65] OBJ_pbeWithMD2AndDES_CBC */
810x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x03,/* [ 74] OBJ_pbeWithMD5AndDES_CBC */
820x55, /* [ 83] OBJ_X500 */
830x55,0x04, /* [ 84] OBJ_X509 */
840x55,0x04,0x03, /* [ 86] OBJ_commonName */
850x55,0x04,0x06, /* [ 89] OBJ_countryName */
860x55,0x04,0x07, /* [ 92] OBJ_localityName */
870x55,0x04,0x08, /* [ 95] OBJ_stateOrProvinceName */
880x55,0x04,0x0A, /* [ 98] OBJ_organizationName */
890x55,0x04,0x0B, /* [101] OBJ_organizationalUnitName */
900x55,0x08,0x01,0x01, /* [104] OBJ_rsa */
910x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07, /* [108] OBJ_pkcs7 */
920x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x01,/* [116] OBJ_pkcs7_data */
930x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x02,/* [125] OBJ_pkcs7_signed */
940x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x03,/* [134] OBJ_pkcs7_enveloped */
950x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x04,/* [143] OBJ_pkcs7_signedAndEnveloped */
960x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x05,/* [152] OBJ_pkcs7_digest */
970x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x06,/* [161] OBJ_pkcs7_encrypted */
980x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x03, /* [170] OBJ_pkcs3 */
990x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x03,0x01,/* [178] OBJ_dhKeyAgreement */
1000x2B,0x0E,0x03,0x02,0x06, /* [187] OBJ_des_ecb */
1010x2B,0x0E,0x03,0x02,0x09, /* [192] OBJ_des_cfb64 */
1020x2B,0x0E,0x03,0x02,0x07, /* [197] OBJ_des_cbc */
1030x2B,0x0E,0x03,0x02,0x11, /* [202] OBJ_des_ede_ecb */
1040x2B,0x06,0x01,0x04,0x01,0x81,0x3C,0x07,0x01,0x01,0x02,/* [207] OBJ_idea_cbc */
1050x2A,0x86,0x48,0x86,0xF7,0x0D,0x03,0x02, /* [218] OBJ_rc2_cbc */
1060x2B,0x0E,0x03,0x02,0x12, /* [226] OBJ_sha */
1070x2B,0x0E,0x03,0x02,0x0F, /* [231] OBJ_shaWithRSAEncryption */
1080x2A,0x86,0x48,0x86,0xF7,0x0D,0x03,0x07, /* [236] OBJ_des_ede3_cbc */
1090x2B,0x0E,0x03,0x02,0x08, /* [244] OBJ_des_ofb64 */
1100x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09, /* [249] OBJ_pkcs9 */
1110x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x01,/* [257] OBJ_pkcs9_emailAddress */
1120x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x02,/* [266] OBJ_pkcs9_unstructuredName */
1130x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x03,/* [275] OBJ_pkcs9_contentType */
1140x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x04,/* [284] OBJ_pkcs9_messageDigest */
1150x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x05,/* [293] OBJ_pkcs9_signingTime */
1160x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x06,/* [302] OBJ_pkcs9_countersignature */
1170x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x07,/* [311] OBJ_pkcs9_challengePassword */
1180x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x08,/* [320] OBJ_pkcs9_unstructuredAddress */
1190x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x09,/* [329] OBJ_pkcs9_extCertAttributes */
1200x60,0x86,0x48,0x01,0x86,0xF8,0x42, /* [338] OBJ_netscape */
1210x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01, /* [345] OBJ_netscape_cert_extension */
1220x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x02, /* [353] OBJ_netscape_data_type */
1230x2B,0x0E,0x03,0x02,0x1A, /* [361] OBJ_sha1 */
1240x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x05,/* [366] OBJ_sha1WithRSAEncryption */
1250x2B,0x0E,0x03,0x02,0x0D, /* [375] OBJ_dsaWithSHA */
1260x2B,0x0E,0x03,0x02,0x0C, /* [380] OBJ_dsa_2 */
1270x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x0B,/* [385] OBJ_pbeWithSHA1AndRC2_CBC */
1280x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x0C,/* [394] OBJ_id_pbkdf2 */
1290x2B,0x0E,0x03,0x02,0x1B, /* [403] OBJ_dsaWithSHA1_2 */
1300x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x01,/* [408] OBJ_netscape_cert_type */
1310x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x02,/* [417] OBJ_netscape_base_url */
1320x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x03,/* [426] OBJ_netscape_revocation_url */
1330x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x04,/* [435] OBJ_netscape_ca_revocation_url */
1340x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x07,/* [444] OBJ_netscape_renewal_url */
1350x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x08,/* [453] OBJ_netscape_ca_policy_url */
1360x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x0C,/* [462] OBJ_netscape_ssl_server_name */
1370x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x0D,/* [471] OBJ_netscape_comment */
1380x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x02,0x05,/* [480] OBJ_netscape_cert_sequence */
1390x55,0x1D, /* [489] OBJ_id_ce */
1400x55,0x1D,0x0E, /* [491] OBJ_subject_key_identifier */
1410x55,0x1D,0x0F, /* [494] OBJ_key_usage */
1420x55,0x1D,0x10, /* [497] OBJ_private_key_usage_period */
1430x55,0x1D,0x11, /* [500] OBJ_subject_alt_name */
1440x55,0x1D,0x12, /* [503] OBJ_issuer_alt_name */
1450x55,0x1D,0x13, /* [506] OBJ_basic_constraints */
1460x55,0x1D,0x14, /* [509] OBJ_crl_number */
1470x55,0x1D,0x20, /* [512] OBJ_certificate_policies */
1480x55,0x1D,0x23, /* [515] OBJ_authority_key_identifier */
1490x2B,0x06,0x01,0x04,0x01,0x97,0x55,0x01,0x02,/* [518] OBJ_bf_cbc */
1500x55,0x08,0x03,0x65, /* [527] OBJ_mdc2 */
1510x55,0x08,0x03,0x64, /* [531] OBJ_mdc2WithRSA */
1520x55,0x04,0x2A, /* [535] OBJ_givenName */
1530x55,0x04,0x04, /* [538] OBJ_surname */
1540x55,0x04,0x2B, /* [541] OBJ_initials */
1550x55,0x1D,0x1F, /* [544] OBJ_crl_distribution_points */
1560x2B,0x0E,0x03,0x02,0x03, /* [547] OBJ_md5WithRSA */
1570x55,0x04,0x05, /* [552] OBJ_serialNumber */
1580x55,0x04,0x0C, /* [555] OBJ_title */
1590x55,0x04,0x0D, /* [558] OBJ_description */
1600x2A,0x86,0x48,0x86,0xF6,0x7D,0x07,0x42,0x0A,/* [561] OBJ_cast5_cbc */
1610x2A,0x86,0x48,0x86,0xF6,0x7D,0x07,0x42,0x0C,/* [570] OBJ_pbeWithMD5AndCast5_CBC */
1620x2A,0x86,0x48,0xCE,0x38,0x04,0x03, /* [579] OBJ_dsaWithSHA1 */
1630x2B,0x0E,0x03,0x02,0x1D, /* [586] OBJ_sha1WithRSA */
1640x2A,0x86,0x48,0xCE,0x38,0x04,0x01, /* [591] OBJ_dsa */
1650x2B,0x24,0x03,0x02,0x01, /* [598] OBJ_ripemd160 */
1660x2B,0x24,0x03,0x03,0x01,0x02, /* [603] OBJ_ripemd160WithRSA */
1670x2A,0x86,0x48,0x86,0xF7,0x0D,0x03,0x08, /* [609] OBJ_rc5_cbc */
1680x29,0x01,0x01,0x85,0x1A,0x01, /* [617] OBJ_rle_compression */
1690x29,0x01,0x01,0x85,0x1A,0x02, /* [623] OBJ_zlib_compression */
1700x55,0x1D,0x25, /* [629] OBJ_ext_key_usage */
1710x2B,0x06,0x01,0x05,0x05,0x07, /* [632] OBJ_id_pkix */
1720x2B,0x06,0x01,0x05,0x05,0x07,0x03, /* [638] OBJ_id_kp */
1730x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x01, /* [645] OBJ_server_auth */
1740x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x02, /* [653] OBJ_client_auth */
1750x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x03, /* [661] OBJ_code_sign */
1760x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x04, /* [669] OBJ_email_protect */
1770x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x08, /* [677] OBJ_time_stamp */
1780x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x02,0x01,0x15,/* [685] OBJ_ms_code_ind */
1790x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x02,0x01,0x16,/* [695] OBJ_ms_code_com */
1800x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x0A,0x03,0x01,/* [705] OBJ_ms_ctl_sign */
1810x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x0A,0x03,0x03,/* [715] OBJ_ms_sgc */
1820x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x0A,0x03,0x04,/* [725] OBJ_ms_efs */
1830x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x04,0x01,/* [735] OBJ_ns_sgc */
1840x55,0x1D,0x1B, /* [744] OBJ_delta_crl */
1850x55,0x1D,0x15, /* [747] OBJ_crl_reason */
1860x55,0x1D,0x18, /* [750] OBJ_invalidity_date */
1870x2B,0x65,0x01,0x04,0x01, /* [753] OBJ_sxnet */
1880x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x01,0x01,/* [758] OBJ_pbe_WithSHA1And128BitRC4 */
1890x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x01,0x02,/* [768] OBJ_pbe_WithSHA1And40BitRC4 */
1900x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x01,0x03,/* [778] OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC */
1910x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x01,0x04,/* [788] OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC */
1920x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x01,0x05,/* [798] OBJ_pbe_WithSHA1And128BitRC2_CBC */
1930x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x01,0x06,/* [808] OBJ_pbe_WithSHA1And40BitRC2_CBC */
1940x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x0A,0x01,0x01,/* [818] OBJ_keyBag */
1950x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x0A,0x01,0x02,/* [829] OBJ_pkcs8ShroudedKeyBag */
1960x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x0A,0x01,0x03,/* [840] OBJ_certBag */
1970x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x0A,0x01,0x04,/* [851] OBJ_crlBag */
1980x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x0A,0x01,0x05,/* [862] OBJ_secretBag */
1990x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x0A,0x01,0x06,/* [873] OBJ_safeContentsBag */
2000x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x14,/* [884] OBJ_friendlyName */
2010x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x15,/* [893] OBJ_localKeyID */
2020x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x16,0x01,/* [902] OBJ_x509Certificate */
2030x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x16,0x02,/* [912] OBJ_sdsiCertificate */
2040x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x17,0x01,/* [922] OBJ_x509Crl */
2050x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x0D,/* [932] OBJ_pbes2 */
2060x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x0E,/* [941] OBJ_pbmac1 */
2070x2A,0x86,0x48,0x86,0xF7,0x0D,0x02,0x07, /* [950] OBJ_hmacWithSHA1 */
2080x2B,0x06,0x01,0x05,0x05,0x07,0x02,0x01, /* [958] OBJ_id_qt_cps */
2090x2B,0x06,0x01,0x05,0x05,0x07,0x02,0x02, /* [966] OBJ_id_qt_unotice */
2100x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x0F,/* [974] OBJ_SMIMECapabilities */
2110x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x04,/* [983] OBJ_pbeWithMD2AndRC2_CBC */
2120x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x06,/* [992] OBJ_pbeWithMD5AndRC2_CBC */
2130x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x0A,/* [1001] OBJ_pbeWithSHA1AndDES_CBC */
2140x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x02,0x01,0x0E,/* [1010] OBJ_ms_ext_req */
2150x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x0E,/* [1020] OBJ_ext_req */
2160x55,0x04,0x29, /* [1029] OBJ_name */
2170x55,0x04,0x2E, /* [1032] OBJ_dnQualifier */
2180x2B,0x06,0x01,0x05,0x05,0x07,0x01, /* [1035] OBJ_id_pe */
2190x2B,0x06,0x01,0x05,0x05,0x07,0x30, /* [1042] OBJ_id_ad */
2200x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x01, /* [1049] OBJ_info_access */
2210x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01, /* [1057] OBJ_ad_OCSP */
2220x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x02, /* [1065] OBJ_ad_ca_issuers */
2230x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x09, /* [1073] OBJ_OCSP_sign */
2240x28, /* [1081] OBJ_iso */
2250x2A, /* [1082] OBJ_member_body */
2260x2A,0x86,0x48, /* [1083] OBJ_ISO_US */
2270x2A,0x86,0x48,0xCE,0x38, /* [1086] OBJ_X9_57 */
2280x2A,0x86,0x48,0xCE,0x38,0x04, /* [1091] OBJ_X9cm */
2290x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01, /* [1097] OBJ_pkcs1 */
2300x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05, /* [1105] OBJ_pkcs5 */
2310x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,/* [1113] OBJ_SMIME */
2320x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x00,/* [1122] OBJ_id_smime_mod */
2330x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x01,/* [1132] OBJ_id_smime_ct */
2340x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,/* [1142] OBJ_id_smime_aa */
2350x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x03,/* [1152] OBJ_id_smime_alg */
2360x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x04,/* [1162] OBJ_id_smime_cd */
2370x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x05,/* [1172] OBJ_id_smime_spq */
2380x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x06,/* [1182] OBJ_id_smime_cti */
2390x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x00,0x01,/* [1192] OBJ_id_smime_mod_cms */
2400x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x00,0x02,/* [1203] OBJ_id_smime_mod_ess */
2410x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x00,0x03,/* [1214] OBJ_id_smime_mod_oid */
2420x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x00,0x04,/* [1225] OBJ_id_smime_mod_msg_v3 */
2430x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x00,0x05,/* [1236] OBJ_id_smime_mod_ets_eSignature_88 */
2440x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x00,0x06,/* [1247] OBJ_id_smime_mod_ets_eSignature_97 */
2450x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x00,0x07,/* [1258] OBJ_id_smime_mod_ets_eSigPolicy_88 */
2460x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x00,0x08,/* [1269] OBJ_id_smime_mod_ets_eSigPolicy_97 */
2470x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x01,0x01,/* [1280] OBJ_id_smime_ct_receipt */
2480x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x01,0x02,/* [1291] OBJ_id_smime_ct_authData */
2490x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x01,0x03,/* [1302] OBJ_id_smime_ct_publishCert */
2500x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x01,0x04,/* [1313] OBJ_id_smime_ct_TSTInfo */
2510x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x01,0x05,/* [1324] OBJ_id_smime_ct_TDTInfo */
2520x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x01,0x06,/* [1335] OBJ_id_smime_ct_contentInfo */
2530x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x01,0x07,/* [1346] OBJ_id_smime_ct_DVCSRequestData */
2540x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x01,0x08,/* [1357] OBJ_id_smime_ct_DVCSResponseData */
2550x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x01,/* [1368] OBJ_id_smime_aa_receiptRequest */
2560x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x02,/* [1379] OBJ_id_smime_aa_securityLabel */
2570x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x03,/* [1390] OBJ_id_smime_aa_mlExpandHistory */
2580x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x04,/* [1401] OBJ_id_smime_aa_contentHint */
2590x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x05,/* [1412] OBJ_id_smime_aa_msgSigDigest */
2600x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x06,/* [1423] OBJ_id_smime_aa_encapContentType */
2610x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x07,/* [1434] OBJ_id_smime_aa_contentIdentifier */
2620x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x08,/* [1445] OBJ_id_smime_aa_macValue */
2630x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x09,/* [1456] OBJ_id_smime_aa_equivalentLabels */
2640x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x0A,/* [1467] OBJ_id_smime_aa_contentReference */
2650x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x0B,/* [1478] OBJ_id_smime_aa_encrypKeyPref */
2660x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x0C,/* [1489] OBJ_id_smime_aa_signingCertificate */
2670x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x0D,/* [1500] OBJ_id_smime_aa_smimeEncryptCerts */
2680x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x0E,/* [1511] OBJ_id_smime_aa_timeStampToken */
2690x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x0F,/* [1522] OBJ_id_smime_aa_ets_sigPolicyId */
2700x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x10,/* [1533] OBJ_id_smime_aa_ets_commitmentType */
2710x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x11,/* [1544] OBJ_id_smime_aa_ets_signerLocation */
2720x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x12,/* [1555] OBJ_id_smime_aa_ets_signerAttr */
2730x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x13,/* [1566] OBJ_id_smime_aa_ets_otherSigCert */
2740x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x14,/* [1577] OBJ_id_smime_aa_ets_contentTimestamp */
2750x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x15,/* [1588] OBJ_id_smime_aa_ets_CertificateRefs */
2760x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x16,/* [1599] OBJ_id_smime_aa_ets_RevocationRefs */
2770x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x17,/* [1610] OBJ_id_smime_aa_ets_certValues */
2780x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x18,/* [1621] OBJ_id_smime_aa_ets_revocationValues */
2790x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x19,/* [1632] OBJ_id_smime_aa_ets_escTimeStamp */
2800x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x1A,/* [1643] OBJ_id_smime_aa_ets_certCRLTimestamp */
2810x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x1B,/* [1654] OBJ_id_smime_aa_ets_archiveTimeStamp */
2820x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x1C,/* [1665] OBJ_id_smime_aa_signatureType */
2830x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x1D,/* [1676] OBJ_id_smime_aa_dvcs_dvc */
2840x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x03,0x01,/* [1687] OBJ_id_smime_alg_ESDHwith3DES */
2850x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x03,0x02,/* [1698] OBJ_id_smime_alg_ESDHwithRC2 */
2860x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x03,0x03,/* [1709] OBJ_id_smime_alg_3DESwrap */
2870x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x03,0x04,/* [1720] OBJ_id_smime_alg_RC2wrap */
2880x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x03,0x05,/* [1731] OBJ_id_smime_alg_ESDH */
2890x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x03,0x06,/* [1742] OBJ_id_smime_alg_CMS3DESwrap */
2900x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x03,0x07,/* [1753] OBJ_id_smime_alg_CMSRC2wrap */
2910x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x04,0x01,/* [1764] OBJ_id_smime_cd_ldap */
2920x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x05,0x01,/* [1775] OBJ_id_smime_spq_ets_sqt_uri */
2930x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x05,0x02,/* [1786] OBJ_id_smime_spq_ets_sqt_unotice */
2940x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x06,0x01,/* [1797] OBJ_id_smime_cti_ets_proofOfOrigin */
2950x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x06,0x02,/* [1808] OBJ_id_smime_cti_ets_proofOfReceipt */
2960x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x06,0x03,/* [1819] OBJ_id_smime_cti_ets_proofOfDelivery */
2970x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x06,0x04,/* [1830] OBJ_id_smime_cti_ets_proofOfSender */
2980x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x06,0x05,/* [1841] OBJ_id_smime_cti_ets_proofOfApproval */
2990x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x06,0x06,/* [1852] OBJ_id_smime_cti_ets_proofOfCreation */
3000x2A,0x86,0x48,0x86,0xF7,0x0D,0x02,0x04, /* [1863] OBJ_md4 */
3010x2B,0x06,0x01,0x05,0x05,0x07,0x00, /* [1871] OBJ_id_pkix_mod */
3020x2B,0x06,0x01,0x05,0x05,0x07,0x02, /* [1878] OBJ_id_qt */
3030x2B,0x06,0x01,0x05,0x05,0x07,0x04, /* [1885] OBJ_id_it */
3040x2B,0x06,0x01,0x05,0x05,0x07,0x05, /* [1892] OBJ_id_pkip */
3050x2B,0x06,0x01,0x05,0x05,0x07,0x06, /* [1899] OBJ_id_alg */
3060x2B,0x06,0x01,0x05,0x05,0x07,0x07, /* [1906] OBJ_id_cmc */
3070x2B,0x06,0x01,0x05,0x05,0x07,0x08, /* [1913] OBJ_id_on */
3080x2B,0x06,0x01,0x05,0x05,0x07,0x09, /* [1920] OBJ_id_pda */
3090x2B,0x06,0x01,0x05,0x05,0x07,0x0A, /* [1927] OBJ_id_aca */
3100x2B,0x06,0x01,0x05,0x05,0x07,0x0B, /* [1934] OBJ_id_qcs */
3110x2B,0x06,0x01,0x05,0x05,0x07,0x0C, /* [1941] OBJ_id_cct */
3120x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x01, /* [1948] OBJ_id_pkix1_explicit_88 */
3130x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x02, /* [1956] OBJ_id_pkix1_implicit_88 */
3140x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x03, /* [1964] OBJ_id_pkix1_explicit_93 */
3150x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x04, /* [1972] OBJ_id_pkix1_implicit_93 */
3160x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x05, /* [1980] OBJ_id_mod_crmf */
3170x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x06, /* [1988] OBJ_id_mod_cmc */
3180x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x07, /* [1996] OBJ_id_mod_kea_profile_88 */
3190x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x08, /* [2004] OBJ_id_mod_kea_profile_93 */
3200x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x09, /* [2012] OBJ_id_mod_cmp */
3210x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x0A, /* [2020] OBJ_id_mod_qualified_cert_88 */
3220x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x0B, /* [2028] OBJ_id_mod_qualified_cert_93 */
3230x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x0C, /* [2036] OBJ_id_mod_attribute_cert */
3240x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x0D, /* [2044] OBJ_id_mod_timestamp_protocol */
3250x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x0E, /* [2052] OBJ_id_mod_ocsp */
3260x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x0F, /* [2060] OBJ_id_mod_dvcs */
3270x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x10, /* [2068] OBJ_id_mod_cmp2000 */
3280x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x02, /* [2076] OBJ_biometricInfo */
3290x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x03, /* [2084] OBJ_qcStatements */
3300x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x04, /* [2092] OBJ_ac_auditEntity */
3310x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x05, /* [2100] OBJ_ac_targeting */
3320x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x06, /* [2108] OBJ_aaControls */
3330x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x07, /* [2116] OBJ_sbgp_ipAddrBlock */
3340x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x08, /* [2124] OBJ_sbgp_autonomousSysNum */
3350x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x09, /* [2132] OBJ_sbgp_routerIdentifier */
3360x2B,0x06,0x01,0x05,0x05,0x07,0x02,0x03, /* [2140] OBJ_textNotice */
3370x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x05, /* [2148] OBJ_ipsecEndSystem */
3380x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x06, /* [2156] OBJ_ipsecTunnel */
3390x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x07, /* [2164] OBJ_ipsecUser */
3400x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x0A, /* [2172] OBJ_dvcs */
3410x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x01, /* [2180] OBJ_id_it_caProtEncCert */
3420x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x02, /* [2188] OBJ_id_it_signKeyPairTypes */
3430x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x03, /* [2196] OBJ_id_it_encKeyPairTypes */
3440x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x04, /* [2204] OBJ_id_it_preferredSymmAlg */
3450x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x05, /* [2212] OBJ_id_it_caKeyUpdateInfo */
3460x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x06, /* [2220] OBJ_id_it_currentCRL */
3470x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x07, /* [2228] OBJ_id_it_unsupportedOIDs */
3480x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x08, /* [2236] OBJ_id_it_subscriptionRequest */
3490x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x09, /* [2244] OBJ_id_it_subscriptionResponse */
3500x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x0A, /* [2252] OBJ_id_it_keyPairParamReq */
3510x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x0B, /* [2260] OBJ_id_it_keyPairParamRep */
3520x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x0C, /* [2268] OBJ_id_it_revPassphrase */
3530x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x0D, /* [2276] OBJ_id_it_implicitConfirm */
3540x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x0E, /* [2284] OBJ_id_it_confirmWaitTime */
3550x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x0F, /* [2292] OBJ_id_it_origPKIMessage */
3560x2B,0x06,0x01,0x05,0x05,0x07,0x05,0x01, /* [2300] OBJ_id_regCtrl */
3570x2B,0x06,0x01,0x05,0x05,0x07,0x05,0x02, /* [2308] OBJ_id_regInfo */
3580x2B,0x06,0x01,0x05,0x05,0x07,0x05,0x01,0x01,/* [2316] OBJ_id_regCtrl_regToken */
3590x2B,0x06,0x01,0x05,0x05,0x07,0x05,0x01,0x02,/* [2325] OBJ_id_regCtrl_authenticator */
3600x2B,0x06,0x01,0x05,0x05,0x07,0x05,0x01,0x03,/* [2334] OBJ_id_regCtrl_pkiPublicationInfo */
3610x2B,0x06,0x01,0x05,0x05,0x07,0x05,0x01,0x04,/* [2343] OBJ_id_regCtrl_pkiArchiveOptions */
3620x2B,0x06,0x01,0x05,0x05,0x07,0x05,0x01,0x05,/* [2352] OBJ_id_regCtrl_oldCertID */
3630x2B,0x06,0x01,0x05,0x05,0x07,0x05,0x01,0x06,/* [2361] OBJ_id_regCtrl_protocolEncrKey */
3640x2B,0x06,0x01,0x05,0x05,0x07,0x05,0x02,0x01,/* [2370] OBJ_id_regInfo_utf8Pairs */
3650x2B,0x06,0x01,0x05,0x05,0x07,0x05,0x02,0x02,/* [2379] OBJ_id_regInfo_certReq */
3660x2B,0x06,0x01,0x05,0x05,0x07,0x06,0x01, /* [2388] OBJ_id_alg_des40 */
3670x2B,0x06,0x01,0x05,0x05,0x07,0x06,0x02, /* [2396] OBJ_id_alg_noSignature */
3680x2B,0x06,0x01,0x05,0x05,0x07,0x06,0x03, /* [2404] OBJ_id_alg_dh_sig_hmac_sha1 */
3690x2B,0x06,0x01,0x05,0x05,0x07,0x06,0x04, /* [2412] OBJ_id_alg_dh_pop */
3700x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x01, /* [2420] OBJ_id_cmc_statusInfo */
3710x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x02, /* [2428] OBJ_id_cmc_identification */
3720x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x03, /* [2436] OBJ_id_cmc_identityProof */
3730x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x04, /* [2444] OBJ_id_cmc_dataReturn */
3740x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x05, /* [2452] OBJ_id_cmc_transactionId */
3750x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x06, /* [2460] OBJ_id_cmc_senderNonce */
3760x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x07, /* [2468] OBJ_id_cmc_recipientNonce */
3770x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x08, /* [2476] OBJ_id_cmc_addExtensions */
3780x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x09, /* [2484] OBJ_id_cmc_encryptedPOP */
3790x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x0A, /* [2492] OBJ_id_cmc_decryptedPOP */
3800x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x0B, /* [2500] OBJ_id_cmc_lraPOPWitness */
3810x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x0F, /* [2508] OBJ_id_cmc_getCert */
3820x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x10, /* [2516] OBJ_id_cmc_getCRL */
3830x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x11, /* [2524] OBJ_id_cmc_revokeRequest */
3840x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x12, /* [2532] OBJ_id_cmc_regInfo */
3850x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x13, /* [2540] OBJ_id_cmc_responseInfo */
3860x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x15, /* [2548] OBJ_id_cmc_queryPending */
3870x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x16, /* [2556] OBJ_id_cmc_popLinkRandom */
3880x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x17, /* [2564] OBJ_id_cmc_popLinkWitness */
3890x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x18, /* [2572] OBJ_id_cmc_confirmCertAcceptance */
3900x2B,0x06,0x01,0x05,0x05,0x07,0x08,0x01, /* [2580] OBJ_id_on_personalData */
3910x2B,0x06,0x01,0x05,0x05,0x07,0x09,0x01, /* [2588] OBJ_id_pda_dateOfBirth */
3920x2B,0x06,0x01,0x05,0x05,0x07,0x09,0x02, /* [2596] OBJ_id_pda_placeOfBirth */
3930x2B,0x06,0x01,0x05,0x05,0x07,0x09,0x03, /* [2604] OBJ_id_pda_gender */
3940x2B,0x06,0x01,0x05,0x05,0x07,0x09,0x04, /* [2612] OBJ_id_pda_countryOfCitizenship */
3950x2B,0x06,0x01,0x05,0x05,0x07,0x09,0x05, /* [2620] OBJ_id_pda_countryOfResidence */
3960x2B,0x06,0x01,0x05,0x05,0x07,0x0A,0x01, /* [2628] OBJ_id_aca_authenticationInfo */
3970x2B,0x06,0x01,0x05,0x05,0x07,0x0A,0x02, /* [2636] OBJ_id_aca_accessIdentity */
3980x2B,0x06,0x01,0x05,0x05,0x07,0x0A,0x03, /* [2644] OBJ_id_aca_chargingIdentity */
3990x2B,0x06,0x01,0x05,0x05,0x07,0x0A,0x04, /* [2652] OBJ_id_aca_group */
4000x2B,0x06,0x01,0x05,0x05,0x07,0x0A,0x05, /* [2660] OBJ_id_aca_role */
4010x2B,0x06,0x01,0x05,0x05,0x07,0x0B,0x01, /* [2668] OBJ_id_qcs_pkixQCSyntax_v1 */
4020x2B,0x06,0x01,0x05,0x05,0x07,0x0C,0x01, /* [2676] OBJ_id_cct_crs */
4030x2B,0x06,0x01,0x05,0x05,0x07,0x0C,0x02, /* [2684] OBJ_id_cct_PKIData */
4040x2B,0x06,0x01,0x05,0x05,0x07,0x0C,0x03, /* [2692] OBJ_id_cct_PKIResponse */
4050x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x03, /* [2700] OBJ_ad_timeStamping */
4060x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x04, /* [2708] OBJ_ad_dvcs */
4070x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x01,/* [2716] OBJ_id_pkix_OCSP_basic */
4080x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x02,/* [2725] OBJ_id_pkix_OCSP_Nonce */
4090x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x03,/* [2734] OBJ_id_pkix_OCSP_CrlID */
4100x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x04,/* [2743] OBJ_id_pkix_OCSP_acceptableResponses */
4110x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x05,/* [2752] OBJ_id_pkix_OCSP_noCheck */
4120x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x06,/* [2761] OBJ_id_pkix_OCSP_archiveCutoff */
4130x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x07,/* [2770] OBJ_id_pkix_OCSP_serviceLocator */
4140x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x08,/* [2779] OBJ_id_pkix_OCSP_extendedStatus */
4150x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x09,/* [2788] OBJ_id_pkix_OCSP_valid */
4160x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x0A,/* [2797] OBJ_id_pkix_OCSP_path */
4170x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x0B,/* [2806] OBJ_id_pkix_OCSP_trustRoot */
4180x2B,0x0E,0x03,0x02, /* [2815] OBJ_algorithm */
4190x2B,0x0E,0x03,0x02,0x0B, /* [2819] OBJ_rsaSignature */
4200x55,0x08, /* [2824] OBJ_X500algorithms */
4210x2B, /* [2826] OBJ_org */
4220x2B,0x06, /* [2827] OBJ_dod */
4230x2B,0x06,0x01, /* [2829] OBJ_iana */
4240x2B,0x06,0x01,0x01, /* [2832] OBJ_Directory */
4250x2B,0x06,0x01,0x02, /* [2836] OBJ_Management */
4260x2B,0x06,0x01,0x03, /* [2840] OBJ_Experimental */
4270x2B,0x06,0x01,0x04, /* [2844] OBJ_Private */
4280x2B,0x06,0x01,0x05, /* [2848] OBJ_Security */
4290x2B,0x06,0x01,0x06, /* [2852] OBJ_SNMPv2 */
4300x2B,0x06,0x01,0x07, /* [2856] OBJ_Mail */
4310x2B,0x06,0x01,0x04,0x01, /* [2860] OBJ_Enterprises */
4320x2B,0x06,0x01,0x04,0x01,0x8B,0x3A,0x82,0x58,/* [2865] OBJ_dcObject */
4330x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x19,/* [2874] OBJ_domainComponent */
4340x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x0D,/* [2884] OBJ_Domain */
4350x50, /* [2894] OBJ_joint_iso_ccitt */
4360x55,0x01,0x05, /* [2895] OBJ_selected_attribute_types */
4370x55,0x01,0x05,0x37, /* [2898] OBJ_clearance */
4380x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x03,/* [2902] OBJ_md4WithRSAEncryption */
4390x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x0A, /* [2911] OBJ_ac_proxying */
4400x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x0B, /* [2919] OBJ_sinfo_access */
4410x2B,0x06,0x01,0x05,0x05,0x07,0x0A,0x06, /* [2927] OBJ_id_aca_encAttrs */
4420x55,0x04,0x48, /* [2935] OBJ_role */
4430x55,0x1D,0x24, /* [2938] OBJ_policy_constraints */
4440x55,0x1D,0x37, /* [2941] OBJ_target_information */
4450x55,0x1D,0x38, /* [2944] OBJ_no_rev_avail */
4460x00, /* [2947] OBJ_ccitt */
4470x2A,0x86,0x48,0xCE,0x3D, /* [2948] OBJ_ansi_X9_62 */
4480x2A,0x86,0x48,0xCE,0x3D,0x01,0x01, /* [2953] OBJ_X9_62_prime_field */
4490x2A,0x86,0x48,0xCE,0x3D,0x01,0x02, /* [2960] OBJ_X9_62_characteristic_two_field */
4500x2A,0x86,0x48,0xCE,0x3D,0x02,0x01, /* [2967] OBJ_X9_62_id_ecPublicKey */
4510x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x01, /* [2974] OBJ_X9_62_prime192v1 */
4520x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x02, /* [2982] OBJ_X9_62_prime192v2 */
4530x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x03, /* [2990] OBJ_X9_62_prime192v3 */
4540x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x04, /* [2998] OBJ_X9_62_prime239v1 */
4550x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x05, /* [3006] OBJ_X9_62_prime239v2 */
4560x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x06, /* [3014] OBJ_X9_62_prime239v3 */
4570x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x07, /* [3022] OBJ_X9_62_prime256v1 */
4580x2A,0x86,0x48,0xCE,0x3D,0x04,0x01, /* [3030] OBJ_ecdsa_with_SHA1 */
4590x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x11,0x01,/* [3037] OBJ_ms_csp_name */
4600x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x01,/* [3046] OBJ_aes_128_ecb */
4610x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x02,/* [3055] OBJ_aes_128_cbc */
4620x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x03,/* [3064] OBJ_aes_128_ofb128 */
4630x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x04,/* [3073] OBJ_aes_128_cfb128 */
4640x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x15,/* [3082] OBJ_aes_192_ecb */
4650x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x16,/* [3091] OBJ_aes_192_cbc */
4660x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x17,/* [3100] OBJ_aes_192_ofb128 */
4670x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x18,/* [3109] OBJ_aes_192_cfb128 */
4680x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x29,/* [3118] OBJ_aes_256_ecb */
4690x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x2A,/* [3127] OBJ_aes_256_cbc */
4700x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x2B,/* [3136] OBJ_aes_256_ofb128 */
4710x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x2C,/* [3145] OBJ_aes_256_cfb128 */
4720x55,0x1D,0x17, /* [3154] OBJ_hold_instruction_code */
4730x2A,0x86,0x48,0xCE,0x38,0x02,0x01, /* [3157] OBJ_hold_instruction_none */
4740x2A,0x86,0x48,0xCE,0x38,0x02,0x02, /* [3164] OBJ_hold_instruction_call_issuer */
4750x2A,0x86,0x48,0xCE,0x38,0x02,0x03, /* [3171] OBJ_hold_instruction_reject */
4760x09, /* [3178] OBJ_data */
4770x09,0x92,0x26, /* [3179] OBJ_pss */
4780x09,0x92,0x26,0x89,0x93,0xF2,0x2C, /* [3182] OBJ_ucl */
4790x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64, /* [3189] OBJ_pilot */
4800x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,/* [3197] OBJ_pilotAttributeType */
4810x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x03,/* [3206] OBJ_pilotAttributeSyntax */
4820x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,/* [3215] OBJ_pilotObjectClass */
4830x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x0A,/* [3224] OBJ_pilotGroups */
4840x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x03,0x04,/* [3233] OBJ_iA5StringSyntax */
4850x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x03,0x05,/* [3243] OBJ_caseIgnoreIA5StringSyntax */
4860x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x03,/* [3253] OBJ_pilotObject */
4870x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x04,/* [3263] OBJ_pilotPerson */
4880x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x05,/* [3273] OBJ_account */
4890x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x06,/* [3283] OBJ_document */
4900x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x07,/* [3293] OBJ_room */
4910x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x09,/* [3303] OBJ_documentSeries */
4920x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x0E,/* [3313] OBJ_rFC822localPart */
4930x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x0F,/* [3323] OBJ_dNSDomain */
4940x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x11,/* [3333] OBJ_domainRelatedObject */
4950x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x12,/* [3343] OBJ_friendlyCountry */
4960x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x13,/* [3353] OBJ_simpleSecurityObject */
4970x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x14,/* [3363] OBJ_pilotOrganization */
4980x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x15,/* [3373] OBJ_pilotDSA */
4990x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x16,/* [3383] OBJ_qualityLabelledData */
5000x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x01,/* [3393] OBJ_userId */
5010x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x02,/* [3403] OBJ_textEncodedORAddress */
5020x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x03,/* [3413] OBJ_rfc822Mailbox */
5030x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x04,/* [3423] OBJ_info */
5040x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x05,/* [3433] OBJ_favouriteDrink */
5050x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x06,/* [3443] OBJ_roomNumber */
5060x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x07,/* [3453] OBJ_photo */
5070x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x08,/* [3463] OBJ_userClass */
5080x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x09,/* [3473] OBJ_host */
5090x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x0A,/* [3483] OBJ_manager */
5100x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x0B,/* [3493] OBJ_documentIdentifier */
5110x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x0C,/* [3503] OBJ_documentTitle */
5120x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x0D,/* [3513] OBJ_documentVersion */
5130x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x0E,/* [3523] OBJ_documentAuthor */
5140x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x0F,/* [3533] OBJ_documentLocation */
5150x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x14,/* [3543] OBJ_homeTelephoneNumber */
5160x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x15,/* [3553] OBJ_secretary */
5170x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x16,/* [3563] OBJ_otherMailbox */
5180x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x17,/* [3573] OBJ_lastModifiedTime */
5190x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x18,/* [3583] OBJ_lastModifiedBy */
5200x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x1A,/* [3593] OBJ_aRecord */
5210x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x1B,/* [3603] OBJ_pilotAttributeType27 */
5220x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x1C,/* [3613] OBJ_mXRecord */
5230x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x1D,/* [3623] OBJ_nSRecord */
5240x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x1E,/* [3633] OBJ_sOARecord */
5250x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x1F,/* [3643] OBJ_cNAMERecord */
5260x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x25,/* [3653] OBJ_associatedDomain */
5270x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x26,/* [3663] OBJ_associatedName */
5280x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x27,/* [3673] OBJ_homePostalAddress */
5290x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x28,/* [3683] OBJ_personalTitle */
5300x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x29,/* [3693] OBJ_mobileTelephoneNumber */
5310x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x2A,/* [3703] OBJ_pagerTelephoneNumber */
5320x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x2B,/* [3713] OBJ_friendlyCountryName */
5330x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x2D,/* [3723] OBJ_organizationalStatus */
5340x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x2E,/* [3733] OBJ_janetMailbox */
5350x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x2F,/* [3743] OBJ_mailPreferenceOption */
5360x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x30,/* [3753] OBJ_buildingName */
5370x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x31,/* [3763] OBJ_dSAQuality */
5380x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x32,/* [3773] OBJ_singleLevelQuality */
5390x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x33,/* [3783] OBJ_subtreeMinimumQuality */
5400x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x34,/* [3793] OBJ_subtreeMaximumQuality */
5410x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x35,/* [3803] OBJ_personalSignature */
5420x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x36,/* [3813] OBJ_dITRedirect */
5430x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x37,/* [3823] OBJ_audio */
5440x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x38,/* [3833] OBJ_documentPublisher */
5450x55,0x04,0x2D, /* [3843] OBJ_x500UniqueIdentifier */
5460x2B,0x06,0x01,0x07,0x01, /* [3846] OBJ_mime_mhs */
5470x2B,0x06,0x01,0x07,0x01,0x01, /* [3851] OBJ_mime_mhs_headings */
5480x2B,0x06,0x01,0x07,0x01,0x02, /* [3857] OBJ_mime_mhs_bodies */
5490x2B,0x06,0x01,0x07,0x01,0x01,0x01, /* [3863] OBJ_id_hex_partial_message */
5500x2B,0x06,0x01,0x07,0x01,0x01,0x02, /* [3870] OBJ_id_hex_multipart_message */
5510x55,0x04,0x2C, /* [3877] OBJ_generationQualifier */
5520x55,0x04,0x41, /* [3880] OBJ_pseudonym */
5530x67,0x2A, /* [3883] OBJ_id_set */
5540x67,0x2A,0x00, /* [3885] OBJ_set_ctype */
5550x67,0x2A,0x01, /* [3888] OBJ_set_msgExt */
5560x67,0x2A,0x03, /* [3891] OBJ_set_attr */
5570x67,0x2A,0x05, /* [3894] OBJ_set_policy */
5580x67,0x2A,0x07, /* [3897] OBJ_set_certExt */
5590x67,0x2A,0x08, /* [3900] OBJ_set_brand */
5600x67,0x2A,0x00,0x00, /* [3903] OBJ_setct_PANData */
5610x67,0x2A,0x00,0x01, /* [3907] OBJ_setct_PANToken */
5620x67,0x2A,0x00,0x02, /* [3911] OBJ_setct_PANOnly */
5630x67,0x2A,0x00,0x03, /* [3915] OBJ_setct_OIData */
5640x67,0x2A,0x00,0x04, /* [3919] OBJ_setct_PI */
5650x67,0x2A,0x00,0x05, /* [3923] OBJ_setct_PIData */
5660x67,0x2A,0x00,0x06, /* [3927] OBJ_setct_PIDataUnsigned */
5670x67,0x2A,0x00,0x07, /* [3931] OBJ_setct_HODInput */
5680x67,0x2A,0x00,0x08, /* [3935] OBJ_setct_AuthResBaggage */
5690x67,0x2A,0x00,0x09, /* [3939] OBJ_setct_AuthRevReqBaggage */
5700x67,0x2A,0x00,0x0A, /* [3943] OBJ_setct_AuthRevResBaggage */
5710x67,0x2A,0x00,0x0B, /* [3947] OBJ_setct_CapTokenSeq */
5720x67,0x2A,0x00,0x0C, /* [3951] OBJ_setct_PInitResData */
5730x67,0x2A,0x00,0x0D, /* [3955] OBJ_setct_PI_TBS */
5740x67,0x2A,0x00,0x0E, /* [3959] OBJ_setct_PResData */
5750x67,0x2A,0x00,0x10, /* [3963] OBJ_setct_AuthReqTBS */
5760x67,0x2A,0x00,0x11, /* [3967] OBJ_setct_AuthResTBS */
5770x67,0x2A,0x00,0x12, /* [3971] OBJ_setct_AuthResTBSX */
5780x67,0x2A,0x00,0x13, /* [3975] OBJ_setct_AuthTokenTBS */
5790x67,0x2A,0x00,0x14, /* [3979] OBJ_setct_CapTokenData */
5800x67,0x2A,0x00,0x15, /* [3983] OBJ_setct_CapTokenTBS */
5810x67,0x2A,0x00,0x16, /* [3987] OBJ_setct_AcqCardCodeMsg */
5820x67,0x2A,0x00,0x17, /* [3991] OBJ_setct_AuthRevReqTBS */
5830x67,0x2A,0x00,0x18, /* [3995] OBJ_setct_AuthRevResData */
5840x67,0x2A,0x00,0x19, /* [3999] OBJ_setct_AuthRevResTBS */
5850x67,0x2A,0x00,0x1A, /* [4003] OBJ_setct_CapReqTBS */
5860x67,0x2A,0x00,0x1B, /* [4007] OBJ_setct_CapReqTBSX */
5870x67,0x2A,0x00,0x1C, /* [4011] OBJ_setct_CapResData */
5880x67,0x2A,0x00,0x1D, /* [4015] OBJ_setct_CapRevReqTBS */
5890x67,0x2A,0x00,0x1E, /* [4019] OBJ_setct_CapRevReqTBSX */
5900x67,0x2A,0x00,0x1F, /* [4023] OBJ_setct_CapRevResData */
5910x67,0x2A,0x00,0x20, /* [4027] OBJ_setct_CredReqTBS */
5920x67,0x2A,0x00,0x21, /* [4031] OBJ_setct_CredReqTBSX */
5930x67,0x2A,0x00,0x22, /* [4035] OBJ_setct_CredResData */
5940x67,0x2A,0x00,0x23, /* [4039] OBJ_setct_CredRevReqTBS */
5950x67,0x2A,0x00,0x24, /* [4043] OBJ_setct_CredRevReqTBSX */
5960x67,0x2A,0x00,0x25, /* [4047] OBJ_setct_CredRevResData */
5970x67,0x2A,0x00,0x26, /* [4051] OBJ_setct_PCertReqData */
5980x67,0x2A,0x00,0x27, /* [4055] OBJ_setct_PCertResTBS */
5990x67,0x2A,0x00,0x28, /* [4059] OBJ_setct_BatchAdminReqData */
6000x67,0x2A,0x00,0x29, /* [4063] OBJ_setct_BatchAdminResData */
6010x67,0x2A,0x00,0x2A, /* [4067] OBJ_setct_CardCInitResTBS */
6020x67,0x2A,0x00,0x2B, /* [4071] OBJ_setct_MeAqCInitResTBS */
6030x67,0x2A,0x00,0x2C, /* [4075] OBJ_setct_RegFormResTBS */
6040x67,0x2A,0x00,0x2D, /* [4079] OBJ_setct_CertReqData */
6050x67,0x2A,0x00,0x2E, /* [4083] OBJ_setct_CertReqTBS */
6060x67,0x2A,0x00,0x2F, /* [4087] OBJ_setct_CertResData */
6070x67,0x2A,0x00,0x30, /* [4091] OBJ_setct_CertInqReqTBS */
6080x67,0x2A,0x00,0x31, /* [4095] OBJ_setct_ErrorTBS */
6090x67,0x2A,0x00,0x32, /* [4099] OBJ_setct_PIDualSignedTBE */
6100x67,0x2A,0x00,0x33, /* [4103] OBJ_setct_PIUnsignedTBE */
6110x67,0x2A,0x00,0x34, /* [4107] OBJ_setct_AuthReqTBE */
6120x67,0x2A,0x00,0x35, /* [4111] OBJ_setct_AuthResTBE */
6130x67,0x2A,0x00,0x36, /* [4115] OBJ_setct_AuthResTBEX */
6140x67,0x2A,0x00,0x37, /* [4119] OBJ_setct_AuthTokenTBE */
6150x67,0x2A,0x00,0x38, /* [4123] OBJ_setct_CapTokenTBE */
6160x67,0x2A,0x00,0x39, /* [4127] OBJ_setct_CapTokenTBEX */
6170x67,0x2A,0x00,0x3A, /* [4131] OBJ_setct_AcqCardCodeMsgTBE */
6180x67,0x2A,0x00,0x3B, /* [4135] OBJ_setct_AuthRevReqTBE */
6190x67,0x2A,0x00,0x3C, /* [4139] OBJ_setct_AuthRevResTBE */
6200x67,0x2A,0x00,0x3D, /* [4143] OBJ_setct_AuthRevResTBEB */
6210x67,0x2A,0x00,0x3E, /* [4147] OBJ_setct_CapReqTBE */
6220x67,0x2A,0x00,0x3F, /* [4151] OBJ_setct_CapReqTBEX */
6230x67,0x2A,0x00,0x40, /* [4155] OBJ_setct_CapResTBE */
6240x67,0x2A,0x00,0x41, /* [4159] OBJ_setct_CapRevReqTBE */
6250x67,0x2A,0x00,0x42, /* [4163] OBJ_setct_CapRevReqTBEX */
6260x67,0x2A,0x00,0x43, /* [4167] OBJ_setct_CapRevResTBE */
6270x67,0x2A,0x00,0x44, /* [4171] OBJ_setct_CredReqTBE */
6280x67,0x2A,0x00,0x45, /* [4175] OBJ_setct_CredReqTBEX */
6290x67,0x2A,0x00,0x46, /* [4179] OBJ_setct_CredResTBE */
6300x67,0x2A,0x00,0x47, /* [4183] OBJ_setct_CredRevReqTBE */
6310x67,0x2A,0x00,0x48, /* [4187] OBJ_setct_CredRevReqTBEX */
6320x67,0x2A,0x00,0x49, /* [4191] OBJ_setct_CredRevResTBE */
6330x67,0x2A,0x00,0x4A, /* [4195] OBJ_setct_BatchAdminReqTBE */
6340x67,0x2A,0x00,0x4B, /* [4199] OBJ_setct_BatchAdminResTBE */
6350x67,0x2A,0x00,0x4C, /* [4203] OBJ_setct_RegFormReqTBE */
6360x67,0x2A,0x00,0x4D, /* [4207] OBJ_setct_CertReqTBE */
6370x67,0x2A,0x00,0x4E, /* [4211] OBJ_setct_CertReqTBEX */
6380x67,0x2A,0x00,0x4F, /* [4215] OBJ_setct_CertResTBE */
6390x67,0x2A,0x00,0x50, /* [4219] OBJ_setct_CRLNotificationTBS */
6400x67,0x2A,0x00,0x51, /* [4223] OBJ_setct_CRLNotificationResTBS */
6410x67,0x2A,0x00,0x52, /* [4227] OBJ_setct_BCIDistributionTBS */
6420x67,0x2A,0x01,0x01, /* [4231] OBJ_setext_genCrypt */
6430x67,0x2A,0x01,0x03, /* [4235] OBJ_setext_miAuth */
6440x67,0x2A,0x01,0x04, /* [4239] OBJ_setext_pinSecure */
6450x67,0x2A,0x01,0x05, /* [4243] OBJ_setext_pinAny */
6460x67,0x2A,0x01,0x07, /* [4247] OBJ_setext_track2 */
6470x67,0x2A,0x01,0x08, /* [4251] OBJ_setext_cv */
6480x67,0x2A,0x05,0x00, /* [4255] OBJ_set_policy_root */
6490x67,0x2A,0x07,0x00, /* [4259] OBJ_setCext_hashedRoot */
6500x67,0x2A,0x07,0x01, /* [4263] OBJ_setCext_certType */
6510x67,0x2A,0x07,0x02, /* [4267] OBJ_setCext_merchData */
6520x67,0x2A,0x07,0x03, /* [4271] OBJ_setCext_cCertRequired */
6530x67,0x2A,0x07,0x04, /* [4275] OBJ_setCext_tunneling */
6540x67,0x2A,0x07,0x05, /* [4279] OBJ_setCext_setExt */
6550x67,0x2A,0x07,0x06, /* [4283] OBJ_setCext_setQualf */
6560x67,0x2A,0x07,0x07, /* [4287] OBJ_setCext_PGWYcapabilities */
6570x67,0x2A,0x07,0x08, /* [4291] OBJ_setCext_TokenIdentifier */
6580x67,0x2A,0x07,0x09, /* [4295] OBJ_setCext_Track2Data */
6590x67,0x2A,0x07,0x0A, /* [4299] OBJ_setCext_TokenType */
6600x67,0x2A,0x07,0x0B, /* [4303] OBJ_setCext_IssuerCapabilities */
6610x67,0x2A,0x03,0x00, /* [4307] OBJ_setAttr_Cert */
6620x67,0x2A,0x03,0x01, /* [4311] OBJ_setAttr_PGWYcap */
6630x67,0x2A,0x03,0x02, /* [4315] OBJ_setAttr_TokenType */
6640x67,0x2A,0x03,0x03, /* [4319] OBJ_setAttr_IssCap */
6650x67,0x2A,0x03,0x00,0x00, /* [4323] OBJ_set_rootKeyThumb */
6660x67,0x2A,0x03,0x00,0x01, /* [4328] OBJ_set_addPolicy */
6670x67,0x2A,0x03,0x02,0x01, /* [4333] OBJ_setAttr_Token_EMV */
6680x67,0x2A,0x03,0x02,0x02, /* [4338] OBJ_setAttr_Token_B0Prime */
6690x67,0x2A,0x03,0x03,0x03, /* [4343] OBJ_setAttr_IssCap_CVM */
6700x67,0x2A,0x03,0x03,0x04, /* [4348] OBJ_setAttr_IssCap_T2 */
6710x67,0x2A,0x03,0x03,0x05, /* [4353] OBJ_setAttr_IssCap_Sig */
6720x67,0x2A,0x03,0x03,0x03,0x01, /* [4358] OBJ_setAttr_GenCryptgrm */
6730x67,0x2A,0x03,0x03,0x04,0x01, /* [4364] OBJ_setAttr_T2Enc */
6740x67,0x2A,0x03,0x03,0x04,0x02, /* [4370] OBJ_setAttr_T2cleartxt */
6750x67,0x2A,0x03,0x03,0x05,0x01, /* [4376] OBJ_setAttr_TokICCsig */
6760x67,0x2A,0x03,0x03,0x05,0x02, /* [4382] OBJ_setAttr_SecDevSig */
6770x67,0x2A,0x08,0x01, /* [4388] OBJ_set_brand_IATA_ATA */
6780x67,0x2A,0x08,0x1E, /* [4392] OBJ_set_brand_Diners */
6790x67,0x2A,0x08,0x22, /* [4396] OBJ_set_brand_AmericanExpress */
6800x67,0x2A,0x08,0x23, /* [4400] OBJ_set_brand_JCB */
6810x67,0x2A,0x08,0x04, /* [4404] OBJ_set_brand_Visa */
6820x67,0x2A,0x08,0x05, /* [4408] OBJ_set_brand_MasterCard */
6830x67,0x2A,0x08,0xAE,0x7B, /* [4412] OBJ_set_brand_Novus */
6840x2A,0x86,0x48,0x86,0xF7,0x0D,0x03,0x0A, /* [4417] OBJ_des_cdmf */
6850x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x06,/* [4425] OBJ_rsaOAEPEncryptionSET */
6860x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x14,0x02,0x02,/* [4434] OBJ_ms_smartcard_login */
6870x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x14,0x02,0x03,/* [4444] OBJ_ms_upn */
6880x55,0x04,0x09, /* [4454] OBJ_streetAddress */
6890x55,0x04,0x11, /* [4457] OBJ_postalCode */
6900x2B,0x06,0x01,0x05,0x05,0x07,0x15, /* [4460] OBJ_id_ppl */
6910x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x0E, /* [4467] OBJ_proxyCertInfo */
6920x2B,0x06,0x01,0x05,0x05,0x07,0x15,0x00, /* [4475] OBJ_id_ppl_anyLanguage */
6930x2B,0x06,0x01,0x05,0x05,0x07,0x15,0x01, /* [4483] OBJ_id_ppl_inheritAll */
6940x55,0x1D,0x1E, /* [4491] OBJ_name_constraints */
6950x2B,0x06,0x01,0x05,0x05,0x07,0x15,0x02, /* [4494] OBJ_Independent */
6960x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x0B,/* [4502] OBJ_sha256WithRSAEncryption */
6970x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x0C,/* [4511] OBJ_sha384WithRSAEncryption */
6980x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x0D,/* [4520] OBJ_sha512WithRSAEncryption */
6990x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x0E,/* [4529] OBJ_sha224WithRSAEncryption */
7000x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x01,/* [4538] OBJ_sha256 */
7010x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x02,/* [4547] OBJ_sha384 */
7020x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x03,/* [4556] OBJ_sha512 */
7030x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x04,/* [4565] OBJ_sha224 */
704};
705
706static ASN1_OBJECT nid_objs[NUM_NID]={
707{"UNDEF","undefined",NID_undef,1,&(lvalues[0]),0},
708{"rsadsi","RSA Data Security, Inc.",NID_rsadsi,6,&(lvalues[1]),0},
709{"pkcs","RSA Data Security, Inc. PKCS",NID_pkcs,7,&(lvalues[7]),0},
710{"MD2","md2",NID_md2,8,&(lvalues[14]),0},
711{"MD5","md5",NID_md5,8,&(lvalues[22]),0},
712{"RC4","rc4",NID_rc4,8,&(lvalues[30]),0},
713{"rsaEncryption","rsaEncryption",NID_rsaEncryption,9,&(lvalues[38]),0},
714{"RSA-MD2","md2WithRSAEncryption",NID_md2WithRSAEncryption,9,
715 &(lvalues[47]),0},
716{"RSA-MD5","md5WithRSAEncryption",NID_md5WithRSAEncryption,9,
717 &(lvalues[56]),0},
718{"PBE-MD2-DES","pbeWithMD2AndDES-CBC",NID_pbeWithMD2AndDES_CBC,9,
719 &(lvalues[65]),0},
720{"PBE-MD5-DES","pbeWithMD5AndDES-CBC",NID_pbeWithMD5AndDES_CBC,9,
721 &(lvalues[74]),0},
722{"X500","directory services (X.500)",NID_X500,1,&(lvalues[83]),0},
723{"X509","X509",NID_X509,2,&(lvalues[84]),0},
724{"CN","commonName",NID_commonName,3,&(lvalues[86]),0},
725{"C","countryName",NID_countryName,3,&(lvalues[89]),0},
726{"L","localityName",NID_localityName,3,&(lvalues[92]),0},
727{"ST","stateOrProvinceName",NID_stateOrProvinceName,3,&(lvalues[95]),0},
728{"O","organizationName",NID_organizationName,3,&(lvalues[98]),0},
729{"OU","organizationalUnitName",NID_organizationalUnitName,3,
730 &(lvalues[101]),0},
731{"RSA","rsa",NID_rsa,4,&(lvalues[104]),0},
732{"pkcs7","pkcs7",NID_pkcs7,8,&(lvalues[108]),0},
733{"pkcs7-data","pkcs7-data",NID_pkcs7_data,9,&(lvalues[116]),0},
734{"pkcs7-signedData","pkcs7-signedData",NID_pkcs7_signed,9,
735 &(lvalues[125]),0},
736{"pkcs7-envelopedData","pkcs7-envelopedData",NID_pkcs7_enveloped,9,
737 &(lvalues[134]),0},
738{"pkcs7-signedAndEnvelopedData","pkcs7-signedAndEnvelopedData",
739 NID_pkcs7_signedAndEnveloped,9,&(lvalues[143]),0},
740{"pkcs7-digestData","pkcs7-digestData",NID_pkcs7_digest,9,
741 &(lvalues[152]),0},
742{"pkcs7-encryptedData","pkcs7-encryptedData",NID_pkcs7_encrypted,9,
743 &(lvalues[161]),0},
744{"pkcs3","pkcs3",NID_pkcs3,8,&(lvalues[170]),0},
745{"dhKeyAgreement","dhKeyAgreement",NID_dhKeyAgreement,9,
746 &(lvalues[178]),0},
747{"DES-ECB","des-ecb",NID_des_ecb,5,&(lvalues[187]),0},
748{"DES-CFB","des-cfb",NID_des_cfb64,5,&(lvalues[192]),0},
749{"DES-CBC","des-cbc",NID_des_cbc,5,&(lvalues[197]),0},
750{"DES-EDE","des-ede",NID_des_ede_ecb,5,&(lvalues[202]),0},
751{"DES-EDE3","des-ede3",NID_des_ede3_ecb,0,NULL},
752{"IDEA-CBC","idea-cbc",NID_idea_cbc,11,&(lvalues[207]),0},
753{"IDEA-CFB","idea-cfb",NID_idea_cfb64,0,NULL},
754{"IDEA-ECB","idea-ecb",NID_idea_ecb,0,NULL},
755{"RC2-CBC","rc2-cbc",NID_rc2_cbc,8,&(lvalues[218]),0},
756{"RC2-ECB","rc2-ecb",NID_rc2_ecb,0,NULL},
757{"RC2-CFB","rc2-cfb",NID_rc2_cfb64,0,NULL},
758{"RC2-OFB","rc2-ofb",NID_rc2_ofb64,0,NULL},
759{"SHA","sha",NID_sha,5,&(lvalues[226]),0},
760{"RSA-SHA","shaWithRSAEncryption",NID_shaWithRSAEncryption,5,
761 &(lvalues[231]),0},
762{"DES-EDE-CBC","des-ede-cbc",NID_des_ede_cbc,0,NULL},
763{"DES-EDE3-CBC","des-ede3-cbc",NID_des_ede3_cbc,8,&(lvalues[236]),0},
764{"DES-OFB","des-ofb",NID_des_ofb64,5,&(lvalues[244]),0},
765{"IDEA-OFB","idea-ofb",NID_idea_ofb64,0,NULL},
766{"pkcs9","pkcs9",NID_pkcs9,8,&(lvalues[249]),0},
767{"emailAddress","emailAddress",NID_pkcs9_emailAddress,9,
768 &(lvalues[257]),0},
769{"unstructuredName","unstructuredName",NID_pkcs9_unstructuredName,9,
770 &(lvalues[266]),0},
771{"contentType","contentType",NID_pkcs9_contentType,9,&(lvalues[275]),0},
772{"messageDigest","messageDigest",NID_pkcs9_messageDigest,9,
773 &(lvalues[284]),0},
774{"signingTime","signingTime",NID_pkcs9_signingTime,9,&(lvalues[293]),0},
775{"countersignature","countersignature",NID_pkcs9_countersignature,9,
776 &(lvalues[302]),0},
777{"challengePassword","challengePassword",NID_pkcs9_challengePassword,
778 9,&(lvalues[311]),0},
779{"unstructuredAddress","unstructuredAddress",
780 NID_pkcs9_unstructuredAddress,9,&(lvalues[320]),0},
781{"extendedCertificateAttributes","extendedCertificateAttributes",
782 NID_pkcs9_extCertAttributes,9,&(lvalues[329]),0},
783{"Netscape","Netscape Communications Corp.",NID_netscape,7,
784 &(lvalues[338]),0},
785{"nsCertExt","Netscape Certificate Extension",
786 NID_netscape_cert_extension,8,&(lvalues[345]),0},
787{"nsDataType","Netscape Data Type",NID_netscape_data_type,8,
788 &(lvalues[353]),0},
789{"DES-EDE-CFB","des-ede-cfb",NID_des_ede_cfb64,0,NULL},
790{"DES-EDE3-CFB","des-ede3-cfb",NID_des_ede3_cfb64,0,NULL},
791{"DES-EDE-OFB","des-ede-ofb",NID_des_ede_ofb64,0,NULL},
792{"DES-EDE3-OFB","des-ede3-ofb",NID_des_ede3_ofb64,0,NULL},
793{"SHA1","sha1",NID_sha1,5,&(lvalues[361]),0},
794{"RSA-SHA1","sha1WithRSAEncryption",NID_sha1WithRSAEncryption,9,
795 &(lvalues[366]),0},
796{"DSA-SHA","dsaWithSHA",NID_dsaWithSHA,5,&(lvalues[375]),0},
797{"DSA-old","dsaEncryption-old",NID_dsa_2,5,&(lvalues[380]),0},
798{"PBE-SHA1-RC2-64","pbeWithSHA1AndRC2-CBC",NID_pbeWithSHA1AndRC2_CBC,
799 9,&(lvalues[385]),0},
800{"PBKDF2","PBKDF2",NID_id_pbkdf2,9,&(lvalues[394]),0},
801{"DSA-SHA1-old","dsaWithSHA1-old",NID_dsaWithSHA1_2,5,&(lvalues[403]),0},
802{"nsCertType","Netscape Cert Type",NID_netscape_cert_type,9,
803 &(lvalues[408]),0},
804{"nsBaseUrl","Netscape Base Url",NID_netscape_base_url,9,
805 &(lvalues[417]),0},
806{"nsRevocationUrl","Netscape Revocation Url",
807 NID_netscape_revocation_url,9,&(lvalues[426]),0},
808{"nsCaRevocationUrl","Netscape CA Revocation Url",
809 NID_netscape_ca_revocation_url,9,&(lvalues[435]),0},
810{"nsRenewalUrl","Netscape Renewal Url",NID_netscape_renewal_url,9,
811 &(lvalues[444]),0},
812{"nsCaPolicyUrl","Netscape CA Policy Url",NID_netscape_ca_policy_url,
813 9,&(lvalues[453]),0},
814{"nsSslServerName","Netscape SSL Server Name",
815 NID_netscape_ssl_server_name,9,&(lvalues[462]),0},
816{"nsComment","Netscape Comment",NID_netscape_comment,9,&(lvalues[471]),0},
817{"nsCertSequence","Netscape Certificate Sequence",
818 NID_netscape_cert_sequence,9,&(lvalues[480]),0},
819{"DESX-CBC","desx-cbc",NID_desx_cbc,0,NULL},
820{"id-ce","id-ce",NID_id_ce,2,&(lvalues[489]),0},
821{"subjectKeyIdentifier","X509v3 Subject Key Identifier",
822 NID_subject_key_identifier,3,&(lvalues[491]),0},
823{"keyUsage","X509v3 Key Usage",NID_key_usage,3,&(lvalues[494]),0},
824{"privateKeyUsagePeriod","X509v3 Private Key Usage Period",
825 NID_private_key_usage_period,3,&(lvalues[497]),0},
826{"subjectAltName","X509v3 Subject Alternative Name",
827 NID_subject_alt_name,3,&(lvalues[500]),0},
828{"issuerAltName","X509v3 Issuer Alternative Name",NID_issuer_alt_name,
829 3,&(lvalues[503]),0},
830{"basicConstraints","X509v3 Basic Constraints",NID_basic_constraints,
831 3,&(lvalues[506]),0},
832{"crlNumber","X509v3 CRL Number",NID_crl_number,3,&(lvalues[509]),0},
833{"certificatePolicies","X509v3 Certificate Policies",
834 NID_certificate_policies,3,&(lvalues[512]),0},
835{"authorityKeyIdentifier","X509v3 Authority Key Identifier",
836 NID_authority_key_identifier,3,&(lvalues[515]),0},
837{"BF-CBC","bf-cbc",NID_bf_cbc,9,&(lvalues[518]),0},
838{"BF-ECB","bf-ecb",NID_bf_ecb,0,NULL},
839{"BF-CFB","bf-cfb",NID_bf_cfb64,0,NULL},
840{"BF-OFB","bf-ofb",NID_bf_ofb64,0,NULL},
841{"MDC2","mdc2",NID_mdc2,4,&(lvalues[527]),0},
842{"RSA-MDC2","mdc2WithRSA",NID_mdc2WithRSA,4,&(lvalues[531]),0},
843{"RC4-40","rc4-40",NID_rc4_40,0,NULL},
844{"RC2-40-CBC","rc2-40-cbc",NID_rc2_40_cbc,0,NULL},
845{"GN","givenName",NID_givenName,3,&(lvalues[535]),0},
846{"SN","surname",NID_surname,3,&(lvalues[538]),0},
847{"initials","initials",NID_initials,3,&(lvalues[541]),0},
848{NULL,NULL,NID_undef,0,NULL},
849{"crlDistributionPoints","X509v3 CRL Distribution Points",
850 NID_crl_distribution_points,3,&(lvalues[544]),0},
851{"RSA-NP-MD5","md5WithRSA",NID_md5WithRSA,5,&(lvalues[547]),0},
852{"serialNumber","serialNumber",NID_serialNumber,3,&(lvalues[552]),0},
853{"title","title",NID_title,3,&(lvalues[555]),0},
854{"description","description",NID_description,3,&(lvalues[558]),0},
855{"CAST5-CBC","cast5-cbc",NID_cast5_cbc,9,&(lvalues[561]),0},
856{"CAST5-ECB","cast5-ecb",NID_cast5_ecb,0,NULL},
857{"CAST5-CFB","cast5-cfb",NID_cast5_cfb64,0,NULL},
858{"CAST5-OFB","cast5-ofb",NID_cast5_ofb64,0,NULL},
859{"pbeWithMD5AndCast5CBC","pbeWithMD5AndCast5CBC",
860 NID_pbeWithMD5AndCast5_CBC,9,&(lvalues[570]),0},
861{"DSA-SHA1","dsaWithSHA1",NID_dsaWithSHA1,7,&(lvalues[579]),0},
862{"MD5-SHA1","md5-sha1",NID_md5_sha1,0,NULL},
863{"RSA-SHA1-2","sha1WithRSA",NID_sha1WithRSA,5,&(lvalues[586]),0},
864{"DSA","dsaEncryption",NID_dsa,7,&(lvalues[591]),0},
865{"RIPEMD160","ripemd160",NID_ripemd160,5,&(lvalues[598]),0},
866{NULL,NULL,NID_undef,0,NULL},
867{"RSA-RIPEMD160","ripemd160WithRSA",NID_ripemd160WithRSA,6,
868 &(lvalues[603]),0},
869{"RC5-CBC","rc5-cbc",NID_rc5_cbc,8,&(lvalues[609]),0},
870{"RC5-ECB","rc5-ecb",NID_rc5_ecb,0,NULL},
871{"RC5-CFB","rc5-cfb",NID_rc5_cfb64,0,NULL},
872{"RC5-OFB","rc5-ofb",NID_rc5_ofb64,0,NULL},
873{"RLE","run length compression",NID_rle_compression,6,&(lvalues[617]),0},
874{"ZLIB","zlib compression",NID_zlib_compression,6,&(lvalues[623]),0},
875{"extendedKeyUsage","X509v3 Extended Key Usage",NID_ext_key_usage,3,
876 &(lvalues[629]),0},
877{"PKIX","PKIX",NID_id_pkix,6,&(lvalues[632]),0},
878{"id-kp","id-kp",NID_id_kp,7,&(lvalues[638]),0},
879{"serverAuth","TLS Web Server Authentication",NID_server_auth,8,
880 &(lvalues[645]),0},
881{"clientAuth","TLS Web Client Authentication",NID_client_auth,8,
882 &(lvalues[653]),0},
883{"codeSigning","Code Signing",NID_code_sign,8,&(lvalues[661]),0},
884{"emailProtection","E-mail Protection",NID_email_protect,8,
885 &(lvalues[669]),0},
886{"timeStamping","Time Stamping",NID_time_stamp,8,&(lvalues[677]),0},
887{"msCodeInd","Microsoft Individual Code Signing",NID_ms_code_ind,10,
888 &(lvalues[685]),0},
889{"msCodeCom","Microsoft Commercial Code Signing",NID_ms_code_com,10,
890 &(lvalues[695]),0},
891{"msCTLSign","Microsoft Trust List Signing",NID_ms_ctl_sign,10,
892 &(lvalues[705]),0},
893{"msSGC","Microsoft Server Gated Crypto",NID_ms_sgc,10,&(lvalues[715]),0},
894{"msEFS","Microsoft Encrypted File System",NID_ms_efs,10,
895 &(lvalues[725]),0},
896{"nsSGC","Netscape Server Gated Crypto",NID_ns_sgc,9,&(lvalues[735]),0},
897{"deltaCRL","X509v3 Delta CRL Indicator",NID_delta_crl,3,
898 &(lvalues[744]),0},
899{"CRLReason","X509v3 CRL Reason Code",NID_crl_reason,3,&(lvalues[747]),0},
900{"invalidityDate","Invalidity Date",NID_invalidity_date,3,
901 &(lvalues[750]),0},
902{"SXNetID","Strong Extranet ID",NID_sxnet,5,&(lvalues[753]),0},
903{"PBE-SHA1-RC4-128","pbeWithSHA1And128BitRC4",
904 NID_pbe_WithSHA1And128BitRC4,10,&(lvalues[758]),0},
905{"PBE-SHA1-RC4-40","pbeWithSHA1And40BitRC4",
906 NID_pbe_WithSHA1And40BitRC4,10,&(lvalues[768]),0},
907{"PBE-SHA1-3DES","pbeWithSHA1And3-KeyTripleDES-CBC",
908 NID_pbe_WithSHA1And3_Key_TripleDES_CBC,10,&(lvalues[778]),0},
909{"PBE-SHA1-2DES","pbeWithSHA1And2-KeyTripleDES-CBC",
910 NID_pbe_WithSHA1And2_Key_TripleDES_CBC,10,&(lvalues[788]),0},
911{"PBE-SHA1-RC2-128","pbeWithSHA1And128BitRC2-CBC",
912 NID_pbe_WithSHA1And128BitRC2_CBC,10,&(lvalues[798]),0},
913{"PBE-SHA1-RC2-40","pbeWithSHA1And40BitRC2-CBC",
914 NID_pbe_WithSHA1And40BitRC2_CBC,10,&(lvalues[808]),0},
915{"keyBag","keyBag",NID_keyBag,11,&(lvalues[818]),0},
916{"pkcs8ShroudedKeyBag","pkcs8ShroudedKeyBag",NID_pkcs8ShroudedKeyBag,
917 11,&(lvalues[829]),0},
918{"certBag","certBag",NID_certBag,11,&(lvalues[840]),0},
919{"crlBag","crlBag",NID_crlBag,11,&(lvalues[851]),0},
920{"secretBag","secretBag",NID_secretBag,11,&(lvalues[862]),0},
921{"safeContentsBag","safeContentsBag",NID_safeContentsBag,11,
922 &(lvalues[873]),0},
923{"friendlyName","friendlyName",NID_friendlyName,9,&(lvalues[884]),0},
924{"localKeyID","localKeyID",NID_localKeyID,9,&(lvalues[893]),0},
925{"x509Certificate","x509Certificate",NID_x509Certificate,10,
926 &(lvalues[902]),0},
927{"sdsiCertificate","sdsiCertificate",NID_sdsiCertificate,10,
928 &(lvalues[912]),0},
929{"x509Crl","x509Crl",NID_x509Crl,10,&(lvalues[922]),0},
930{"PBES2","PBES2",NID_pbes2,9,&(lvalues[932]),0},
931{"PBMAC1","PBMAC1",NID_pbmac1,9,&(lvalues[941]),0},
932{"hmacWithSHA1","hmacWithSHA1",NID_hmacWithSHA1,8,&(lvalues[950]),0},
933{"id-qt-cps","Policy Qualifier CPS",NID_id_qt_cps,8,&(lvalues[958]),0},
934{"id-qt-unotice","Policy Qualifier User Notice",NID_id_qt_unotice,8,
935 &(lvalues[966]),0},
936{"RC2-64-CBC","rc2-64-cbc",NID_rc2_64_cbc,0,NULL},
937{"SMIME-CAPS","S/MIME Capabilities",NID_SMIMECapabilities,9,
938 &(lvalues[974]),0},
939{"PBE-MD2-RC2-64","pbeWithMD2AndRC2-CBC",NID_pbeWithMD2AndRC2_CBC,9,
940 &(lvalues[983]),0},
941{"PBE-MD5-RC2-64","pbeWithMD5AndRC2-CBC",NID_pbeWithMD5AndRC2_CBC,9,
942 &(lvalues[992]),0},
943{"PBE-SHA1-DES","pbeWithSHA1AndDES-CBC",NID_pbeWithSHA1AndDES_CBC,9,
944 &(lvalues[1001]),0},
945{"msExtReq","Microsoft Extension Request",NID_ms_ext_req,10,
946 &(lvalues[1010]),0},
947{"extReq","Extension Request",NID_ext_req,9,&(lvalues[1020]),0},
948{"name","name",NID_name,3,&(lvalues[1029]),0},
949{"dnQualifier","dnQualifier",NID_dnQualifier,3,&(lvalues[1032]),0},
950{"id-pe","id-pe",NID_id_pe,7,&(lvalues[1035]),0},
951{"id-ad","id-ad",NID_id_ad,7,&(lvalues[1042]),0},
952{"authorityInfoAccess","Authority Information Access",NID_info_access,
953 8,&(lvalues[1049]),0},
954{"OCSP","OCSP",NID_ad_OCSP,8,&(lvalues[1057]),0},
955{"caIssuers","CA Issuers",NID_ad_ca_issuers,8,&(lvalues[1065]),0},
956{"OCSPSigning","OCSP Signing",NID_OCSP_sign,8,&(lvalues[1073]),0},
957{"ISO","iso",NID_iso,1,&(lvalues[1081]),0},
958{"member-body","ISO Member Body",NID_member_body,1,&(lvalues[1082]),0},
959{"ISO-US","ISO US Member Body",NID_ISO_US,3,&(lvalues[1083]),0},
960{"X9-57","X9.57",NID_X9_57,5,&(lvalues[1086]),0},
961{"X9cm","X9.57 CM ?",NID_X9cm,6,&(lvalues[1091]),0},
962{"pkcs1","pkcs1",NID_pkcs1,8,&(lvalues[1097]),0},
963{"pkcs5","pkcs5",NID_pkcs5,8,&(lvalues[1105]),0},
964{"SMIME","S/MIME",NID_SMIME,9,&(lvalues[1113]),0},
965{"id-smime-mod","id-smime-mod",NID_id_smime_mod,10,&(lvalues[1122]),0},
966{"id-smime-ct","id-smime-ct",NID_id_smime_ct,10,&(lvalues[1132]),0},
967{"id-smime-aa","id-smime-aa",NID_id_smime_aa,10,&(lvalues[1142]),0},
968{"id-smime-alg","id-smime-alg",NID_id_smime_alg,10,&(lvalues[1152]),0},
969{"id-smime-cd","id-smime-cd",NID_id_smime_cd,10,&(lvalues[1162]),0},
970{"id-smime-spq","id-smime-spq",NID_id_smime_spq,10,&(lvalues[1172]),0},
971{"id-smime-cti","id-smime-cti",NID_id_smime_cti,10,&(lvalues[1182]),0},
972{"id-smime-mod-cms","id-smime-mod-cms",NID_id_smime_mod_cms,11,
973 &(lvalues[1192]),0},
974{"id-smime-mod-ess","id-smime-mod-ess",NID_id_smime_mod_ess,11,
975 &(lvalues[1203]),0},
976{"id-smime-mod-oid","id-smime-mod-oid",NID_id_smime_mod_oid,11,
977 &(lvalues[1214]),0},
978{"id-smime-mod-msg-v3","id-smime-mod-msg-v3",NID_id_smime_mod_msg_v3,
979 11,&(lvalues[1225]),0},
980{"id-smime-mod-ets-eSignature-88","id-smime-mod-ets-eSignature-88",
981 NID_id_smime_mod_ets_eSignature_88,11,&(lvalues[1236]),0},
982{"id-smime-mod-ets-eSignature-97","id-smime-mod-ets-eSignature-97",
983 NID_id_smime_mod_ets_eSignature_97,11,&(lvalues[1247]),0},
984{"id-smime-mod-ets-eSigPolicy-88","id-smime-mod-ets-eSigPolicy-88",
985 NID_id_smime_mod_ets_eSigPolicy_88,11,&(lvalues[1258]),0},
986{"id-smime-mod-ets-eSigPolicy-97","id-smime-mod-ets-eSigPolicy-97",
987 NID_id_smime_mod_ets_eSigPolicy_97,11,&(lvalues[1269]),0},
988{"id-smime-ct-receipt","id-smime-ct-receipt",NID_id_smime_ct_receipt,
989 11,&(lvalues[1280]),0},
990{"id-smime-ct-authData","id-smime-ct-authData",
991 NID_id_smime_ct_authData,11,&(lvalues[1291]),0},
992{"id-smime-ct-publishCert","id-smime-ct-publishCert",
993 NID_id_smime_ct_publishCert,11,&(lvalues[1302]),0},
994{"id-smime-ct-TSTInfo","id-smime-ct-TSTInfo",NID_id_smime_ct_TSTInfo,
995 11,&(lvalues[1313]),0},
996{"id-smime-ct-TDTInfo","id-smime-ct-TDTInfo",NID_id_smime_ct_TDTInfo,
997 11,&(lvalues[1324]),0},
998{"id-smime-ct-contentInfo","id-smime-ct-contentInfo",
999 NID_id_smime_ct_contentInfo,11,&(lvalues[1335]),0},
1000{"id-smime-ct-DVCSRequestData","id-smime-ct-DVCSRequestData",
1001 NID_id_smime_ct_DVCSRequestData,11,&(lvalues[1346]),0},
1002{"id-smime-ct-DVCSResponseData","id-smime-ct-DVCSResponseData",
1003 NID_id_smime_ct_DVCSResponseData,11,&(lvalues[1357]),0},
1004{"id-smime-aa-receiptRequest","id-smime-aa-receiptRequest",
1005 NID_id_smime_aa_receiptRequest,11,&(lvalues[1368]),0},
1006{"id-smime-aa-securityLabel","id-smime-aa-securityLabel",
1007 NID_id_smime_aa_securityLabel,11,&(lvalues[1379]),0},
1008{"id-smime-aa-mlExpandHistory","id-smime-aa-mlExpandHistory",
1009 NID_id_smime_aa_mlExpandHistory,11,&(lvalues[1390]),0},
1010{"id-smime-aa-contentHint","id-smime-aa-contentHint",
1011 NID_id_smime_aa_contentHint,11,&(lvalues[1401]),0},
1012{"id-smime-aa-msgSigDigest","id-smime-aa-msgSigDigest",
1013 NID_id_smime_aa_msgSigDigest,11,&(lvalues[1412]),0},
1014{"id-smime-aa-encapContentType","id-smime-aa-encapContentType",
1015 NID_id_smime_aa_encapContentType,11,&(lvalues[1423]),0},
1016{"id-smime-aa-contentIdentifier","id-smime-aa-contentIdentifier",
1017 NID_id_smime_aa_contentIdentifier,11,&(lvalues[1434]),0},
1018{"id-smime-aa-macValue","id-smime-aa-macValue",
1019 NID_id_smime_aa_macValue,11,&(lvalues[1445]),0},
1020{"id-smime-aa-equivalentLabels","id-smime-aa-equivalentLabels",
1021 NID_id_smime_aa_equivalentLabels,11,&(lvalues[1456]),0},
1022{"id-smime-aa-contentReference","id-smime-aa-contentReference",
1023 NID_id_smime_aa_contentReference,11,&(lvalues[1467]),0},
1024{"id-smime-aa-encrypKeyPref","id-smime-aa-encrypKeyPref",
1025 NID_id_smime_aa_encrypKeyPref,11,&(lvalues[1478]),0},
1026{"id-smime-aa-signingCertificate","id-smime-aa-signingCertificate",
1027 NID_id_smime_aa_signingCertificate,11,&(lvalues[1489]),0},
1028{"id-smime-aa-smimeEncryptCerts","id-smime-aa-smimeEncryptCerts",
1029 NID_id_smime_aa_smimeEncryptCerts,11,&(lvalues[1500]),0},
1030{"id-smime-aa-timeStampToken","id-smime-aa-timeStampToken",
1031 NID_id_smime_aa_timeStampToken,11,&(lvalues[1511]),0},
1032{"id-smime-aa-ets-sigPolicyId","id-smime-aa-ets-sigPolicyId",
1033 NID_id_smime_aa_ets_sigPolicyId,11,&(lvalues[1522]),0},
1034{"id-smime-aa-ets-commitmentType","id-smime-aa-ets-commitmentType",
1035 NID_id_smime_aa_ets_commitmentType,11,&(lvalues[1533]),0},
1036{"id-smime-aa-ets-signerLocation","id-smime-aa-ets-signerLocation",
1037 NID_id_smime_aa_ets_signerLocation,11,&(lvalues[1544]),0},
1038{"id-smime-aa-ets-signerAttr","id-smime-aa-ets-signerAttr",
1039 NID_id_smime_aa_ets_signerAttr,11,&(lvalues[1555]),0},
1040{"id-smime-aa-ets-otherSigCert","id-smime-aa-ets-otherSigCert",
1041 NID_id_smime_aa_ets_otherSigCert,11,&(lvalues[1566]),0},
1042{"id-smime-aa-ets-contentTimestamp",
1043 "id-smime-aa-ets-contentTimestamp",
1044 NID_id_smime_aa_ets_contentTimestamp,11,&(lvalues[1577]),0},
1045{"id-smime-aa-ets-CertificateRefs","id-smime-aa-ets-CertificateRefs",
1046 NID_id_smime_aa_ets_CertificateRefs,11,&(lvalues[1588]),0},
1047{"id-smime-aa-ets-RevocationRefs","id-smime-aa-ets-RevocationRefs",
1048 NID_id_smime_aa_ets_RevocationRefs,11,&(lvalues[1599]),0},
1049{"id-smime-aa-ets-certValues","id-smime-aa-ets-certValues",
1050 NID_id_smime_aa_ets_certValues,11,&(lvalues[1610]),0},
1051{"id-smime-aa-ets-revocationValues",
1052 "id-smime-aa-ets-revocationValues",
1053 NID_id_smime_aa_ets_revocationValues,11,&(lvalues[1621]),0},
1054{"id-smime-aa-ets-escTimeStamp","id-smime-aa-ets-escTimeStamp",
1055 NID_id_smime_aa_ets_escTimeStamp,11,&(lvalues[1632]),0},
1056{"id-smime-aa-ets-certCRLTimestamp",
1057 "id-smime-aa-ets-certCRLTimestamp",
1058 NID_id_smime_aa_ets_certCRLTimestamp,11,&(lvalues[1643]),0},
1059{"id-smime-aa-ets-archiveTimeStamp",
1060 "id-smime-aa-ets-archiveTimeStamp",
1061 NID_id_smime_aa_ets_archiveTimeStamp,11,&(lvalues[1654]),0},
1062{"id-smime-aa-signatureType","id-smime-aa-signatureType",
1063 NID_id_smime_aa_signatureType,11,&(lvalues[1665]),0},
1064{"id-smime-aa-dvcs-dvc","id-smime-aa-dvcs-dvc",
1065 NID_id_smime_aa_dvcs_dvc,11,&(lvalues[1676]),0},
1066{"id-smime-alg-ESDHwith3DES","id-smime-alg-ESDHwith3DES",
1067 NID_id_smime_alg_ESDHwith3DES,11,&(lvalues[1687]),0},
1068{"id-smime-alg-ESDHwithRC2","id-smime-alg-ESDHwithRC2",
1069 NID_id_smime_alg_ESDHwithRC2,11,&(lvalues[1698]),0},
1070{"id-smime-alg-3DESwrap","id-smime-alg-3DESwrap",
1071 NID_id_smime_alg_3DESwrap,11,&(lvalues[1709]),0},
1072{"id-smime-alg-RC2wrap","id-smime-alg-RC2wrap",
1073 NID_id_smime_alg_RC2wrap,11,&(lvalues[1720]),0},
1074{"id-smime-alg-ESDH","id-smime-alg-ESDH",NID_id_smime_alg_ESDH,11,
1075 &(lvalues[1731]),0},
1076{"id-smime-alg-CMS3DESwrap","id-smime-alg-CMS3DESwrap",
1077 NID_id_smime_alg_CMS3DESwrap,11,&(lvalues[1742]),0},
1078{"id-smime-alg-CMSRC2wrap","id-smime-alg-CMSRC2wrap",
1079 NID_id_smime_alg_CMSRC2wrap,11,&(lvalues[1753]),0},
1080{"id-smime-cd-ldap","id-smime-cd-ldap",NID_id_smime_cd_ldap,11,
1081 &(lvalues[1764]),0},
1082{"id-smime-spq-ets-sqt-uri","id-smime-spq-ets-sqt-uri",
1083 NID_id_smime_spq_ets_sqt_uri,11,&(lvalues[1775]),0},
1084{"id-smime-spq-ets-sqt-unotice","id-smime-spq-ets-sqt-unotice",
1085 NID_id_smime_spq_ets_sqt_unotice,11,&(lvalues[1786]),0},
1086{"id-smime-cti-ets-proofOfOrigin","id-smime-cti-ets-proofOfOrigin",
1087 NID_id_smime_cti_ets_proofOfOrigin,11,&(lvalues[1797]),0},
1088{"id-smime-cti-ets-proofOfReceipt","id-smime-cti-ets-proofOfReceipt",
1089 NID_id_smime_cti_ets_proofOfReceipt,11,&(lvalues[1808]),0},
1090{"id-smime-cti-ets-proofOfDelivery",
1091 "id-smime-cti-ets-proofOfDelivery",
1092 NID_id_smime_cti_ets_proofOfDelivery,11,&(lvalues[1819]),0},
1093{"id-smime-cti-ets-proofOfSender","id-smime-cti-ets-proofOfSender",
1094 NID_id_smime_cti_ets_proofOfSender,11,&(lvalues[1830]),0},
1095{"id-smime-cti-ets-proofOfApproval",
1096 "id-smime-cti-ets-proofOfApproval",
1097 NID_id_smime_cti_ets_proofOfApproval,11,&(lvalues[1841]),0},
1098{"id-smime-cti-ets-proofOfCreation",
1099 "id-smime-cti-ets-proofOfCreation",
1100 NID_id_smime_cti_ets_proofOfCreation,11,&(lvalues[1852]),0},
1101{"MD4","md4",NID_md4,8,&(lvalues[1863]),0},
1102{"id-pkix-mod","id-pkix-mod",NID_id_pkix_mod,7,&(lvalues[1871]),0},
1103{"id-qt","id-qt",NID_id_qt,7,&(lvalues[1878]),0},
1104{"id-it","id-it",NID_id_it,7,&(lvalues[1885]),0},
1105{"id-pkip","id-pkip",NID_id_pkip,7,&(lvalues[1892]),0},
1106{"id-alg","id-alg",NID_id_alg,7,&(lvalues[1899]),0},
1107{"id-cmc","id-cmc",NID_id_cmc,7,&(lvalues[1906]),0},
1108{"id-on","id-on",NID_id_on,7,&(lvalues[1913]),0},
1109{"id-pda","id-pda",NID_id_pda,7,&(lvalues[1920]),0},
1110{"id-aca","id-aca",NID_id_aca,7,&(lvalues[1927]),0},
1111{"id-qcs","id-qcs",NID_id_qcs,7,&(lvalues[1934]),0},
1112{"id-cct","id-cct",NID_id_cct,7,&(lvalues[1941]),0},
1113{"id-pkix1-explicit-88","id-pkix1-explicit-88",
1114 NID_id_pkix1_explicit_88,8,&(lvalues[1948]),0},
1115{"id-pkix1-implicit-88","id-pkix1-implicit-88",
1116 NID_id_pkix1_implicit_88,8,&(lvalues[1956]),0},
1117{"id-pkix1-explicit-93","id-pkix1-explicit-93",
1118 NID_id_pkix1_explicit_93,8,&(lvalues[1964]),0},
1119{"id-pkix1-implicit-93","id-pkix1-implicit-93",
1120 NID_id_pkix1_implicit_93,8,&(lvalues[1972]),0},
1121{"id-mod-crmf","id-mod-crmf",NID_id_mod_crmf,8,&(lvalues[1980]),0},
1122{"id-mod-cmc","id-mod-cmc",NID_id_mod_cmc,8,&(lvalues[1988]),0},
1123{"id-mod-kea-profile-88","id-mod-kea-profile-88",
1124 NID_id_mod_kea_profile_88,8,&(lvalues[1996]),0},
1125{"id-mod-kea-profile-93","id-mod-kea-profile-93",
1126 NID_id_mod_kea_profile_93,8,&(lvalues[2004]),0},
1127{"id-mod-cmp","id-mod-cmp",NID_id_mod_cmp,8,&(lvalues[2012]),0},
1128{"id-mod-qualified-cert-88","id-mod-qualified-cert-88",
1129 NID_id_mod_qualified_cert_88,8,&(lvalues[2020]),0},
1130{"id-mod-qualified-cert-93","id-mod-qualified-cert-93",
1131 NID_id_mod_qualified_cert_93,8,&(lvalues[2028]),0},
1132{"id-mod-attribute-cert","id-mod-attribute-cert",
1133 NID_id_mod_attribute_cert,8,&(lvalues[2036]),0},
1134{"id-mod-timestamp-protocol","id-mod-timestamp-protocol",
1135 NID_id_mod_timestamp_protocol,8,&(lvalues[2044]),0},
1136{"id-mod-ocsp","id-mod-ocsp",NID_id_mod_ocsp,8,&(lvalues[2052]),0},
1137{"id-mod-dvcs","id-mod-dvcs",NID_id_mod_dvcs,8,&(lvalues[2060]),0},
1138{"id-mod-cmp2000","id-mod-cmp2000",NID_id_mod_cmp2000,8,
1139 &(lvalues[2068]),0},
1140{"biometricInfo","Biometric Info",NID_biometricInfo,8,&(lvalues[2076]),0},
1141{"qcStatements","qcStatements",NID_qcStatements,8,&(lvalues[2084]),0},
1142{"ac-auditEntity","ac-auditEntity",NID_ac_auditEntity,8,
1143 &(lvalues[2092]),0},
1144{"ac-targeting","ac-targeting",NID_ac_targeting,8,&(lvalues[2100]),0},
1145{"aaControls","aaControls",NID_aaControls,8,&(lvalues[2108]),0},
1146{"sbgp-ipAddrBlock","sbgp-ipAddrBlock",NID_sbgp_ipAddrBlock,8,
1147 &(lvalues[2116]),0},
1148{"sbgp-autonomousSysNum","sbgp-autonomousSysNum",
1149 NID_sbgp_autonomousSysNum,8,&(lvalues[2124]),0},
1150{"sbgp-routerIdentifier","sbgp-routerIdentifier",
1151 NID_sbgp_routerIdentifier,8,&(lvalues[2132]),0},
1152{"textNotice","textNotice",NID_textNotice,8,&(lvalues[2140]),0},
1153{"ipsecEndSystem","IPSec End System",NID_ipsecEndSystem,8,
1154 &(lvalues[2148]),0},
1155{"ipsecTunnel","IPSec Tunnel",NID_ipsecTunnel,8,&(lvalues[2156]),0},
1156{"ipsecUser","IPSec User",NID_ipsecUser,8,&(lvalues[2164]),0},
1157{"DVCS","dvcs",NID_dvcs,8,&(lvalues[2172]),0},
1158{"id-it-caProtEncCert","id-it-caProtEncCert",NID_id_it_caProtEncCert,
1159 8,&(lvalues[2180]),0},
1160{"id-it-signKeyPairTypes","id-it-signKeyPairTypes",
1161 NID_id_it_signKeyPairTypes,8,&(lvalues[2188]),0},
1162{"id-it-encKeyPairTypes","id-it-encKeyPairTypes",
1163 NID_id_it_encKeyPairTypes,8,&(lvalues[2196]),0},
1164{"id-it-preferredSymmAlg","id-it-preferredSymmAlg",
1165 NID_id_it_preferredSymmAlg,8,&(lvalues[2204]),0},
1166{"id-it-caKeyUpdateInfo","id-it-caKeyUpdateInfo",
1167 NID_id_it_caKeyUpdateInfo,8,&(lvalues[2212]),0},
1168{"id-it-currentCRL","id-it-currentCRL",NID_id_it_currentCRL,8,
1169 &(lvalues[2220]),0},
1170{"id-it-unsupportedOIDs","id-it-unsupportedOIDs",
1171 NID_id_it_unsupportedOIDs,8,&(lvalues[2228]),0},
1172{"id-it-subscriptionRequest","id-it-subscriptionRequest",
1173 NID_id_it_subscriptionRequest,8,&(lvalues[2236]),0},
1174{"id-it-subscriptionResponse","id-it-subscriptionResponse",
1175 NID_id_it_subscriptionResponse,8,&(lvalues[2244]),0},
1176{"id-it-keyPairParamReq","id-it-keyPairParamReq",
1177 NID_id_it_keyPairParamReq,8,&(lvalues[2252]),0},
1178{"id-it-keyPairParamRep","id-it-keyPairParamRep",
1179 NID_id_it_keyPairParamRep,8,&(lvalues[2260]),0},
1180{"id-it-revPassphrase","id-it-revPassphrase",NID_id_it_revPassphrase,
1181 8,&(lvalues[2268]),0},
1182{"id-it-implicitConfirm","id-it-implicitConfirm",
1183 NID_id_it_implicitConfirm,8,&(lvalues[2276]),0},
1184{"id-it-confirmWaitTime","id-it-confirmWaitTime",
1185 NID_id_it_confirmWaitTime,8,&(lvalues[2284]),0},
1186{"id-it-origPKIMessage","id-it-origPKIMessage",
1187 NID_id_it_origPKIMessage,8,&(lvalues[2292]),0},
1188{"id-regCtrl","id-regCtrl",NID_id_regCtrl,8,&(lvalues[2300]),0},
1189{"id-regInfo","id-regInfo",NID_id_regInfo,8,&(lvalues[2308]),0},
1190{"id-regCtrl-regToken","id-regCtrl-regToken",NID_id_regCtrl_regToken,
1191 9,&(lvalues[2316]),0},
1192{"id-regCtrl-authenticator","id-regCtrl-authenticator",
1193 NID_id_regCtrl_authenticator,9,&(lvalues[2325]),0},
1194{"id-regCtrl-pkiPublicationInfo","id-regCtrl-pkiPublicationInfo",
1195 NID_id_regCtrl_pkiPublicationInfo,9,&(lvalues[2334]),0},
1196{"id-regCtrl-pkiArchiveOptions","id-regCtrl-pkiArchiveOptions",
1197 NID_id_regCtrl_pkiArchiveOptions,9,&(lvalues[2343]),0},
1198{"id-regCtrl-oldCertID","id-regCtrl-oldCertID",
1199 NID_id_regCtrl_oldCertID,9,&(lvalues[2352]),0},
1200{"id-regCtrl-protocolEncrKey","id-regCtrl-protocolEncrKey",
1201 NID_id_regCtrl_protocolEncrKey,9,&(lvalues[2361]),0},
1202{"id-regInfo-utf8Pairs","id-regInfo-utf8Pairs",
1203 NID_id_regInfo_utf8Pairs,9,&(lvalues[2370]),0},
1204{"id-regInfo-certReq","id-regInfo-certReq",NID_id_regInfo_certReq,9,
1205 &(lvalues[2379]),0},
1206{"id-alg-des40","id-alg-des40",NID_id_alg_des40,8,&(lvalues[2388]),0},
1207{"id-alg-noSignature","id-alg-noSignature",NID_id_alg_noSignature,8,
1208 &(lvalues[2396]),0},
1209{"id-alg-dh-sig-hmac-sha1","id-alg-dh-sig-hmac-sha1",
1210 NID_id_alg_dh_sig_hmac_sha1,8,&(lvalues[2404]),0},
1211{"id-alg-dh-pop","id-alg-dh-pop",NID_id_alg_dh_pop,8,&(lvalues[2412]),0},
1212{"id-cmc-statusInfo","id-cmc-statusInfo",NID_id_cmc_statusInfo,8,
1213 &(lvalues[2420]),0},
1214{"id-cmc-identification","id-cmc-identification",
1215 NID_id_cmc_identification,8,&(lvalues[2428]),0},
1216{"id-cmc-identityProof","id-cmc-identityProof",
1217 NID_id_cmc_identityProof,8,&(lvalues[2436]),0},
1218{"id-cmc-dataReturn","id-cmc-dataReturn",NID_id_cmc_dataReturn,8,
1219 &(lvalues[2444]),0},
1220{"id-cmc-transactionId","id-cmc-transactionId",
1221 NID_id_cmc_transactionId,8,&(lvalues[2452]),0},
1222{"id-cmc-senderNonce","id-cmc-senderNonce",NID_id_cmc_senderNonce,8,
1223 &(lvalues[2460]),0},
1224{"id-cmc-recipientNonce","id-cmc-recipientNonce",
1225 NID_id_cmc_recipientNonce,8,&(lvalues[2468]),0},
1226{"id-cmc-addExtensions","id-cmc-addExtensions",
1227 NID_id_cmc_addExtensions,8,&(lvalues[2476]),0},
1228{"id-cmc-encryptedPOP","id-cmc-encryptedPOP",NID_id_cmc_encryptedPOP,
1229 8,&(lvalues[2484]),0},
1230{"id-cmc-decryptedPOP","id-cmc-decryptedPOP",NID_id_cmc_decryptedPOP,
1231 8,&(lvalues[2492]),0},
1232{"id-cmc-lraPOPWitness","id-cmc-lraPOPWitness",
1233 NID_id_cmc_lraPOPWitness,8,&(lvalues[2500]),0},
1234{"id-cmc-getCert","id-cmc-getCert",NID_id_cmc_getCert,8,
1235 &(lvalues[2508]),0},
1236{"id-cmc-getCRL","id-cmc-getCRL",NID_id_cmc_getCRL,8,&(lvalues[2516]),0},
1237{"id-cmc-revokeRequest","id-cmc-revokeRequest",
1238 NID_id_cmc_revokeRequest,8,&(lvalues[2524]),0},
1239{"id-cmc-regInfo","id-cmc-regInfo",NID_id_cmc_regInfo,8,
1240 &(lvalues[2532]),0},
1241{"id-cmc-responseInfo","id-cmc-responseInfo",NID_id_cmc_responseInfo,
1242 8,&(lvalues[2540]),0},
1243{"id-cmc-queryPending","id-cmc-queryPending",NID_id_cmc_queryPending,
1244 8,&(lvalues[2548]),0},
1245{"id-cmc-popLinkRandom","id-cmc-popLinkRandom",
1246 NID_id_cmc_popLinkRandom,8,&(lvalues[2556]),0},
1247{"id-cmc-popLinkWitness","id-cmc-popLinkWitness",
1248 NID_id_cmc_popLinkWitness,8,&(lvalues[2564]),0},
1249{"id-cmc-confirmCertAcceptance","id-cmc-confirmCertAcceptance",
1250 NID_id_cmc_confirmCertAcceptance,8,&(lvalues[2572]),0},
1251{"id-on-personalData","id-on-personalData",NID_id_on_personalData,8,
1252 &(lvalues[2580]),0},
1253{"id-pda-dateOfBirth","id-pda-dateOfBirth",NID_id_pda_dateOfBirth,8,
1254 &(lvalues[2588]),0},
1255{"id-pda-placeOfBirth","id-pda-placeOfBirth",NID_id_pda_placeOfBirth,
1256 8,&(lvalues[2596]),0},
1257{NULL,NULL,NID_undef,0,NULL},
1258{"id-pda-gender","id-pda-gender",NID_id_pda_gender,8,&(lvalues[2604]),0},
1259{"id-pda-countryOfCitizenship","id-pda-countryOfCitizenship",
1260 NID_id_pda_countryOfCitizenship,8,&(lvalues[2612]),0},
1261{"id-pda-countryOfResidence","id-pda-countryOfResidence",
1262 NID_id_pda_countryOfResidence,8,&(lvalues[2620]),0},
1263{"id-aca-authenticationInfo","id-aca-authenticationInfo",
1264 NID_id_aca_authenticationInfo,8,&(lvalues[2628]),0},
1265{"id-aca-accessIdentity","id-aca-accessIdentity",
1266 NID_id_aca_accessIdentity,8,&(lvalues[2636]),0},
1267{"id-aca-chargingIdentity","id-aca-chargingIdentity",
1268 NID_id_aca_chargingIdentity,8,&(lvalues[2644]),0},
1269{"id-aca-group","id-aca-group",NID_id_aca_group,8,&(lvalues[2652]),0},
1270{"id-aca-role","id-aca-role",NID_id_aca_role,8,&(lvalues[2660]),0},
1271{"id-qcs-pkixQCSyntax-v1","id-qcs-pkixQCSyntax-v1",
1272 NID_id_qcs_pkixQCSyntax_v1,8,&(lvalues[2668]),0},
1273{"id-cct-crs","id-cct-crs",NID_id_cct_crs,8,&(lvalues[2676]),0},
1274{"id-cct-PKIData","id-cct-PKIData",NID_id_cct_PKIData,8,
1275 &(lvalues[2684]),0},
1276{"id-cct-PKIResponse","id-cct-PKIResponse",NID_id_cct_PKIResponse,8,
1277 &(lvalues[2692]),0},
1278{"ad_timestamping","AD Time Stamping",NID_ad_timeStamping,8,
1279 &(lvalues[2700]),0},
1280{"AD_DVCS","ad dvcs",NID_ad_dvcs,8,&(lvalues[2708]),0},
1281{"basicOCSPResponse","Basic OCSP Response",NID_id_pkix_OCSP_basic,9,
1282 &(lvalues[2716]),0},
1283{"Nonce","OCSP Nonce",NID_id_pkix_OCSP_Nonce,9,&(lvalues[2725]),0},
1284{"CrlID","OCSP CRL ID",NID_id_pkix_OCSP_CrlID,9,&(lvalues[2734]),0},
1285{"acceptableResponses","Acceptable OCSP Responses",
1286 NID_id_pkix_OCSP_acceptableResponses,9,&(lvalues[2743]),0},
1287{"noCheck","OCSP No Check",NID_id_pkix_OCSP_noCheck,9,&(lvalues[2752]),0},
1288{"archiveCutoff","OCSP Archive Cutoff",NID_id_pkix_OCSP_archiveCutoff,
1289 9,&(lvalues[2761]),0},
1290{"serviceLocator","OCSP Service Locator",
1291 NID_id_pkix_OCSP_serviceLocator,9,&(lvalues[2770]),0},
1292{"extendedStatus","Extended OCSP Status",
1293 NID_id_pkix_OCSP_extendedStatus,9,&(lvalues[2779]),0},
1294{"valid","valid",NID_id_pkix_OCSP_valid,9,&(lvalues[2788]),0},
1295{"path","path",NID_id_pkix_OCSP_path,9,&(lvalues[2797]),0},
1296{"trustRoot","Trust Root",NID_id_pkix_OCSP_trustRoot,9,
1297 &(lvalues[2806]),0},
1298{"algorithm","algorithm",NID_algorithm,4,&(lvalues[2815]),0},
1299{"rsaSignature","rsaSignature",NID_rsaSignature,5,&(lvalues[2819]),0},
1300{"X500algorithms","directory services - algorithms",
1301 NID_X500algorithms,2,&(lvalues[2824]),0},
1302{"ORG","org",NID_org,1,&(lvalues[2826]),0},
1303{"DOD","dod",NID_dod,2,&(lvalues[2827]),0},
1304{"IANA","iana",NID_iana,3,&(lvalues[2829]),0},
1305{"directory","Directory",NID_Directory,4,&(lvalues[2832]),0},
1306{"mgmt","Management",NID_Management,4,&(lvalues[2836]),0},
1307{"experimental","Experimental",NID_Experimental,4,&(lvalues[2840]),0},
1308{"private","Private",NID_Private,4,&(lvalues[2844]),0},
1309{"security","Security",NID_Security,4,&(lvalues[2848]),0},
1310{"snmpv2","SNMPv2",NID_SNMPv2,4,&(lvalues[2852]),0},
1311{"Mail","Mail",NID_Mail,4,&(lvalues[2856]),0},
1312{"enterprises","Enterprises",NID_Enterprises,5,&(lvalues[2860]),0},
1313{"dcobject","dcObject",NID_dcObject,9,&(lvalues[2865]),0},
1314{"DC","domainComponent",NID_domainComponent,10,&(lvalues[2874]),0},
1315{"domain","Domain",NID_Domain,10,&(lvalues[2884]),0},
1316{"JOINT-ISO-CCITT","joint-iso-ccitt",NID_joint_iso_ccitt,1,
1317 &(lvalues[2894]),0},
1318{"selected-attribute-types","Selected Attribute Types",
1319 NID_selected_attribute_types,3,&(lvalues[2895]),0},
1320{"clearance","clearance",NID_clearance,4,&(lvalues[2898]),0},
1321{"RSA-MD4","md4WithRSAEncryption",NID_md4WithRSAEncryption,9,
1322 &(lvalues[2902]),0},
1323{"ac-proxying","ac-proxying",NID_ac_proxying,8,&(lvalues[2911]),0},
1324{"subjectInfoAccess","Subject Information Access",NID_sinfo_access,8,
1325 &(lvalues[2919]),0},
1326{"id-aca-encAttrs","id-aca-encAttrs",NID_id_aca_encAttrs,8,
1327 &(lvalues[2927]),0},
1328{"role","role",NID_role,3,&(lvalues[2935]),0},
1329{"policyConstraints","X509v3 Policy Constraints",
1330 NID_policy_constraints,3,&(lvalues[2938]),0},
1331{"targetInformation","X509v3 AC Targeting",NID_target_information,3,
1332 &(lvalues[2941]),0},
1333{"noRevAvail","X509v3 No Revocation Available",NID_no_rev_avail,3,
1334 &(lvalues[2944]),0},
1335{"CCITT","ccitt",NID_ccitt,1,&(lvalues[2947]),0},
1336{"ansi-X9-62","ANSI X9.62",NID_ansi_X9_62,5,&(lvalues[2948]),0},
1337{"prime-field","prime-field",NID_X9_62_prime_field,7,&(lvalues[2953]),0},
1338{"characteristic-two-field","characteristic-two-field",
1339 NID_X9_62_characteristic_two_field,7,&(lvalues[2960]),0},
1340{"id-ecPublicKey","id-ecPublicKey",NID_X9_62_id_ecPublicKey,7,
1341 &(lvalues[2967]),0},
1342{"prime192v1","prime192v1",NID_X9_62_prime192v1,8,&(lvalues[2974]),0},
1343{"prime192v2","prime192v2",NID_X9_62_prime192v2,8,&(lvalues[2982]),0},
1344{"prime192v3","prime192v3",NID_X9_62_prime192v3,8,&(lvalues[2990]),0},
1345{"prime239v1","prime239v1",NID_X9_62_prime239v1,8,&(lvalues[2998]),0},
1346{"prime239v2","prime239v2",NID_X9_62_prime239v2,8,&(lvalues[3006]),0},
1347{"prime239v3","prime239v3",NID_X9_62_prime239v3,8,&(lvalues[3014]),0},
1348{"prime256v1","prime256v1",NID_X9_62_prime256v1,8,&(lvalues[3022]),0},
1349{"ecdsa-with-SHA1","ecdsa-with-SHA1",NID_ecdsa_with_SHA1,7,
1350 &(lvalues[3030]),0},
1351{"CSPName","Microsoft CSP Name",NID_ms_csp_name,9,&(lvalues[3037]),0},
1352{"AES-128-ECB","aes-128-ecb",NID_aes_128_ecb,9,&(lvalues[3046]),0},
1353{"AES-128-CBC","aes-128-cbc",NID_aes_128_cbc,9,&(lvalues[3055]),0},
1354{"AES-128-OFB","aes-128-ofb",NID_aes_128_ofb128,9,&(lvalues[3064]),0},
1355{"AES-128-CFB","aes-128-cfb",NID_aes_128_cfb128,9,&(lvalues[3073]),0},
1356{"AES-192-ECB","aes-192-ecb",NID_aes_192_ecb,9,&(lvalues[3082]),0},
1357{"AES-192-CBC","aes-192-cbc",NID_aes_192_cbc,9,&(lvalues[3091]),0},
1358{"AES-192-OFB","aes-192-ofb",NID_aes_192_ofb128,9,&(lvalues[3100]),0},
1359{"AES-192-CFB","aes-192-cfb",NID_aes_192_cfb128,9,&(lvalues[3109]),0},
1360{"AES-256-ECB","aes-256-ecb",NID_aes_256_ecb,9,&(lvalues[3118]),0},
1361{"AES-256-CBC","aes-256-cbc",NID_aes_256_cbc,9,&(lvalues[3127]),0},
1362{"AES-256-OFB","aes-256-ofb",NID_aes_256_ofb128,9,&(lvalues[3136]),0},
1363{"AES-256-CFB","aes-256-cfb",NID_aes_256_cfb128,9,&(lvalues[3145]),0},
1364{"holdInstructionCode","Hold Instruction Code",
1365 NID_hold_instruction_code,3,&(lvalues[3154]),0},
1366{"holdInstructionNone","Hold Instruction None",
1367 NID_hold_instruction_none,7,&(lvalues[3157]),0},
1368{"holdInstructionCallIssuer","Hold Instruction Call Issuer",
1369 NID_hold_instruction_call_issuer,7,&(lvalues[3164]),0},
1370{"holdInstructionReject","Hold Instruction Reject",
1371 NID_hold_instruction_reject,7,&(lvalues[3171]),0},
1372{"data","data",NID_data,1,&(lvalues[3178]),0},
1373{"pss","pss",NID_pss,3,&(lvalues[3179]),0},
1374{"ucl","ucl",NID_ucl,7,&(lvalues[3182]),0},
1375{"pilot","pilot",NID_pilot,8,&(lvalues[3189]),0},
1376{"pilotAttributeType","pilotAttributeType",NID_pilotAttributeType,9,
1377 &(lvalues[3197]),0},
1378{"pilotAttributeSyntax","pilotAttributeSyntax",
1379 NID_pilotAttributeSyntax,9,&(lvalues[3206]),0},
1380{"pilotObjectClass","pilotObjectClass",NID_pilotObjectClass,9,
1381 &(lvalues[3215]),0},
1382{"pilotGroups","pilotGroups",NID_pilotGroups,9,&(lvalues[3224]),0},
1383{"iA5StringSyntax","iA5StringSyntax",NID_iA5StringSyntax,10,
1384 &(lvalues[3233]),0},
1385{"caseIgnoreIA5StringSyntax","caseIgnoreIA5StringSyntax",
1386 NID_caseIgnoreIA5StringSyntax,10,&(lvalues[3243]),0},
1387{"pilotObject","pilotObject",NID_pilotObject,10,&(lvalues[3253]),0},
1388{"pilotPerson","pilotPerson",NID_pilotPerson,10,&(lvalues[3263]),0},
1389{"account","account",NID_account,10,&(lvalues[3273]),0},
1390{"document","document",NID_document,10,&(lvalues[3283]),0},
1391{"room","room",NID_room,10,&(lvalues[3293]),0},
1392{"documentSeries","documentSeries",NID_documentSeries,10,
1393 &(lvalues[3303]),0},
1394{"rFC822localPart","rFC822localPart",NID_rFC822localPart,10,
1395 &(lvalues[3313]),0},
1396{"dNSDomain","dNSDomain",NID_dNSDomain,10,&(lvalues[3323]),0},
1397{"domainRelatedObject","domainRelatedObject",NID_domainRelatedObject,
1398 10,&(lvalues[3333]),0},
1399{"friendlyCountry","friendlyCountry",NID_friendlyCountry,10,
1400 &(lvalues[3343]),0},
1401{"simpleSecurityObject","simpleSecurityObject",
1402 NID_simpleSecurityObject,10,&(lvalues[3353]),0},
1403{"pilotOrganization","pilotOrganization",NID_pilotOrganization,10,
1404 &(lvalues[3363]),0},
1405{"pilotDSA","pilotDSA",NID_pilotDSA,10,&(lvalues[3373]),0},
1406{"qualityLabelledData","qualityLabelledData",NID_qualityLabelledData,
1407 10,&(lvalues[3383]),0},
1408{"UID","userId",NID_userId,10,&(lvalues[3393]),0},
1409{"textEncodedORAddress","textEncodedORAddress",
1410 NID_textEncodedORAddress,10,&(lvalues[3403]),0},
1411{"mail","rfc822Mailbox",NID_rfc822Mailbox,10,&(lvalues[3413]),0},
1412{"info","info",NID_info,10,&(lvalues[3423]),0},
1413{"favouriteDrink","favouriteDrink",NID_favouriteDrink,10,
1414 &(lvalues[3433]),0},
1415{"roomNumber","roomNumber",NID_roomNumber,10,&(lvalues[3443]),0},
1416{"photo","photo",NID_photo,10,&(lvalues[3453]),0},
1417{"userClass","userClass",NID_userClass,10,&(lvalues[3463]),0},
1418{"host","host",NID_host,10,&(lvalues[3473]),0},
1419{"manager","manager",NID_manager,10,&(lvalues[3483]),0},
1420{"documentIdentifier","documentIdentifier",NID_documentIdentifier,10,
1421 &(lvalues[3493]),0},
1422{"documentTitle","documentTitle",NID_documentTitle,10,&(lvalues[3503]),0},
1423{"documentVersion","documentVersion",NID_documentVersion,10,
1424 &(lvalues[3513]),0},
1425{"documentAuthor","documentAuthor",NID_documentAuthor,10,
1426 &(lvalues[3523]),0},
1427{"documentLocation","documentLocation",NID_documentLocation,10,
1428 &(lvalues[3533]),0},
1429{"homeTelephoneNumber","homeTelephoneNumber",NID_homeTelephoneNumber,
1430 10,&(lvalues[3543]),0},
1431{"secretary","secretary",NID_secretary,10,&(lvalues[3553]),0},
1432{"otherMailbox","otherMailbox",NID_otherMailbox,10,&(lvalues[3563]),0},
1433{"lastModifiedTime","lastModifiedTime",NID_lastModifiedTime,10,
1434 &(lvalues[3573]),0},
1435{"lastModifiedBy","lastModifiedBy",NID_lastModifiedBy,10,
1436 &(lvalues[3583]),0},
1437{"aRecord","aRecord",NID_aRecord,10,&(lvalues[3593]),0},
1438{"pilotAttributeType27","pilotAttributeType27",
1439 NID_pilotAttributeType27,10,&(lvalues[3603]),0},
1440{"mXRecord","mXRecord",NID_mXRecord,10,&(lvalues[3613]),0},
1441{"nSRecord","nSRecord",NID_nSRecord,10,&(lvalues[3623]),0},
1442{"sOARecord","sOARecord",NID_sOARecord,10,&(lvalues[3633]),0},
1443{"cNAMERecord","cNAMERecord",NID_cNAMERecord,10,&(lvalues[3643]),0},
1444{"associatedDomain","associatedDomain",NID_associatedDomain,10,
1445 &(lvalues[3653]),0},
1446{"associatedName","associatedName",NID_associatedName,10,
1447 &(lvalues[3663]),0},
1448{"homePostalAddress","homePostalAddress",NID_homePostalAddress,10,
1449 &(lvalues[3673]),0},
1450{"personalTitle","personalTitle",NID_personalTitle,10,&(lvalues[3683]),0},
1451{"mobileTelephoneNumber","mobileTelephoneNumber",
1452 NID_mobileTelephoneNumber,10,&(lvalues[3693]),0},
1453{"pagerTelephoneNumber","pagerTelephoneNumber",
1454 NID_pagerTelephoneNumber,10,&(lvalues[3703]),0},
1455{"friendlyCountryName","friendlyCountryName",NID_friendlyCountryName,
1456 10,&(lvalues[3713]),0},
1457{"organizationalStatus","organizationalStatus",
1458 NID_organizationalStatus,10,&(lvalues[3723]),0},
1459{"janetMailbox","janetMailbox",NID_janetMailbox,10,&(lvalues[3733]),0},
1460{"mailPreferenceOption","mailPreferenceOption",
1461 NID_mailPreferenceOption,10,&(lvalues[3743]),0},
1462{"buildingName","buildingName",NID_buildingName,10,&(lvalues[3753]),0},
1463{"dSAQuality","dSAQuality",NID_dSAQuality,10,&(lvalues[3763]),0},
1464{"singleLevelQuality","singleLevelQuality",NID_singleLevelQuality,10,
1465 &(lvalues[3773]),0},
1466{"subtreeMinimumQuality","subtreeMinimumQuality",
1467 NID_subtreeMinimumQuality,10,&(lvalues[3783]),0},
1468{"subtreeMaximumQuality","subtreeMaximumQuality",
1469 NID_subtreeMaximumQuality,10,&(lvalues[3793]),0},
1470{"personalSignature","personalSignature",NID_personalSignature,10,
1471 &(lvalues[3803]),0},
1472{"dITRedirect","dITRedirect",NID_dITRedirect,10,&(lvalues[3813]),0},
1473{"audio","audio",NID_audio,10,&(lvalues[3823]),0},
1474{"documentPublisher","documentPublisher",NID_documentPublisher,10,
1475 &(lvalues[3833]),0},
1476{"x500UniqueIdentifier","x500UniqueIdentifier",
1477 NID_x500UniqueIdentifier,3,&(lvalues[3843]),0},
1478{"mime-mhs","MIME MHS",NID_mime_mhs,5,&(lvalues[3846]),0},
1479{"mime-mhs-headings","mime-mhs-headings",NID_mime_mhs_headings,6,
1480 &(lvalues[3851]),0},
1481{"mime-mhs-bodies","mime-mhs-bodies",NID_mime_mhs_bodies,6,
1482 &(lvalues[3857]),0},
1483{"id-hex-partial-message","id-hex-partial-message",
1484 NID_id_hex_partial_message,7,&(lvalues[3863]),0},
1485{"id-hex-multipart-message","id-hex-multipart-message",
1486 NID_id_hex_multipart_message,7,&(lvalues[3870]),0},
1487{"generationQualifier","generationQualifier",NID_generationQualifier,
1488 3,&(lvalues[3877]),0},
1489{"pseudonym","pseudonym",NID_pseudonym,3,&(lvalues[3880]),0},
1490{NULL,NULL,NID_undef,0,NULL},
1491{"id-set","Secure Electronic Transactions",NID_id_set,2,
1492 &(lvalues[3883]),0},
1493{"set-ctype","content types",NID_set_ctype,3,&(lvalues[3885]),0},
1494{"set-msgExt","message extensions",NID_set_msgExt,3,&(lvalues[3888]),0},
1495{"set-attr","set-attr",NID_set_attr,3,&(lvalues[3891]),0},
1496{"set-policy","set-policy",NID_set_policy,3,&(lvalues[3894]),0},
1497{"set-certExt","certificate extensions",NID_set_certExt,3,
1498 &(lvalues[3897]),0},
1499{"set-brand","set-brand",NID_set_brand,3,&(lvalues[3900]),0},
1500{"setct-PANData","setct-PANData",NID_setct_PANData,4,&(lvalues[3903]),0},
1501{"setct-PANToken","setct-PANToken",NID_setct_PANToken,4,
1502 &(lvalues[3907]),0},
1503{"setct-PANOnly","setct-PANOnly",NID_setct_PANOnly,4,&(lvalues[3911]),0},
1504{"setct-OIData","setct-OIData",NID_setct_OIData,4,&(lvalues[3915]),0},
1505{"setct-PI","setct-PI",NID_setct_PI,4,&(lvalues[3919]),0},
1506{"setct-PIData","setct-PIData",NID_setct_PIData,4,&(lvalues[3923]),0},
1507{"setct-PIDataUnsigned","setct-PIDataUnsigned",
1508 NID_setct_PIDataUnsigned,4,&(lvalues[3927]),0},
1509{"setct-HODInput","setct-HODInput",NID_setct_HODInput,4,
1510 &(lvalues[3931]),0},
1511{"setct-AuthResBaggage","setct-AuthResBaggage",
1512 NID_setct_AuthResBaggage,4,&(lvalues[3935]),0},
1513{"setct-AuthRevReqBaggage","setct-AuthRevReqBaggage",
1514 NID_setct_AuthRevReqBaggage,4,&(lvalues[3939]),0},
1515{"setct-AuthRevResBaggage","setct-AuthRevResBaggage",
1516 NID_setct_AuthRevResBaggage,4,&(lvalues[3943]),0},
1517{"setct-CapTokenSeq","setct-CapTokenSeq",NID_setct_CapTokenSeq,4,
1518 &(lvalues[3947]),0},
1519{"setct-PInitResData","setct-PInitResData",NID_setct_PInitResData,4,
1520 &(lvalues[3951]),0},
1521{"setct-PI-TBS","setct-PI-TBS",NID_setct_PI_TBS,4,&(lvalues[3955]),0},
1522{"setct-PResData","setct-PResData",NID_setct_PResData,4,
1523 &(lvalues[3959]),0},
1524{"setct-AuthReqTBS","setct-AuthReqTBS",NID_setct_AuthReqTBS,4,
1525 &(lvalues[3963]),0},
1526{"setct-AuthResTBS","setct-AuthResTBS",NID_setct_AuthResTBS,4,
1527 &(lvalues[3967]),0},
1528{"setct-AuthResTBSX","setct-AuthResTBSX",NID_setct_AuthResTBSX,4,
1529 &(lvalues[3971]),0},
1530{"setct-AuthTokenTBS","setct-AuthTokenTBS",NID_setct_AuthTokenTBS,4,
1531 &(lvalues[3975]),0},
1532{"setct-CapTokenData","setct-CapTokenData",NID_setct_CapTokenData,4,
1533 &(lvalues[3979]),0},
1534{"setct-CapTokenTBS","setct-CapTokenTBS",NID_setct_CapTokenTBS,4,
1535 &(lvalues[3983]),0},
1536{"setct-AcqCardCodeMsg","setct-AcqCardCodeMsg",
1537 NID_setct_AcqCardCodeMsg,4,&(lvalues[3987]),0},
1538{"setct-AuthRevReqTBS","setct-AuthRevReqTBS",NID_setct_AuthRevReqTBS,
1539 4,&(lvalues[3991]),0},
1540{"setct-AuthRevResData","setct-AuthRevResData",
1541 NID_setct_AuthRevResData,4,&(lvalues[3995]),0},
1542{"setct-AuthRevResTBS","setct-AuthRevResTBS",NID_setct_AuthRevResTBS,
1543 4,&(lvalues[3999]),0},
1544{"setct-CapReqTBS","setct-CapReqTBS",NID_setct_CapReqTBS,4,
1545 &(lvalues[4003]),0},
1546{"setct-CapReqTBSX","setct-CapReqTBSX",NID_setct_CapReqTBSX,4,
1547 &(lvalues[4007]),0},
1548{"setct-CapResData","setct-CapResData",NID_setct_CapResData,4,
1549 &(lvalues[4011]),0},
1550{"setct-CapRevReqTBS","setct-CapRevReqTBS",NID_setct_CapRevReqTBS,4,
1551 &(lvalues[4015]),0},
1552{"setct-CapRevReqTBSX","setct-CapRevReqTBSX",NID_setct_CapRevReqTBSX,
1553 4,&(lvalues[4019]),0},
1554{"setct-CapRevResData","setct-CapRevResData",NID_setct_CapRevResData,
1555 4,&(lvalues[4023]),0},
1556{"setct-CredReqTBS","setct-CredReqTBS",NID_setct_CredReqTBS,4,
1557 &(lvalues[4027]),0},
1558{"setct-CredReqTBSX","setct-CredReqTBSX",NID_setct_CredReqTBSX,4,
1559 &(lvalues[4031]),0},
1560{"setct-CredResData","setct-CredResData",NID_setct_CredResData,4,
1561 &(lvalues[4035]),0},
1562{"setct-CredRevReqTBS","setct-CredRevReqTBS",NID_setct_CredRevReqTBS,
1563 4,&(lvalues[4039]),0},
1564{"setct-CredRevReqTBSX","setct-CredRevReqTBSX",
1565 NID_setct_CredRevReqTBSX,4,&(lvalues[4043]),0},
1566{"setct-CredRevResData","setct-CredRevResData",
1567 NID_setct_CredRevResData,4,&(lvalues[4047]),0},
1568{"setct-PCertReqData","setct-PCertReqData",NID_setct_PCertReqData,4,
1569 &(lvalues[4051]),0},
1570{"setct-PCertResTBS","setct-PCertResTBS",NID_setct_PCertResTBS,4,
1571 &(lvalues[4055]),0},
1572{"setct-BatchAdminReqData","setct-BatchAdminReqData",
1573 NID_setct_BatchAdminReqData,4,&(lvalues[4059]),0},
1574{"setct-BatchAdminResData","setct-BatchAdminResData",
1575 NID_setct_BatchAdminResData,4,&(lvalues[4063]),0},
1576{"setct-CardCInitResTBS","setct-CardCInitResTBS",
1577 NID_setct_CardCInitResTBS,4,&(lvalues[4067]),0},
1578{"setct-MeAqCInitResTBS","setct-MeAqCInitResTBS",
1579 NID_setct_MeAqCInitResTBS,4,&(lvalues[4071]),0},
1580{"setct-RegFormResTBS","setct-RegFormResTBS",NID_setct_RegFormResTBS,
1581 4,&(lvalues[4075]),0},
1582{"setct-CertReqData","setct-CertReqData",NID_setct_CertReqData,4,
1583 &(lvalues[4079]),0},
1584{"setct-CertReqTBS","setct-CertReqTBS",NID_setct_CertReqTBS,4,
1585 &(lvalues[4083]),0},
1586{"setct-CertResData","setct-CertResData",NID_setct_CertResData,4,
1587 &(lvalues[4087]),0},
1588{"setct-CertInqReqTBS","setct-CertInqReqTBS",NID_setct_CertInqReqTBS,
1589 4,&(lvalues[4091]),0},
1590{"setct-ErrorTBS","setct-ErrorTBS",NID_setct_ErrorTBS,4,
1591 &(lvalues[4095]),0},
1592{"setct-PIDualSignedTBE","setct-PIDualSignedTBE",
1593 NID_setct_PIDualSignedTBE,4,&(lvalues[4099]),0},
1594{"setct-PIUnsignedTBE","setct-PIUnsignedTBE",NID_setct_PIUnsignedTBE,
1595 4,&(lvalues[4103]),0},
1596{"setct-AuthReqTBE","setct-AuthReqTBE",NID_setct_AuthReqTBE,4,
1597 &(lvalues[4107]),0},
1598{"setct-AuthResTBE","setct-AuthResTBE",NID_setct_AuthResTBE,4,
1599 &(lvalues[4111]),0},
1600{"setct-AuthResTBEX","setct-AuthResTBEX",NID_setct_AuthResTBEX,4,
1601 &(lvalues[4115]),0},
1602{"setct-AuthTokenTBE","setct-AuthTokenTBE",NID_setct_AuthTokenTBE,4,
1603 &(lvalues[4119]),0},
1604{"setct-CapTokenTBE","setct-CapTokenTBE",NID_setct_CapTokenTBE,4,
1605 &(lvalues[4123]),0},
1606{"setct-CapTokenTBEX","setct-CapTokenTBEX",NID_setct_CapTokenTBEX,4,
1607 &(lvalues[4127]),0},
1608{"setct-AcqCardCodeMsgTBE","setct-AcqCardCodeMsgTBE",
1609 NID_setct_AcqCardCodeMsgTBE,4,&(lvalues[4131]),0},
1610{"setct-AuthRevReqTBE","setct-AuthRevReqTBE",NID_setct_AuthRevReqTBE,
1611 4,&(lvalues[4135]),0},
1612{"setct-AuthRevResTBE","setct-AuthRevResTBE",NID_setct_AuthRevResTBE,
1613 4,&(lvalues[4139]),0},
1614{"setct-AuthRevResTBEB","setct-AuthRevResTBEB",
1615 NID_setct_AuthRevResTBEB,4,&(lvalues[4143]),0},
1616{"setct-CapReqTBE","setct-CapReqTBE",NID_setct_CapReqTBE,4,
1617 &(lvalues[4147]),0},
1618{"setct-CapReqTBEX","setct-CapReqTBEX",NID_setct_CapReqTBEX,4,
1619 &(lvalues[4151]),0},
1620{"setct-CapResTBE","setct-CapResTBE",NID_setct_CapResTBE,4,
1621 &(lvalues[4155]),0},
1622{"setct-CapRevReqTBE","setct-CapRevReqTBE",NID_setct_CapRevReqTBE,4,
1623 &(lvalues[4159]),0},
1624{"setct-CapRevReqTBEX","setct-CapRevReqTBEX",NID_setct_CapRevReqTBEX,
1625 4,&(lvalues[4163]),0},
1626{"setct-CapRevResTBE","setct-CapRevResTBE",NID_setct_CapRevResTBE,4,
1627 &(lvalues[4167]),0},
1628{"setct-CredReqTBE","setct-CredReqTBE",NID_setct_CredReqTBE,4,
1629 &(lvalues[4171]),0},
1630{"setct-CredReqTBEX","setct-CredReqTBEX",NID_setct_CredReqTBEX,4,
1631 &(lvalues[4175]),0},
1632{"setct-CredResTBE","setct-CredResTBE",NID_setct_CredResTBE,4,
1633 &(lvalues[4179]),0},
1634{"setct-CredRevReqTBE","setct-CredRevReqTBE",NID_setct_CredRevReqTBE,
1635 4,&(lvalues[4183]),0},
1636{"setct-CredRevReqTBEX","setct-CredRevReqTBEX",
1637 NID_setct_CredRevReqTBEX,4,&(lvalues[4187]),0},
1638{"setct-CredRevResTBE","setct-CredRevResTBE",NID_setct_CredRevResTBE,
1639 4,&(lvalues[4191]),0},
1640{"setct-BatchAdminReqTBE","setct-BatchAdminReqTBE",
1641 NID_setct_BatchAdminReqTBE,4,&(lvalues[4195]),0},
1642{"setct-BatchAdminResTBE","setct-BatchAdminResTBE",
1643 NID_setct_BatchAdminResTBE,4,&(lvalues[4199]),0},
1644{"setct-RegFormReqTBE","setct-RegFormReqTBE",NID_setct_RegFormReqTBE,
1645 4,&(lvalues[4203]),0},
1646{"setct-CertReqTBE","setct-CertReqTBE",NID_setct_CertReqTBE,4,
1647 &(lvalues[4207]),0},
1648{"setct-CertReqTBEX","setct-CertReqTBEX",NID_setct_CertReqTBEX,4,
1649 &(lvalues[4211]),0},
1650{"setct-CertResTBE","setct-CertResTBE",NID_setct_CertResTBE,4,
1651 &(lvalues[4215]),0},
1652{"setct-CRLNotificationTBS","setct-CRLNotificationTBS",
1653 NID_setct_CRLNotificationTBS,4,&(lvalues[4219]),0},
1654{"setct-CRLNotificationResTBS","setct-CRLNotificationResTBS",
1655 NID_setct_CRLNotificationResTBS,4,&(lvalues[4223]),0},
1656{"setct-BCIDistributionTBS","setct-BCIDistributionTBS",
1657 NID_setct_BCIDistributionTBS,4,&(lvalues[4227]),0},
1658{"setext-genCrypt","generic cryptogram",NID_setext_genCrypt,4,
1659 &(lvalues[4231]),0},
1660{"setext-miAuth","merchant initiated auth",NID_setext_miAuth,4,
1661 &(lvalues[4235]),0},
1662{"setext-pinSecure","setext-pinSecure",NID_setext_pinSecure,4,
1663 &(lvalues[4239]),0},
1664{"setext-pinAny","setext-pinAny",NID_setext_pinAny,4,&(lvalues[4243]),0},
1665{"setext-track2","setext-track2",NID_setext_track2,4,&(lvalues[4247]),0},
1666{"setext-cv","additional verification",NID_setext_cv,4,
1667 &(lvalues[4251]),0},
1668{"set-policy-root","set-policy-root",NID_set_policy_root,4,
1669 &(lvalues[4255]),0},
1670{"setCext-hashedRoot","setCext-hashedRoot",NID_setCext_hashedRoot,4,
1671 &(lvalues[4259]),0},
1672{"setCext-certType","setCext-certType",NID_setCext_certType,4,
1673 &(lvalues[4263]),0},
1674{"setCext-merchData","setCext-merchData",NID_setCext_merchData,4,
1675 &(lvalues[4267]),0},
1676{"setCext-cCertRequired","setCext-cCertRequired",
1677 NID_setCext_cCertRequired,4,&(lvalues[4271]),0},
1678{"setCext-tunneling","setCext-tunneling",NID_setCext_tunneling,4,
1679 &(lvalues[4275]),0},
1680{"setCext-setExt","setCext-setExt",NID_setCext_setExt,4,
1681 &(lvalues[4279]),0},
1682{"setCext-setQualf","setCext-setQualf",NID_setCext_setQualf,4,
1683 &(lvalues[4283]),0},
1684{"setCext-PGWYcapabilities","setCext-PGWYcapabilities",
1685 NID_setCext_PGWYcapabilities,4,&(lvalues[4287]),0},
1686{"setCext-TokenIdentifier","setCext-TokenIdentifier",
1687 NID_setCext_TokenIdentifier,4,&(lvalues[4291]),0},
1688{"setCext-Track2Data","setCext-Track2Data",NID_setCext_Track2Data,4,
1689 &(lvalues[4295]),0},
1690{"setCext-TokenType","setCext-TokenType",NID_setCext_TokenType,4,
1691 &(lvalues[4299]),0},
1692{"setCext-IssuerCapabilities","setCext-IssuerCapabilities",
1693 NID_setCext_IssuerCapabilities,4,&(lvalues[4303]),0},
1694{"setAttr-Cert","setAttr-Cert",NID_setAttr_Cert,4,&(lvalues[4307]),0},
1695{"setAttr-PGWYcap","payment gateway capabilities",NID_setAttr_PGWYcap,
1696 4,&(lvalues[4311]),0},
1697{"setAttr-TokenType","setAttr-TokenType",NID_setAttr_TokenType,4,
1698 &(lvalues[4315]),0},
1699{"setAttr-IssCap","issuer capabilities",NID_setAttr_IssCap,4,
1700 &(lvalues[4319]),0},
1701{"set-rootKeyThumb","set-rootKeyThumb",NID_set_rootKeyThumb,5,
1702 &(lvalues[4323]),0},
1703{"set-addPolicy","set-addPolicy",NID_set_addPolicy,5,&(lvalues[4328]),0},
1704{"setAttr-Token-EMV","setAttr-Token-EMV",NID_setAttr_Token_EMV,5,
1705 &(lvalues[4333]),0},
1706{"setAttr-Token-B0Prime","setAttr-Token-B0Prime",
1707 NID_setAttr_Token_B0Prime,5,&(lvalues[4338]),0},
1708{"setAttr-IssCap-CVM","setAttr-IssCap-CVM",NID_setAttr_IssCap_CVM,5,
1709 &(lvalues[4343]),0},
1710{"setAttr-IssCap-T2","setAttr-IssCap-T2",NID_setAttr_IssCap_T2,5,
1711 &(lvalues[4348]),0},
1712{"setAttr-IssCap-Sig","setAttr-IssCap-Sig",NID_setAttr_IssCap_Sig,5,
1713 &(lvalues[4353]),0},
1714{"setAttr-GenCryptgrm","generate cryptogram",NID_setAttr_GenCryptgrm,
1715 6,&(lvalues[4358]),0},
1716{"setAttr-T2Enc","encrypted track 2",NID_setAttr_T2Enc,6,
1717 &(lvalues[4364]),0},
1718{"setAttr-T2cleartxt","cleartext track 2",NID_setAttr_T2cleartxt,6,
1719 &(lvalues[4370]),0},
1720{"setAttr-TokICCsig","ICC or token signature",NID_setAttr_TokICCsig,6,
1721 &(lvalues[4376]),0},
1722{"setAttr-SecDevSig","secure device signature",NID_setAttr_SecDevSig,
1723 6,&(lvalues[4382]),0},
1724{"set-brand-IATA-ATA","set-brand-IATA-ATA",NID_set_brand_IATA_ATA,4,
1725 &(lvalues[4388]),0},
1726{"set-brand-Diners","set-brand-Diners",NID_set_brand_Diners,4,
1727 &(lvalues[4392]),0},
1728{"set-brand-AmericanExpress","set-brand-AmericanExpress",
1729 NID_set_brand_AmericanExpress,4,&(lvalues[4396]),0},
1730{"set-brand-JCB","set-brand-JCB",NID_set_brand_JCB,4,&(lvalues[4400]),0},
1731{"set-brand-Visa","set-brand-Visa",NID_set_brand_Visa,4,
1732 &(lvalues[4404]),0},
1733{"set-brand-MasterCard","set-brand-MasterCard",
1734 NID_set_brand_MasterCard,4,&(lvalues[4408]),0},
1735{"set-brand-Novus","set-brand-Novus",NID_set_brand_Novus,5,
1736 &(lvalues[4412]),0},
1737{"DES-CDMF","des-cdmf",NID_des_cdmf,8,&(lvalues[4417]),0},
1738{"rsaOAEPEncryptionSET","rsaOAEPEncryptionSET",
1739 NID_rsaOAEPEncryptionSET,9,&(lvalues[4425]),0},
1740{NULL,NULL,NID_undef,0,NULL},
1741{NULL,NULL,NID_undef,0,NULL},
1742{NULL,NULL,NID_undef,0,NULL},
1743{"msSmartcardLogin","Microsoft Smartcardlogin",NID_ms_smartcard_login,
1744 10,&(lvalues[4434]),0},
1745{"msUPN","Microsoft Universal Principal Name",NID_ms_upn,10,
1746 &(lvalues[4444]),0},
1747{"AES-128-CFB1","aes-128-cfb1",NID_aes_128_cfb1,0,NULL},
1748{"AES-192-CFB1","aes-192-cfb1",NID_aes_192_cfb1,0,NULL},
1749{"AES-256-CFB1","aes-256-cfb1",NID_aes_256_cfb1,0,NULL},
1750{"AES-128-CFB8","aes-128-cfb8",NID_aes_128_cfb8,0,NULL},
1751{"AES-192-CFB8","aes-192-cfb8",NID_aes_192_cfb8,0,NULL},
1752{"AES-256-CFB8","aes-256-cfb8",NID_aes_256_cfb8,0,NULL},
1753{"DES-CFB1","des-cfb1",NID_des_cfb1,0,NULL},
1754{"DES-CFB8","des-cfb8",NID_des_cfb8,0,NULL},
1755{"DES-EDE3-CFB1","des-ede3-cfb1",NID_des_ede3_cfb1,0,NULL},
1756{"DES-EDE3-CFB8","des-ede3-cfb8",NID_des_ede3_cfb8,0,NULL},
1757{"streetAddress","streetAddress",NID_streetAddress,3,&(lvalues[4454]),0},
1758{"postalCode","postalCode",NID_postalCode,3,&(lvalues[4457]),0},
1759{"id-ppl","id-ppl",NID_id_ppl,7,&(lvalues[4460]),0},
1760{"proxyCertInfo","Proxy Certificate Information",NID_proxyCertInfo,8,
1761 &(lvalues[4467]),0},
1762{"id-ppl-anyLanguage","Any language",NID_id_ppl_anyLanguage,8,
1763 &(lvalues[4475]),0},
1764{"id-ppl-inheritAll","Inherit all",NID_id_ppl_inheritAll,8,
1765 &(lvalues[4483]),0},
1766{"nameConstraints","X509v3 Name Constraints",NID_name_constraints,3,
1767 &(lvalues[4491]),0},
1768{"id-ppl-independent","Independent",NID_Independent,8,&(lvalues[4494]),0},
1769{"RSA-SHA256","sha256WithRSAEncryption",NID_sha256WithRSAEncryption,9,
1770 &(lvalues[4502]),0},
1771{"RSA-SHA384","sha384WithRSAEncryption",NID_sha384WithRSAEncryption,9,
1772 &(lvalues[4511]),0},
1773{"RSA-SHA512","sha512WithRSAEncryption",NID_sha512WithRSAEncryption,9,
1774 &(lvalues[4520]),0},
1775{"RSA-SHA224","sha224WithRSAEncryption",NID_sha224WithRSAEncryption,9,
1776 &(lvalues[4529]),0},
1777{"SHA256","sha256",NID_sha256,9,&(lvalues[4538]),0},
1778{"SHA384","sha384",NID_sha384,9,&(lvalues[4547]),0},
1779{"SHA512","sha512",NID_sha512,9,&(lvalues[4556]),0},
1780{"SHA224","sha224",NID_sha224,9,&(lvalues[4565]),0},
1781};
1782
1783static ASN1_OBJECT *sn_objs[NUM_SN]={
1784&(nid_objs[364]),/* "AD_DVCS" */
1785&(nid_objs[419]),/* "AES-128-CBC" */
1786&(nid_objs[421]),/* "AES-128-CFB" */
1787&(nid_objs[650]),/* "AES-128-CFB1" */
1788&(nid_objs[653]),/* "AES-128-CFB8" */
1789&(nid_objs[418]),/* "AES-128-ECB" */
1790&(nid_objs[420]),/* "AES-128-OFB" */
1791&(nid_objs[423]),/* "AES-192-CBC" */
1792&(nid_objs[425]),/* "AES-192-CFB" */
1793&(nid_objs[651]),/* "AES-192-CFB1" */
1794&(nid_objs[654]),/* "AES-192-CFB8" */
1795&(nid_objs[422]),/* "AES-192-ECB" */
1796&(nid_objs[424]),/* "AES-192-OFB" */
1797&(nid_objs[427]),/* "AES-256-CBC" */
1798&(nid_objs[429]),/* "AES-256-CFB" */
1799&(nid_objs[652]),/* "AES-256-CFB1" */
1800&(nid_objs[655]),/* "AES-256-CFB8" */
1801&(nid_objs[426]),/* "AES-256-ECB" */
1802&(nid_objs[428]),/* "AES-256-OFB" */
1803&(nid_objs[91]),/* "BF-CBC" */
1804&(nid_objs[93]),/* "BF-CFB" */
1805&(nid_objs[92]),/* "BF-ECB" */
1806&(nid_objs[94]),/* "BF-OFB" */
1807&(nid_objs[14]),/* "C" */
1808&(nid_objs[108]),/* "CAST5-CBC" */
1809&(nid_objs[110]),/* "CAST5-CFB" */
1810&(nid_objs[109]),/* "CAST5-ECB" */
1811&(nid_objs[111]),/* "CAST5-OFB" */
1812&(nid_objs[404]),/* "CCITT" */
1813&(nid_objs[13]),/* "CN" */
1814&(nid_objs[141]),/* "CRLReason" */
1815&(nid_objs[417]),/* "CSPName" */
1816&(nid_objs[367]),/* "CrlID" */
1817&(nid_objs[391]),/* "DC" */
1818&(nid_objs[31]),/* "DES-CBC" */
1819&(nid_objs[643]),/* "DES-CDMF" */
1820&(nid_objs[30]),/* "DES-CFB" */
1821&(nid_objs[656]),/* "DES-CFB1" */
1822&(nid_objs[657]),/* "DES-CFB8" */
1823&(nid_objs[29]),/* "DES-ECB" */
1824&(nid_objs[32]),/* "DES-EDE" */
1825&(nid_objs[43]),/* "DES-EDE-CBC" */
1826&(nid_objs[60]),/* "DES-EDE-CFB" */
1827&(nid_objs[62]),/* "DES-EDE-OFB" */
1828&(nid_objs[33]),/* "DES-EDE3" */
1829&(nid_objs[44]),/* "DES-EDE3-CBC" */
1830&(nid_objs[61]),/* "DES-EDE3-CFB" */
1831&(nid_objs[658]),/* "DES-EDE3-CFB1" */
1832&(nid_objs[659]),/* "DES-EDE3-CFB8" */
1833&(nid_objs[63]),/* "DES-EDE3-OFB" */
1834&(nid_objs[45]),/* "DES-OFB" */
1835&(nid_objs[80]),/* "DESX-CBC" */
1836&(nid_objs[380]),/* "DOD" */
1837&(nid_objs[116]),/* "DSA" */
1838&(nid_objs[66]),/* "DSA-SHA" */
1839&(nid_objs[113]),/* "DSA-SHA1" */
1840&(nid_objs[70]),/* "DSA-SHA1-old" */
1841&(nid_objs[67]),/* "DSA-old" */
1842&(nid_objs[297]),/* "DVCS" */
1843&(nid_objs[99]),/* "GN" */
1844&(nid_objs[381]),/* "IANA" */
1845&(nid_objs[34]),/* "IDEA-CBC" */
1846&(nid_objs[35]),/* "IDEA-CFB" */
1847&(nid_objs[36]),/* "IDEA-ECB" */
1848&(nid_objs[46]),/* "IDEA-OFB" */
1849&(nid_objs[181]),/* "ISO" */
1850&(nid_objs[183]),/* "ISO-US" */
1851&(nid_objs[393]),/* "JOINT-ISO-CCITT" */
1852&(nid_objs[15]),/* "L" */
1853&(nid_objs[ 3]),/* "MD2" */
1854&(nid_objs[257]),/* "MD4" */
1855&(nid_objs[ 4]),/* "MD5" */
1856&(nid_objs[114]),/* "MD5-SHA1" */
1857&(nid_objs[95]),/* "MDC2" */
1858&(nid_objs[388]),/* "Mail" */
1859&(nid_objs[57]),/* "Netscape" */
1860&(nid_objs[366]),/* "Nonce" */
1861&(nid_objs[17]),/* "O" */
1862&(nid_objs[178]),/* "OCSP" */
1863&(nid_objs[180]),/* "OCSPSigning" */
1864&(nid_objs[379]),/* "ORG" */
1865&(nid_objs[18]),/* "OU" */
1866&(nid_objs[ 9]),/* "PBE-MD2-DES" */
1867&(nid_objs[168]),/* "PBE-MD2-RC2-64" */
1868&(nid_objs[10]),/* "PBE-MD5-DES" */
1869&(nid_objs[169]),/* "PBE-MD5-RC2-64" */
1870&(nid_objs[147]),/* "PBE-SHA1-2DES" */
1871&(nid_objs[146]),/* "PBE-SHA1-3DES" */
1872&(nid_objs[170]),/* "PBE-SHA1-DES" */
1873&(nid_objs[148]),/* "PBE-SHA1-RC2-128" */
1874&(nid_objs[149]),/* "PBE-SHA1-RC2-40" */
1875&(nid_objs[68]),/* "PBE-SHA1-RC2-64" */
1876&(nid_objs[144]),/* "PBE-SHA1-RC4-128" */
1877&(nid_objs[145]),/* "PBE-SHA1-RC4-40" */
1878&(nid_objs[161]),/* "PBES2" */
1879&(nid_objs[69]),/* "PBKDF2" */
1880&(nid_objs[162]),/* "PBMAC1" */
1881&(nid_objs[127]),/* "PKIX" */
1882&(nid_objs[98]),/* "RC2-40-CBC" */
1883&(nid_objs[166]),/* "RC2-64-CBC" */
1884&(nid_objs[37]),/* "RC2-CBC" */
1885&(nid_objs[39]),/* "RC2-CFB" */
1886&(nid_objs[38]),/* "RC2-ECB" */
1887&(nid_objs[40]),/* "RC2-OFB" */
1888&(nid_objs[ 5]),/* "RC4" */
1889&(nid_objs[97]),/* "RC4-40" */
1890&(nid_objs[120]),/* "RC5-CBC" */
1891&(nid_objs[122]),/* "RC5-CFB" */
1892&(nid_objs[121]),/* "RC5-ECB" */
1893&(nid_objs[123]),/* "RC5-OFB" */
1894&(nid_objs[117]),/* "RIPEMD160" */
1895&(nid_objs[124]),/* "RLE" */
1896&(nid_objs[19]),/* "RSA" */
1897&(nid_objs[ 7]),/* "RSA-MD2" */
1898&(nid_objs[396]),/* "RSA-MD4" */
1899&(nid_objs[ 8]),/* "RSA-MD5" */
1900&(nid_objs[96]),/* "RSA-MDC2" */
1901&(nid_objs[104]),/* "RSA-NP-MD5" */
1902&(nid_objs[119]),/* "RSA-RIPEMD160" */
1903&(nid_objs[42]),/* "RSA-SHA" */
1904&(nid_objs[65]),/* "RSA-SHA1" */
1905&(nid_objs[115]),/* "RSA-SHA1-2" */
1906&(nid_objs[671]),/* "RSA-SHA224" */
1907&(nid_objs[668]),/* "RSA-SHA256" */
1908&(nid_objs[669]),/* "RSA-SHA384" */
1909&(nid_objs[670]),/* "RSA-SHA512" */
1910&(nid_objs[41]),/* "SHA" */
1911&(nid_objs[64]),/* "SHA1" */
1912&(nid_objs[675]),/* "SHA224" */
1913&(nid_objs[672]),/* "SHA256" */
1914&(nid_objs[673]),/* "SHA384" */
1915&(nid_objs[674]),/* "SHA512" */
1916&(nid_objs[188]),/* "SMIME" */
1917&(nid_objs[167]),/* "SMIME-CAPS" */
1918&(nid_objs[100]),/* "SN" */
1919&(nid_objs[16]),/* "ST" */
1920&(nid_objs[143]),/* "SXNetID" */
1921&(nid_objs[458]),/* "UID" */
1922&(nid_objs[ 0]),/* "UNDEF" */
1923&(nid_objs[11]),/* "X500" */
1924&(nid_objs[378]),/* "X500algorithms" */
1925&(nid_objs[12]),/* "X509" */
1926&(nid_objs[184]),/* "X9-57" */
1927&(nid_objs[185]),/* "X9cm" */
1928&(nid_objs[125]),/* "ZLIB" */
1929&(nid_objs[478]),/* "aRecord" */
1930&(nid_objs[289]),/* "aaControls" */
1931&(nid_objs[287]),/* "ac-auditEntity" */
1932&(nid_objs[397]),/* "ac-proxying" */
1933&(nid_objs[288]),/* "ac-targeting" */
1934&(nid_objs[368]),/* "acceptableResponses" */
1935&(nid_objs[446]),/* "account" */
1936&(nid_objs[363]),/* "ad_timestamping" */
1937&(nid_objs[376]),/* "algorithm" */
1938&(nid_objs[405]),/* "ansi-X9-62" */
1939&(nid_objs[370]),/* "archiveCutoff" */
1940&(nid_objs[484]),/* "associatedDomain" */
1941&(nid_objs[485]),/* "associatedName" */
1942&(nid_objs[501]),/* "audio" */
1943&(nid_objs[177]),/* "authorityInfoAccess" */
1944&(nid_objs[90]),/* "authorityKeyIdentifier" */
1945&(nid_objs[87]),/* "basicConstraints" */
1946&(nid_objs[365]),/* "basicOCSPResponse" */
1947&(nid_objs[285]),/* "biometricInfo" */
1948&(nid_objs[494]),/* "buildingName" */
1949&(nid_objs[483]),/* "cNAMERecord" */
1950&(nid_objs[179]),/* "caIssuers" */
1951&(nid_objs[443]),/* "caseIgnoreIA5StringSyntax" */
1952&(nid_objs[152]),/* "certBag" */
1953&(nid_objs[89]),/* "certificatePolicies" */
1954&(nid_objs[54]),/* "challengePassword" */
1955&(nid_objs[407]),/* "characteristic-two-field" */
1956&(nid_objs[395]),/* "clearance" */
1957&(nid_objs[130]),/* "clientAuth" */
1958&(nid_objs[131]),/* "codeSigning" */
1959&(nid_objs[50]),/* "contentType" */
1960&(nid_objs[53]),/* "countersignature" */
1961&(nid_objs[153]),/* "crlBag" */
1962&(nid_objs[103]),/* "crlDistributionPoints" */
1963&(nid_objs[88]),/* "crlNumber" */
1964&(nid_objs[500]),/* "dITRedirect" */
1965&(nid_objs[451]),/* "dNSDomain" */
1966&(nid_objs[495]),/* "dSAQuality" */
1967&(nid_objs[434]),/* "data" */
1968&(nid_objs[390]),/* "dcobject" */
1969&(nid_objs[140]),/* "deltaCRL" */
1970&(nid_objs[107]),/* "description" */
1971&(nid_objs[28]),/* "dhKeyAgreement" */
1972&(nid_objs[382]),/* "directory" */
1973&(nid_objs[174]),/* "dnQualifier" */
1974&(nid_objs[447]),/* "document" */
1975&(nid_objs[471]),/* "documentAuthor" */
1976&(nid_objs[468]),/* "documentIdentifier" */
1977&(nid_objs[472]),/* "documentLocation" */
1978&(nid_objs[502]),/* "documentPublisher" */
1979&(nid_objs[449]),/* "documentSeries" */
1980&(nid_objs[469]),/* "documentTitle" */
1981&(nid_objs[470]),/* "documentVersion" */
1982&(nid_objs[392]),/* "domain" */
1983&(nid_objs[452]),/* "domainRelatedObject" */
1984&(nid_objs[416]),/* "ecdsa-with-SHA1" */
1985&(nid_objs[48]),/* "emailAddress" */
1986&(nid_objs[132]),/* "emailProtection" */
1987&(nid_objs[389]),/* "enterprises" */
1988&(nid_objs[384]),/* "experimental" */
1989&(nid_objs[172]),/* "extReq" */
1990&(nid_objs[56]),/* "extendedCertificateAttributes" */
1991&(nid_objs[126]),/* "extendedKeyUsage" */
1992&(nid_objs[372]),/* "extendedStatus" */
1993&(nid_objs[462]),/* "favouriteDrink" */
1994&(nid_objs[453]),/* "friendlyCountry" */
1995&(nid_objs[490]),/* "friendlyCountryName" */
1996&(nid_objs[156]),/* "friendlyName" */
1997&(nid_objs[509]),/* "generationQualifier" */
1998&(nid_objs[163]),/* "hmacWithSHA1" */
1999&(nid_objs[432]),/* "holdInstructionCallIssuer" */
2000&(nid_objs[430]),/* "holdInstructionCode" */
2001&(nid_objs[431]),/* "holdInstructionNone" */
2002&(nid_objs[433]),/* "holdInstructionReject" */
2003&(nid_objs[486]),/* "homePostalAddress" */
2004&(nid_objs[473]),/* "homeTelephoneNumber" */
2005&(nid_objs[466]),/* "host" */
2006&(nid_objs[442]),/* "iA5StringSyntax" */
2007&(nid_objs[266]),/* "id-aca" */
2008&(nid_objs[355]),/* "id-aca-accessIdentity" */
2009&(nid_objs[354]),/* "id-aca-authenticationInfo" */
2010&(nid_objs[356]),/* "id-aca-chargingIdentity" */
2011&(nid_objs[399]),/* "id-aca-encAttrs" */
2012&(nid_objs[357]),/* "id-aca-group" */
2013&(nid_objs[358]),/* "id-aca-role" */
2014&(nid_objs[176]),/* "id-ad" */
2015&(nid_objs[262]),/* "id-alg" */
2016&(nid_objs[323]),/* "id-alg-des40" */
2017&(nid_objs[326]),/* "id-alg-dh-pop" */
2018&(nid_objs[325]),/* "id-alg-dh-sig-hmac-sha1" */
2019&(nid_objs[324]),/* "id-alg-noSignature" */
2020&(nid_objs[268]),/* "id-cct" */
2021&(nid_objs[361]),/* "id-cct-PKIData" */
2022&(nid_objs[362]),/* "id-cct-PKIResponse" */
2023&(nid_objs[360]),/* "id-cct-crs" */
2024&(nid_objs[81]),/* "id-ce" */
2025&(nid_objs[263]),/* "id-cmc" */
2026&(nid_objs[334]),/* "id-cmc-addExtensions" */
2027&(nid_objs[346]),/* "id-cmc-confirmCertAcceptance" */
2028&(nid_objs[330]),/* "id-cmc-dataReturn" */
2029&(nid_objs[336]),/* "id-cmc-decryptedPOP" */
2030&(nid_objs[335]),/* "id-cmc-encryptedPOP" */
2031&(nid_objs[339]),/* "id-cmc-getCRL" */
2032&(nid_objs[338]),/* "id-cmc-getCert" */
2033&(nid_objs[328]),/* "id-cmc-identification" */
2034&(nid_objs[329]),/* "id-cmc-identityProof" */
2035&(nid_objs[337]),/* "id-cmc-lraPOPWitness" */
2036&(nid_objs[344]),/* "id-cmc-popLinkRandom" */
2037&(nid_objs[345]),/* "id-cmc-popLinkWitness" */
2038&(nid_objs[343]),/* "id-cmc-queryPending" */
2039&(nid_objs[333]),/* "id-cmc-recipientNonce" */
2040&(nid_objs[341]),/* "id-cmc-regInfo" */
2041&(nid_objs[342]),/* "id-cmc-responseInfo" */
2042&(nid_objs[340]),/* "id-cmc-revokeRequest" */
2043&(nid_objs[332]),/* "id-cmc-senderNonce" */
2044&(nid_objs[327]),/* "id-cmc-statusInfo" */
2045&(nid_objs[331]),/* "id-cmc-transactionId" */
2046&(nid_objs[408]),/* "id-ecPublicKey" */
2047&(nid_objs[508]),/* "id-hex-multipart-message" */
2048&(nid_objs[507]),/* "id-hex-partial-message" */
2049&(nid_objs[260]),/* "id-it" */
2050&(nid_objs[302]),/* "id-it-caKeyUpdateInfo" */
2051&(nid_objs[298]),/* "id-it-caProtEncCert" */
2052&(nid_objs[311]),/* "id-it-confirmWaitTime" */
2053&(nid_objs[303]),/* "id-it-currentCRL" */
2054&(nid_objs[300]),/* "id-it-encKeyPairTypes" */
2055&(nid_objs[310]),/* "id-it-implicitConfirm" */
2056&(nid_objs[308]),/* "id-it-keyPairParamRep" */
2057&(nid_objs[307]),/* "id-it-keyPairParamReq" */
2058&(nid_objs[312]),/* "id-it-origPKIMessage" */
2059&(nid_objs[301]),/* "id-it-preferredSymmAlg" */
2060&(nid_objs[309]),/* "id-it-revPassphrase" */
2061&(nid_objs[299]),/* "id-it-signKeyPairTypes" */
2062&(nid_objs[305]),/* "id-it-subscriptionRequest" */
2063&(nid_objs[306]),/* "id-it-subscriptionResponse" */
2064&(nid_objs[304]),/* "id-it-unsupportedOIDs" */
2065&(nid_objs[128]),/* "id-kp" */
2066&(nid_objs[280]),/* "id-mod-attribute-cert" */
2067&(nid_objs[274]),/* "id-mod-cmc" */
2068&(nid_objs[277]),/* "id-mod-cmp" */
2069&(nid_objs[284]),/* "id-mod-cmp2000" */
2070&(nid_objs[273]),/* "id-mod-crmf" */
2071&(nid_objs[283]),/* "id-mod-dvcs" */
2072&(nid_objs[275]),/* "id-mod-kea-profile-88" */
2073&(nid_objs[276]),/* "id-mod-kea-profile-93" */
2074&(nid_objs[282]),/* "id-mod-ocsp" */
2075&(nid_objs[278]),/* "id-mod-qualified-cert-88" */
2076&(nid_objs[279]),/* "id-mod-qualified-cert-93" */
2077&(nid_objs[281]),/* "id-mod-timestamp-protocol" */
2078&(nid_objs[264]),/* "id-on" */
2079&(nid_objs[347]),/* "id-on-personalData" */
2080&(nid_objs[265]),/* "id-pda" */
2081&(nid_objs[352]),/* "id-pda-countryOfCitizenship" */
2082&(nid_objs[353]),/* "id-pda-countryOfResidence" */
2083&(nid_objs[348]),/* "id-pda-dateOfBirth" */
2084&(nid_objs[351]),/* "id-pda-gender" */
2085&(nid_objs[349]),/* "id-pda-placeOfBirth" */
2086&(nid_objs[175]),/* "id-pe" */
2087&(nid_objs[261]),/* "id-pkip" */
2088&(nid_objs[258]),/* "id-pkix-mod" */
2089&(nid_objs[269]),/* "id-pkix1-explicit-88" */
2090&(nid_objs[271]),/* "id-pkix1-explicit-93" */
2091&(nid_objs[270]),/* "id-pkix1-implicit-88" */
2092&(nid_objs[272]),/* "id-pkix1-implicit-93" */
2093&(nid_objs[662]),/* "id-ppl" */
2094&(nid_objs[664]),/* "id-ppl-anyLanguage" */
2095&(nid_objs[667]),/* "id-ppl-independent" */
2096&(nid_objs[665]),/* "id-ppl-inheritAll" */
2097&(nid_objs[267]),/* "id-qcs" */
2098&(nid_objs[359]),/* "id-qcs-pkixQCSyntax-v1" */
2099&(nid_objs[259]),/* "id-qt" */
2100&(nid_objs[164]),/* "id-qt-cps" */
2101&(nid_objs[165]),/* "id-qt-unotice" */
2102&(nid_objs[313]),/* "id-regCtrl" */
2103&(nid_objs[316]),/* "id-regCtrl-authenticator" */
2104&(nid_objs[319]),/* "id-regCtrl-oldCertID" */
2105&(nid_objs[318]),/* "id-regCtrl-pkiArchiveOptions" */
2106&(nid_objs[317]),/* "id-regCtrl-pkiPublicationInfo" */
2107&(nid_objs[320]),/* "id-regCtrl-protocolEncrKey" */
2108&(nid_objs[315]),/* "id-regCtrl-regToken" */
2109&(nid_objs[314]),/* "id-regInfo" */
2110&(nid_objs[322]),/* "id-regInfo-certReq" */
2111&(nid_objs[321]),/* "id-regInfo-utf8Pairs" */
2112&(nid_objs[512]),/* "id-set" */
2113&(nid_objs[191]),/* "id-smime-aa" */
2114&(nid_objs[215]),/* "id-smime-aa-contentHint" */
2115&(nid_objs[218]),/* "id-smime-aa-contentIdentifier" */
2116&(nid_objs[221]),/* "id-smime-aa-contentReference" */
2117&(nid_objs[240]),/* "id-smime-aa-dvcs-dvc" */
2118&(nid_objs[217]),/* "id-smime-aa-encapContentType" */
2119&(nid_objs[222]),/* "id-smime-aa-encrypKeyPref" */
2120&(nid_objs[220]),/* "id-smime-aa-equivalentLabels" */
2121&(nid_objs[232]),/* "id-smime-aa-ets-CertificateRefs" */
2122&(nid_objs[233]),/* "id-smime-aa-ets-RevocationRefs" */
2123&(nid_objs[238]),/* "id-smime-aa-ets-archiveTimeStamp" */
2124&(nid_objs[237]),/* "id-smime-aa-ets-certCRLTimestamp" */
2125&(nid_objs[234]),/* "id-smime-aa-ets-certValues" */
2126&(nid_objs[227]),/* "id-smime-aa-ets-commitmentType" */
2127&(nid_objs[231]),/* "id-smime-aa-ets-contentTimestamp" */
2128&(nid_objs[236]),/* "id-smime-aa-ets-escTimeStamp" */
2129&(nid_objs[230]),/* "id-smime-aa-ets-otherSigCert" */
2130&(nid_objs[235]),/* "id-smime-aa-ets-revocationValues" */
2131&(nid_objs[226]),/* "id-smime-aa-ets-sigPolicyId" */
2132&(nid_objs[229]),/* "id-smime-aa-ets-signerAttr" */
2133&(nid_objs[228]),/* "id-smime-aa-ets-signerLocation" */
2134&(nid_objs[219]),/* "id-smime-aa-macValue" */
2135&(nid_objs[214]),/* "id-smime-aa-mlExpandHistory" */
2136&(nid_objs[216]),/* "id-smime-aa-msgSigDigest" */
2137&(nid_objs[212]),/* "id-smime-aa-receiptRequest" */
2138&(nid_objs[213]),/* "id-smime-aa-securityLabel" */
2139&(nid_objs[239]),/* "id-smime-aa-signatureType" */
2140&(nid_objs[223]),/* "id-smime-aa-signingCertificate" */
2141&(nid_objs[224]),/* "id-smime-aa-smimeEncryptCerts" */
2142&(nid_objs[225]),/* "id-smime-aa-timeStampToken" */
2143&(nid_objs[192]),/* "id-smime-alg" */
2144&(nid_objs[243]),/* "id-smime-alg-3DESwrap" */
2145&(nid_objs[246]),/* "id-smime-alg-CMS3DESwrap" */
2146&(nid_objs[247]),/* "id-smime-alg-CMSRC2wrap" */
2147&(nid_objs[245]),/* "id-smime-alg-ESDH" */
2148&(nid_objs[241]),/* "id-smime-alg-ESDHwith3DES" */
2149&(nid_objs[242]),/* "id-smime-alg-ESDHwithRC2" */
2150&(nid_objs[244]),/* "id-smime-alg-RC2wrap" */
2151&(nid_objs[193]),/* "id-smime-cd" */
2152&(nid_objs[248]),/* "id-smime-cd-ldap" */
2153&(nid_objs[190]),/* "id-smime-ct" */
2154&(nid_objs[210]),/* "id-smime-ct-DVCSRequestData" */
2155&(nid_objs[211]),/* "id-smime-ct-DVCSResponseData" */
2156&(nid_objs[208]),/* "id-smime-ct-TDTInfo" */
2157&(nid_objs[207]),/* "id-smime-ct-TSTInfo" */
2158&(nid_objs[205]),/* "id-smime-ct-authData" */
2159&(nid_objs[209]),/* "id-smime-ct-contentInfo" */
2160&(nid_objs[206]),/* "id-smime-ct-publishCert" */
2161&(nid_objs[204]),/* "id-smime-ct-receipt" */
2162&(nid_objs[195]),/* "id-smime-cti" */
2163&(nid_objs[255]),/* "id-smime-cti-ets-proofOfApproval" */
2164&(nid_objs[256]),/* "id-smime-cti-ets-proofOfCreation" */
2165&(nid_objs[253]),/* "id-smime-cti-ets-proofOfDelivery" */
2166&(nid_objs[251]),/* "id-smime-cti-ets-proofOfOrigin" */
2167&(nid_objs[252]),/* "id-smime-cti-ets-proofOfReceipt" */
2168&(nid_objs[254]),/* "id-smime-cti-ets-proofOfSender" */
2169&(nid_objs[189]),/* "id-smime-mod" */
2170&(nid_objs[196]),/* "id-smime-mod-cms" */
2171&(nid_objs[197]),/* "id-smime-mod-ess" */
2172&(nid_objs[202]),/* "id-smime-mod-ets-eSigPolicy-88" */
2173&(nid_objs[203]),/* "id-smime-mod-ets-eSigPolicy-97" */
2174&(nid_objs[200]),/* "id-smime-mod-ets-eSignature-88" */
2175&(nid_objs[201]),/* "id-smime-mod-ets-eSignature-97" */
2176&(nid_objs[199]),/* "id-smime-mod-msg-v3" */
2177&(nid_objs[198]),/* "id-smime-mod-oid" */
2178&(nid_objs[194]),/* "id-smime-spq" */
2179&(nid_objs[250]),/* "id-smime-spq-ets-sqt-unotice" */
2180&(nid_objs[249]),/* "id-smime-spq-ets-sqt-uri" */
2181&(nid_objs[461]),/* "info" */
2182&(nid_objs[101]),/* "initials" */
2183&(nid_objs[142]),/* "invalidityDate" */
2184&(nid_objs[294]),/* "ipsecEndSystem" */
2185&(nid_objs[295]),/* "ipsecTunnel" */
2186&(nid_objs[296]),/* "ipsecUser" */
2187&(nid_objs[86]),/* "issuerAltName" */
2188&(nid_objs[492]),/* "janetMailbox" */
2189&(nid_objs[150]),/* "keyBag" */
2190&(nid_objs[83]),/* "keyUsage" */
2191&(nid_objs[477]),/* "lastModifiedBy" */
2192&(nid_objs[476]),/* "lastModifiedTime" */
2193&(nid_objs[157]),/* "localKeyID" */
2194&(nid_objs[480]),/* "mXRecord" */
2195&(nid_objs[460]),/* "mail" */
2196&(nid_objs[493]),/* "mailPreferenceOption" */
2197&(nid_objs[467]),/* "manager" */
2198&(nid_objs[182]),/* "member-body" */
2199&(nid_objs[51]),/* "messageDigest" */
2200&(nid_objs[383]),/* "mgmt" */
2201&(nid_objs[504]),/* "mime-mhs" */
2202&(nid_objs[506]),/* "mime-mhs-bodies" */
2203&(nid_objs[505]),/* "mime-mhs-headings" */
2204&(nid_objs[488]),/* "mobileTelephoneNumber" */
2205&(nid_objs[136]),/* "msCTLSign" */
2206&(nid_objs[135]),/* "msCodeCom" */
2207&(nid_objs[134]),/* "msCodeInd" */
2208&(nid_objs[138]),/* "msEFS" */
2209&(nid_objs[171]),/* "msExtReq" */
2210&(nid_objs[137]),/* "msSGC" */
2211&(nid_objs[648]),/* "msSmartcardLogin" */
2212&(nid_objs[649]),/* "msUPN" */
2213&(nid_objs[481]),/* "nSRecord" */
2214&(nid_objs[173]),/* "name" */
2215&(nid_objs[666]),/* "nameConstraints" */
2216&(nid_objs[369]),/* "noCheck" */
2217&(nid_objs[403]),/* "noRevAvail" */
2218&(nid_objs[72]),/* "nsBaseUrl" */
2219&(nid_objs[76]),/* "nsCaPolicyUrl" */
2220&(nid_objs[74]),/* "nsCaRevocationUrl" */
2221&(nid_objs[58]),/* "nsCertExt" */
2222&(nid_objs[79]),/* "nsCertSequence" */
2223&(nid_objs[71]),/* "nsCertType" */
2224&(nid_objs[78]),/* "nsComment" */
2225&(nid_objs[59]),/* "nsDataType" */
2226&(nid_objs[75]),/* "nsRenewalUrl" */
2227&(nid_objs[73]),/* "nsRevocationUrl" */
2228&(nid_objs[139]),/* "nsSGC" */
2229&(nid_objs[77]),/* "nsSslServerName" */
2230&(nid_objs[491]),/* "organizationalStatus" */
2231&(nid_objs[475]),/* "otherMailbox" */
2232&(nid_objs[489]),/* "pagerTelephoneNumber" */
2233&(nid_objs[374]),/* "path" */
2234&(nid_objs[112]),/* "pbeWithMD5AndCast5CBC" */
2235&(nid_objs[499]),/* "personalSignature" */
2236&(nid_objs[487]),/* "personalTitle" */
2237&(nid_objs[464]),/* "photo" */
2238&(nid_objs[437]),/* "pilot" */
2239&(nid_objs[439]),/* "pilotAttributeSyntax" */
2240&(nid_objs[438]),/* "pilotAttributeType" */
2241&(nid_objs[479]),/* "pilotAttributeType27" */
2242&(nid_objs[456]),/* "pilotDSA" */
2243&(nid_objs[441]),/* "pilotGroups" */
2244&(nid_objs[444]),/* "pilotObject" */
2245&(nid_objs[440]),/* "pilotObjectClass" */
2246&(nid_objs[455]),/* "pilotOrganization" */
2247&(nid_objs[445]),/* "pilotPerson" */
2248&(nid_objs[ 2]),/* "pkcs" */
2249&(nid_objs[186]),/* "pkcs1" */
2250&(nid_objs[27]),/* "pkcs3" */
2251&(nid_objs[187]),/* "pkcs5" */
2252&(nid_objs[20]),/* "pkcs7" */
2253&(nid_objs[21]),/* "pkcs7-data" */
2254&(nid_objs[25]),/* "pkcs7-digestData" */
2255&(nid_objs[26]),/* "pkcs7-encryptedData" */
2256&(nid_objs[23]),/* "pkcs7-envelopedData" */
2257&(nid_objs[24]),/* "pkcs7-signedAndEnvelopedData" */
2258&(nid_objs[22]),/* "pkcs7-signedData" */
2259&(nid_objs[151]),/* "pkcs8ShroudedKeyBag" */
2260&(nid_objs[47]),/* "pkcs9" */
2261&(nid_objs[401]),/* "policyConstraints" */
2262&(nid_objs[661]),/* "postalCode" */
2263&(nid_objs[406]),/* "prime-field" */
2264&(nid_objs[409]),/* "prime192v1" */
2265&(nid_objs[410]),/* "prime192v2" */
2266&(nid_objs[411]),/* "prime192v3" */
2267&(nid_objs[412]),/* "prime239v1" */
2268&(nid_objs[413]),/* "prime239v2" */
2269&(nid_objs[414]),/* "prime239v3" */
2270&(nid_objs[415]),/* "prime256v1" */
2271&(nid_objs[385]),/* "private" */
2272&(nid_objs[84]),/* "privateKeyUsagePeriod" */
2273&(nid_objs[663]),/* "proxyCertInfo" */
2274&(nid_objs[510]),/* "pseudonym" */
2275&(nid_objs[435]),/* "pss" */
2276&(nid_objs[286]),/* "qcStatements" */
2277&(nid_objs[457]),/* "qualityLabelledData" */
2278&(nid_objs[450]),/* "rFC822localPart" */
2279&(nid_objs[400]),/* "role" */
2280&(nid_objs[448]),/* "room" */
2281&(nid_objs[463]),/* "roomNumber" */
2282&(nid_objs[ 6]),/* "rsaEncryption" */
2283&(nid_objs[644]),/* "rsaOAEPEncryptionSET" */
2284&(nid_objs[377]),/* "rsaSignature" */
2285&(nid_objs[ 1]),/* "rsadsi" */
2286&(nid_objs[482]),/* "sOARecord" */
2287&(nid_objs[155]),/* "safeContentsBag" */
2288&(nid_objs[291]),/* "sbgp-autonomousSysNum" */
2289&(nid_objs[290]),/* "sbgp-ipAddrBlock" */
2290&(nid_objs[292]),/* "sbgp-routerIdentifier" */
2291&(nid_objs[159]),/* "sdsiCertificate" */
2292&(nid_objs[154]),/* "secretBag" */
2293&(nid_objs[474]),/* "secretary" */
2294&(nid_objs[386]),/* "security" */
2295&(nid_objs[394]),/* "selected-attribute-types" */
2296&(nid_objs[105]),/* "serialNumber" */
2297&(nid_objs[129]),/* "serverAuth" */
2298&(nid_objs[371]),/* "serviceLocator" */
2299&(nid_objs[625]),/* "set-addPolicy" */
2300&(nid_objs[515]),/* "set-attr" */
2301&(nid_objs[518]),/* "set-brand" */
2302&(nid_objs[638]),/* "set-brand-AmericanExpress" */
2303&(nid_objs[637]),/* "set-brand-Diners" */
2304&(nid_objs[636]),/* "set-brand-IATA-ATA" */
2305&(nid_objs[639]),/* "set-brand-JCB" */
2306&(nid_objs[641]),/* "set-brand-MasterCard" */
2307&(nid_objs[642]),/* "set-brand-Novus" */
2308&(nid_objs[640]),/* "set-brand-Visa" */
2309&(nid_objs[517]),/* "set-certExt" */
2310&(nid_objs[513]),/* "set-ctype" */
2311&(nid_objs[514]),/* "set-msgExt" */
2312&(nid_objs[516]),/* "set-policy" */
2313&(nid_objs[607]),/* "set-policy-root" */
2314&(nid_objs[624]),/* "set-rootKeyThumb" */
2315&(nid_objs[620]),/* "setAttr-Cert" */
2316&(nid_objs[631]),/* "setAttr-GenCryptgrm" */
2317&(nid_objs[623]),/* "setAttr-IssCap" */
2318&(nid_objs[628]),/* "setAttr-IssCap-CVM" */
2319&(nid_objs[630]),/* "setAttr-IssCap-Sig" */
2320&(nid_objs[629]),/* "setAttr-IssCap-T2" */
2321&(nid_objs[621]),/* "setAttr-PGWYcap" */
2322&(nid_objs[635]),/* "setAttr-SecDevSig" */
2323&(nid_objs[632]),/* "setAttr-T2Enc" */
2324&(nid_objs[633]),/* "setAttr-T2cleartxt" */
2325&(nid_objs[634]),/* "setAttr-TokICCsig" */
2326&(nid_objs[627]),/* "setAttr-Token-B0Prime" */
2327&(nid_objs[626]),/* "setAttr-Token-EMV" */
2328&(nid_objs[622]),/* "setAttr-TokenType" */
2329&(nid_objs[619]),/* "setCext-IssuerCapabilities" */
2330&(nid_objs[615]),/* "setCext-PGWYcapabilities" */
2331&(nid_objs[616]),/* "setCext-TokenIdentifier" */
2332&(nid_objs[618]),/* "setCext-TokenType" */
2333&(nid_objs[617]),/* "setCext-Track2Data" */
2334&(nid_objs[611]),/* "setCext-cCertRequired" */
2335&(nid_objs[609]),/* "setCext-certType" */
2336&(nid_objs[608]),/* "setCext-hashedRoot" */
2337&(nid_objs[610]),/* "setCext-merchData" */
2338&(nid_objs[613]),/* "setCext-setExt" */
2339&(nid_objs[614]),/* "setCext-setQualf" */
2340&(nid_objs[612]),/* "setCext-tunneling" */
2341&(nid_objs[540]),/* "setct-AcqCardCodeMsg" */
2342&(nid_objs[576]),/* "setct-AcqCardCodeMsgTBE" */
2343&(nid_objs[570]),/* "setct-AuthReqTBE" */
2344&(nid_objs[534]),/* "setct-AuthReqTBS" */
2345&(nid_objs[527]),/* "setct-AuthResBaggage" */
2346&(nid_objs[571]),/* "setct-AuthResTBE" */
2347&(nid_objs[572]),/* "setct-AuthResTBEX" */
2348&(nid_objs[535]),/* "setct-AuthResTBS" */
2349&(nid_objs[536]),/* "setct-AuthResTBSX" */
2350&(nid_objs[528]),/* "setct-AuthRevReqBaggage" */
2351&(nid_objs[577]),/* "setct-AuthRevReqTBE" */
2352&(nid_objs[541]),/* "setct-AuthRevReqTBS" */
2353&(nid_objs[529]),/* "setct-AuthRevResBaggage" */
2354&(nid_objs[542]),/* "setct-AuthRevResData" */
2355&(nid_objs[578]),/* "setct-AuthRevResTBE" */
2356&(nid_objs[579]),/* "setct-AuthRevResTBEB" */
2357&(nid_objs[543]),/* "setct-AuthRevResTBS" */
2358&(nid_objs[573]),/* "setct-AuthTokenTBE" */
2359&(nid_objs[537]),/* "setct-AuthTokenTBS" */
2360&(nid_objs[600]),/* "setct-BCIDistributionTBS" */
2361&(nid_objs[558]),/* "setct-BatchAdminReqData" */
2362&(nid_objs[592]),/* "setct-BatchAdminReqTBE" */
2363&(nid_objs[559]),/* "setct-BatchAdminResData" */
2364&(nid_objs[593]),/* "setct-BatchAdminResTBE" */
2365&(nid_objs[599]),/* "setct-CRLNotificationResTBS" */
2366&(nid_objs[598]),/* "setct-CRLNotificationTBS" */
2367&(nid_objs[580]),/* "setct-CapReqTBE" */
2368&(nid_objs[581]),/* "setct-CapReqTBEX" */
2369&(nid_objs[544]),/* "setct-CapReqTBS" */
2370&(nid_objs[545]),/* "setct-CapReqTBSX" */
2371&(nid_objs[546]),/* "setct-CapResData" */
2372&(nid_objs[582]),/* "setct-CapResTBE" */
2373&(nid_objs[583]),/* "setct-CapRevReqTBE" */
2374&(nid_objs[584]),/* "setct-CapRevReqTBEX" */
2375&(nid_objs[547]),/* "setct-CapRevReqTBS" */
2376&(nid_objs[548]),/* "setct-CapRevReqTBSX" */
2377&(nid_objs[549]),/* "setct-CapRevResData" */
2378&(nid_objs[585]),/* "setct-CapRevResTBE" */
2379&(nid_objs[538]),/* "setct-CapTokenData" */
2380&(nid_objs[530]),/* "setct-CapTokenSeq" */
2381&(nid_objs[574]),/* "setct-CapTokenTBE" */
2382&(nid_objs[575]),/* "setct-CapTokenTBEX" */
2383&(nid_objs[539]),/* "setct-CapTokenTBS" */
2384&(nid_objs[560]),/* "setct-CardCInitResTBS" */
2385&(nid_objs[566]),/* "setct-CertInqReqTBS" */
2386&(nid_objs[563]),/* "setct-CertReqData" */
2387&(nid_objs[595]),/* "setct-CertReqTBE" */
2388&(nid_objs[596]),/* "setct-CertReqTBEX" */
2389&(nid_objs[564]),/* "setct-CertReqTBS" */
2390&(nid_objs[565]),/* "setct-CertResData" */
2391&(nid_objs[597]),/* "setct-CertResTBE" */
2392&(nid_objs[586]),/* "setct-CredReqTBE" */
2393&(nid_objs[587]),/* "setct-CredReqTBEX" */
2394&(nid_objs[550]),/* "setct-CredReqTBS" */
2395&(nid_objs[551]),/* "setct-CredReqTBSX" */
2396&(nid_objs[552]),/* "setct-CredResData" */
2397&(nid_objs[588]),/* "setct-CredResTBE" */
2398&(nid_objs[589]),/* "setct-CredRevReqTBE" */
2399&(nid_objs[590]),/* "setct-CredRevReqTBEX" */
2400&(nid_objs[553]),/* "setct-CredRevReqTBS" */
2401&(nid_objs[554]),/* "setct-CredRevReqTBSX" */
2402&(nid_objs[555]),/* "setct-CredRevResData" */
2403&(nid_objs[591]),/* "setct-CredRevResTBE" */
2404&(nid_objs[567]),/* "setct-ErrorTBS" */
2405&(nid_objs[526]),/* "setct-HODInput" */
2406&(nid_objs[561]),/* "setct-MeAqCInitResTBS" */
2407&(nid_objs[522]),/* "setct-OIData" */
2408&(nid_objs[519]),/* "setct-PANData" */
2409&(nid_objs[521]),/* "setct-PANOnly" */
2410&(nid_objs[520]),/* "setct-PANToken" */
2411&(nid_objs[556]),/* "setct-PCertReqData" */
2412&(nid_objs[557]),/* "setct-PCertResTBS" */
2413&(nid_objs[523]),/* "setct-PI" */
2414&(nid_objs[532]),/* "setct-PI-TBS" */
2415&(nid_objs[524]),/* "setct-PIData" */
2416&(nid_objs[525]),/* "setct-PIDataUnsigned" */
2417&(nid_objs[568]),/* "setct-PIDualSignedTBE" */
2418&(nid_objs[569]),/* "setct-PIUnsignedTBE" */
2419&(nid_objs[531]),/* "setct-PInitResData" */
2420&(nid_objs[533]),/* "setct-PResData" */
2421&(nid_objs[594]),/* "setct-RegFormReqTBE" */
2422&(nid_objs[562]),/* "setct-RegFormResTBS" */
2423&(nid_objs[606]),/* "setext-cv" */
2424&(nid_objs[601]),/* "setext-genCrypt" */
2425&(nid_objs[602]),/* "setext-miAuth" */
2426&(nid_objs[604]),/* "setext-pinAny" */
2427&(nid_objs[603]),/* "setext-pinSecure" */
2428&(nid_objs[605]),/* "setext-track2" */
2429&(nid_objs[52]),/* "signingTime" */
2430&(nid_objs[454]),/* "simpleSecurityObject" */
2431&(nid_objs[496]),/* "singleLevelQuality" */
2432&(nid_objs[387]),/* "snmpv2" */
2433&(nid_objs[660]),/* "streetAddress" */
2434&(nid_objs[85]),/* "subjectAltName" */
2435&(nid_objs[398]),/* "subjectInfoAccess" */
2436&(nid_objs[82]),/* "subjectKeyIdentifier" */
2437&(nid_objs[498]),/* "subtreeMaximumQuality" */
2438&(nid_objs[497]),/* "subtreeMinimumQuality" */
2439&(nid_objs[402]),/* "targetInformation" */
2440&(nid_objs[459]),/* "textEncodedORAddress" */
2441&(nid_objs[293]),/* "textNotice" */
2442&(nid_objs[133]),/* "timeStamping" */
2443&(nid_objs[106]),/* "title" */
2444&(nid_objs[375]),/* "trustRoot" */
2445&(nid_objs[436]),/* "ucl" */
2446&(nid_objs[55]),/* "unstructuredAddress" */
2447&(nid_objs[49]),/* "unstructuredName" */
2448&(nid_objs[465]),/* "userClass" */
2449&(nid_objs[373]),/* "valid" */
2450&(nid_objs[503]),/* "x500UniqueIdentifier" */
2451&(nid_objs[158]),/* "x509Certificate" */
2452&(nid_objs[160]),/* "x509Crl" */
2453};
2454
2455static ASN1_OBJECT *ln_objs[NUM_LN]={
2456&(nid_objs[363]),/* "AD Time Stamping" */
2457&(nid_objs[405]),/* "ANSI X9.62" */
2458&(nid_objs[368]),/* "Acceptable OCSP Responses" */
2459&(nid_objs[664]),/* "Any language" */
2460&(nid_objs[177]),/* "Authority Information Access" */
2461&(nid_objs[365]),/* "Basic OCSP Response" */
2462&(nid_objs[285]),/* "Biometric Info" */
2463&(nid_objs[179]),/* "CA Issuers" */
2464&(nid_objs[131]),/* "Code Signing" */
2465&(nid_objs[382]),/* "Directory" */
2466&(nid_objs[392]),/* "Domain" */
2467&(nid_objs[132]),/* "E-mail Protection" */
2468&(nid_objs[389]),/* "Enterprises" */
2469&(nid_objs[384]),/* "Experimental" */
2470&(nid_objs[372]),/* "Extended OCSP Status" */
2471&(nid_objs[172]),/* "Extension Request" */
2472&(nid_objs[432]),/* "Hold Instruction Call Issuer" */
2473&(nid_objs[430]),/* "Hold Instruction Code" */
2474&(nid_objs[431]),/* "Hold Instruction None" */
2475&(nid_objs[433]),/* "Hold Instruction Reject" */
2476&(nid_objs[634]),/* "ICC or token signature" */
2477&(nid_objs[294]),/* "IPSec End System" */
2478&(nid_objs[295]),/* "IPSec Tunnel" */
2479&(nid_objs[296]),/* "IPSec User" */
2480&(nid_objs[182]),/* "ISO Member Body" */
2481&(nid_objs[183]),/* "ISO US Member Body" */
2482&(nid_objs[667]),/* "Independent" */
2483&(nid_objs[665]),/* "Inherit all" */
2484&(nid_objs[142]),/* "Invalidity Date" */
2485&(nid_objs[504]),/* "MIME MHS" */
2486&(nid_objs[388]),/* "Mail" */
2487&(nid_objs[383]),/* "Management" */
2488&(nid_objs[417]),/* "Microsoft CSP Name" */
2489&(nid_objs[135]),/* "Microsoft Commercial Code Signing" */
2490&(nid_objs[138]),/* "Microsoft Encrypted File System" */
2491&(nid_objs[171]),/* "Microsoft Extension Request" */
2492&(nid_objs[134]),/* "Microsoft Individual Code Signing" */
2493&(nid_objs[137]),/* "Microsoft Server Gated Crypto" */
2494&(nid_objs[648]),/* "Microsoft Smartcardlogin" */
2495&(nid_objs[136]),/* "Microsoft Trust List Signing" */
2496&(nid_objs[649]),/* "Microsoft Universal Principal Name" */
2497&(nid_objs[72]),/* "Netscape Base Url" */
2498&(nid_objs[76]),/* "Netscape CA Policy Url" */
2499&(nid_objs[74]),/* "Netscape CA Revocation Url" */
2500&(nid_objs[71]),/* "Netscape Cert Type" */
2501&(nid_objs[58]),/* "Netscape Certificate Extension" */
2502&(nid_objs[79]),/* "Netscape Certificate Sequence" */
2503&(nid_objs[78]),/* "Netscape Comment" */
2504&(nid_objs[57]),/* "Netscape Communications Corp." */
2505&(nid_objs[59]),/* "Netscape Data Type" */
2506&(nid_objs[75]),/* "Netscape Renewal Url" */
2507&(nid_objs[73]),/* "Netscape Revocation Url" */
2508&(nid_objs[77]),/* "Netscape SSL Server Name" */
2509&(nid_objs[139]),/* "Netscape Server Gated Crypto" */
2510&(nid_objs[178]),/* "OCSP" */
2511&(nid_objs[370]),/* "OCSP Archive Cutoff" */
2512&(nid_objs[367]),/* "OCSP CRL ID" */
2513&(nid_objs[369]),/* "OCSP No Check" */
2514&(nid_objs[366]),/* "OCSP Nonce" */
2515&(nid_objs[371]),/* "OCSP Service Locator" */
2516&(nid_objs[180]),/* "OCSP Signing" */
2517&(nid_objs[161]),/* "PBES2" */
2518&(nid_objs[69]),/* "PBKDF2" */
2519&(nid_objs[162]),/* "PBMAC1" */
2520&(nid_objs[127]),/* "PKIX" */
2521&(nid_objs[164]),/* "Policy Qualifier CPS" */
2522&(nid_objs[165]),/* "Policy Qualifier User Notice" */
2523&(nid_objs[385]),/* "Private" */
2524&(nid_objs[663]),/* "Proxy Certificate Information" */
2525&(nid_objs[ 1]),/* "RSA Data Security, Inc." */
2526&(nid_objs[ 2]),/* "RSA Data Security, Inc. PKCS" */
2527&(nid_objs[188]),/* "S/MIME" */
2528&(nid_objs[167]),/* "S/MIME Capabilities" */
2529&(nid_objs[387]),/* "SNMPv2" */
2530&(nid_objs[512]),/* "Secure Electronic Transactions" */
2531&(nid_objs[386]),/* "Security" */
2532&(nid_objs[394]),/* "Selected Attribute Types" */
2533&(nid_objs[143]),/* "Strong Extranet ID" */
2534&(nid_objs[398]),/* "Subject Information Access" */
2535&(nid_objs[130]),/* "TLS Web Client Authentication" */
2536&(nid_objs[129]),/* "TLS Web Server Authentication" */
2537&(nid_objs[133]),/* "Time Stamping" */
2538&(nid_objs[375]),/* "Trust Root" */
2539&(nid_objs[12]),/* "X509" */
2540&(nid_objs[402]),/* "X509v3 AC Targeting" */
2541&(nid_objs[90]),/* "X509v3 Authority Key Identifier" */
2542&(nid_objs[87]),/* "X509v3 Basic Constraints" */
2543&(nid_objs[103]),/* "X509v3 CRL Distribution Points" */
2544&(nid_objs[88]),/* "X509v3 CRL Number" */
2545&(nid_objs[141]),/* "X509v3 CRL Reason Code" */
2546&(nid_objs[89]),/* "X509v3 Certificate Policies" */
2547&(nid_objs[140]),/* "X509v3 Delta CRL Indicator" */
2548&(nid_objs[126]),/* "X509v3 Extended Key Usage" */
2549&(nid_objs[86]),/* "X509v3 Issuer Alternative Name" */
2550&(nid_objs[83]),/* "X509v3 Key Usage" */
2551&(nid_objs[666]),/* "X509v3 Name Constraints" */
2552&(nid_objs[403]),/* "X509v3 No Revocation Available" */
2553&(nid_objs[401]),/* "X509v3 Policy Constraints" */
2554&(nid_objs[84]),/* "X509v3 Private Key Usage Period" */
2555&(nid_objs[85]),/* "X509v3 Subject Alternative Name" */
2556&(nid_objs[82]),/* "X509v3 Subject Key Identifier" */
2557&(nid_objs[184]),/* "X9.57" */
2558&(nid_objs[185]),/* "X9.57 CM ?" */
2559&(nid_objs[478]),/* "aRecord" */
2560&(nid_objs[289]),/* "aaControls" */
2561&(nid_objs[287]),/* "ac-auditEntity" */
2562&(nid_objs[397]),/* "ac-proxying" */
2563&(nid_objs[288]),/* "ac-targeting" */
2564&(nid_objs[446]),/* "account" */
2565&(nid_objs[364]),/* "ad dvcs" */
2566&(nid_objs[606]),/* "additional verification" */
2567&(nid_objs[419]),/* "aes-128-cbc" */
2568&(nid_objs[421]),/* "aes-128-cfb" */
2569&(nid_objs[650]),/* "aes-128-cfb1" */
2570&(nid_objs[653]),/* "aes-128-cfb8" */
2571&(nid_objs[418]),/* "aes-128-ecb" */
2572&(nid_objs[420]),/* "aes-128-ofb" */
2573&(nid_objs[423]),/* "aes-192-cbc" */
2574&(nid_objs[425]),/* "aes-192-cfb" */
2575&(nid_objs[651]),/* "aes-192-cfb1" */
2576&(nid_objs[654]),/* "aes-192-cfb8" */
2577&(nid_objs[422]),/* "aes-192-ecb" */
2578&(nid_objs[424]),/* "aes-192-ofb" */
2579&(nid_objs[427]),/* "aes-256-cbc" */
2580&(nid_objs[429]),/* "aes-256-cfb" */
2581&(nid_objs[652]),/* "aes-256-cfb1" */
2582&(nid_objs[655]),/* "aes-256-cfb8" */
2583&(nid_objs[426]),/* "aes-256-ecb" */
2584&(nid_objs[428]),/* "aes-256-ofb" */
2585&(nid_objs[376]),/* "algorithm" */
2586&(nid_objs[484]),/* "associatedDomain" */
2587&(nid_objs[485]),/* "associatedName" */
2588&(nid_objs[501]),/* "audio" */
2589&(nid_objs[91]),/* "bf-cbc" */
2590&(nid_objs[93]),/* "bf-cfb" */
2591&(nid_objs[92]),/* "bf-ecb" */
2592&(nid_objs[94]),/* "bf-ofb" */
2593&(nid_objs[494]),/* "buildingName" */
2594&(nid_objs[483]),/* "cNAMERecord" */
2595&(nid_objs[443]),/* "caseIgnoreIA5StringSyntax" */
2596&(nid_objs[108]),/* "cast5-cbc" */
2597&(nid_objs[110]),/* "cast5-cfb" */
2598&(nid_objs[109]),/* "cast5-ecb" */
2599&(nid_objs[111]),/* "cast5-ofb" */
2600&(nid_objs[404]),/* "ccitt" */
2601&(nid_objs[152]),/* "certBag" */
2602&(nid_objs[517]),/* "certificate extensions" */
2603&(nid_objs[54]),/* "challengePassword" */
2604&(nid_objs[407]),/* "characteristic-two-field" */
2605&(nid_objs[395]),/* "clearance" */
2606&(nid_objs[633]),/* "cleartext track 2" */
2607&(nid_objs[13]),/* "commonName" */
2608&(nid_objs[513]),/* "content types" */
2609&(nid_objs[50]),/* "contentType" */
2610&(nid_objs[53]),/* "countersignature" */
2611&(nid_objs[14]),/* "countryName" */
2612&(nid_objs[153]),/* "crlBag" */
2613&(nid_objs[500]),/* "dITRedirect" */
2614&(nid_objs[451]),/* "dNSDomain" */
2615&(nid_objs[495]),/* "dSAQuality" */
2616&(nid_objs[434]),/* "data" */
2617&(nid_objs[390]),/* "dcObject" */
2618&(nid_objs[31]),/* "des-cbc" */
2619&(nid_objs[643]),/* "des-cdmf" */
2620&(nid_objs[30]),/* "des-cfb" */
2621&(nid_objs[656]),/* "des-cfb1" */
2622&(nid_objs[657]),/* "des-cfb8" */
2623&(nid_objs[29]),/* "des-ecb" */
2624&(nid_objs[32]),/* "des-ede" */
2625&(nid_objs[43]),/* "des-ede-cbc" */
2626&(nid_objs[60]),/* "des-ede-cfb" */
2627&(nid_objs[62]),/* "des-ede-ofb" */
2628&(nid_objs[33]),/* "des-ede3" */
2629&(nid_objs[44]),/* "des-ede3-cbc" */
2630&(nid_objs[61]),/* "des-ede3-cfb" */
2631&(nid_objs[658]),/* "des-ede3-cfb1" */
2632&(nid_objs[659]),/* "des-ede3-cfb8" */
2633&(nid_objs[63]),/* "des-ede3-ofb" */
2634&(nid_objs[45]),/* "des-ofb" */
2635&(nid_objs[107]),/* "description" */
2636&(nid_objs[80]),/* "desx-cbc" */
2637&(nid_objs[28]),/* "dhKeyAgreement" */
2638&(nid_objs[11]),/* "directory services (X.500)" */
2639&(nid_objs[378]),/* "directory services - algorithms" */
2640&(nid_objs[174]),/* "dnQualifier" */
2641&(nid_objs[447]),/* "document" */
2642&(nid_objs[471]),/* "documentAuthor" */
2643&(nid_objs[468]),/* "documentIdentifier" */
2644&(nid_objs[472]),/* "documentLocation" */
2645&(nid_objs[502]),/* "documentPublisher" */
2646&(nid_objs[449]),/* "documentSeries" */
2647&(nid_objs[469]),/* "documentTitle" */
2648&(nid_objs[470]),/* "documentVersion" */
2649&(nid_objs[380]),/* "dod" */
2650&(nid_objs[391]),/* "domainComponent" */
2651&(nid_objs[452]),/* "domainRelatedObject" */
2652&(nid_objs[116]),/* "dsaEncryption" */
2653&(nid_objs[67]),/* "dsaEncryption-old" */
2654&(nid_objs[66]),/* "dsaWithSHA" */
2655&(nid_objs[113]),/* "dsaWithSHA1" */
2656&(nid_objs[70]),/* "dsaWithSHA1-old" */
2657&(nid_objs[297]),/* "dvcs" */
2658&(nid_objs[416]),/* "ecdsa-with-SHA1" */
2659&(nid_objs[48]),/* "emailAddress" */
2660&(nid_objs[632]),/* "encrypted track 2" */
2661&(nid_objs[56]),/* "extendedCertificateAttributes" */
2662&(nid_objs[462]),/* "favouriteDrink" */
2663&(nid_objs[453]),/* "friendlyCountry" */
2664&(nid_objs[490]),/* "friendlyCountryName" */
2665&(nid_objs[156]),/* "friendlyName" */
2666&(nid_objs[631]),/* "generate cryptogram" */
2667&(nid_objs[509]),/* "generationQualifier" */
2668&(nid_objs[601]),/* "generic cryptogram" */
2669&(nid_objs[99]),/* "givenName" */
2670&(nid_objs[163]),/* "hmacWithSHA1" */
2671&(nid_objs[486]),/* "homePostalAddress" */
2672&(nid_objs[473]),/* "homeTelephoneNumber" */
2673&(nid_objs[466]),/* "host" */
2674&(nid_objs[442]),/* "iA5StringSyntax" */
2675&(nid_objs[381]),/* "iana" */
2676&(nid_objs[266]),/* "id-aca" */
2677&(nid_objs[355]),/* "id-aca-accessIdentity" */
2678&(nid_objs[354]),/* "id-aca-authenticationInfo" */
2679&(nid_objs[356]),/* "id-aca-chargingIdentity" */
2680&(nid_objs[399]),/* "id-aca-encAttrs" */
2681&(nid_objs[357]),/* "id-aca-group" */
2682&(nid_objs[358]),/* "id-aca-role" */
2683&(nid_objs[176]),/* "id-ad" */
2684&(nid_objs[262]),/* "id-alg" */
2685&(nid_objs[323]),/* "id-alg-des40" */
2686&(nid_objs[326]),/* "id-alg-dh-pop" */
2687&(nid_objs[325]),/* "id-alg-dh-sig-hmac-sha1" */
2688&(nid_objs[324]),/* "id-alg-noSignature" */
2689&(nid_objs[268]),/* "id-cct" */
2690&(nid_objs[361]),/* "id-cct-PKIData" */
2691&(nid_objs[362]),/* "id-cct-PKIResponse" */
2692&(nid_objs[360]),/* "id-cct-crs" */
2693&(nid_objs[81]),/* "id-ce" */
2694&(nid_objs[263]),/* "id-cmc" */
2695&(nid_objs[334]),/* "id-cmc-addExtensions" */
2696&(nid_objs[346]),/* "id-cmc-confirmCertAcceptance" */
2697&(nid_objs[330]),/* "id-cmc-dataReturn" */
2698&(nid_objs[336]),/* "id-cmc-decryptedPOP" */
2699&(nid_objs[335]),/* "id-cmc-encryptedPOP" */
2700&(nid_objs[339]),/* "id-cmc-getCRL" */
2701&(nid_objs[338]),/* "id-cmc-getCert" */
2702&(nid_objs[328]),/* "id-cmc-identification" */
2703&(nid_objs[329]),/* "id-cmc-identityProof" */
2704&(nid_objs[337]),/* "id-cmc-lraPOPWitness" */
2705&(nid_objs[344]),/* "id-cmc-popLinkRandom" */
2706&(nid_objs[345]),/* "id-cmc-popLinkWitness" */
2707&(nid_objs[343]),/* "id-cmc-queryPending" */
2708&(nid_objs[333]),/* "id-cmc-recipientNonce" */
2709&(nid_objs[341]),/* "id-cmc-regInfo" */
2710&(nid_objs[342]),/* "id-cmc-responseInfo" */
2711&(nid_objs[340]),/* "id-cmc-revokeRequest" */
2712&(nid_objs[332]),/* "id-cmc-senderNonce" */
2713&(nid_objs[327]),/* "id-cmc-statusInfo" */
2714&(nid_objs[331]),/* "id-cmc-transactionId" */
2715&(nid_objs[408]),/* "id-ecPublicKey" */
2716&(nid_objs[508]),/* "id-hex-multipart-message" */
2717&(nid_objs[507]),/* "id-hex-partial-message" */
2718&(nid_objs[260]),/* "id-it" */
2719&(nid_objs[302]),/* "id-it-caKeyUpdateInfo" */
2720&(nid_objs[298]),/* "id-it-caProtEncCert" */
2721&(nid_objs[311]),/* "id-it-confirmWaitTime" */
2722&(nid_objs[303]),/* "id-it-currentCRL" */
2723&(nid_objs[300]),/* "id-it-encKeyPairTypes" */
2724&(nid_objs[310]),/* "id-it-implicitConfirm" */
2725&(nid_objs[308]),/* "id-it-keyPairParamRep" */
2726&(nid_objs[307]),/* "id-it-keyPairParamReq" */
2727&(nid_objs[312]),/* "id-it-origPKIMessage" */
2728&(nid_objs[301]),/* "id-it-preferredSymmAlg" */
2729&(nid_objs[309]),/* "id-it-revPassphrase" */
2730&(nid_objs[299]),/* "id-it-signKeyPairTypes" */
2731&(nid_objs[305]),/* "id-it-subscriptionRequest" */
2732&(nid_objs[306]),/* "id-it-subscriptionResponse" */
2733&(nid_objs[304]),/* "id-it-unsupportedOIDs" */
2734&(nid_objs[128]),/* "id-kp" */
2735&(nid_objs[280]),/* "id-mod-attribute-cert" */
2736&(nid_objs[274]),/* "id-mod-cmc" */
2737&(nid_objs[277]),/* "id-mod-cmp" */
2738&(nid_objs[284]),/* "id-mod-cmp2000" */
2739&(nid_objs[273]),/* "id-mod-crmf" */
2740&(nid_objs[283]),/* "id-mod-dvcs" */
2741&(nid_objs[275]),/* "id-mod-kea-profile-88" */
2742&(nid_objs[276]),/* "id-mod-kea-profile-93" */
2743&(nid_objs[282]),/* "id-mod-ocsp" */
2744&(nid_objs[278]),/* "id-mod-qualified-cert-88" */
2745&(nid_objs[279]),/* "id-mod-qualified-cert-93" */
2746&(nid_objs[281]),/* "id-mod-timestamp-protocol" */
2747&(nid_objs[264]),/* "id-on" */
2748&(nid_objs[347]),/* "id-on-personalData" */
2749&(nid_objs[265]),/* "id-pda" */
2750&(nid_objs[352]),/* "id-pda-countryOfCitizenship" */
2751&(nid_objs[353]),/* "id-pda-countryOfResidence" */
2752&(nid_objs[348]),/* "id-pda-dateOfBirth" */
2753&(nid_objs[351]),/* "id-pda-gender" */
2754&(nid_objs[349]),/* "id-pda-placeOfBirth" */
2755&(nid_objs[175]),/* "id-pe" */
2756&(nid_objs[261]),/* "id-pkip" */
2757&(nid_objs[258]),/* "id-pkix-mod" */
2758&(nid_objs[269]),/* "id-pkix1-explicit-88" */
2759&(nid_objs[271]),/* "id-pkix1-explicit-93" */
2760&(nid_objs[270]),/* "id-pkix1-implicit-88" */
2761&(nid_objs[272]),/* "id-pkix1-implicit-93" */
2762&(nid_objs[662]),/* "id-ppl" */
2763&(nid_objs[267]),/* "id-qcs" */
2764&(nid_objs[359]),/* "id-qcs-pkixQCSyntax-v1" */
2765&(nid_objs[259]),/* "id-qt" */
2766&(nid_objs[313]),/* "id-regCtrl" */
2767&(nid_objs[316]),/* "id-regCtrl-authenticator" */
2768&(nid_objs[319]),/* "id-regCtrl-oldCertID" */
2769&(nid_objs[318]),/* "id-regCtrl-pkiArchiveOptions" */
2770&(nid_objs[317]),/* "id-regCtrl-pkiPublicationInfo" */
2771&(nid_objs[320]),/* "id-regCtrl-protocolEncrKey" */
2772&(nid_objs[315]),/* "id-regCtrl-regToken" */
2773&(nid_objs[314]),/* "id-regInfo" */
2774&(nid_objs[322]),/* "id-regInfo-certReq" */
2775&(nid_objs[321]),/* "id-regInfo-utf8Pairs" */
2776&(nid_objs[191]),/* "id-smime-aa" */
2777&(nid_objs[215]),/* "id-smime-aa-contentHint" */
2778&(nid_objs[218]),/* "id-smime-aa-contentIdentifier" */
2779&(nid_objs[221]),/* "id-smime-aa-contentReference" */
2780&(nid_objs[240]),/* "id-smime-aa-dvcs-dvc" */
2781&(nid_objs[217]),/* "id-smime-aa-encapContentType" */
2782&(nid_objs[222]),/* "id-smime-aa-encrypKeyPref" */
2783&(nid_objs[220]),/* "id-smime-aa-equivalentLabels" */
2784&(nid_objs[232]),/* "id-smime-aa-ets-CertificateRefs" */
2785&(nid_objs[233]),/* "id-smime-aa-ets-RevocationRefs" */
2786&(nid_objs[238]),/* "id-smime-aa-ets-archiveTimeStamp" */
2787&(nid_objs[237]),/* "id-smime-aa-ets-certCRLTimestamp" */
2788&(nid_objs[234]),/* "id-smime-aa-ets-certValues" */
2789&(nid_objs[227]),/* "id-smime-aa-ets-commitmentType" */
2790&(nid_objs[231]),/* "id-smime-aa-ets-contentTimestamp" */
2791&(nid_objs[236]),/* "id-smime-aa-ets-escTimeStamp" */
2792&(nid_objs[230]),/* "id-smime-aa-ets-otherSigCert" */
2793&(nid_objs[235]),/* "id-smime-aa-ets-revocationValues" */
2794&(nid_objs[226]),/* "id-smime-aa-ets-sigPolicyId" */
2795&(nid_objs[229]),/* "id-smime-aa-ets-signerAttr" */
2796&(nid_objs[228]),/* "id-smime-aa-ets-signerLocation" */
2797&(nid_objs[219]),/* "id-smime-aa-macValue" */
2798&(nid_objs[214]),/* "id-smime-aa-mlExpandHistory" */
2799&(nid_objs[216]),/* "id-smime-aa-msgSigDigest" */
2800&(nid_objs[212]),/* "id-smime-aa-receiptRequest" */
2801&(nid_objs[213]),/* "id-smime-aa-securityLabel" */
2802&(nid_objs[239]),/* "id-smime-aa-signatureType" */
2803&(nid_objs[223]),/* "id-smime-aa-signingCertificate" */
2804&(nid_objs[224]),/* "id-smime-aa-smimeEncryptCerts" */
2805&(nid_objs[225]),/* "id-smime-aa-timeStampToken" */
2806&(nid_objs[192]),/* "id-smime-alg" */
2807&(nid_objs[243]),/* "id-smime-alg-3DESwrap" */
2808&(nid_objs[246]),/* "id-smime-alg-CMS3DESwrap" */
2809&(nid_objs[247]),/* "id-smime-alg-CMSRC2wrap" */
2810&(nid_objs[245]),/* "id-smime-alg-ESDH" */
2811&(nid_objs[241]),/* "id-smime-alg-ESDHwith3DES" */
2812&(nid_objs[242]),/* "id-smime-alg-ESDHwithRC2" */
2813&(nid_objs[244]),/* "id-smime-alg-RC2wrap" */
2814&(nid_objs[193]),/* "id-smime-cd" */
2815&(nid_objs[248]),/* "id-smime-cd-ldap" */
2816&(nid_objs[190]),/* "id-smime-ct" */
2817&(nid_objs[210]),/* "id-smime-ct-DVCSRequestData" */
2818&(nid_objs[211]),/* "id-smime-ct-DVCSResponseData" */
2819&(nid_objs[208]),/* "id-smime-ct-TDTInfo" */
2820&(nid_objs[207]),/* "id-smime-ct-TSTInfo" */
2821&(nid_objs[205]),/* "id-smime-ct-authData" */
2822&(nid_objs[209]),/* "id-smime-ct-contentInfo" */
2823&(nid_objs[206]),/* "id-smime-ct-publishCert" */
2824&(nid_objs[204]),/* "id-smime-ct-receipt" */
2825&(nid_objs[195]),/* "id-smime-cti" */
2826&(nid_objs[255]),/* "id-smime-cti-ets-proofOfApproval" */
2827&(nid_objs[256]),/* "id-smime-cti-ets-proofOfCreation" */
2828&(nid_objs[253]),/* "id-smime-cti-ets-proofOfDelivery" */
2829&(nid_objs[251]),/* "id-smime-cti-ets-proofOfOrigin" */
2830&(nid_objs[252]),/* "id-smime-cti-ets-proofOfReceipt" */
2831&(nid_objs[254]),/* "id-smime-cti-ets-proofOfSender" */
2832&(nid_objs[189]),/* "id-smime-mod" */
2833&(nid_objs[196]),/* "id-smime-mod-cms" */
2834&(nid_objs[197]),/* "id-smime-mod-ess" */
2835&(nid_objs[202]),/* "id-smime-mod-ets-eSigPolicy-88" */
2836&(nid_objs[203]),/* "id-smime-mod-ets-eSigPolicy-97" */
2837&(nid_objs[200]),/* "id-smime-mod-ets-eSignature-88" */
2838&(nid_objs[201]),/* "id-smime-mod-ets-eSignature-97" */
2839&(nid_objs[199]),/* "id-smime-mod-msg-v3" */
2840&(nid_objs[198]),/* "id-smime-mod-oid" */
2841&(nid_objs[194]),/* "id-smime-spq" */
2842&(nid_objs[250]),/* "id-smime-spq-ets-sqt-unotice" */
2843&(nid_objs[249]),/* "id-smime-spq-ets-sqt-uri" */
2844&(nid_objs[34]),/* "idea-cbc" */
2845&(nid_objs[35]),/* "idea-cfb" */
2846&(nid_objs[36]),/* "idea-ecb" */
2847&(nid_objs[46]),/* "idea-ofb" */
2848&(nid_objs[461]),/* "info" */
2849&(nid_objs[101]),/* "initials" */
2850&(nid_objs[181]),/* "iso" */
2851&(nid_objs[623]),/* "issuer capabilities" */
2852&(nid_objs[492]),/* "janetMailbox" */
2853&(nid_objs[393]),/* "joint-iso-ccitt" */
2854&(nid_objs[150]),/* "keyBag" */
2855&(nid_objs[477]),/* "lastModifiedBy" */
2856&(nid_objs[476]),/* "lastModifiedTime" */
2857&(nid_objs[157]),/* "localKeyID" */
2858&(nid_objs[15]),/* "localityName" */
2859&(nid_objs[480]),/* "mXRecord" */
2860&(nid_objs[493]),/* "mailPreferenceOption" */
2861&(nid_objs[467]),/* "manager" */
2862&(nid_objs[ 3]),/* "md2" */
2863&(nid_objs[ 7]),/* "md2WithRSAEncryption" */
2864&(nid_objs[257]),/* "md4" */
2865&(nid_objs[396]),/* "md4WithRSAEncryption" */
2866&(nid_objs[ 4]),/* "md5" */
2867&(nid_objs[114]),/* "md5-sha1" */
2868&(nid_objs[104]),/* "md5WithRSA" */
2869&(nid_objs[ 8]),/* "md5WithRSAEncryption" */
2870&(nid_objs[95]),/* "mdc2" */
2871&(nid_objs[96]),/* "mdc2WithRSA" */
2872&(nid_objs[602]),/* "merchant initiated auth" */
2873&(nid_objs[514]),/* "message extensions" */
2874&(nid_objs[51]),/* "messageDigest" */
2875&(nid_objs[506]),/* "mime-mhs-bodies" */
2876&(nid_objs[505]),/* "mime-mhs-headings" */
2877&(nid_objs[488]),/* "mobileTelephoneNumber" */
2878&(nid_objs[481]),/* "nSRecord" */
2879&(nid_objs[173]),/* "name" */
2880&(nid_objs[379]),/* "org" */
2881&(nid_objs[17]),/* "organizationName" */
2882&(nid_objs[491]),/* "organizationalStatus" */
2883&(nid_objs[18]),/* "organizationalUnitName" */
2884&(nid_objs[475]),/* "otherMailbox" */
2885&(nid_objs[489]),/* "pagerTelephoneNumber" */
2886&(nid_objs[374]),/* "path" */
2887&(nid_objs[621]),/* "payment gateway capabilities" */
2888&(nid_objs[ 9]),/* "pbeWithMD2AndDES-CBC" */
2889&(nid_objs[168]),/* "pbeWithMD2AndRC2-CBC" */
2890&(nid_objs[112]),/* "pbeWithMD5AndCast5CBC" */
2891&(nid_objs[10]),/* "pbeWithMD5AndDES-CBC" */
2892&(nid_objs[169]),/* "pbeWithMD5AndRC2-CBC" */
2893&(nid_objs[148]),/* "pbeWithSHA1And128BitRC2-CBC" */
2894&(nid_objs[144]),/* "pbeWithSHA1And128BitRC4" */
2895&(nid_objs[147]),/* "pbeWithSHA1And2-KeyTripleDES-CBC" */
2896&(nid_objs[146]),/* "pbeWithSHA1And3-KeyTripleDES-CBC" */
2897&(nid_objs[149]),/* "pbeWithSHA1And40BitRC2-CBC" */
2898&(nid_objs[145]),/* "pbeWithSHA1And40BitRC4" */
2899&(nid_objs[170]),/* "pbeWithSHA1AndDES-CBC" */
2900&(nid_objs[68]),/* "pbeWithSHA1AndRC2-CBC" */
2901&(nid_objs[499]),/* "personalSignature" */
2902&(nid_objs[487]),/* "personalTitle" */
2903&(nid_objs[464]),/* "photo" */
2904&(nid_objs[437]),/* "pilot" */
2905&(nid_objs[439]),/* "pilotAttributeSyntax" */
2906&(nid_objs[438]),/* "pilotAttributeType" */
2907&(nid_objs[479]),/* "pilotAttributeType27" */
2908&(nid_objs[456]),/* "pilotDSA" */
2909&(nid_objs[441]),/* "pilotGroups" */
2910&(nid_objs[444]),/* "pilotObject" */
2911&(nid_objs[440]),/* "pilotObjectClass" */
2912&(nid_objs[455]),/* "pilotOrganization" */
2913&(nid_objs[445]),/* "pilotPerson" */
2914&(nid_objs[186]),/* "pkcs1" */
2915&(nid_objs[27]),/* "pkcs3" */
2916&(nid_objs[187]),/* "pkcs5" */
2917&(nid_objs[20]),/* "pkcs7" */
2918&(nid_objs[21]),/* "pkcs7-data" */
2919&(nid_objs[25]),/* "pkcs7-digestData" */
2920&(nid_objs[26]),/* "pkcs7-encryptedData" */
2921&(nid_objs[23]),/* "pkcs7-envelopedData" */
2922&(nid_objs[24]),/* "pkcs7-signedAndEnvelopedData" */
2923&(nid_objs[22]),/* "pkcs7-signedData" */
2924&(nid_objs[151]),/* "pkcs8ShroudedKeyBag" */
2925&(nid_objs[47]),/* "pkcs9" */
2926&(nid_objs[661]),/* "postalCode" */
2927&(nid_objs[406]),/* "prime-field" */
2928&(nid_objs[409]),/* "prime192v1" */
2929&(nid_objs[410]),/* "prime192v2" */
2930&(nid_objs[411]),/* "prime192v3" */
2931&(nid_objs[412]),/* "prime239v1" */
2932&(nid_objs[413]),/* "prime239v2" */
2933&(nid_objs[414]),/* "prime239v3" */
2934&(nid_objs[415]),/* "prime256v1" */
2935&(nid_objs[510]),/* "pseudonym" */
2936&(nid_objs[435]),/* "pss" */
2937&(nid_objs[286]),/* "qcStatements" */
2938&(nid_objs[457]),/* "qualityLabelledData" */
2939&(nid_objs[450]),/* "rFC822localPart" */
2940&(nid_objs[98]),/* "rc2-40-cbc" */
2941&(nid_objs[166]),/* "rc2-64-cbc" */
2942&(nid_objs[37]),/* "rc2-cbc" */
2943&(nid_objs[39]),/* "rc2-cfb" */
2944&(nid_objs[38]),/* "rc2-ecb" */
2945&(nid_objs[40]),/* "rc2-ofb" */
2946&(nid_objs[ 5]),/* "rc4" */
2947&(nid_objs[97]),/* "rc4-40" */
2948&(nid_objs[120]),/* "rc5-cbc" */
2949&(nid_objs[122]),/* "rc5-cfb" */
2950&(nid_objs[121]),/* "rc5-ecb" */
2951&(nid_objs[123]),/* "rc5-ofb" */
2952&(nid_objs[460]),/* "rfc822Mailbox" */
2953&(nid_objs[117]),/* "ripemd160" */
2954&(nid_objs[119]),/* "ripemd160WithRSA" */
2955&(nid_objs[400]),/* "role" */
2956&(nid_objs[448]),/* "room" */
2957&(nid_objs[463]),/* "roomNumber" */
2958&(nid_objs[19]),/* "rsa" */
2959&(nid_objs[ 6]),/* "rsaEncryption" */
2960&(nid_objs[644]),/* "rsaOAEPEncryptionSET" */
2961&(nid_objs[377]),/* "rsaSignature" */
2962&(nid_objs[124]),/* "run length compression" */
2963&(nid_objs[482]),/* "sOARecord" */
2964&(nid_objs[155]),/* "safeContentsBag" */
2965&(nid_objs[291]),/* "sbgp-autonomousSysNum" */
2966&(nid_objs[290]),/* "sbgp-ipAddrBlock" */
2967&(nid_objs[292]),/* "sbgp-routerIdentifier" */
2968&(nid_objs[159]),/* "sdsiCertificate" */
2969&(nid_objs[154]),/* "secretBag" */
2970&(nid_objs[474]),/* "secretary" */
2971&(nid_objs[635]),/* "secure device signature" */
2972&(nid_objs[105]),/* "serialNumber" */
2973&(nid_objs[625]),/* "set-addPolicy" */
2974&(nid_objs[515]),/* "set-attr" */
2975&(nid_objs[518]),/* "set-brand" */
2976&(nid_objs[638]),/* "set-brand-AmericanExpress" */
2977&(nid_objs[637]),/* "set-brand-Diners" */
2978&(nid_objs[636]),/* "set-brand-IATA-ATA" */
2979&(nid_objs[639]),/* "set-brand-JCB" */
2980&(nid_objs[641]),/* "set-brand-MasterCard" */
2981&(nid_objs[642]),/* "set-brand-Novus" */
2982&(nid_objs[640]),/* "set-brand-Visa" */
2983&(nid_objs[516]),/* "set-policy" */
2984&(nid_objs[607]),/* "set-policy-root" */
2985&(nid_objs[624]),/* "set-rootKeyThumb" */
2986&(nid_objs[620]),/* "setAttr-Cert" */
2987&(nid_objs[628]),/* "setAttr-IssCap-CVM" */
2988&(nid_objs[630]),/* "setAttr-IssCap-Sig" */
2989&(nid_objs[629]),/* "setAttr-IssCap-T2" */
2990&(nid_objs[627]),/* "setAttr-Token-B0Prime" */
2991&(nid_objs[626]),/* "setAttr-Token-EMV" */
2992&(nid_objs[622]),/* "setAttr-TokenType" */
2993&(nid_objs[619]),/* "setCext-IssuerCapabilities" */
2994&(nid_objs[615]),/* "setCext-PGWYcapabilities" */
2995&(nid_objs[616]),/* "setCext-TokenIdentifier" */
2996&(nid_objs[618]),/* "setCext-TokenType" */
2997&(nid_objs[617]),/* "setCext-Track2Data" */
2998&(nid_objs[611]),/* "setCext-cCertRequired" */
2999&(nid_objs[609]),/* "setCext-certType" */
3000&(nid_objs[608]),/* "setCext-hashedRoot" */
3001&(nid_objs[610]),/* "setCext-merchData" */
3002&(nid_objs[613]),/* "setCext-setExt" */
3003&(nid_objs[614]),/* "setCext-setQualf" */
3004&(nid_objs[612]),/* "setCext-tunneling" */
3005&(nid_objs[540]),/* "setct-AcqCardCodeMsg" */
3006&(nid_objs[576]),/* "setct-AcqCardCodeMsgTBE" */
3007&(nid_objs[570]),/* "setct-AuthReqTBE" */
3008&(nid_objs[534]),/* "setct-AuthReqTBS" */
3009&(nid_objs[527]),/* "setct-AuthResBaggage" */
3010&(nid_objs[571]),/* "setct-AuthResTBE" */
3011&(nid_objs[572]),/* "setct-AuthResTBEX" */
3012&(nid_objs[535]),/* "setct-AuthResTBS" */
3013&(nid_objs[536]),/* "setct-AuthResTBSX" */
3014&(nid_objs[528]),/* "setct-AuthRevReqBaggage" */
3015&(nid_objs[577]),/* "setct-AuthRevReqTBE" */
3016&(nid_objs[541]),/* "setct-AuthRevReqTBS" */
3017&(nid_objs[529]),/* "setct-AuthRevResBaggage" */
3018&(nid_objs[542]),/* "setct-AuthRevResData" */
3019&(nid_objs[578]),/* "setct-AuthRevResTBE" */
3020&(nid_objs[579]),/* "setct-AuthRevResTBEB" */
3021&(nid_objs[543]),/* "setct-AuthRevResTBS" */
3022&(nid_objs[573]),/* "setct-AuthTokenTBE" */
3023&(nid_objs[537]),/* "setct-AuthTokenTBS" */
3024&(nid_objs[600]),/* "setct-BCIDistributionTBS" */
3025&(nid_objs[558]),/* "setct-BatchAdminReqData" */
3026&(nid_objs[592]),/* "setct-BatchAdminReqTBE" */
3027&(nid_objs[559]),/* "setct-BatchAdminResData" */
3028&(nid_objs[593]),/* "setct-BatchAdminResTBE" */
3029&(nid_objs[599]),/* "setct-CRLNotificationResTBS" */
3030&(nid_objs[598]),/* "setct-CRLNotificationTBS" */
3031&(nid_objs[580]),/* "setct-CapReqTBE" */
3032&(nid_objs[581]),/* "setct-CapReqTBEX" */
3033&(nid_objs[544]),/* "setct-CapReqTBS" */
3034&(nid_objs[545]),/* "setct-CapReqTBSX" */
3035&(nid_objs[546]),/* "setct-CapResData" */
3036&(nid_objs[582]),/* "setct-CapResTBE" */
3037&(nid_objs[583]),/* "setct-CapRevReqTBE" */
3038&(nid_objs[584]),/* "setct-CapRevReqTBEX" */
3039&(nid_objs[547]),/* "setct-CapRevReqTBS" */
3040&(nid_objs[548]),/* "setct-CapRevReqTBSX" */
3041&(nid_objs[549]),/* "setct-CapRevResData" */
3042&(nid_objs[585]),/* "setct-CapRevResTBE" */
3043&(nid_objs[538]),/* "setct-CapTokenData" */
3044&(nid_objs[530]),/* "setct-CapTokenSeq" */
3045&(nid_objs[574]),/* "setct-CapTokenTBE" */
3046&(nid_objs[575]),/* "setct-CapTokenTBEX" */
3047&(nid_objs[539]),/* "setct-CapTokenTBS" */
3048&(nid_objs[560]),/* "setct-CardCInitResTBS" */
3049&(nid_objs[566]),/* "setct-CertInqReqTBS" */
3050&(nid_objs[563]),/* "setct-CertReqData" */
3051&(nid_objs[595]),/* "setct-CertReqTBE" */
3052&(nid_objs[596]),/* "setct-CertReqTBEX" */
3053&(nid_objs[564]),/* "setct-CertReqTBS" */
3054&(nid_objs[565]),/* "setct-CertResData" */
3055&(nid_objs[597]),/* "setct-CertResTBE" */
3056&(nid_objs[586]),/* "setct-CredReqTBE" */
3057&(nid_objs[587]),/* "setct-CredReqTBEX" */
3058&(nid_objs[550]),/* "setct-CredReqTBS" */
3059&(nid_objs[551]),/* "setct-CredReqTBSX" */
3060&(nid_objs[552]),/* "setct-CredResData" */
3061&(nid_objs[588]),/* "setct-CredResTBE" */
3062&(nid_objs[589]),/* "setct-CredRevReqTBE" */
3063&(nid_objs[590]),/* "setct-CredRevReqTBEX" */
3064&(nid_objs[553]),/* "setct-CredRevReqTBS" */
3065&(nid_objs[554]),/* "setct-CredRevReqTBSX" */
3066&(nid_objs[555]),/* "setct-CredRevResData" */
3067&(nid_objs[591]),/* "setct-CredRevResTBE" */
3068&(nid_objs[567]),/* "setct-ErrorTBS" */
3069&(nid_objs[526]),/* "setct-HODInput" */
3070&(nid_objs[561]),/* "setct-MeAqCInitResTBS" */
3071&(nid_objs[522]),/* "setct-OIData" */
3072&(nid_objs[519]),/* "setct-PANData" */
3073&(nid_objs[521]),/* "setct-PANOnly" */
3074&(nid_objs[520]),/* "setct-PANToken" */
3075&(nid_objs[556]),/* "setct-PCertReqData" */
3076&(nid_objs[557]),/* "setct-PCertResTBS" */
3077&(nid_objs[523]),/* "setct-PI" */
3078&(nid_objs[532]),/* "setct-PI-TBS" */
3079&(nid_objs[524]),/* "setct-PIData" */
3080&(nid_objs[525]),/* "setct-PIDataUnsigned" */
3081&(nid_objs[568]),/* "setct-PIDualSignedTBE" */
3082&(nid_objs[569]),/* "setct-PIUnsignedTBE" */
3083&(nid_objs[531]),/* "setct-PInitResData" */
3084&(nid_objs[533]),/* "setct-PResData" */
3085&(nid_objs[594]),/* "setct-RegFormReqTBE" */
3086&(nid_objs[562]),/* "setct-RegFormResTBS" */
3087&(nid_objs[604]),/* "setext-pinAny" */
3088&(nid_objs[603]),/* "setext-pinSecure" */
3089&(nid_objs[605]),/* "setext-track2" */
3090&(nid_objs[41]),/* "sha" */
3091&(nid_objs[64]),/* "sha1" */
3092&(nid_objs[115]),/* "sha1WithRSA" */
3093&(nid_objs[65]),/* "sha1WithRSAEncryption" */
3094&(nid_objs[675]),/* "sha224" */
3095&(nid_objs[671]),/* "sha224WithRSAEncryption" */
3096&(nid_objs[672]),/* "sha256" */
3097&(nid_objs[668]),/* "sha256WithRSAEncryption" */
3098&(nid_objs[673]),/* "sha384" */
3099&(nid_objs[669]),/* "sha384WithRSAEncryption" */
3100&(nid_objs[674]),/* "sha512" */
3101&(nid_objs[670]),/* "sha512WithRSAEncryption" */
3102&(nid_objs[42]),/* "shaWithRSAEncryption" */
3103&(nid_objs[52]),/* "signingTime" */
3104&(nid_objs[454]),/* "simpleSecurityObject" */
3105&(nid_objs[496]),/* "singleLevelQuality" */
3106&(nid_objs[16]),/* "stateOrProvinceName" */
3107&(nid_objs[660]),/* "streetAddress" */
3108&(nid_objs[498]),/* "subtreeMaximumQuality" */
3109&(nid_objs[497]),/* "subtreeMinimumQuality" */
3110&(nid_objs[100]),/* "surname" */
3111&(nid_objs[459]),/* "textEncodedORAddress" */
3112&(nid_objs[293]),/* "textNotice" */
3113&(nid_objs[106]),/* "title" */
3114&(nid_objs[436]),/* "ucl" */
3115&(nid_objs[ 0]),/* "undefined" */
3116&(nid_objs[55]),/* "unstructuredAddress" */
3117&(nid_objs[49]),/* "unstructuredName" */
3118&(nid_objs[465]),/* "userClass" */
3119&(nid_objs[458]),/* "userId" */
3120&(nid_objs[373]),/* "valid" */
3121&(nid_objs[503]),/* "x500UniqueIdentifier" */
3122&(nid_objs[158]),/* "x509Certificate" */
3123&(nid_objs[160]),/* "x509Crl" */
3124&(nid_objs[125]),/* "zlib compression" */
3125};
3126
3127static ASN1_OBJECT *obj_objs[NUM_OBJ]={
3128&(nid_objs[ 0]),/* OBJ_undef 0 */
3129&(nid_objs[404]),/* OBJ_ccitt 0 */
3130&(nid_objs[434]),/* OBJ_data 0 9 */
3131&(nid_objs[181]),/* OBJ_iso 1 */
3132&(nid_objs[182]),/* OBJ_member_body 1 2 */
3133&(nid_objs[379]),/* OBJ_org 1 3 */
3134&(nid_objs[393]),/* OBJ_joint_iso_ccitt 2 */
3135&(nid_objs[11]),/* OBJ_X500 2 5 */
3136&(nid_objs[380]),/* OBJ_dod 1 3 6 */
3137&(nid_objs[12]),/* OBJ_X509 2 5 4 */
3138&(nid_objs[378]),/* OBJ_X500algorithms 2 5 8 */
3139&(nid_objs[81]),/* OBJ_id_ce 2 5 29 */
3140&(nid_objs[512]),/* OBJ_id_set 2 23 42 */
3141&(nid_objs[435]),/* OBJ_pss 0 9 2342 */
3142&(nid_objs[183]),/* OBJ_ISO_US 1 2 840 */
3143&(nid_objs[381]),/* OBJ_iana 1 3 6 1 */
3144&(nid_objs[394]),/* OBJ_selected_attribute_types 2 5 1 5 */
3145&(nid_objs[13]),/* OBJ_commonName 2 5 4 3 */
3146&(nid_objs[100]),/* OBJ_surname 2 5 4 4 */
3147&(nid_objs[105]),/* OBJ_serialNumber 2 5 4 5 */
3148&(nid_objs[14]),/* OBJ_countryName 2 5 4 6 */
3149&(nid_objs[15]),/* OBJ_localityName 2 5 4 7 */
3150&(nid_objs[16]),/* OBJ_stateOrProvinceName 2 5 4 8 */
3151&(nid_objs[660]),/* OBJ_streetAddress 2 5 4 9 */
3152&(nid_objs[17]),/* OBJ_organizationName 2 5 4 10 */
3153&(nid_objs[18]),/* OBJ_organizationalUnitName 2 5 4 11 */
3154&(nid_objs[106]),/* OBJ_title 2 5 4 12 */
3155&(nid_objs[107]),/* OBJ_description 2 5 4 13 */
3156&(nid_objs[661]),/* OBJ_postalCode 2 5 4 17 */
3157&(nid_objs[173]),/* OBJ_name 2 5 4 41 */
3158&(nid_objs[99]),/* OBJ_givenName 2 5 4 42 */
3159&(nid_objs[101]),/* OBJ_initials 2 5 4 43 */
3160&(nid_objs[509]),/* OBJ_generationQualifier 2 5 4 44 */
3161&(nid_objs[503]),/* OBJ_x500UniqueIdentifier 2 5 4 45 */
3162&(nid_objs[174]),/* OBJ_dnQualifier 2 5 4 46 */
3163&(nid_objs[510]),/* OBJ_pseudonym 2 5 4 65 */
3164&(nid_objs[400]),/* OBJ_role 2 5 4 72 */
3165&(nid_objs[82]),/* OBJ_subject_key_identifier 2 5 29 14 */
3166&(nid_objs[83]),/* OBJ_key_usage 2 5 29 15 */
3167&(nid_objs[84]),/* OBJ_private_key_usage_period 2 5 29 16 */
3168&(nid_objs[85]),/* OBJ_subject_alt_name 2 5 29 17 */
3169&(nid_objs[86]),/* OBJ_issuer_alt_name 2 5 29 18 */
3170&(nid_objs[87]),/* OBJ_basic_constraints 2 5 29 19 */
3171&(nid_objs[88]),/* OBJ_crl_number 2 5 29 20 */
3172&(nid_objs[141]),/* OBJ_crl_reason 2 5 29 21 */
3173&(nid_objs[430]),/* OBJ_hold_instruction_code 2 5 29 23 */
3174&(nid_objs[142]),/* OBJ_invalidity_date 2 5 29 24 */
3175&(nid_objs[140]),/* OBJ_delta_crl 2 5 29 27 */
3176&(nid_objs[666]),/* OBJ_name_constraints 2 5 29 30 */
3177&(nid_objs[103]),/* OBJ_crl_distribution_points 2 5 29 31 */
3178&(nid_objs[89]),/* OBJ_certificate_policies 2 5 29 32 */
3179&(nid_objs[90]),/* OBJ_authority_key_identifier 2 5 29 35 */
3180&(nid_objs[401]),/* OBJ_policy_constraints 2 5 29 36 */
3181&(nid_objs[126]),/* OBJ_ext_key_usage 2 5 29 37 */
3182&(nid_objs[402]),/* OBJ_target_information 2 5 29 55 */
3183&(nid_objs[403]),/* OBJ_no_rev_avail 2 5 29 56 */
3184&(nid_objs[513]),/* OBJ_set_ctype 2 23 42 0 */
3185&(nid_objs[514]),/* OBJ_set_msgExt 2 23 42 1 */
3186&(nid_objs[515]),/* OBJ_set_attr 2 23 42 3 */
3187&(nid_objs[516]),/* OBJ_set_policy 2 23 42 5 */
3188&(nid_objs[517]),/* OBJ_set_certExt 2 23 42 7 */
3189&(nid_objs[518]),/* OBJ_set_brand 2 23 42 8 */
3190&(nid_objs[382]),/* OBJ_Directory 1 3 6 1 1 */
3191&(nid_objs[383]),/* OBJ_Management 1 3 6 1 2 */
3192&(nid_objs[384]),/* OBJ_Experimental 1 3 6 1 3 */
3193&(nid_objs[385]),/* OBJ_Private 1 3 6 1 4 */
3194&(nid_objs[386]),/* OBJ_Security 1 3 6 1 5 */
3195&(nid_objs[387]),/* OBJ_SNMPv2 1 3 6 1 6 */
3196&(nid_objs[388]),/* OBJ_Mail 1 3 6 1 7 */
3197&(nid_objs[376]),/* OBJ_algorithm 1 3 14 3 2 */
3198&(nid_objs[395]),/* OBJ_clearance 2 5 1 5 55 */
3199&(nid_objs[19]),/* OBJ_rsa 2 5 8 1 1 */
3200&(nid_objs[96]),/* OBJ_mdc2WithRSA 2 5 8 3 100 */
3201&(nid_objs[95]),/* OBJ_mdc2 2 5 8 3 101 */
3202&(nid_objs[519]),/* OBJ_setct_PANData 2 23 42 0 0 */
3203&(nid_objs[520]),/* OBJ_setct_PANToken 2 23 42 0 1 */
3204&(nid_objs[521]),/* OBJ_setct_PANOnly 2 23 42 0 2 */
3205&(nid_objs[522]),/* OBJ_setct_OIData 2 23 42 0 3 */
3206&(nid_objs[523]),/* OBJ_setct_PI 2 23 42 0 4 */
3207&(nid_objs[524]),/* OBJ_setct_PIData 2 23 42 0 5 */
3208&(nid_objs[525]),/* OBJ_setct_PIDataUnsigned 2 23 42 0 6 */
3209&(nid_objs[526]),/* OBJ_setct_HODInput 2 23 42 0 7 */
3210&(nid_objs[527]),/* OBJ_setct_AuthResBaggage 2 23 42 0 8 */
3211&(nid_objs[528]),/* OBJ_setct_AuthRevReqBaggage 2 23 42 0 9 */
3212&(nid_objs[529]),/* OBJ_setct_AuthRevResBaggage 2 23 42 0 10 */
3213&(nid_objs[530]),/* OBJ_setct_CapTokenSeq 2 23 42 0 11 */
3214&(nid_objs[531]),/* OBJ_setct_PInitResData 2 23 42 0 12 */
3215&(nid_objs[532]),/* OBJ_setct_PI_TBS 2 23 42 0 13 */
3216&(nid_objs[533]),/* OBJ_setct_PResData 2 23 42 0 14 */
3217&(nid_objs[534]),/* OBJ_setct_AuthReqTBS 2 23 42 0 16 */
3218&(nid_objs[535]),/* OBJ_setct_AuthResTBS 2 23 42 0 17 */
3219&(nid_objs[536]),/* OBJ_setct_AuthResTBSX 2 23 42 0 18 */
3220&(nid_objs[537]),/* OBJ_setct_AuthTokenTBS 2 23 42 0 19 */
3221&(nid_objs[538]),/* OBJ_setct_CapTokenData 2 23 42 0 20 */
3222&(nid_objs[539]),/* OBJ_setct_CapTokenTBS 2 23 42 0 21 */
3223&(nid_objs[540]),/* OBJ_setct_AcqCardCodeMsg 2 23 42 0 22 */
3224&(nid_objs[541]),/* OBJ_setct_AuthRevReqTBS 2 23 42 0 23 */
3225&(nid_objs[542]),/* OBJ_setct_AuthRevResData 2 23 42 0 24 */
3226&(nid_objs[543]),/* OBJ_setct_AuthRevResTBS 2 23 42 0 25 */
3227&(nid_objs[544]),/* OBJ_setct_CapReqTBS 2 23 42 0 26 */
3228&(nid_objs[545]),/* OBJ_setct_CapReqTBSX 2 23 42 0 27 */
3229&(nid_objs[546]),/* OBJ_setct_CapResData 2 23 42 0 28 */
3230&(nid_objs[547]),/* OBJ_setct_CapRevReqTBS 2 23 42 0 29 */
3231&(nid_objs[548]),/* OBJ_setct_CapRevReqTBSX 2 23 42 0 30 */
3232&(nid_objs[549]),/* OBJ_setct_CapRevResData 2 23 42 0 31 */
3233&(nid_objs[550]),/* OBJ_setct_CredReqTBS 2 23 42 0 32 */
3234&(nid_objs[551]),/* OBJ_setct_CredReqTBSX 2 23 42 0 33 */
3235&(nid_objs[552]),/* OBJ_setct_CredResData 2 23 42 0 34 */
3236&(nid_objs[553]),/* OBJ_setct_CredRevReqTBS 2 23 42 0 35 */
3237&(nid_objs[554]),/* OBJ_setct_CredRevReqTBSX 2 23 42 0 36 */
3238&(nid_objs[555]),/* OBJ_setct_CredRevResData 2 23 42 0 37 */
3239&(nid_objs[556]),/* OBJ_setct_PCertReqData 2 23 42 0 38 */
3240&(nid_objs[557]),/* OBJ_setct_PCertResTBS 2 23 42 0 39 */
3241&(nid_objs[558]),/* OBJ_setct_BatchAdminReqData 2 23 42 0 40 */
3242&(nid_objs[559]),/* OBJ_setct_BatchAdminResData 2 23 42 0 41 */
3243&(nid_objs[560]),/* OBJ_setct_CardCInitResTBS 2 23 42 0 42 */
3244&(nid_objs[561]),/* OBJ_setct_MeAqCInitResTBS 2 23 42 0 43 */
3245&(nid_objs[562]),/* OBJ_setct_RegFormResTBS 2 23 42 0 44 */
3246&(nid_objs[563]),/* OBJ_setct_CertReqData 2 23 42 0 45 */
3247&(nid_objs[564]),/* OBJ_setct_CertReqTBS 2 23 42 0 46 */
3248&(nid_objs[565]),/* OBJ_setct_CertResData 2 23 42 0 47 */
3249&(nid_objs[566]),/* OBJ_setct_CertInqReqTBS 2 23 42 0 48 */
3250&(nid_objs[567]),/* OBJ_setct_ErrorTBS 2 23 42 0 49 */
3251&(nid_objs[568]),/* OBJ_setct_PIDualSignedTBE 2 23 42 0 50 */
3252&(nid_objs[569]),/* OBJ_setct_PIUnsignedTBE 2 23 42 0 51 */
3253&(nid_objs[570]),/* OBJ_setct_AuthReqTBE 2 23 42 0 52 */
3254&(nid_objs[571]),/* OBJ_setct_AuthResTBE 2 23 42 0 53 */
3255&(nid_objs[572]),/* OBJ_setct_AuthResTBEX 2 23 42 0 54 */
3256&(nid_objs[573]),/* OBJ_setct_AuthTokenTBE 2 23 42 0 55 */
3257&(nid_objs[574]),/* OBJ_setct_CapTokenTBE 2 23 42 0 56 */
3258&(nid_objs[575]),/* OBJ_setct_CapTokenTBEX 2 23 42 0 57 */
3259&(nid_objs[576]),/* OBJ_setct_AcqCardCodeMsgTBE 2 23 42 0 58 */
3260&(nid_objs[577]),/* OBJ_setct_AuthRevReqTBE 2 23 42 0 59 */
3261&(nid_objs[578]),/* OBJ_setct_AuthRevResTBE 2 23 42 0 60 */
3262&(nid_objs[579]),/* OBJ_setct_AuthRevResTBEB 2 23 42 0 61 */
3263&(nid_objs[580]),/* OBJ_setct_CapReqTBE 2 23 42 0 62 */
3264&(nid_objs[581]),/* OBJ_setct_CapReqTBEX 2 23 42 0 63 */
3265&(nid_objs[582]),/* OBJ_setct_CapResTBE 2 23 42 0 64 */
3266&(nid_objs[583]),/* OBJ_setct_CapRevReqTBE 2 23 42 0 65 */
3267&(nid_objs[584]),/* OBJ_setct_CapRevReqTBEX 2 23 42 0 66 */
3268&(nid_objs[585]),/* OBJ_setct_CapRevResTBE 2 23 42 0 67 */
3269&(nid_objs[586]),/* OBJ_setct_CredReqTBE 2 23 42 0 68 */
3270&(nid_objs[587]),/* OBJ_setct_CredReqTBEX 2 23 42 0 69 */
3271&(nid_objs[588]),/* OBJ_setct_CredResTBE 2 23 42 0 70 */
3272&(nid_objs[589]),/* OBJ_setct_CredRevReqTBE 2 23 42 0 71 */
3273&(nid_objs[590]),/* OBJ_setct_CredRevReqTBEX 2 23 42 0 72 */
3274&(nid_objs[591]),/* OBJ_setct_CredRevResTBE 2 23 42 0 73 */
3275&(nid_objs[592]),/* OBJ_setct_BatchAdminReqTBE 2 23 42 0 74 */
3276&(nid_objs[593]),/* OBJ_setct_BatchAdminResTBE 2 23 42 0 75 */
3277&(nid_objs[594]),/* OBJ_setct_RegFormReqTBE 2 23 42 0 76 */
3278&(nid_objs[595]),/* OBJ_setct_CertReqTBE 2 23 42 0 77 */
3279&(nid_objs[596]),/* OBJ_setct_CertReqTBEX 2 23 42 0 78 */
3280&(nid_objs[597]),/* OBJ_setct_CertResTBE 2 23 42 0 79 */
3281&(nid_objs[598]),/* OBJ_setct_CRLNotificationTBS 2 23 42 0 80 */
3282&(nid_objs[599]),/* OBJ_setct_CRLNotificationResTBS 2 23 42 0 81 */
3283&(nid_objs[600]),/* OBJ_setct_BCIDistributionTBS 2 23 42 0 82 */
3284&(nid_objs[601]),/* OBJ_setext_genCrypt 2 23 42 1 1 */
3285&(nid_objs[602]),/* OBJ_setext_miAuth 2 23 42 1 3 */
3286&(nid_objs[603]),/* OBJ_setext_pinSecure 2 23 42 1 4 */
3287&(nid_objs[604]),/* OBJ_setext_pinAny 2 23 42 1 5 */
3288&(nid_objs[605]),/* OBJ_setext_track2 2 23 42 1 7 */
3289&(nid_objs[606]),/* OBJ_setext_cv 2 23 42 1 8 */
3290&(nid_objs[620]),/* OBJ_setAttr_Cert 2 23 42 3 0 */
3291&(nid_objs[621]),/* OBJ_setAttr_PGWYcap 2 23 42 3 1 */
3292&(nid_objs[622]),/* OBJ_setAttr_TokenType 2 23 42 3 2 */
3293&(nid_objs[623]),/* OBJ_setAttr_IssCap 2 23 42 3 3 */
3294&(nid_objs[607]),/* OBJ_set_policy_root 2 23 42 5 0 */
3295&(nid_objs[608]),/* OBJ_setCext_hashedRoot 2 23 42 7 0 */
3296&(nid_objs[609]),/* OBJ_setCext_certType 2 23 42 7 1 */
3297&(nid_objs[610]),/* OBJ_setCext_merchData 2 23 42 7 2 */
3298&(nid_objs[611]),/* OBJ_setCext_cCertRequired 2 23 42 7 3 */
3299&(nid_objs[612]),/* OBJ_setCext_tunneling 2 23 42 7 4 */
3300&(nid_objs[613]),/* OBJ_setCext_setExt 2 23 42 7 5 */
3301&(nid_objs[614]),/* OBJ_setCext_setQualf 2 23 42 7 6 */
3302&(nid_objs[615]),/* OBJ_setCext_PGWYcapabilities 2 23 42 7 7 */
3303&(nid_objs[616]),/* OBJ_setCext_TokenIdentifier 2 23 42 7 8 */
3304&(nid_objs[617]),/* OBJ_setCext_Track2Data 2 23 42 7 9 */
3305&(nid_objs[618]),/* OBJ_setCext_TokenType 2 23 42 7 10 */
3306&(nid_objs[619]),/* OBJ_setCext_IssuerCapabilities 2 23 42 7 11 */
3307&(nid_objs[636]),/* OBJ_set_brand_IATA_ATA 2 23 42 8 1 */
3308&(nid_objs[640]),/* OBJ_set_brand_Visa 2 23 42 8 4 */
3309&(nid_objs[641]),/* OBJ_set_brand_MasterCard 2 23 42 8 5 */
3310&(nid_objs[637]),/* OBJ_set_brand_Diners 2 23 42 8 30 */
3311&(nid_objs[638]),/* OBJ_set_brand_AmericanExpress 2 23 42 8 34 */
3312&(nid_objs[639]),/* OBJ_set_brand_JCB 2 23 42 8 35 */
3313&(nid_objs[184]),/* OBJ_X9_57 1 2 840 10040 */
3314&(nid_objs[405]),/* OBJ_ansi_X9_62 1 2 840 10045 */
3315&(nid_objs[389]),/* OBJ_Enterprises 1 3 6 1 4 1 */
3316&(nid_objs[504]),/* OBJ_mime_mhs 1 3 6 1 7 1 */
3317&(nid_objs[104]),/* OBJ_md5WithRSA 1 3 14 3 2 3 */
3318&(nid_objs[29]),/* OBJ_des_ecb 1 3 14 3 2 6 */
3319&(nid_objs[31]),/* OBJ_des_cbc 1 3 14 3 2 7 */
3320&(nid_objs[45]),/* OBJ_des_ofb64 1 3 14 3 2 8 */
3321&(nid_objs[30]),/* OBJ_des_cfb64 1 3 14 3 2 9 */
3322&(nid_objs[377]),/* OBJ_rsaSignature 1 3 14 3 2 11 */
3323&(nid_objs[67]),/* OBJ_dsa_2 1 3 14 3 2 12 */
3324&(nid_objs[66]),/* OBJ_dsaWithSHA 1 3 14 3 2 13 */
3325&(nid_objs[42]),/* OBJ_shaWithRSAEncryption 1 3 14 3 2 15 */
3326&(nid_objs[32]),/* OBJ_des_ede_ecb 1 3 14 3 2 17 */
3327&(nid_objs[41]),/* OBJ_sha 1 3 14 3 2 18 */
3328&(nid_objs[64]),/* OBJ_sha1 1 3 14 3 2 26 */
3329&(nid_objs[70]),/* OBJ_dsaWithSHA1_2 1 3 14 3 2 27 */
3330&(nid_objs[115]),/* OBJ_sha1WithRSA 1 3 14 3 2 29 */
3331&(nid_objs[117]),/* OBJ_ripemd160 1 3 36 3 2 1 */
3332&(nid_objs[143]),/* OBJ_sxnet 1 3 101 1 4 1 */
3333&(nid_objs[624]),/* OBJ_set_rootKeyThumb 2 23 42 3 0 0 */
3334&(nid_objs[625]),/* OBJ_set_addPolicy 2 23 42 3 0 1 */
3335&(nid_objs[626]),/* OBJ_setAttr_Token_EMV 2 23 42 3 2 1 */
3336&(nid_objs[627]),/* OBJ_setAttr_Token_B0Prime 2 23 42 3 2 2 */
3337&(nid_objs[628]),/* OBJ_setAttr_IssCap_CVM 2 23 42 3 3 3 */
3338&(nid_objs[629]),/* OBJ_setAttr_IssCap_T2 2 23 42 3 3 4 */
3339&(nid_objs[630]),/* OBJ_setAttr_IssCap_Sig 2 23 42 3 3 5 */
3340&(nid_objs[642]),/* OBJ_set_brand_Novus 2 23 42 8 6011 */
3341&(nid_objs[124]),/* OBJ_rle_compression 1 1 1 1 666 1 */
3342&(nid_objs[125]),/* OBJ_zlib_compression 1 1 1 1 666 2 */
3343&(nid_objs[ 1]),/* OBJ_rsadsi 1 2 840 113549 */
3344&(nid_objs[185]),/* OBJ_X9cm 1 2 840 10040 4 */
3345&(nid_objs[127]),/* OBJ_id_pkix 1 3 6 1 5 5 7 */
3346&(nid_objs[505]),/* OBJ_mime_mhs_headings 1 3 6 1 7 1 1 */
3347&(nid_objs[506]),/* OBJ_mime_mhs_bodies 1 3 6 1 7 1 2 */
3348&(nid_objs[119]),/* OBJ_ripemd160WithRSA 1 3 36 3 3 1 2 */
3349&(nid_objs[631]),/* OBJ_setAttr_GenCryptgrm 2 23 42 3 3 3 1 */
3350&(nid_objs[632]),/* OBJ_setAttr_T2Enc 2 23 42 3 3 4 1 */
3351&(nid_objs[633]),/* OBJ_setAttr_T2cleartxt 2 23 42 3 3 4 2 */
3352&(nid_objs[634]),/* OBJ_setAttr_TokICCsig 2 23 42 3 3 5 1 */
3353&(nid_objs[635]),/* OBJ_setAttr_SecDevSig 2 23 42 3 3 5 2 */
3354&(nid_objs[436]),/* OBJ_ucl 0 9 2342 19200300 */
3355&(nid_objs[ 2]),/* OBJ_pkcs 1 2 840 113549 1 */
3356&(nid_objs[431]),/* OBJ_hold_instruction_none 1 2 840 10040 2 1 */
3357&(nid_objs[432]),/* OBJ_hold_instruction_call_issuer 1 2 840 10040 2 2 */
3358&(nid_objs[433]),/* OBJ_hold_instruction_reject 1 2 840 10040 2 3 */
3359&(nid_objs[116]),/* OBJ_dsa 1 2 840 10040 4 1 */
3360&(nid_objs[113]),/* OBJ_dsaWithSHA1 1 2 840 10040 4 3 */
3361&(nid_objs[406]),/* OBJ_X9_62_prime_field 1 2 840 10045 1 1 */
3362&(nid_objs[407]),/* OBJ_X9_62_characteristic_two_field 1 2 840 10045 1 2 */
3363&(nid_objs[408]),/* OBJ_X9_62_id_ecPublicKey 1 2 840 10045 2 1 */
3364&(nid_objs[416]),/* OBJ_ecdsa_with_SHA1 1 2 840 10045 4 1 */
3365&(nid_objs[258]),/* OBJ_id_pkix_mod 1 3 6 1 5 5 7 0 */
3366&(nid_objs[175]),/* OBJ_id_pe 1 3 6 1 5 5 7 1 */
3367&(nid_objs[259]),/* OBJ_id_qt 1 3 6 1 5 5 7 2 */
3368&(nid_objs[128]),/* OBJ_id_kp 1 3 6 1 5 5 7 3 */
3369&(nid_objs[260]),/* OBJ_id_it 1 3 6 1 5 5 7 4 */
3370&(nid_objs[261]),/* OBJ_id_pkip 1 3 6 1 5 5 7 5 */
3371&(nid_objs[262]),/* OBJ_id_alg 1 3 6 1 5 5 7 6 */
3372&(nid_objs[263]),/* OBJ_id_cmc 1 3 6 1 5 5 7 7 */
3373&(nid_objs[264]),/* OBJ_id_on 1 3 6 1 5 5 7 8 */
3374&(nid_objs[265]),/* OBJ_id_pda 1 3 6 1 5 5 7 9 */
3375&(nid_objs[266]),/* OBJ_id_aca 1 3 6 1 5 5 7 10 */
3376&(nid_objs[267]),/* OBJ_id_qcs 1 3 6 1 5 5 7 11 */
3377&(nid_objs[268]),/* OBJ_id_cct 1 3 6 1 5 5 7 12 */
3378&(nid_objs[662]),/* OBJ_id_ppl 1 3 6 1 5 5 7 21 */
3379&(nid_objs[176]),/* OBJ_id_ad 1 3 6 1 5 5 7 48 */
3380&(nid_objs[507]),/* OBJ_id_hex_partial_message 1 3 6 1 7 1 1 1 */
3381&(nid_objs[508]),/* OBJ_id_hex_multipart_message 1 3 6 1 7 1 1 2 */
3382&(nid_objs[57]),/* OBJ_netscape 2 16 840 1 113730 */
3383&(nid_objs[437]),/* OBJ_pilot 0 9 2342 19200300 100 */
3384&(nid_objs[186]),/* OBJ_pkcs1 1 2 840 113549 1 1 */
3385&(nid_objs[27]),/* OBJ_pkcs3 1 2 840 113549 1 3 */
3386&(nid_objs[187]),/* OBJ_pkcs5 1 2 840 113549 1 5 */
3387&(nid_objs[20]),/* OBJ_pkcs7 1 2 840 113549 1 7 */
3388&(nid_objs[47]),/* OBJ_pkcs9 1 2 840 113549 1 9 */
3389&(nid_objs[ 3]),/* OBJ_md2 1 2 840 113549 2 2 */
3390&(nid_objs[257]),/* OBJ_md4 1 2 840 113549 2 4 */
3391&(nid_objs[ 4]),/* OBJ_md5 1 2 840 113549 2 5 */
3392&(nid_objs[163]),/* OBJ_hmacWithSHA1 1 2 840 113549 2 7 */
3393&(nid_objs[37]),/* OBJ_rc2_cbc 1 2 840 113549 3 2 */
3394&(nid_objs[ 5]),/* OBJ_rc4 1 2 840 113549 3 4 */
3395&(nid_objs[44]),/* OBJ_des_ede3_cbc 1 2 840 113549 3 7 */
3396&(nid_objs[120]),/* OBJ_rc5_cbc 1 2 840 113549 3 8 */
3397&(nid_objs[643]),/* OBJ_des_cdmf 1 2 840 113549 3 10 */
3398&(nid_objs[409]),/* OBJ_X9_62_prime192v1 1 2 840 10045 3 1 1 */
3399&(nid_objs[410]),/* OBJ_X9_62_prime192v2 1 2 840 10045 3 1 2 */
3400&(nid_objs[411]),/* OBJ_X9_62_prime192v3 1 2 840 10045 3 1 3 */
3401&(nid_objs[412]),/* OBJ_X9_62_prime239v1 1 2 840 10045 3 1 4 */
3402&(nid_objs[413]),/* OBJ_X9_62_prime239v2 1 2 840 10045 3 1 5 */
3403&(nid_objs[414]),/* OBJ_X9_62_prime239v3 1 2 840 10045 3 1 6 */
3404&(nid_objs[415]),/* OBJ_X9_62_prime256v1 1 2 840 10045 3 1 7 */
3405&(nid_objs[269]),/* OBJ_id_pkix1_explicit_88 1 3 6 1 5 5 7 0 1 */
3406&(nid_objs[270]),/* OBJ_id_pkix1_implicit_88 1 3 6 1 5 5 7 0 2 */
3407&(nid_objs[271]),/* OBJ_id_pkix1_explicit_93 1 3 6 1 5 5 7 0 3 */
3408&(nid_objs[272]),/* OBJ_id_pkix1_implicit_93 1 3 6 1 5 5 7 0 4 */
3409&(nid_objs[273]),/* OBJ_id_mod_crmf 1 3 6 1 5 5 7 0 5 */
3410&(nid_objs[274]),/* OBJ_id_mod_cmc 1 3 6 1 5 5 7 0 6 */
3411&(nid_objs[275]),/* OBJ_id_mod_kea_profile_88 1 3 6 1 5 5 7 0 7 */
3412&(nid_objs[276]),/* OBJ_id_mod_kea_profile_93 1 3 6 1 5 5 7 0 8 */
3413&(nid_objs[277]),/* OBJ_id_mod_cmp 1 3 6 1 5 5 7 0 9 */
3414&(nid_objs[278]),/* OBJ_id_mod_qualified_cert_88 1 3 6 1 5 5 7 0 10 */
3415&(nid_objs[279]),/* OBJ_id_mod_qualified_cert_93 1 3 6 1 5 5 7 0 11 */
3416&(nid_objs[280]),/* OBJ_id_mod_attribute_cert 1 3 6 1 5 5 7 0 12 */
3417&(nid_objs[281]),/* OBJ_id_mod_timestamp_protocol 1 3 6 1 5 5 7 0 13 */
3418&(nid_objs[282]),/* OBJ_id_mod_ocsp 1 3 6 1 5 5 7 0 14 */
3419&(nid_objs[283]),/* OBJ_id_mod_dvcs 1 3 6 1 5 5 7 0 15 */
3420&(nid_objs[284]),/* OBJ_id_mod_cmp2000 1 3 6 1 5 5 7 0 16 */
3421&(nid_objs[177]),/* OBJ_info_access 1 3 6 1 5 5 7 1 1 */
3422&(nid_objs[285]),/* OBJ_biometricInfo 1 3 6 1 5 5 7 1 2 */
3423&(nid_objs[286]),/* OBJ_qcStatements 1 3 6 1 5 5 7 1 3 */
3424&(nid_objs[287]),/* OBJ_ac_auditEntity 1 3 6 1 5 5 7 1 4 */
3425&(nid_objs[288]),/* OBJ_ac_targeting 1 3 6 1 5 5 7 1 5 */
3426&(nid_objs[289]),/* OBJ_aaControls 1 3 6 1 5 5 7 1 6 */
3427&(nid_objs[290]),/* OBJ_sbgp_ipAddrBlock 1 3 6 1 5 5 7 1 7 */
3428&(nid_objs[291]),/* OBJ_sbgp_autonomousSysNum 1 3 6 1 5 5 7 1 8 */
3429&(nid_objs[292]),/* OBJ_sbgp_routerIdentifier 1 3 6 1 5 5 7 1 9 */
3430&(nid_objs[397]),/* OBJ_ac_proxying 1 3 6 1 5 5 7 1 10 */
3431&(nid_objs[398]),/* OBJ_sinfo_access 1 3 6 1 5 5 7 1 11 */
3432&(nid_objs[663]),/* OBJ_proxyCertInfo 1 3 6 1 5 5 7 1 14 */
3433&(nid_objs[164]),/* OBJ_id_qt_cps 1 3 6 1 5 5 7 2 1 */
3434&(nid_objs[165]),/* OBJ_id_qt_unotice 1 3 6 1 5 5 7 2 2 */
3435&(nid_objs[293]),/* OBJ_textNotice 1 3 6 1 5 5 7 2 3 */
3436&(nid_objs[129]),/* OBJ_server_auth 1 3 6 1 5 5 7 3 1 */
3437&(nid_objs[130]),/* OBJ_client_auth 1 3 6 1 5 5 7 3 2 */
3438&(nid_objs[131]),/* OBJ_code_sign 1 3 6 1 5 5 7 3 3 */
3439&(nid_objs[132]),/* OBJ_email_protect 1 3 6 1 5 5 7 3 4 */
3440&(nid_objs[294]),/* OBJ_ipsecEndSystem 1 3 6 1 5 5 7 3 5 */
3441&(nid_objs[295]),/* OBJ_ipsecTunnel 1 3 6 1 5 5 7 3 6 */
3442&(nid_objs[296]),/* OBJ_ipsecUser 1 3 6 1 5 5 7 3 7 */
3443&(nid_objs[133]),/* OBJ_time_stamp 1 3 6 1 5 5 7 3 8 */
3444&(nid_objs[180]),/* OBJ_OCSP_sign 1 3 6 1 5 5 7 3 9 */
3445&(nid_objs[297]),/* OBJ_dvcs 1 3 6 1 5 5 7 3 10 */
3446&(nid_objs[298]),/* OBJ_id_it_caProtEncCert 1 3 6 1 5 5 7 4 1 */
3447&(nid_objs[299]),/* OBJ_id_it_signKeyPairTypes 1 3 6 1 5 5 7 4 2 */
3448&(nid_objs[300]),/* OBJ_id_it_encKeyPairTypes 1 3 6 1 5 5 7 4 3 */
3449&(nid_objs[301]),/* OBJ_id_it_preferredSymmAlg 1 3 6 1 5 5 7 4 4 */
3450&(nid_objs[302]),/* OBJ_id_it_caKeyUpdateInfo 1 3 6 1 5 5 7 4 5 */
3451&(nid_objs[303]),/* OBJ_id_it_currentCRL 1 3 6 1 5 5 7 4 6 */
3452&(nid_objs[304]),/* OBJ_id_it_unsupportedOIDs 1 3 6 1 5 5 7 4 7 */
3453&(nid_objs[305]),/* OBJ_id_it_subscriptionRequest 1 3 6 1 5 5 7 4 8 */
3454&(nid_objs[306]),/* OBJ_id_it_subscriptionResponse 1 3 6 1 5 5 7 4 9 */
3455&(nid_objs[307]),/* OBJ_id_it_keyPairParamReq 1 3 6 1 5 5 7 4 10 */
3456&(nid_objs[308]),/* OBJ_id_it_keyPairParamRep 1 3 6 1 5 5 7 4 11 */
3457&(nid_objs[309]),/* OBJ_id_it_revPassphrase 1 3 6 1 5 5 7 4 12 */
3458&(nid_objs[310]),/* OBJ_id_it_implicitConfirm 1 3 6 1 5 5 7 4 13 */
3459&(nid_objs[311]),/* OBJ_id_it_confirmWaitTime 1 3 6 1 5 5 7 4 14 */
3460&(nid_objs[312]),/* OBJ_id_it_origPKIMessage 1 3 6 1 5 5 7 4 15 */
3461&(nid_objs[313]),/* OBJ_id_regCtrl 1 3 6 1 5 5 7 5 1 */
3462&(nid_objs[314]),/* OBJ_id_regInfo 1 3 6 1 5 5 7 5 2 */
3463&(nid_objs[323]),/* OBJ_id_alg_des40 1 3 6 1 5 5 7 6 1 */
3464&(nid_objs[324]),/* OBJ_id_alg_noSignature 1 3 6 1 5 5 7 6 2 */
3465&(nid_objs[325]),/* OBJ_id_alg_dh_sig_hmac_sha1 1 3 6 1 5 5 7 6 3 */
3466&(nid_objs[326]),/* OBJ_id_alg_dh_pop 1 3 6 1 5 5 7 6 4 */
3467&(nid_objs[327]),/* OBJ_id_cmc_statusInfo 1 3 6 1 5 5 7 7 1 */
3468&(nid_objs[328]),/* OBJ_id_cmc_identification 1 3 6 1 5 5 7 7 2 */
3469&(nid_objs[329]),/* OBJ_id_cmc_identityProof 1 3 6 1 5 5 7 7 3 */
3470&(nid_objs[330]),/* OBJ_id_cmc_dataReturn 1 3 6 1 5 5 7 7 4 */
3471&(nid_objs[331]),/* OBJ_id_cmc_transactionId 1 3 6 1 5 5 7 7 5 */
3472&(nid_objs[332]),/* OBJ_id_cmc_senderNonce 1 3 6 1 5 5 7 7 6 */
3473&(nid_objs[333]),/* OBJ_id_cmc_recipientNonce 1 3 6 1 5 5 7 7 7 */
3474&(nid_objs[334]),/* OBJ_id_cmc_addExtensions 1 3 6 1 5 5 7 7 8 */
3475&(nid_objs[335]),/* OBJ_id_cmc_encryptedPOP 1 3 6 1 5 5 7 7 9 */
3476&(nid_objs[336]),/* OBJ_id_cmc_decryptedPOP 1 3 6 1 5 5 7 7 10 */
3477&(nid_objs[337]),/* OBJ_id_cmc_lraPOPWitness 1 3 6 1 5 5 7 7 11 */
3478&(nid_objs[338]),/* OBJ_id_cmc_getCert 1 3 6 1 5 5 7 7 15 */
3479&(nid_objs[339]),/* OBJ_id_cmc_getCRL 1 3 6 1 5 5 7 7 16 */
3480&(nid_objs[340]),/* OBJ_id_cmc_revokeRequest 1 3 6 1 5 5 7 7 17 */
3481&(nid_objs[341]),/* OBJ_id_cmc_regInfo 1 3 6 1 5 5 7 7 18 */
3482&(nid_objs[342]),/* OBJ_id_cmc_responseInfo 1 3 6 1 5 5 7 7 19 */
3483&(nid_objs[343]),/* OBJ_id_cmc_queryPending 1 3 6 1 5 5 7 7 21 */
3484&(nid_objs[344]),/* OBJ_id_cmc_popLinkRandom 1 3 6 1 5 5 7 7 22 */
3485&(nid_objs[345]),/* OBJ_id_cmc_popLinkWitness 1 3 6 1 5 5 7 7 23 */
3486&(nid_objs[346]),/* OBJ_id_cmc_confirmCertAcceptance 1 3 6 1 5 5 7 7 24 */
3487&(nid_objs[347]),/* OBJ_id_on_personalData 1 3 6 1 5 5 7 8 1 */
3488&(nid_objs[348]),/* OBJ_id_pda_dateOfBirth 1 3 6 1 5 5 7 9 1 */
3489&(nid_objs[349]),/* OBJ_id_pda_placeOfBirth 1 3 6 1 5 5 7 9 2 */
3490&(nid_objs[351]),/* OBJ_id_pda_gender 1 3 6 1 5 5 7 9 3 */
3491&(nid_objs[352]),/* OBJ_id_pda_countryOfCitizenship 1 3 6 1 5 5 7 9 4 */
3492&(nid_objs[353]),/* OBJ_id_pda_countryOfResidence 1 3 6 1 5 5 7 9 5 */
3493&(nid_objs[354]),/* OBJ_id_aca_authenticationInfo 1 3 6 1 5 5 7 10 1 */
3494&(nid_objs[355]),/* OBJ_id_aca_accessIdentity 1 3 6 1 5 5 7 10 2 */
3495&(nid_objs[356]),/* OBJ_id_aca_chargingIdentity 1 3 6 1 5 5 7 10 3 */
3496&(nid_objs[357]),/* OBJ_id_aca_group 1 3 6 1 5 5 7 10 4 */
3497&(nid_objs[358]),/* OBJ_id_aca_role 1 3 6 1 5 5 7 10 5 */
3498&(nid_objs[399]),/* OBJ_id_aca_encAttrs 1 3 6 1 5 5 7 10 6 */
3499&(nid_objs[359]),/* OBJ_id_qcs_pkixQCSyntax_v1 1 3 6 1 5 5 7 11 1 */
3500&(nid_objs[360]),/* OBJ_id_cct_crs 1 3 6 1 5 5 7 12 1 */
3501&(nid_objs[361]),/* OBJ_id_cct_PKIData 1 3 6 1 5 5 7 12 2 */
3502&(nid_objs[362]),/* OBJ_id_cct_PKIResponse 1 3 6 1 5 5 7 12 3 */
3503&(nid_objs[664]),/* OBJ_id_ppl_anyLanguage 1 3 6 1 5 5 7 21 0 */
3504&(nid_objs[665]),/* OBJ_id_ppl_inheritAll 1 3 6 1 5 5 7 21 1 */
3505&(nid_objs[667]),/* OBJ_Independent 1 3 6 1 5 5 7 21 2 */
3506&(nid_objs[178]),/* OBJ_ad_OCSP 1 3 6 1 5 5 7 48 1 */
3507&(nid_objs[179]),/* OBJ_ad_ca_issuers 1 3 6 1 5 5 7 48 2 */
3508&(nid_objs[363]),/* OBJ_ad_timeStamping 1 3 6 1 5 5 7 48 3 */
3509&(nid_objs[364]),/* OBJ_ad_dvcs 1 3 6 1 5 5 7 48 4 */
3510&(nid_objs[58]),/* OBJ_netscape_cert_extension 2 16 840 1 113730 1 */
3511&(nid_objs[59]),/* OBJ_netscape_data_type 2 16 840 1 113730 2 */
3512&(nid_objs[438]),/* OBJ_pilotAttributeType 0 9 2342 19200300 100 1 */
3513&(nid_objs[439]),/* OBJ_pilotAttributeSyntax 0 9 2342 19200300 100 3 */
3514&(nid_objs[440]),/* OBJ_pilotObjectClass 0 9 2342 19200300 100 4 */
3515&(nid_objs[441]),/* OBJ_pilotGroups 0 9 2342 19200300 100 10 */
3516&(nid_objs[108]),/* OBJ_cast5_cbc 1 2 840 113533 7 66 10 */
3517&(nid_objs[112]),/* OBJ_pbeWithMD5AndCast5_CBC 1 2 840 113533 7 66 12 */
3518&(nid_objs[ 6]),/* OBJ_rsaEncryption 1 2 840 113549 1 1 1 */
3519&(nid_objs[ 7]),/* OBJ_md2WithRSAEncryption 1 2 840 113549 1 1 2 */
3520&(nid_objs[396]),/* OBJ_md4WithRSAEncryption 1 2 840 113549 1 1 3 */
3521&(nid_objs[ 8]),/* OBJ_md5WithRSAEncryption 1 2 840 113549 1 1 4 */
3522&(nid_objs[65]),/* OBJ_sha1WithRSAEncryption 1 2 840 113549 1 1 5 */
3523&(nid_objs[644]),/* OBJ_rsaOAEPEncryptionSET 1 2 840 113549 1 1 6 */
3524&(nid_objs[668]),/* OBJ_sha256WithRSAEncryption 1 2 840 113549 1 1 11 */
3525&(nid_objs[669]),/* OBJ_sha384WithRSAEncryption 1 2 840 113549 1 1 12 */
3526&(nid_objs[670]),/* OBJ_sha512WithRSAEncryption 1 2 840 113549 1 1 13 */
3527&(nid_objs[671]),/* OBJ_sha224WithRSAEncryption 1 2 840 113549 1 1 14 */
3528&(nid_objs[28]),/* OBJ_dhKeyAgreement 1 2 840 113549 1 3 1 */
3529&(nid_objs[ 9]),/* OBJ_pbeWithMD2AndDES_CBC 1 2 840 113549 1 5 1 */
3530&(nid_objs[10]),/* OBJ_pbeWithMD5AndDES_CBC 1 2 840 113549 1 5 3 */
3531&(nid_objs[168]),/* OBJ_pbeWithMD2AndRC2_CBC 1 2 840 113549 1 5 4 */
3532&(nid_objs[169]),/* OBJ_pbeWithMD5AndRC2_CBC 1 2 840 113549 1 5 6 */
3533&(nid_objs[170]),/* OBJ_pbeWithSHA1AndDES_CBC 1 2 840 113549 1 5 10 */
3534&(nid_objs[68]),/* OBJ_pbeWithSHA1AndRC2_CBC 1 2 840 113549 1 5 11 */
3535&(nid_objs[69]),/* OBJ_id_pbkdf2 1 2 840 113549 1 5 12 */
3536&(nid_objs[161]),/* OBJ_pbes2 1 2 840 113549 1 5 13 */
3537&(nid_objs[162]),/* OBJ_pbmac1 1 2 840 113549 1 5 14 */
3538&(nid_objs[21]),/* OBJ_pkcs7_data 1 2 840 113549 1 7 1 */
3539&(nid_objs[22]),/* OBJ_pkcs7_signed 1 2 840 113549 1 7 2 */
3540&(nid_objs[23]),/* OBJ_pkcs7_enveloped 1 2 840 113549 1 7 3 */
3541&(nid_objs[24]),/* OBJ_pkcs7_signedAndEnveloped 1 2 840 113549 1 7 4 */
3542&(nid_objs[25]),/* OBJ_pkcs7_digest 1 2 840 113549 1 7 5 */
3543&(nid_objs[26]),/* OBJ_pkcs7_encrypted 1 2 840 113549 1 7 6 */
3544&(nid_objs[48]),/* OBJ_pkcs9_emailAddress 1 2 840 113549 1 9 1 */
3545&(nid_objs[49]),/* OBJ_pkcs9_unstructuredName 1 2 840 113549 1 9 2 */
3546&(nid_objs[50]),/* OBJ_pkcs9_contentType 1 2 840 113549 1 9 3 */
3547&(nid_objs[51]),/* OBJ_pkcs9_messageDigest 1 2 840 113549 1 9 4 */
3548&(nid_objs[52]),/* OBJ_pkcs9_signingTime 1 2 840 113549 1 9 5 */
3549&(nid_objs[53]),/* OBJ_pkcs9_countersignature 1 2 840 113549 1 9 6 */
3550&(nid_objs[54]),/* OBJ_pkcs9_challengePassword 1 2 840 113549 1 9 7 */
3551&(nid_objs[55]),/* OBJ_pkcs9_unstructuredAddress 1 2 840 113549 1 9 8 */
3552&(nid_objs[56]),/* OBJ_pkcs9_extCertAttributes 1 2 840 113549 1 9 9 */
3553&(nid_objs[172]),/* OBJ_ext_req 1 2 840 113549 1 9 14 */
3554&(nid_objs[167]),/* OBJ_SMIMECapabilities 1 2 840 113549 1 9 15 */
3555&(nid_objs[188]),/* OBJ_SMIME 1 2 840 113549 1 9 16 */
3556&(nid_objs[156]),/* OBJ_friendlyName 1 2 840 113549 1 9 20 */
3557&(nid_objs[157]),/* OBJ_localKeyID 1 2 840 113549 1 9 21 */
3558&(nid_objs[417]),/* OBJ_ms_csp_name 1 3 6 1 4 1 311 17 1 */
3559&(nid_objs[390]),/* OBJ_dcObject 1 3 6 1 4 1 1466 344 */
3560&(nid_objs[91]),/* OBJ_bf_cbc 1 3 6 1 4 1 3029 1 2 */
3561&(nid_objs[315]),/* OBJ_id_regCtrl_regToken 1 3 6 1 5 5 7 5 1 1 */
3562&(nid_objs[316]),/* OBJ_id_regCtrl_authenticator 1 3 6 1 5 5 7 5 1 2 */
3563&(nid_objs[317]),/* OBJ_id_regCtrl_pkiPublicationInfo 1 3 6 1 5 5 7 5 1 3 */
3564&(nid_objs[318]),/* OBJ_id_regCtrl_pkiArchiveOptions 1 3 6 1 5 5 7 5 1 4 */
3565&(nid_objs[319]),/* OBJ_id_regCtrl_oldCertID 1 3 6 1 5 5 7 5 1 5 */
3566&(nid_objs[320]),/* OBJ_id_regCtrl_protocolEncrKey 1 3 6 1 5 5 7 5 1 6 */
3567&(nid_objs[321]),/* OBJ_id_regInfo_utf8Pairs 1 3 6 1 5 5 7 5 2 1 */
3568&(nid_objs[322]),/* OBJ_id_regInfo_certReq 1 3 6 1 5 5 7 5 2 2 */
3569&(nid_objs[365]),/* OBJ_id_pkix_OCSP_basic 1 3 6 1 5 5 7 48 1 1 */
3570&(nid_objs[366]),/* OBJ_id_pkix_OCSP_Nonce 1 3 6 1 5 5 7 48 1 2 */
3571&(nid_objs[367]),/* OBJ_id_pkix_OCSP_CrlID 1 3 6 1 5 5 7 48 1 3 */
3572&(nid_objs[368]),/* OBJ_id_pkix_OCSP_acceptableResponses 1 3 6 1 5 5 7 48 1 4 */
3573&(nid_objs[369]),/* OBJ_id_pkix_OCSP_noCheck 1 3 6 1 5 5 7 48 1 5 */
3574&(nid_objs[370]),/* OBJ_id_pkix_OCSP_archiveCutoff 1 3 6 1 5 5 7 48 1 6 */
3575&(nid_objs[371]),/* OBJ_id_pkix_OCSP_serviceLocator 1 3 6 1 5 5 7 48 1 7 */
3576&(nid_objs[372]),/* OBJ_id_pkix_OCSP_extendedStatus 1 3 6 1 5 5 7 48 1 8 */
3577&(nid_objs[373]),/* OBJ_id_pkix_OCSP_valid 1 3 6 1 5 5 7 48 1 9 */
3578&(nid_objs[374]),/* OBJ_id_pkix_OCSP_path 1 3 6 1 5 5 7 48 1 10 */
3579&(nid_objs[375]),/* OBJ_id_pkix_OCSP_trustRoot 1 3 6 1 5 5 7 48 1 11 */
3580&(nid_objs[418]),/* OBJ_aes_128_ecb 2 16 840 1 101 3 4 1 1 */
3581&(nid_objs[419]),/* OBJ_aes_128_cbc 2 16 840 1 101 3 4 1 2 */
3582&(nid_objs[420]),/* OBJ_aes_128_ofb128 2 16 840 1 101 3 4 1 3 */
3583&(nid_objs[421]),/* OBJ_aes_128_cfb128 2 16 840 1 101 3 4 1 4 */
3584&(nid_objs[422]),/* OBJ_aes_192_ecb 2 16 840 1 101 3 4 1 21 */
3585&(nid_objs[423]),/* OBJ_aes_192_cbc 2 16 840 1 101 3 4 1 22 */
3586&(nid_objs[424]),/* OBJ_aes_192_ofb128 2 16 840 1 101 3 4 1 23 */
3587&(nid_objs[425]),/* OBJ_aes_192_cfb128 2 16 840 1 101 3 4 1 24 */
3588&(nid_objs[426]),/* OBJ_aes_256_ecb 2 16 840 1 101 3 4 1 41 */
3589&(nid_objs[427]),/* OBJ_aes_256_cbc 2 16 840 1 101 3 4 1 42 */
3590&(nid_objs[428]),/* OBJ_aes_256_ofb128 2 16 840 1 101 3 4 1 43 */
3591&(nid_objs[429]),/* OBJ_aes_256_cfb128 2 16 840 1 101 3 4 1 44 */
3592&(nid_objs[672]),/* OBJ_sha256 2 16 840 1 101 3 4 2 1 */
3593&(nid_objs[673]),/* OBJ_sha384 2 16 840 1 101 3 4 2 2 */
3594&(nid_objs[674]),/* OBJ_sha512 2 16 840 1 101 3 4 2 3 */
3595&(nid_objs[675]),/* OBJ_sha224 2 16 840 1 101 3 4 2 4 */
3596&(nid_objs[71]),/* OBJ_netscape_cert_type 2 16 840 1 113730 1 1 */
3597&(nid_objs[72]),/* OBJ_netscape_base_url 2 16 840 1 113730 1 2 */
3598&(nid_objs[73]),/* OBJ_netscape_revocation_url 2 16 840 1 113730 1 3 */
3599&(nid_objs[74]),/* OBJ_netscape_ca_revocation_url 2 16 840 1 113730 1 4 */
3600&(nid_objs[75]),/* OBJ_netscape_renewal_url 2 16 840 1 113730 1 7 */
3601&(nid_objs[76]),/* OBJ_netscape_ca_policy_url 2 16 840 1 113730 1 8 */
3602&(nid_objs[77]),/* OBJ_netscape_ssl_server_name 2 16 840 1 113730 1 12 */
3603&(nid_objs[78]),/* OBJ_netscape_comment 2 16 840 1 113730 1 13 */
3604&(nid_objs[79]),/* OBJ_netscape_cert_sequence 2 16 840 1 113730 2 5 */
3605&(nid_objs[139]),/* OBJ_ns_sgc 2 16 840 1 113730 4 1 */
3606&(nid_objs[458]),/* OBJ_userId 0 9 2342 19200300 100 1 1 */
3607&(nid_objs[459]),/* OBJ_textEncodedORAddress 0 9 2342 19200300 100 1 2 */
3608&(nid_objs[460]),/* OBJ_rfc822Mailbox 0 9 2342 19200300 100 1 3 */
3609&(nid_objs[461]),/* OBJ_info 0 9 2342 19200300 100 1 4 */
3610&(nid_objs[462]),/* OBJ_favouriteDrink 0 9 2342 19200300 100 1 5 */
3611&(nid_objs[463]),/* OBJ_roomNumber 0 9 2342 19200300 100 1 6 */
3612&(nid_objs[464]),/* OBJ_photo 0 9 2342 19200300 100 1 7 */
3613&(nid_objs[465]),/* OBJ_userClass 0 9 2342 19200300 100 1 8 */
3614&(nid_objs[466]),/* OBJ_host 0 9 2342 19200300 100 1 9 */
3615&(nid_objs[467]),/* OBJ_manager 0 9 2342 19200300 100 1 10 */
3616&(nid_objs[468]),/* OBJ_documentIdentifier 0 9 2342 19200300 100 1 11 */
3617&(nid_objs[469]),/* OBJ_documentTitle 0 9 2342 19200300 100 1 12 */
3618&(nid_objs[470]),/* OBJ_documentVersion 0 9 2342 19200300 100 1 13 */
3619&(nid_objs[471]),/* OBJ_documentAuthor 0 9 2342 19200300 100 1 14 */
3620&(nid_objs[472]),/* OBJ_documentLocation 0 9 2342 19200300 100 1 15 */
3621&(nid_objs[473]),/* OBJ_homeTelephoneNumber 0 9 2342 19200300 100 1 20 */
3622&(nid_objs[474]),/* OBJ_secretary 0 9 2342 19200300 100 1 21 */
3623&(nid_objs[475]),/* OBJ_otherMailbox 0 9 2342 19200300 100 1 22 */
3624&(nid_objs[476]),/* OBJ_lastModifiedTime 0 9 2342 19200300 100 1 23 */
3625&(nid_objs[477]),/* OBJ_lastModifiedBy 0 9 2342 19200300 100 1 24 */
3626&(nid_objs[391]),/* OBJ_domainComponent 0 9 2342 19200300 100 1 25 */
3627&(nid_objs[478]),/* OBJ_aRecord 0 9 2342 19200300 100 1 26 */
3628&(nid_objs[479]),/* OBJ_pilotAttributeType27 0 9 2342 19200300 100 1 27 */
3629&(nid_objs[480]),/* OBJ_mXRecord 0 9 2342 19200300 100 1 28 */
3630&(nid_objs[481]),/* OBJ_nSRecord 0 9 2342 19200300 100 1 29 */
3631&(nid_objs[482]),/* OBJ_sOARecord 0 9 2342 19200300 100 1 30 */
3632&(nid_objs[483]),/* OBJ_cNAMERecord 0 9 2342 19200300 100 1 31 */
3633&(nid_objs[484]),/* OBJ_associatedDomain 0 9 2342 19200300 100 1 37 */
3634&(nid_objs[485]),/* OBJ_associatedName 0 9 2342 19200300 100 1 38 */
3635&(nid_objs[486]),/* OBJ_homePostalAddress 0 9 2342 19200300 100 1 39 */
3636&(nid_objs[487]),/* OBJ_personalTitle 0 9 2342 19200300 100 1 40 */
3637&(nid_objs[488]),/* OBJ_mobileTelephoneNumber 0 9 2342 19200300 100 1 41 */
3638&(nid_objs[489]),/* OBJ_pagerTelephoneNumber 0 9 2342 19200300 100 1 42 */
3639&(nid_objs[490]),/* OBJ_friendlyCountryName 0 9 2342 19200300 100 1 43 */
3640&(nid_objs[491]),/* OBJ_organizationalStatus 0 9 2342 19200300 100 1 45 */
3641&(nid_objs[492]),/* OBJ_janetMailbox 0 9 2342 19200300 100 1 46 */
3642&(nid_objs[493]),/* OBJ_mailPreferenceOption 0 9 2342 19200300 100 1 47 */
3643&(nid_objs[494]),/* OBJ_buildingName 0 9 2342 19200300 100 1 48 */
3644&(nid_objs[495]),/* OBJ_dSAQuality 0 9 2342 19200300 100 1 49 */
3645&(nid_objs[496]),/* OBJ_singleLevelQuality 0 9 2342 19200300 100 1 50 */
3646&(nid_objs[497]),/* OBJ_subtreeMinimumQuality 0 9 2342 19200300 100 1 51 */
3647&(nid_objs[498]),/* OBJ_subtreeMaximumQuality 0 9 2342 19200300 100 1 52 */
3648&(nid_objs[499]),/* OBJ_personalSignature 0 9 2342 19200300 100 1 53 */
3649&(nid_objs[500]),/* OBJ_dITRedirect 0 9 2342 19200300 100 1 54 */
3650&(nid_objs[501]),/* OBJ_audio 0 9 2342 19200300 100 1 55 */
3651&(nid_objs[502]),/* OBJ_documentPublisher 0 9 2342 19200300 100 1 56 */
3652&(nid_objs[442]),/* OBJ_iA5StringSyntax 0 9 2342 19200300 100 3 4 */
3653&(nid_objs[443]),/* OBJ_caseIgnoreIA5StringSyntax 0 9 2342 19200300 100 3 5 */
3654&(nid_objs[444]),/* OBJ_pilotObject 0 9 2342 19200300 100 4 3 */
3655&(nid_objs[445]),/* OBJ_pilotPerson 0 9 2342 19200300 100 4 4 */
3656&(nid_objs[446]),/* OBJ_account 0 9 2342 19200300 100 4 5 */
3657&(nid_objs[447]),/* OBJ_document 0 9 2342 19200300 100 4 6 */
3658&(nid_objs[448]),/* OBJ_room 0 9 2342 19200300 100 4 7 */
3659&(nid_objs[449]),/* OBJ_documentSeries 0 9 2342 19200300 100 4 9 */
3660&(nid_objs[392]),/* OBJ_Domain 0 9 2342 19200300 100 4 13 */
3661&(nid_objs[450]),/* OBJ_rFC822localPart 0 9 2342 19200300 100 4 14 */
3662&(nid_objs[451]),/* OBJ_dNSDomain 0 9 2342 19200300 100 4 15 */
3663&(nid_objs[452]),/* OBJ_domainRelatedObject 0 9 2342 19200300 100 4 17 */
3664&(nid_objs[453]),/* OBJ_friendlyCountry 0 9 2342 19200300 100 4 18 */
3665&(nid_objs[454]),/* OBJ_simpleSecurityObject 0 9 2342 19200300 100 4 19 */
3666&(nid_objs[455]),/* OBJ_pilotOrganization 0 9 2342 19200300 100 4 20 */
3667&(nid_objs[456]),/* OBJ_pilotDSA 0 9 2342 19200300 100 4 21 */
3668&(nid_objs[457]),/* OBJ_qualityLabelledData 0 9 2342 19200300 100 4 22 */
3669&(nid_objs[189]),/* OBJ_id_smime_mod 1 2 840 113549 1 9 16 0 */
3670&(nid_objs[190]),/* OBJ_id_smime_ct 1 2 840 113549 1 9 16 1 */
3671&(nid_objs[191]),/* OBJ_id_smime_aa 1 2 840 113549 1 9 16 2 */
3672&(nid_objs[192]),/* OBJ_id_smime_alg 1 2 840 113549 1 9 16 3 */
3673&(nid_objs[193]),/* OBJ_id_smime_cd 1 2 840 113549 1 9 16 4 */
3674&(nid_objs[194]),/* OBJ_id_smime_spq 1 2 840 113549 1 9 16 5 */
3675&(nid_objs[195]),/* OBJ_id_smime_cti 1 2 840 113549 1 9 16 6 */
3676&(nid_objs[158]),/* OBJ_x509Certificate 1 2 840 113549 1 9 22 1 */
3677&(nid_objs[159]),/* OBJ_sdsiCertificate 1 2 840 113549 1 9 22 2 */
3678&(nid_objs[160]),/* OBJ_x509Crl 1 2 840 113549 1 9 23 1 */
3679&(nid_objs[144]),/* OBJ_pbe_WithSHA1And128BitRC4 1 2 840 113549 1 12 1 1 */
3680&(nid_objs[145]),/* OBJ_pbe_WithSHA1And40BitRC4 1 2 840 113549 1 12 1 2 */
3681&(nid_objs[146]),/* OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC 1 2 840 113549 1 12 1 3 */
3682&(nid_objs[147]),/* OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC 1 2 840 113549 1 12 1 4 */
3683&(nid_objs[148]),/* OBJ_pbe_WithSHA1And128BitRC2_CBC 1 2 840 113549 1 12 1 5 */
3684&(nid_objs[149]),/* OBJ_pbe_WithSHA1And40BitRC2_CBC 1 2 840 113549 1 12 1 6 */
3685&(nid_objs[171]),/* OBJ_ms_ext_req 1 3 6 1 4 1 311 2 1 14 */
3686&(nid_objs[134]),/* OBJ_ms_code_ind 1 3 6 1 4 1 311 2 1 21 */
3687&(nid_objs[135]),/* OBJ_ms_code_com 1 3 6 1 4 1 311 2 1 22 */
3688&(nid_objs[136]),/* OBJ_ms_ctl_sign 1 3 6 1 4 1 311 10 3 1 */
3689&(nid_objs[137]),/* OBJ_ms_sgc 1 3 6 1 4 1 311 10 3 3 */
3690&(nid_objs[138]),/* OBJ_ms_efs 1 3 6 1 4 1 311 10 3 4 */
3691&(nid_objs[648]),/* OBJ_ms_smartcard_login 1 3 6 1 4 1 311 20 2 2 */
3692&(nid_objs[649]),/* OBJ_ms_upn 1 3 6 1 4 1 311 20 2 3 */
3693&(nid_objs[196]),/* OBJ_id_smime_mod_cms 1 2 840 113549 1 9 16 0 1 */
3694&(nid_objs[197]),/* OBJ_id_smime_mod_ess 1 2 840 113549 1 9 16 0 2 */
3695&(nid_objs[198]),/* OBJ_id_smime_mod_oid 1 2 840 113549 1 9 16 0 3 */
3696&(nid_objs[199]),/* OBJ_id_smime_mod_msg_v3 1 2 840 113549 1 9 16 0 4 */
3697&(nid_objs[200]),/* OBJ_id_smime_mod_ets_eSignature_88 1 2 840 113549 1 9 16 0 5 */
3698&(nid_objs[201]),/* OBJ_id_smime_mod_ets_eSignature_97 1 2 840 113549 1 9 16 0 6 */
3699&(nid_objs[202]),/* OBJ_id_smime_mod_ets_eSigPolicy_88 1 2 840 113549 1 9 16 0 7 */
3700&(nid_objs[203]),/* OBJ_id_smime_mod_ets_eSigPolicy_97 1 2 840 113549 1 9 16 0 8 */
3701&(nid_objs[204]),/* OBJ_id_smime_ct_receipt 1 2 840 113549 1 9 16 1 1 */
3702&(nid_objs[205]),/* OBJ_id_smime_ct_authData 1 2 840 113549 1 9 16 1 2 */
3703&(nid_objs[206]),/* OBJ_id_smime_ct_publishCert 1 2 840 113549 1 9 16 1 3 */
3704&(nid_objs[207]),/* OBJ_id_smime_ct_TSTInfo 1 2 840 113549 1 9 16 1 4 */
3705&(nid_objs[208]),/* OBJ_id_smime_ct_TDTInfo 1 2 840 113549 1 9 16 1 5 */
3706&(nid_objs[209]),/* OBJ_id_smime_ct_contentInfo 1 2 840 113549 1 9 16 1 6 */
3707&(nid_objs[210]),/* OBJ_id_smime_ct_DVCSRequestData 1 2 840 113549 1 9 16 1 7 */
3708&(nid_objs[211]),/* OBJ_id_smime_ct_DVCSResponseData 1 2 840 113549 1 9 16 1 8 */
3709&(nid_objs[212]),/* OBJ_id_smime_aa_receiptRequest 1 2 840 113549 1 9 16 2 1 */
3710&(nid_objs[213]),/* OBJ_id_smime_aa_securityLabel 1 2 840 113549 1 9 16 2 2 */
3711&(nid_objs[214]),/* OBJ_id_smime_aa_mlExpandHistory 1 2 840 113549 1 9 16 2 3 */
3712&(nid_objs[215]),/* OBJ_id_smime_aa_contentHint 1 2 840 113549 1 9 16 2 4 */
3713&(nid_objs[216]),/* OBJ_id_smime_aa_msgSigDigest 1 2 840 113549 1 9 16 2 5 */
3714&(nid_objs[217]),/* OBJ_id_smime_aa_encapContentType 1 2 840 113549 1 9 16 2 6 */
3715&(nid_objs[218]),/* OBJ_id_smime_aa_contentIdentifier 1 2 840 113549 1 9 16 2 7 */
3716&(nid_objs[219]),/* OBJ_id_smime_aa_macValue 1 2 840 113549 1 9 16 2 8 */
3717&(nid_objs[220]),/* OBJ_id_smime_aa_equivalentLabels 1 2 840 113549 1 9 16 2 9 */
3718&(nid_objs[221]),/* OBJ_id_smime_aa_contentReference 1 2 840 113549 1 9 16 2 10 */
3719&(nid_objs[222]),/* OBJ_id_smime_aa_encrypKeyPref 1 2 840 113549 1 9 16 2 11 */
3720&(nid_objs[223]),/* OBJ_id_smime_aa_signingCertificate 1 2 840 113549 1 9 16 2 12 */
3721&(nid_objs[224]),/* OBJ_id_smime_aa_smimeEncryptCerts 1 2 840 113549 1 9 16 2 13 */
3722&(nid_objs[225]),/* OBJ_id_smime_aa_timeStampToken 1 2 840 113549 1 9 16 2 14 */
3723&(nid_objs[226]),/* OBJ_id_smime_aa_ets_sigPolicyId 1 2 840 113549 1 9 16 2 15 */
3724&(nid_objs[227]),/* OBJ_id_smime_aa_ets_commitmentType 1 2 840 113549 1 9 16 2 16 */
3725&(nid_objs[228]),/* OBJ_id_smime_aa_ets_signerLocation 1 2 840 113549 1 9 16 2 17 */
3726&(nid_objs[229]),/* OBJ_id_smime_aa_ets_signerAttr 1 2 840 113549 1 9 16 2 18 */
3727&(nid_objs[230]),/* OBJ_id_smime_aa_ets_otherSigCert 1 2 840 113549 1 9 16 2 19 */
3728&(nid_objs[231]),/* OBJ_id_smime_aa_ets_contentTimestamp 1 2 840 113549 1 9 16 2 20 */
3729&(nid_objs[232]),/* OBJ_id_smime_aa_ets_CertificateRefs 1 2 840 113549 1 9 16 2 21 */
3730&(nid_objs[233]),/* OBJ_id_smime_aa_ets_RevocationRefs 1 2 840 113549 1 9 16 2 22 */
3731&(nid_objs[234]),/* OBJ_id_smime_aa_ets_certValues 1 2 840 113549 1 9 16 2 23 */
3732&(nid_objs[235]),/* OBJ_id_smime_aa_ets_revocationValues 1 2 840 113549 1 9 16 2 24 */
3733&(nid_objs[236]),/* OBJ_id_smime_aa_ets_escTimeStamp 1 2 840 113549 1 9 16 2 25 */
3734&(nid_objs[237]),/* OBJ_id_smime_aa_ets_certCRLTimestamp 1 2 840 113549 1 9 16 2 26 */
3735&(nid_objs[238]),/* OBJ_id_smime_aa_ets_archiveTimeStamp 1 2 840 113549 1 9 16 2 27 */
3736&(nid_objs[239]),/* OBJ_id_smime_aa_signatureType 1 2 840 113549 1 9 16 2 28 */
3737&(nid_objs[240]),/* OBJ_id_smime_aa_dvcs_dvc 1 2 840 113549 1 9 16 2 29 */
3738&(nid_objs[241]),/* OBJ_id_smime_alg_ESDHwith3DES 1 2 840 113549 1 9 16 3 1 */
3739&(nid_objs[242]),/* OBJ_id_smime_alg_ESDHwithRC2 1 2 840 113549 1 9 16 3 2 */
3740&(nid_objs[243]),/* OBJ_id_smime_alg_3DESwrap 1 2 840 113549 1 9 16 3 3 */
3741&(nid_objs[244]),/* OBJ_id_smime_alg_RC2wrap 1 2 840 113549 1 9 16 3 4 */
3742&(nid_objs[245]),/* OBJ_id_smime_alg_ESDH 1 2 840 113549 1 9 16 3 5 */
3743&(nid_objs[246]),/* OBJ_id_smime_alg_CMS3DESwrap 1 2 840 113549 1 9 16 3 6 */
3744&(nid_objs[247]),/* OBJ_id_smime_alg_CMSRC2wrap 1 2 840 113549 1 9 16 3 7 */
3745&(nid_objs[248]),/* OBJ_id_smime_cd_ldap 1 2 840 113549 1 9 16 4 1 */
3746&(nid_objs[249]),/* OBJ_id_smime_spq_ets_sqt_uri 1 2 840 113549 1 9 16 5 1 */
3747&(nid_objs[250]),/* OBJ_id_smime_spq_ets_sqt_unotice 1 2 840 113549 1 9 16 5 2 */
3748&(nid_objs[251]),/* OBJ_id_smime_cti_ets_proofOfOrigin 1 2 840 113549 1 9 16 6 1 */
3749&(nid_objs[252]),/* OBJ_id_smime_cti_ets_proofOfReceipt 1 2 840 113549 1 9 16 6 2 */
3750&(nid_objs[253]),/* OBJ_id_smime_cti_ets_proofOfDelivery 1 2 840 113549 1 9 16 6 3 */
3751&(nid_objs[254]),/* OBJ_id_smime_cti_ets_proofOfSender 1 2 840 113549 1 9 16 6 4 */
3752&(nid_objs[255]),/* OBJ_id_smime_cti_ets_proofOfApproval 1 2 840 113549 1 9 16 6 5 */
3753&(nid_objs[256]),/* OBJ_id_smime_cti_ets_proofOfCreation 1 2 840 113549 1 9 16 6 6 */
3754&(nid_objs[150]),/* OBJ_keyBag 1 2 840 113549 1 12 10 1 1 */
3755&(nid_objs[151]),/* OBJ_pkcs8ShroudedKeyBag 1 2 840 113549 1 12 10 1 2 */
3756&(nid_objs[152]),/* OBJ_certBag 1 2 840 113549 1 12 10 1 3 */
3757&(nid_objs[153]),/* OBJ_crlBag 1 2 840 113549 1 12 10 1 4 */
3758&(nid_objs[154]),/* OBJ_secretBag 1 2 840 113549 1 12 10 1 5 */
3759&(nid_objs[155]),/* OBJ_safeContentsBag 1 2 840 113549 1 12 10 1 6 */
3760&(nid_objs[34]),/* OBJ_idea_cbc 1 3 6 1 4 1 188 7 1 1 2 */
3761};
3762
diff --git a/src/lib/libssl/src/crypto/objects/obj_err.c b/src/lib/libssl/src/crypto/objects/obj_err.c
index 0682979b38..2b5f43e3cc 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-2004 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
@@ -64,26 +64,22 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_OBJ,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_OBJ,0,reason)
70
71static ERR_STRING_DATA OBJ_str_functs[]= 67static ERR_STRING_DATA OBJ_str_functs[]=
72 { 68 {
73{ERR_FUNC(OBJ_F_OBJ_ADD_OBJECT), "OBJ_add_object"}, 69{ERR_PACK(0,OBJ_F_OBJ_ADD_OBJECT,0), "OBJ_add_object"},
74{ERR_FUNC(OBJ_F_OBJ_CREATE), "OBJ_create"}, 70{ERR_PACK(0,OBJ_F_OBJ_CREATE,0), "OBJ_create"},
75{ERR_FUNC(OBJ_F_OBJ_DUP), "OBJ_dup"}, 71{ERR_PACK(0,OBJ_F_OBJ_DUP,0), "OBJ_dup"},
76{ERR_FUNC(OBJ_F_OBJ_NAME_NEW_INDEX), "OBJ_NAME_new_index"}, 72{ERR_PACK(0,OBJ_F_OBJ_NAME_NEW_INDEX,0), "OBJ_NAME_new_index"},
77{ERR_FUNC(OBJ_F_OBJ_NID2LN), "OBJ_nid2ln"}, 73{ERR_PACK(0,OBJ_F_OBJ_NID2LN,0), "OBJ_nid2ln"},
78{ERR_FUNC(OBJ_F_OBJ_NID2OBJ), "OBJ_nid2obj"}, 74{ERR_PACK(0,OBJ_F_OBJ_NID2OBJ,0), "OBJ_nid2obj"},
79{ERR_FUNC(OBJ_F_OBJ_NID2SN), "OBJ_nid2sn"}, 75{ERR_PACK(0,OBJ_F_OBJ_NID2SN,0), "OBJ_nid2sn"},
80{0,NULL} 76{0,NULL}
81 }; 77 };
82 78
83static ERR_STRING_DATA OBJ_str_reasons[]= 79static ERR_STRING_DATA OBJ_str_reasons[]=
84 { 80 {
85{ERR_REASON(OBJ_R_MALLOC_FAILURE) ,"malloc failure"}, 81{OBJ_R_MALLOC_FAILURE ,"malloc failure"},
86{ERR_REASON(OBJ_R_UNKNOWN_NID) ,"unknown nid"}, 82{OBJ_R_UNKNOWN_NID ,"unknown nid"},
87{0,NULL} 83{0,NULL}
88 }; 84 };
89 85
@@ -97,8 +93,8 @@ void ERR_load_OBJ_strings(void)
97 { 93 {
98 init=0; 94 init=0;
99#ifndef OPENSSL_NO_ERR 95#ifndef OPENSSL_NO_ERR
100 ERR_load_strings(0,OBJ_str_functs); 96 ERR_load_strings(ERR_LIB_OBJ,OBJ_str_functs);
101 ERR_load_strings(0,OBJ_str_reasons); 97 ERR_load_strings(ERR_LIB_OBJ,OBJ_str_reasons);
102#endif 98#endif
103 99
104 } 100 }
diff --git a/src/lib/libssl/src/crypto/objects/obj_mac.h b/src/lib/libssl/src/crypto/objects/obj_mac.h
deleted file mode 100644
index 51bb50047f..0000000000
--- a/src/lib/libssl/src/crypto/objects/obj_mac.h
+++ /dev/null
@@ -1,2987 +0,0 @@
1/* crypto/objects/obj_mac.h */
2
3/* THIS FILE IS GENERATED FROM objects.txt by objects.pl via the
4 * following command:
5 * perl objects.pl objects.txt obj_mac.num obj_mac.h
6 */
7
8/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
9 * All rights reserved.
10 *
11 * This package is an SSL implementation written
12 * by Eric Young (eay@cryptsoft.com).
13 * The implementation was written so as to conform with Netscapes SSL.
14 *
15 * This library is free for commercial and non-commercial use as long as
16 * the following conditions are aheared to. The following conditions
17 * apply to all code found in this distribution, be it the RC4, RSA,
18 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
19 * included with this distribution is covered by the same copyright terms
20 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
21 *
22 * Copyright remains Eric Young's, and as such any Copyright notices in
23 * the code are not to be removed.
24 * If this package is used in a product, Eric Young should be given attribution
25 * as the author of the parts of the library used.
26 * This can be in the form of a textual message at program startup or
27 * in documentation (online or textual) provided with the package.
28 *
29 * Redistribution and use in source and binary forms, with or without
30 * modification, are permitted provided that the following conditions
31 * are met:
32 * 1. Redistributions of source code must retain the copyright
33 * notice, this list of conditions and the following disclaimer.
34 * 2. Redistributions in binary form must reproduce the above copyright
35 * notice, this list of conditions and the following disclaimer in the
36 * documentation and/or other materials provided with the distribution.
37 * 3. All advertising materials mentioning features or use of this software
38 * must display the following acknowledgement:
39 * "This product includes cryptographic software written by
40 * Eric Young (eay@cryptsoft.com)"
41 * The word 'cryptographic' can be left out if the rouines from the library
42 * being used are not cryptographic related :-).
43 * 4. If you include any Windows specific code (or a derivative thereof) from
44 * the apps directory (application code) you must include an acknowledgement:
45 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
46 *
47 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
48 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
49 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
50 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
51 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
52 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
53 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
54 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
55 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
56 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
57 * SUCH DAMAGE.
58 *
59 * The licence and distribution terms for any publically available version or
60 * derivative of this code cannot be changed. i.e. this code cannot simply be
61 * copied and put under another distribution licence
62 * [including the GNU Public Licence.]
63 */
64
65#define SN_undef "UNDEF"
66#define LN_undef "undefined"
67#define NID_undef 0
68#define OBJ_undef 0L
69
70#define SN_ccitt "CCITT"
71#define LN_ccitt "ccitt"
72#define NID_ccitt 404
73#define OBJ_ccitt 0L
74
75#define SN_iso "ISO"
76#define LN_iso "iso"
77#define NID_iso 181
78#define OBJ_iso 1L
79
80#define SN_joint_iso_ccitt "JOINT-ISO-CCITT"
81#define LN_joint_iso_ccitt "joint-iso-ccitt"
82#define NID_joint_iso_ccitt 393
83#define OBJ_joint_iso_ccitt 2L
84
85#define SN_member_body "member-body"
86#define LN_member_body "ISO Member Body"
87#define NID_member_body 182
88#define OBJ_member_body OBJ_iso,2L
89
90#define SN_selected_attribute_types "selected-attribute-types"
91#define LN_selected_attribute_types "Selected Attribute Types"
92#define NID_selected_attribute_types 394
93#define OBJ_selected_attribute_types OBJ_joint_iso_ccitt,5L,1L,5L
94
95#define SN_clearance "clearance"
96#define NID_clearance 395
97#define OBJ_clearance OBJ_selected_attribute_types,55L
98
99#define SN_ISO_US "ISO-US"
100#define LN_ISO_US "ISO US Member Body"
101#define NID_ISO_US 183
102#define OBJ_ISO_US OBJ_member_body,840L
103
104#define SN_X9_57 "X9-57"
105#define LN_X9_57 "X9.57"
106#define NID_X9_57 184
107#define OBJ_X9_57 OBJ_ISO_US,10040L
108
109#define SN_X9cm "X9cm"
110#define LN_X9cm "X9.57 CM ?"
111#define NID_X9cm 185
112#define OBJ_X9cm OBJ_X9_57,4L
113
114#define SN_dsa "DSA"
115#define LN_dsa "dsaEncryption"
116#define NID_dsa 116
117#define OBJ_dsa OBJ_X9cm,1L
118
119#define SN_dsaWithSHA1 "DSA-SHA1"
120#define LN_dsaWithSHA1 "dsaWithSHA1"
121#define NID_dsaWithSHA1 113
122#define OBJ_dsaWithSHA1 OBJ_X9cm,3L
123
124#define SN_ansi_X9_62 "ansi-X9-62"
125#define LN_ansi_X9_62 "ANSI X9.62"
126#define NID_ansi_X9_62 405
127#define OBJ_ansi_X9_62 OBJ_ISO_US,10045L
128
129#define OBJ_X9_62_id_fieldType OBJ_ansi_X9_62,1L
130
131#define SN_X9_62_prime_field "prime-field"
132#define NID_X9_62_prime_field 406
133#define OBJ_X9_62_prime_field OBJ_X9_62_id_fieldType,1L
134
135#define SN_X9_62_characteristic_two_field "characteristic-two-field"
136#define NID_X9_62_characteristic_two_field 407
137#define OBJ_X9_62_characteristic_two_field OBJ_X9_62_id_fieldType,2L
138
139#define OBJ_X9_62_id_publicKeyType OBJ_ansi_X9_62,2L
140
141#define SN_X9_62_id_ecPublicKey "id-ecPublicKey"
142#define NID_X9_62_id_ecPublicKey 408
143#define OBJ_X9_62_id_ecPublicKey OBJ_X9_62_id_publicKeyType,1L
144
145#define OBJ_X9_62_ellipticCurve OBJ_ansi_X9_62,3L
146
147#define OBJ_X9_62_c_TwoCurve OBJ_X9_62_ellipticCurve,0L
148
149#define OBJ_X9_62_primeCurve OBJ_X9_62_ellipticCurve,1L
150
151#define SN_X9_62_prime192v1 "prime192v1"
152#define NID_X9_62_prime192v1 409
153#define OBJ_X9_62_prime192v1 OBJ_X9_62_primeCurve,1L
154
155#define SN_X9_62_prime192v2 "prime192v2"
156#define NID_X9_62_prime192v2 410
157#define OBJ_X9_62_prime192v2 OBJ_X9_62_primeCurve,2L
158
159#define SN_X9_62_prime192v3 "prime192v3"
160#define NID_X9_62_prime192v3 411
161#define OBJ_X9_62_prime192v3 OBJ_X9_62_primeCurve,3L
162
163#define SN_X9_62_prime239v1 "prime239v1"
164#define NID_X9_62_prime239v1 412
165#define OBJ_X9_62_prime239v1 OBJ_X9_62_primeCurve,4L
166
167#define SN_X9_62_prime239v2 "prime239v2"
168#define NID_X9_62_prime239v2 413
169#define OBJ_X9_62_prime239v2 OBJ_X9_62_primeCurve,5L
170
171#define SN_X9_62_prime239v3 "prime239v3"
172#define NID_X9_62_prime239v3 414
173#define OBJ_X9_62_prime239v3 OBJ_X9_62_primeCurve,6L
174
175#define SN_X9_62_prime256v1 "prime256v1"
176#define NID_X9_62_prime256v1 415
177#define OBJ_X9_62_prime256v1 OBJ_X9_62_primeCurve,7L
178
179#define OBJ_X9_62_id_ecSigType OBJ_ansi_X9_62,4L
180
181#define SN_ecdsa_with_SHA1 "ecdsa-with-SHA1"
182#define NID_ecdsa_with_SHA1 416
183#define OBJ_ecdsa_with_SHA1 OBJ_X9_62_id_ecSigType,1L
184
185#define SN_cast5_cbc "CAST5-CBC"
186#define LN_cast5_cbc "cast5-cbc"
187#define NID_cast5_cbc 108
188#define OBJ_cast5_cbc OBJ_ISO_US,113533L,7L,66L,10L
189
190#define SN_cast5_ecb "CAST5-ECB"
191#define LN_cast5_ecb "cast5-ecb"
192#define NID_cast5_ecb 109
193
194#define SN_cast5_cfb64 "CAST5-CFB"
195#define LN_cast5_cfb64 "cast5-cfb"
196#define NID_cast5_cfb64 110
197
198#define SN_cast5_ofb64 "CAST5-OFB"
199#define LN_cast5_ofb64 "cast5-ofb"
200#define NID_cast5_ofb64 111
201
202#define LN_pbeWithMD5AndCast5_CBC "pbeWithMD5AndCast5CBC"
203#define NID_pbeWithMD5AndCast5_CBC 112
204#define OBJ_pbeWithMD5AndCast5_CBC OBJ_ISO_US,113533L,7L,66L,12L
205
206#define SN_rsadsi "rsadsi"
207#define LN_rsadsi "RSA Data Security, Inc."
208#define NID_rsadsi 1
209#define OBJ_rsadsi OBJ_ISO_US,113549L
210
211#define SN_pkcs "pkcs"
212#define LN_pkcs "RSA Data Security, Inc. PKCS"
213#define NID_pkcs 2
214#define OBJ_pkcs OBJ_rsadsi,1L
215
216#define SN_pkcs1 "pkcs1"
217#define NID_pkcs1 186
218#define OBJ_pkcs1 OBJ_pkcs,1L
219
220#define LN_rsaEncryption "rsaEncryption"
221#define NID_rsaEncryption 6
222#define OBJ_rsaEncryption OBJ_pkcs1,1L
223
224#define SN_md2WithRSAEncryption "RSA-MD2"
225#define LN_md2WithRSAEncryption "md2WithRSAEncryption"
226#define NID_md2WithRSAEncryption 7
227#define OBJ_md2WithRSAEncryption OBJ_pkcs1,2L
228
229#define SN_md4WithRSAEncryption "RSA-MD4"
230#define LN_md4WithRSAEncryption "md4WithRSAEncryption"
231#define NID_md4WithRSAEncryption 396
232#define OBJ_md4WithRSAEncryption OBJ_pkcs1,3L
233
234#define SN_md5WithRSAEncryption "RSA-MD5"
235#define LN_md5WithRSAEncryption "md5WithRSAEncryption"
236#define NID_md5WithRSAEncryption 8
237#define OBJ_md5WithRSAEncryption OBJ_pkcs1,4L
238
239#define SN_sha1WithRSAEncryption "RSA-SHA1"
240#define LN_sha1WithRSAEncryption "sha1WithRSAEncryption"
241#define NID_sha1WithRSAEncryption 65
242#define OBJ_sha1WithRSAEncryption OBJ_pkcs1,5L
243
244#define SN_sha256WithRSAEncryption "RSA-SHA256"
245#define LN_sha256WithRSAEncryption "sha256WithRSAEncryption"
246#define NID_sha256WithRSAEncryption 668
247#define OBJ_sha256WithRSAEncryption OBJ_pkcs1,11L
248
249#define SN_sha384WithRSAEncryption "RSA-SHA384"
250#define LN_sha384WithRSAEncryption "sha384WithRSAEncryption"
251#define NID_sha384WithRSAEncryption 669
252#define OBJ_sha384WithRSAEncryption OBJ_pkcs1,12L
253
254#define SN_sha512WithRSAEncryption "RSA-SHA512"
255#define LN_sha512WithRSAEncryption "sha512WithRSAEncryption"
256#define NID_sha512WithRSAEncryption 670
257#define OBJ_sha512WithRSAEncryption OBJ_pkcs1,13L
258
259#define SN_sha224WithRSAEncryption "RSA-SHA224"
260#define LN_sha224WithRSAEncryption "sha224WithRSAEncryption"
261#define NID_sha224WithRSAEncryption 671
262#define OBJ_sha224WithRSAEncryption OBJ_pkcs1,14L
263
264#define SN_pkcs3 "pkcs3"
265#define NID_pkcs3 27
266#define OBJ_pkcs3 OBJ_pkcs,3L
267
268#define LN_dhKeyAgreement "dhKeyAgreement"
269#define NID_dhKeyAgreement 28
270#define OBJ_dhKeyAgreement OBJ_pkcs3,1L
271
272#define SN_pkcs5 "pkcs5"
273#define NID_pkcs5 187
274#define OBJ_pkcs5 OBJ_pkcs,5L
275
276#define SN_pbeWithMD2AndDES_CBC "PBE-MD2-DES"
277#define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC"
278#define NID_pbeWithMD2AndDES_CBC 9
279#define OBJ_pbeWithMD2AndDES_CBC OBJ_pkcs5,1L
280
281#define SN_pbeWithMD5AndDES_CBC "PBE-MD5-DES"
282#define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC"
283#define NID_pbeWithMD5AndDES_CBC 10
284#define OBJ_pbeWithMD5AndDES_CBC OBJ_pkcs5,3L
285
286#define SN_pbeWithMD2AndRC2_CBC "PBE-MD2-RC2-64"
287#define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC"
288#define NID_pbeWithMD2AndRC2_CBC 168
289#define OBJ_pbeWithMD2AndRC2_CBC OBJ_pkcs5,4L
290
291#define SN_pbeWithMD5AndRC2_CBC "PBE-MD5-RC2-64"
292#define LN_pbeWithMD5AndRC2_CBC "pbeWithMD5AndRC2-CBC"
293#define NID_pbeWithMD5AndRC2_CBC 169
294#define OBJ_pbeWithMD5AndRC2_CBC OBJ_pkcs5,6L
295
296#define SN_pbeWithSHA1AndDES_CBC "PBE-SHA1-DES"
297#define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC"
298#define NID_pbeWithSHA1AndDES_CBC 170
299#define OBJ_pbeWithSHA1AndDES_CBC OBJ_pkcs5,10L
300
301#define SN_pbeWithSHA1AndRC2_CBC "PBE-SHA1-RC2-64"
302#define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC"
303#define NID_pbeWithSHA1AndRC2_CBC 68
304#define OBJ_pbeWithSHA1AndRC2_CBC OBJ_pkcs5,11L
305
306#define LN_id_pbkdf2 "PBKDF2"
307#define NID_id_pbkdf2 69
308#define OBJ_id_pbkdf2 OBJ_pkcs5,12L
309
310#define LN_pbes2 "PBES2"
311#define NID_pbes2 161
312#define OBJ_pbes2 OBJ_pkcs5,13L
313
314#define LN_pbmac1 "PBMAC1"
315#define NID_pbmac1 162
316#define OBJ_pbmac1 OBJ_pkcs5,14L
317
318#define SN_pkcs7 "pkcs7"
319#define NID_pkcs7 20
320#define OBJ_pkcs7 OBJ_pkcs,7L
321
322#define LN_pkcs7_data "pkcs7-data"
323#define NID_pkcs7_data 21
324#define OBJ_pkcs7_data OBJ_pkcs7,1L
325
326#define LN_pkcs7_signed "pkcs7-signedData"
327#define NID_pkcs7_signed 22
328#define OBJ_pkcs7_signed OBJ_pkcs7,2L
329
330#define LN_pkcs7_enveloped "pkcs7-envelopedData"
331#define NID_pkcs7_enveloped 23
332#define OBJ_pkcs7_enveloped OBJ_pkcs7,3L
333
334#define LN_pkcs7_signedAndEnveloped "pkcs7-signedAndEnvelopedData"
335#define NID_pkcs7_signedAndEnveloped 24
336#define OBJ_pkcs7_signedAndEnveloped OBJ_pkcs7,4L
337
338#define LN_pkcs7_digest "pkcs7-digestData"
339#define NID_pkcs7_digest 25
340#define OBJ_pkcs7_digest OBJ_pkcs7,5L
341
342#define LN_pkcs7_encrypted "pkcs7-encryptedData"
343#define NID_pkcs7_encrypted 26
344#define OBJ_pkcs7_encrypted OBJ_pkcs7,6L
345
346#define SN_pkcs9 "pkcs9"
347#define NID_pkcs9 47
348#define OBJ_pkcs9 OBJ_pkcs,9L
349
350#define LN_pkcs9_emailAddress "emailAddress"
351#define NID_pkcs9_emailAddress 48
352#define OBJ_pkcs9_emailAddress OBJ_pkcs9,1L
353
354#define LN_pkcs9_unstructuredName "unstructuredName"
355#define NID_pkcs9_unstructuredName 49
356#define OBJ_pkcs9_unstructuredName OBJ_pkcs9,2L
357
358#define LN_pkcs9_contentType "contentType"
359#define NID_pkcs9_contentType 50
360#define OBJ_pkcs9_contentType OBJ_pkcs9,3L
361
362#define LN_pkcs9_messageDigest "messageDigest"
363#define NID_pkcs9_messageDigest 51
364#define OBJ_pkcs9_messageDigest OBJ_pkcs9,4L
365
366#define LN_pkcs9_signingTime "signingTime"
367#define NID_pkcs9_signingTime 52
368#define OBJ_pkcs9_signingTime OBJ_pkcs9,5L
369
370#define LN_pkcs9_countersignature "countersignature"
371#define NID_pkcs9_countersignature 53
372#define OBJ_pkcs9_countersignature OBJ_pkcs9,6L
373
374#define LN_pkcs9_challengePassword "challengePassword"
375#define NID_pkcs9_challengePassword 54
376#define OBJ_pkcs9_challengePassword OBJ_pkcs9,7L
377
378#define LN_pkcs9_unstructuredAddress "unstructuredAddress"
379#define NID_pkcs9_unstructuredAddress 55
380#define OBJ_pkcs9_unstructuredAddress OBJ_pkcs9,8L
381
382#define LN_pkcs9_extCertAttributes "extendedCertificateAttributes"
383#define NID_pkcs9_extCertAttributes 56
384#define OBJ_pkcs9_extCertAttributes OBJ_pkcs9,9L
385
386#define SN_ext_req "extReq"
387#define LN_ext_req "Extension Request"
388#define NID_ext_req 172
389#define OBJ_ext_req OBJ_pkcs9,14L
390
391#define SN_SMIMECapabilities "SMIME-CAPS"
392#define LN_SMIMECapabilities "S/MIME Capabilities"
393#define NID_SMIMECapabilities 167
394#define OBJ_SMIMECapabilities OBJ_pkcs9,15L
395
396#define SN_SMIME "SMIME"
397#define LN_SMIME "S/MIME"
398#define NID_SMIME 188
399#define OBJ_SMIME OBJ_pkcs9,16L
400
401#define SN_id_smime_mod "id-smime-mod"
402#define NID_id_smime_mod 189
403#define OBJ_id_smime_mod OBJ_SMIME,0L
404
405#define SN_id_smime_ct "id-smime-ct"
406#define NID_id_smime_ct 190
407#define OBJ_id_smime_ct OBJ_SMIME,1L
408
409#define SN_id_smime_aa "id-smime-aa"
410#define NID_id_smime_aa 191
411#define OBJ_id_smime_aa OBJ_SMIME,2L
412
413#define SN_id_smime_alg "id-smime-alg"
414#define NID_id_smime_alg 192
415#define OBJ_id_smime_alg OBJ_SMIME,3L
416
417#define SN_id_smime_cd "id-smime-cd"
418#define NID_id_smime_cd 193
419#define OBJ_id_smime_cd OBJ_SMIME,4L
420
421#define SN_id_smime_spq "id-smime-spq"
422#define NID_id_smime_spq 194
423#define OBJ_id_smime_spq OBJ_SMIME,5L
424
425#define SN_id_smime_cti "id-smime-cti"
426#define NID_id_smime_cti 195
427#define OBJ_id_smime_cti OBJ_SMIME,6L
428
429#define SN_id_smime_mod_cms "id-smime-mod-cms"
430#define NID_id_smime_mod_cms 196
431#define OBJ_id_smime_mod_cms OBJ_id_smime_mod,1L
432
433#define SN_id_smime_mod_ess "id-smime-mod-ess"
434#define NID_id_smime_mod_ess 197
435#define OBJ_id_smime_mod_ess OBJ_id_smime_mod,2L
436
437#define SN_id_smime_mod_oid "id-smime-mod-oid"
438#define NID_id_smime_mod_oid 198
439#define OBJ_id_smime_mod_oid OBJ_id_smime_mod,3L
440
441#define SN_id_smime_mod_msg_v3 "id-smime-mod-msg-v3"
442#define NID_id_smime_mod_msg_v3 199
443#define OBJ_id_smime_mod_msg_v3 OBJ_id_smime_mod,4L
444
445#define SN_id_smime_mod_ets_eSignature_88 "id-smime-mod-ets-eSignature-88"
446#define NID_id_smime_mod_ets_eSignature_88 200
447#define OBJ_id_smime_mod_ets_eSignature_88 OBJ_id_smime_mod,5L
448
449#define SN_id_smime_mod_ets_eSignature_97 "id-smime-mod-ets-eSignature-97"
450#define NID_id_smime_mod_ets_eSignature_97 201
451#define OBJ_id_smime_mod_ets_eSignature_97 OBJ_id_smime_mod,6L
452
453#define SN_id_smime_mod_ets_eSigPolicy_88 "id-smime-mod-ets-eSigPolicy-88"
454#define NID_id_smime_mod_ets_eSigPolicy_88 202
455#define OBJ_id_smime_mod_ets_eSigPolicy_88 OBJ_id_smime_mod,7L
456
457#define SN_id_smime_mod_ets_eSigPolicy_97 "id-smime-mod-ets-eSigPolicy-97"
458#define NID_id_smime_mod_ets_eSigPolicy_97 203
459#define OBJ_id_smime_mod_ets_eSigPolicy_97 OBJ_id_smime_mod,8L
460
461#define SN_id_smime_ct_receipt "id-smime-ct-receipt"
462#define NID_id_smime_ct_receipt 204
463#define OBJ_id_smime_ct_receipt OBJ_id_smime_ct,1L
464
465#define SN_id_smime_ct_authData "id-smime-ct-authData"
466#define NID_id_smime_ct_authData 205
467#define OBJ_id_smime_ct_authData OBJ_id_smime_ct,2L
468
469#define SN_id_smime_ct_publishCert "id-smime-ct-publishCert"
470#define NID_id_smime_ct_publishCert 206
471#define OBJ_id_smime_ct_publishCert OBJ_id_smime_ct,3L
472
473#define SN_id_smime_ct_TSTInfo "id-smime-ct-TSTInfo"
474#define NID_id_smime_ct_TSTInfo 207
475#define OBJ_id_smime_ct_TSTInfo OBJ_id_smime_ct,4L
476
477#define SN_id_smime_ct_TDTInfo "id-smime-ct-TDTInfo"
478#define NID_id_smime_ct_TDTInfo 208
479#define OBJ_id_smime_ct_TDTInfo OBJ_id_smime_ct,5L
480
481#define SN_id_smime_ct_contentInfo "id-smime-ct-contentInfo"
482#define NID_id_smime_ct_contentInfo 209
483#define OBJ_id_smime_ct_contentInfo OBJ_id_smime_ct,6L
484
485#define SN_id_smime_ct_DVCSRequestData "id-smime-ct-DVCSRequestData"
486#define NID_id_smime_ct_DVCSRequestData 210
487#define OBJ_id_smime_ct_DVCSRequestData OBJ_id_smime_ct,7L
488
489#define SN_id_smime_ct_DVCSResponseData "id-smime-ct-DVCSResponseData"
490#define NID_id_smime_ct_DVCSResponseData 211
491#define OBJ_id_smime_ct_DVCSResponseData OBJ_id_smime_ct,8L
492
493#define SN_id_smime_aa_receiptRequest "id-smime-aa-receiptRequest"
494#define NID_id_smime_aa_receiptRequest 212
495#define OBJ_id_smime_aa_receiptRequest OBJ_id_smime_aa,1L
496
497#define SN_id_smime_aa_securityLabel "id-smime-aa-securityLabel"
498#define NID_id_smime_aa_securityLabel 213
499#define OBJ_id_smime_aa_securityLabel OBJ_id_smime_aa,2L
500
501#define SN_id_smime_aa_mlExpandHistory "id-smime-aa-mlExpandHistory"
502#define NID_id_smime_aa_mlExpandHistory 214
503#define OBJ_id_smime_aa_mlExpandHistory OBJ_id_smime_aa,3L
504
505#define SN_id_smime_aa_contentHint "id-smime-aa-contentHint"
506#define NID_id_smime_aa_contentHint 215
507#define OBJ_id_smime_aa_contentHint OBJ_id_smime_aa,4L
508
509#define SN_id_smime_aa_msgSigDigest "id-smime-aa-msgSigDigest"
510#define NID_id_smime_aa_msgSigDigest 216
511#define OBJ_id_smime_aa_msgSigDigest OBJ_id_smime_aa,5L
512
513#define SN_id_smime_aa_encapContentType "id-smime-aa-encapContentType"
514#define NID_id_smime_aa_encapContentType 217
515#define OBJ_id_smime_aa_encapContentType OBJ_id_smime_aa,6L
516
517#define SN_id_smime_aa_contentIdentifier "id-smime-aa-contentIdentifier"
518#define NID_id_smime_aa_contentIdentifier 218
519#define OBJ_id_smime_aa_contentIdentifier OBJ_id_smime_aa,7L
520
521#define SN_id_smime_aa_macValue "id-smime-aa-macValue"
522#define NID_id_smime_aa_macValue 219
523#define OBJ_id_smime_aa_macValue OBJ_id_smime_aa,8L
524
525#define SN_id_smime_aa_equivalentLabels "id-smime-aa-equivalentLabels"
526#define NID_id_smime_aa_equivalentLabels 220
527#define OBJ_id_smime_aa_equivalentLabels OBJ_id_smime_aa,9L
528
529#define SN_id_smime_aa_contentReference "id-smime-aa-contentReference"
530#define NID_id_smime_aa_contentReference 221
531#define OBJ_id_smime_aa_contentReference OBJ_id_smime_aa,10L
532
533#define SN_id_smime_aa_encrypKeyPref "id-smime-aa-encrypKeyPref"
534#define NID_id_smime_aa_encrypKeyPref 222
535#define OBJ_id_smime_aa_encrypKeyPref OBJ_id_smime_aa,11L
536
537#define SN_id_smime_aa_signingCertificate "id-smime-aa-signingCertificate"
538#define NID_id_smime_aa_signingCertificate 223
539#define OBJ_id_smime_aa_signingCertificate OBJ_id_smime_aa,12L
540
541#define SN_id_smime_aa_smimeEncryptCerts "id-smime-aa-smimeEncryptCerts"
542#define NID_id_smime_aa_smimeEncryptCerts 224
543#define OBJ_id_smime_aa_smimeEncryptCerts OBJ_id_smime_aa,13L
544
545#define SN_id_smime_aa_timeStampToken "id-smime-aa-timeStampToken"
546#define NID_id_smime_aa_timeStampToken 225
547#define OBJ_id_smime_aa_timeStampToken OBJ_id_smime_aa,14L
548
549#define SN_id_smime_aa_ets_sigPolicyId "id-smime-aa-ets-sigPolicyId"
550#define NID_id_smime_aa_ets_sigPolicyId 226
551#define OBJ_id_smime_aa_ets_sigPolicyId OBJ_id_smime_aa,15L
552
553#define SN_id_smime_aa_ets_commitmentType "id-smime-aa-ets-commitmentType"
554#define NID_id_smime_aa_ets_commitmentType 227
555#define OBJ_id_smime_aa_ets_commitmentType OBJ_id_smime_aa,16L
556
557#define SN_id_smime_aa_ets_signerLocation "id-smime-aa-ets-signerLocation"
558#define NID_id_smime_aa_ets_signerLocation 228
559#define OBJ_id_smime_aa_ets_signerLocation OBJ_id_smime_aa,17L
560
561#define SN_id_smime_aa_ets_signerAttr "id-smime-aa-ets-signerAttr"
562#define NID_id_smime_aa_ets_signerAttr 229
563#define OBJ_id_smime_aa_ets_signerAttr OBJ_id_smime_aa,18L
564
565#define SN_id_smime_aa_ets_otherSigCert "id-smime-aa-ets-otherSigCert"
566#define NID_id_smime_aa_ets_otherSigCert 230
567#define OBJ_id_smime_aa_ets_otherSigCert OBJ_id_smime_aa,19L
568
569#define SN_id_smime_aa_ets_contentTimestamp "id-smime-aa-ets-contentTimestamp"
570#define NID_id_smime_aa_ets_contentTimestamp 231
571#define OBJ_id_smime_aa_ets_contentTimestamp OBJ_id_smime_aa,20L
572
573#define SN_id_smime_aa_ets_CertificateRefs "id-smime-aa-ets-CertificateRefs"
574#define NID_id_smime_aa_ets_CertificateRefs 232
575#define OBJ_id_smime_aa_ets_CertificateRefs OBJ_id_smime_aa,21L
576
577#define SN_id_smime_aa_ets_RevocationRefs "id-smime-aa-ets-RevocationRefs"
578#define NID_id_smime_aa_ets_RevocationRefs 233
579#define OBJ_id_smime_aa_ets_RevocationRefs OBJ_id_smime_aa,22L
580
581#define SN_id_smime_aa_ets_certValues "id-smime-aa-ets-certValues"
582#define NID_id_smime_aa_ets_certValues 234
583#define OBJ_id_smime_aa_ets_certValues OBJ_id_smime_aa,23L
584
585#define SN_id_smime_aa_ets_revocationValues "id-smime-aa-ets-revocationValues"
586#define NID_id_smime_aa_ets_revocationValues 235
587#define OBJ_id_smime_aa_ets_revocationValues OBJ_id_smime_aa,24L
588
589#define SN_id_smime_aa_ets_escTimeStamp "id-smime-aa-ets-escTimeStamp"
590#define NID_id_smime_aa_ets_escTimeStamp 236
591#define OBJ_id_smime_aa_ets_escTimeStamp OBJ_id_smime_aa,25L
592
593#define SN_id_smime_aa_ets_certCRLTimestamp "id-smime-aa-ets-certCRLTimestamp"
594#define NID_id_smime_aa_ets_certCRLTimestamp 237
595#define OBJ_id_smime_aa_ets_certCRLTimestamp OBJ_id_smime_aa,26L
596
597#define SN_id_smime_aa_ets_archiveTimeStamp "id-smime-aa-ets-archiveTimeStamp"
598#define NID_id_smime_aa_ets_archiveTimeStamp 238
599#define OBJ_id_smime_aa_ets_archiveTimeStamp OBJ_id_smime_aa,27L
600
601#define SN_id_smime_aa_signatureType "id-smime-aa-signatureType"
602#define NID_id_smime_aa_signatureType 239
603#define OBJ_id_smime_aa_signatureType OBJ_id_smime_aa,28L
604
605#define SN_id_smime_aa_dvcs_dvc "id-smime-aa-dvcs-dvc"
606#define NID_id_smime_aa_dvcs_dvc 240
607#define OBJ_id_smime_aa_dvcs_dvc OBJ_id_smime_aa,29L
608
609#define SN_id_smime_alg_ESDHwith3DES "id-smime-alg-ESDHwith3DES"
610#define NID_id_smime_alg_ESDHwith3DES 241
611#define OBJ_id_smime_alg_ESDHwith3DES OBJ_id_smime_alg,1L
612
613#define SN_id_smime_alg_ESDHwithRC2 "id-smime-alg-ESDHwithRC2"
614#define NID_id_smime_alg_ESDHwithRC2 242
615#define OBJ_id_smime_alg_ESDHwithRC2 OBJ_id_smime_alg,2L
616
617#define SN_id_smime_alg_3DESwrap "id-smime-alg-3DESwrap"
618#define NID_id_smime_alg_3DESwrap 243
619#define OBJ_id_smime_alg_3DESwrap OBJ_id_smime_alg,3L
620
621#define SN_id_smime_alg_RC2wrap "id-smime-alg-RC2wrap"
622#define NID_id_smime_alg_RC2wrap 244
623#define OBJ_id_smime_alg_RC2wrap OBJ_id_smime_alg,4L
624
625#define SN_id_smime_alg_ESDH "id-smime-alg-ESDH"
626#define NID_id_smime_alg_ESDH 245
627#define OBJ_id_smime_alg_ESDH OBJ_id_smime_alg,5L
628
629#define SN_id_smime_alg_CMS3DESwrap "id-smime-alg-CMS3DESwrap"
630#define NID_id_smime_alg_CMS3DESwrap 246
631#define OBJ_id_smime_alg_CMS3DESwrap OBJ_id_smime_alg,6L
632
633#define SN_id_smime_alg_CMSRC2wrap "id-smime-alg-CMSRC2wrap"
634#define NID_id_smime_alg_CMSRC2wrap 247
635#define OBJ_id_smime_alg_CMSRC2wrap OBJ_id_smime_alg,7L
636
637#define SN_id_smime_cd_ldap "id-smime-cd-ldap"
638#define NID_id_smime_cd_ldap 248
639#define OBJ_id_smime_cd_ldap OBJ_id_smime_cd,1L
640
641#define SN_id_smime_spq_ets_sqt_uri "id-smime-spq-ets-sqt-uri"
642#define NID_id_smime_spq_ets_sqt_uri 249
643#define OBJ_id_smime_spq_ets_sqt_uri OBJ_id_smime_spq,1L
644
645#define SN_id_smime_spq_ets_sqt_unotice "id-smime-spq-ets-sqt-unotice"
646#define NID_id_smime_spq_ets_sqt_unotice 250
647#define OBJ_id_smime_spq_ets_sqt_unotice OBJ_id_smime_spq,2L
648
649#define SN_id_smime_cti_ets_proofOfOrigin "id-smime-cti-ets-proofOfOrigin"
650#define NID_id_smime_cti_ets_proofOfOrigin 251
651#define OBJ_id_smime_cti_ets_proofOfOrigin OBJ_id_smime_cti,1L
652
653#define SN_id_smime_cti_ets_proofOfReceipt "id-smime-cti-ets-proofOfReceipt"
654#define NID_id_smime_cti_ets_proofOfReceipt 252
655#define OBJ_id_smime_cti_ets_proofOfReceipt OBJ_id_smime_cti,2L
656
657#define SN_id_smime_cti_ets_proofOfDelivery "id-smime-cti-ets-proofOfDelivery"
658#define NID_id_smime_cti_ets_proofOfDelivery 253
659#define OBJ_id_smime_cti_ets_proofOfDelivery OBJ_id_smime_cti,3L
660
661#define SN_id_smime_cti_ets_proofOfSender "id-smime-cti-ets-proofOfSender"
662#define NID_id_smime_cti_ets_proofOfSender 254
663#define OBJ_id_smime_cti_ets_proofOfSender OBJ_id_smime_cti,4L
664
665#define SN_id_smime_cti_ets_proofOfApproval "id-smime-cti-ets-proofOfApproval"
666#define NID_id_smime_cti_ets_proofOfApproval 255
667#define OBJ_id_smime_cti_ets_proofOfApproval OBJ_id_smime_cti,5L
668
669#define SN_id_smime_cti_ets_proofOfCreation "id-smime-cti-ets-proofOfCreation"
670#define NID_id_smime_cti_ets_proofOfCreation 256
671#define OBJ_id_smime_cti_ets_proofOfCreation OBJ_id_smime_cti,6L
672
673#define LN_friendlyName "friendlyName"
674#define NID_friendlyName 156
675#define OBJ_friendlyName OBJ_pkcs9,20L
676
677#define LN_localKeyID "localKeyID"
678#define NID_localKeyID 157
679#define OBJ_localKeyID OBJ_pkcs9,21L
680
681#define SN_ms_csp_name "CSPName"
682#define LN_ms_csp_name "Microsoft CSP Name"
683#define NID_ms_csp_name 417
684#define OBJ_ms_csp_name 1L,3L,6L,1L,4L,1L,311L,17L,1L
685
686#define OBJ_certTypes OBJ_pkcs9,22L
687
688#define LN_x509Certificate "x509Certificate"
689#define NID_x509Certificate 158
690#define OBJ_x509Certificate OBJ_certTypes,1L
691
692#define LN_sdsiCertificate "sdsiCertificate"
693#define NID_sdsiCertificate 159
694#define OBJ_sdsiCertificate OBJ_certTypes,2L
695
696#define OBJ_crlTypes OBJ_pkcs9,23L
697
698#define LN_x509Crl "x509Crl"
699#define NID_x509Crl 160
700#define OBJ_x509Crl OBJ_crlTypes,1L
701
702#define OBJ_pkcs12 OBJ_pkcs,12L
703
704#define OBJ_pkcs12_pbeids OBJ_pkcs12,1L
705
706#define SN_pbe_WithSHA1And128BitRC4 "PBE-SHA1-RC4-128"
707#define LN_pbe_WithSHA1And128BitRC4 "pbeWithSHA1And128BitRC4"
708#define NID_pbe_WithSHA1And128BitRC4 144
709#define OBJ_pbe_WithSHA1And128BitRC4 OBJ_pkcs12_pbeids,1L
710
711#define SN_pbe_WithSHA1And40BitRC4 "PBE-SHA1-RC4-40"
712#define LN_pbe_WithSHA1And40BitRC4 "pbeWithSHA1And40BitRC4"
713#define NID_pbe_WithSHA1And40BitRC4 145
714#define OBJ_pbe_WithSHA1And40BitRC4 OBJ_pkcs12_pbeids,2L
715
716#define SN_pbe_WithSHA1And3_Key_TripleDES_CBC "PBE-SHA1-3DES"
717#define LN_pbe_WithSHA1And3_Key_TripleDES_CBC "pbeWithSHA1And3-KeyTripleDES-CBC"
718#define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 146
719#define OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC OBJ_pkcs12_pbeids,3L
720
721#define SN_pbe_WithSHA1And2_Key_TripleDES_CBC "PBE-SHA1-2DES"
722#define LN_pbe_WithSHA1And2_Key_TripleDES_CBC "pbeWithSHA1And2-KeyTripleDES-CBC"
723#define NID_pbe_WithSHA1And2_Key_TripleDES_CBC 147
724#define OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC OBJ_pkcs12_pbeids,4L
725
726#define SN_pbe_WithSHA1And128BitRC2_CBC "PBE-SHA1-RC2-128"
727#define LN_pbe_WithSHA1And128BitRC2_CBC "pbeWithSHA1And128BitRC2-CBC"
728#define NID_pbe_WithSHA1And128BitRC2_CBC 148
729#define OBJ_pbe_WithSHA1And128BitRC2_CBC OBJ_pkcs12_pbeids,5L
730
731#define SN_pbe_WithSHA1And40BitRC2_CBC "PBE-SHA1-RC2-40"
732#define LN_pbe_WithSHA1And40BitRC2_CBC "pbeWithSHA1And40BitRC2-CBC"
733#define NID_pbe_WithSHA1And40BitRC2_CBC 149
734#define OBJ_pbe_WithSHA1And40BitRC2_CBC OBJ_pkcs12_pbeids,6L
735
736#define OBJ_pkcs12_Version1 OBJ_pkcs12,10L
737
738#define OBJ_pkcs12_BagIds OBJ_pkcs12_Version1,1L
739
740#define LN_keyBag "keyBag"
741#define NID_keyBag 150
742#define OBJ_keyBag OBJ_pkcs12_BagIds,1L
743
744#define LN_pkcs8ShroudedKeyBag "pkcs8ShroudedKeyBag"
745#define NID_pkcs8ShroudedKeyBag 151
746#define OBJ_pkcs8ShroudedKeyBag OBJ_pkcs12_BagIds,2L
747
748#define LN_certBag "certBag"
749#define NID_certBag 152
750#define OBJ_certBag OBJ_pkcs12_BagIds,3L
751
752#define LN_crlBag "crlBag"
753#define NID_crlBag 153
754#define OBJ_crlBag OBJ_pkcs12_BagIds,4L
755
756#define LN_secretBag "secretBag"
757#define NID_secretBag 154
758#define OBJ_secretBag OBJ_pkcs12_BagIds,5L
759
760#define LN_safeContentsBag "safeContentsBag"
761#define NID_safeContentsBag 155
762#define OBJ_safeContentsBag OBJ_pkcs12_BagIds,6L
763
764#define SN_md2 "MD2"
765#define LN_md2 "md2"
766#define NID_md2 3
767#define OBJ_md2 OBJ_rsadsi,2L,2L
768
769#define SN_md4 "MD4"
770#define LN_md4 "md4"
771#define NID_md4 257
772#define OBJ_md4 OBJ_rsadsi,2L,4L
773
774#define SN_md5 "MD5"
775#define LN_md5 "md5"
776#define NID_md5 4
777#define OBJ_md5 OBJ_rsadsi,2L,5L
778
779#define SN_md5_sha1 "MD5-SHA1"
780#define LN_md5_sha1 "md5-sha1"
781#define NID_md5_sha1 114
782
783#define LN_hmacWithSHA1 "hmacWithSHA1"
784#define NID_hmacWithSHA1 163
785#define OBJ_hmacWithSHA1 OBJ_rsadsi,2L,7L
786
787#define SN_rc2_cbc "RC2-CBC"
788#define LN_rc2_cbc "rc2-cbc"
789#define NID_rc2_cbc 37
790#define OBJ_rc2_cbc OBJ_rsadsi,3L,2L
791
792#define SN_rc2_ecb "RC2-ECB"
793#define LN_rc2_ecb "rc2-ecb"
794#define NID_rc2_ecb 38
795
796#define SN_rc2_cfb64 "RC2-CFB"
797#define LN_rc2_cfb64 "rc2-cfb"
798#define NID_rc2_cfb64 39
799
800#define SN_rc2_ofb64 "RC2-OFB"
801#define LN_rc2_ofb64 "rc2-ofb"
802#define NID_rc2_ofb64 40
803
804#define SN_rc2_40_cbc "RC2-40-CBC"
805#define LN_rc2_40_cbc "rc2-40-cbc"
806#define NID_rc2_40_cbc 98
807
808#define SN_rc2_64_cbc "RC2-64-CBC"
809#define LN_rc2_64_cbc "rc2-64-cbc"
810#define NID_rc2_64_cbc 166
811
812#define SN_rc4 "RC4"
813#define LN_rc4 "rc4"
814#define NID_rc4 5
815#define OBJ_rc4 OBJ_rsadsi,3L,4L
816
817#define SN_rc4_40 "RC4-40"
818#define LN_rc4_40 "rc4-40"
819#define NID_rc4_40 97
820
821#define SN_des_ede3_cbc "DES-EDE3-CBC"
822#define LN_des_ede3_cbc "des-ede3-cbc"
823#define NID_des_ede3_cbc 44
824#define OBJ_des_ede3_cbc OBJ_rsadsi,3L,7L
825
826#define SN_rc5_cbc "RC5-CBC"
827#define LN_rc5_cbc "rc5-cbc"
828#define NID_rc5_cbc 120
829#define OBJ_rc5_cbc OBJ_rsadsi,3L,8L
830
831#define SN_rc5_ecb "RC5-ECB"
832#define LN_rc5_ecb "rc5-ecb"
833#define NID_rc5_ecb 121
834
835#define SN_rc5_cfb64 "RC5-CFB"
836#define LN_rc5_cfb64 "rc5-cfb"
837#define NID_rc5_cfb64 122
838
839#define SN_rc5_ofb64 "RC5-OFB"
840#define LN_rc5_ofb64 "rc5-ofb"
841#define NID_rc5_ofb64 123
842
843#define SN_ms_ext_req "msExtReq"
844#define LN_ms_ext_req "Microsoft Extension Request"
845#define NID_ms_ext_req 171
846#define OBJ_ms_ext_req 1L,3L,6L,1L,4L,1L,311L,2L,1L,14L
847
848#define SN_ms_code_ind "msCodeInd"
849#define LN_ms_code_ind "Microsoft Individual Code Signing"
850#define NID_ms_code_ind 134
851#define OBJ_ms_code_ind 1L,3L,6L,1L,4L,1L,311L,2L,1L,21L
852
853#define SN_ms_code_com "msCodeCom"
854#define LN_ms_code_com "Microsoft Commercial Code Signing"
855#define NID_ms_code_com 135
856#define OBJ_ms_code_com 1L,3L,6L,1L,4L,1L,311L,2L,1L,22L
857
858#define SN_ms_ctl_sign "msCTLSign"
859#define LN_ms_ctl_sign "Microsoft Trust List Signing"
860#define NID_ms_ctl_sign 136
861#define OBJ_ms_ctl_sign 1L,3L,6L,1L,4L,1L,311L,10L,3L,1L
862
863#define SN_ms_sgc "msSGC"
864#define LN_ms_sgc "Microsoft Server Gated Crypto"
865#define NID_ms_sgc 137
866#define OBJ_ms_sgc 1L,3L,6L,1L,4L,1L,311L,10L,3L,3L
867
868#define SN_ms_efs "msEFS"
869#define LN_ms_efs "Microsoft Encrypted File System"
870#define NID_ms_efs 138
871#define OBJ_ms_efs 1L,3L,6L,1L,4L,1L,311L,10L,3L,4L
872
873#define SN_ms_smartcard_login "msSmartcardLogin"
874#define LN_ms_smartcard_login "Microsoft Smartcardlogin"
875#define NID_ms_smartcard_login 648
876#define OBJ_ms_smartcard_login 1L,3L,6L,1L,4L,1L,311L,20L,2L,2L
877
878#define SN_ms_upn "msUPN"
879#define LN_ms_upn "Microsoft Universal Principal Name"
880#define NID_ms_upn 649
881#define OBJ_ms_upn 1L,3L,6L,1L,4L,1L,311L,20L,2L,3L
882
883#define SN_idea_cbc "IDEA-CBC"
884#define LN_idea_cbc "idea-cbc"
885#define NID_idea_cbc 34
886#define OBJ_idea_cbc 1L,3L,6L,1L,4L,1L,188L,7L,1L,1L,2L
887
888#define SN_idea_ecb "IDEA-ECB"
889#define LN_idea_ecb "idea-ecb"
890#define NID_idea_ecb 36
891
892#define SN_idea_cfb64 "IDEA-CFB"
893#define LN_idea_cfb64 "idea-cfb"
894#define NID_idea_cfb64 35
895
896#define SN_idea_ofb64 "IDEA-OFB"
897#define LN_idea_ofb64 "idea-ofb"
898#define NID_idea_ofb64 46
899
900#define SN_bf_cbc "BF-CBC"
901#define LN_bf_cbc "bf-cbc"
902#define NID_bf_cbc 91
903#define OBJ_bf_cbc 1L,3L,6L,1L,4L,1L,3029L,1L,2L
904
905#define SN_bf_ecb "BF-ECB"
906#define LN_bf_ecb "bf-ecb"
907#define NID_bf_ecb 92
908
909#define SN_bf_cfb64 "BF-CFB"
910#define LN_bf_cfb64 "bf-cfb"
911#define NID_bf_cfb64 93
912
913#define SN_bf_ofb64 "BF-OFB"
914#define LN_bf_ofb64 "bf-ofb"
915#define NID_bf_ofb64 94
916
917#define SN_id_pkix "PKIX"
918#define NID_id_pkix 127
919#define OBJ_id_pkix 1L,3L,6L,1L,5L,5L,7L
920
921#define SN_id_pkix_mod "id-pkix-mod"
922#define NID_id_pkix_mod 258
923#define OBJ_id_pkix_mod OBJ_id_pkix,0L
924
925#define SN_id_pe "id-pe"
926#define NID_id_pe 175
927#define OBJ_id_pe OBJ_id_pkix,1L
928
929#define SN_id_qt "id-qt"
930#define NID_id_qt 259
931#define OBJ_id_qt OBJ_id_pkix,2L
932
933#define SN_id_kp "id-kp"
934#define NID_id_kp 128
935#define OBJ_id_kp OBJ_id_pkix,3L
936
937#define SN_id_it "id-it"
938#define NID_id_it 260
939#define OBJ_id_it OBJ_id_pkix,4L
940
941#define SN_id_pkip "id-pkip"
942#define NID_id_pkip 261
943#define OBJ_id_pkip OBJ_id_pkix,5L
944
945#define SN_id_alg "id-alg"
946#define NID_id_alg 262
947#define OBJ_id_alg OBJ_id_pkix,6L
948
949#define SN_id_cmc "id-cmc"
950#define NID_id_cmc 263
951#define OBJ_id_cmc OBJ_id_pkix,7L
952
953#define SN_id_on "id-on"
954#define NID_id_on 264
955#define OBJ_id_on OBJ_id_pkix,8L
956
957#define SN_id_pda "id-pda"
958#define NID_id_pda 265
959#define OBJ_id_pda OBJ_id_pkix,9L
960
961#define SN_id_aca "id-aca"
962#define NID_id_aca 266
963#define OBJ_id_aca OBJ_id_pkix,10L
964
965#define SN_id_qcs "id-qcs"
966#define NID_id_qcs 267
967#define OBJ_id_qcs OBJ_id_pkix,11L
968
969#define SN_id_cct "id-cct"
970#define NID_id_cct 268
971#define OBJ_id_cct OBJ_id_pkix,12L
972
973#define SN_id_ppl "id-ppl"
974#define NID_id_ppl 662
975#define OBJ_id_ppl OBJ_id_pkix,21L
976
977#define SN_id_ad "id-ad"
978#define NID_id_ad 176
979#define OBJ_id_ad OBJ_id_pkix,48L
980
981#define SN_id_pkix1_explicit_88 "id-pkix1-explicit-88"
982#define NID_id_pkix1_explicit_88 269
983#define OBJ_id_pkix1_explicit_88 OBJ_id_pkix_mod,1L
984
985#define SN_id_pkix1_implicit_88 "id-pkix1-implicit-88"
986#define NID_id_pkix1_implicit_88 270
987#define OBJ_id_pkix1_implicit_88 OBJ_id_pkix_mod,2L
988
989#define SN_id_pkix1_explicit_93 "id-pkix1-explicit-93"
990#define NID_id_pkix1_explicit_93 271
991#define OBJ_id_pkix1_explicit_93 OBJ_id_pkix_mod,3L
992
993#define SN_id_pkix1_implicit_93 "id-pkix1-implicit-93"
994#define NID_id_pkix1_implicit_93 272
995#define OBJ_id_pkix1_implicit_93 OBJ_id_pkix_mod,4L
996
997#define SN_id_mod_crmf "id-mod-crmf"
998#define NID_id_mod_crmf 273
999#define OBJ_id_mod_crmf OBJ_id_pkix_mod,5L
1000
1001#define SN_id_mod_cmc "id-mod-cmc"
1002#define NID_id_mod_cmc 274
1003#define OBJ_id_mod_cmc OBJ_id_pkix_mod,6L
1004
1005#define SN_id_mod_kea_profile_88 "id-mod-kea-profile-88"
1006#define NID_id_mod_kea_profile_88 275
1007#define OBJ_id_mod_kea_profile_88 OBJ_id_pkix_mod,7L
1008
1009#define SN_id_mod_kea_profile_93 "id-mod-kea-profile-93"
1010#define NID_id_mod_kea_profile_93 276
1011#define OBJ_id_mod_kea_profile_93 OBJ_id_pkix_mod,8L
1012
1013#define SN_id_mod_cmp "id-mod-cmp"
1014#define NID_id_mod_cmp 277
1015#define OBJ_id_mod_cmp OBJ_id_pkix_mod,9L
1016
1017#define SN_id_mod_qualified_cert_88 "id-mod-qualified-cert-88"
1018#define NID_id_mod_qualified_cert_88 278
1019#define OBJ_id_mod_qualified_cert_88 OBJ_id_pkix_mod,10L
1020
1021#define SN_id_mod_qualified_cert_93 "id-mod-qualified-cert-93"
1022#define NID_id_mod_qualified_cert_93 279
1023#define OBJ_id_mod_qualified_cert_93 OBJ_id_pkix_mod,11L
1024
1025#define SN_id_mod_attribute_cert "id-mod-attribute-cert"
1026#define NID_id_mod_attribute_cert 280
1027#define OBJ_id_mod_attribute_cert OBJ_id_pkix_mod,12L
1028
1029#define SN_id_mod_timestamp_protocol "id-mod-timestamp-protocol"
1030#define NID_id_mod_timestamp_protocol 281
1031#define OBJ_id_mod_timestamp_protocol OBJ_id_pkix_mod,13L
1032
1033#define SN_id_mod_ocsp "id-mod-ocsp"
1034#define NID_id_mod_ocsp 282
1035#define OBJ_id_mod_ocsp OBJ_id_pkix_mod,14L
1036
1037#define SN_id_mod_dvcs "id-mod-dvcs"
1038#define NID_id_mod_dvcs 283
1039#define OBJ_id_mod_dvcs OBJ_id_pkix_mod,15L
1040
1041#define SN_id_mod_cmp2000 "id-mod-cmp2000"
1042#define NID_id_mod_cmp2000 284
1043#define OBJ_id_mod_cmp2000 OBJ_id_pkix_mod,16L
1044
1045#define SN_info_access "authorityInfoAccess"
1046#define LN_info_access "Authority Information Access"
1047#define NID_info_access 177
1048#define OBJ_info_access OBJ_id_pe,1L
1049
1050#define SN_biometricInfo "biometricInfo"
1051#define LN_biometricInfo "Biometric Info"
1052#define NID_biometricInfo 285
1053#define OBJ_biometricInfo OBJ_id_pe,2L
1054
1055#define SN_qcStatements "qcStatements"
1056#define NID_qcStatements 286
1057#define OBJ_qcStatements OBJ_id_pe,3L
1058
1059#define SN_ac_auditEntity "ac-auditEntity"
1060#define NID_ac_auditEntity 287
1061#define OBJ_ac_auditEntity OBJ_id_pe,4L
1062
1063#define SN_ac_targeting "ac-targeting"
1064#define NID_ac_targeting 288
1065#define OBJ_ac_targeting OBJ_id_pe,5L
1066
1067#define SN_aaControls "aaControls"
1068#define NID_aaControls 289
1069#define OBJ_aaControls OBJ_id_pe,6L
1070
1071#define SN_sbgp_ipAddrBlock "sbgp-ipAddrBlock"
1072#define NID_sbgp_ipAddrBlock 290
1073#define OBJ_sbgp_ipAddrBlock OBJ_id_pe,7L
1074
1075#define SN_sbgp_autonomousSysNum "sbgp-autonomousSysNum"
1076#define NID_sbgp_autonomousSysNum 291
1077#define OBJ_sbgp_autonomousSysNum OBJ_id_pe,8L
1078
1079#define SN_sbgp_routerIdentifier "sbgp-routerIdentifier"
1080#define NID_sbgp_routerIdentifier 292
1081#define OBJ_sbgp_routerIdentifier OBJ_id_pe,9L
1082
1083#define SN_ac_proxying "ac-proxying"
1084#define NID_ac_proxying 397
1085#define OBJ_ac_proxying OBJ_id_pe,10L
1086
1087#define SN_sinfo_access "subjectInfoAccess"
1088#define LN_sinfo_access "Subject Information Access"
1089#define NID_sinfo_access 398
1090#define OBJ_sinfo_access OBJ_id_pe,11L
1091
1092#define SN_proxyCertInfo "proxyCertInfo"
1093#define LN_proxyCertInfo "Proxy Certificate Information"
1094#define NID_proxyCertInfo 663
1095#define OBJ_proxyCertInfo OBJ_id_pe,14L
1096
1097#define SN_id_qt_cps "id-qt-cps"
1098#define LN_id_qt_cps "Policy Qualifier CPS"
1099#define NID_id_qt_cps 164
1100#define OBJ_id_qt_cps OBJ_id_qt,1L
1101
1102#define SN_id_qt_unotice "id-qt-unotice"
1103#define LN_id_qt_unotice "Policy Qualifier User Notice"
1104#define NID_id_qt_unotice 165
1105#define OBJ_id_qt_unotice OBJ_id_qt,2L
1106
1107#define SN_textNotice "textNotice"
1108#define NID_textNotice 293
1109#define OBJ_textNotice OBJ_id_qt,3L
1110
1111#define SN_server_auth "serverAuth"
1112#define LN_server_auth "TLS Web Server Authentication"
1113#define NID_server_auth 129
1114#define OBJ_server_auth OBJ_id_kp,1L
1115
1116#define SN_client_auth "clientAuth"
1117#define LN_client_auth "TLS Web Client Authentication"
1118#define NID_client_auth 130
1119#define OBJ_client_auth OBJ_id_kp,2L
1120
1121#define SN_code_sign "codeSigning"
1122#define LN_code_sign "Code Signing"
1123#define NID_code_sign 131
1124#define OBJ_code_sign OBJ_id_kp,3L
1125
1126#define SN_email_protect "emailProtection"
1127#define LN_email_protect "E-mail Protection"
1128#define NID_email_protect 132
1129#define OBJ_email_protect OBJ_id_kp,4L
1130
1131#define SN_ipsecEndSystem "ipsecEndSystem"
1132#define LN_ipsecEndSystem "IPSec End System"
1133#define NID_ipsecEndSystem 294
1134#define OBJ_ipsecEndSystem OBJ_id_kp,5L
1135
1136#define SN_ipsecTunnel "ipsecTunnel"
1137#define LN_ipsecTunnel "IPSec Tunnel"
1138#define NID_ipsecTunnel 295
1139#define OBJ_ipsecTunnel OBJ_id_kp,6L
1140
1141#define SN_ipsecUser "ipsecUser"
1142#define LN_ipsecUser "IPSec User"
1143#define NID_ipsecUser 296
1144#define OBJ_ipsecUser OBJ_id_kp,7L
1145
1146#define SN_time_stamp "timeStamping"
1147#define LN_time_stamp "Time Stamping"
1148#define NID_time_stamp 133
1149#define OBJ_time_stamp OBJ_id_kp,8L
1150
1151#define SN_OCSP_sign "OCSPSigning"
1152#define LN_OCSP_sign "OCSP Signing"
1153#define NID_OCSP_sign 180
1154#define OBJ_OCSP_sign OBJ_id_kp,9L
1155
1156#define SN_dvcs "DVCS"
1157#define LN_dvcs "dvcs"
1158#define NID_dvcs 297
1159#define OBJ_dvcs OBJ_id_kp,10L
1160
1161#define SN_id_it_caProtEncCert "id-it-caProtEncCert"
1162#define NID_id_it_caProtEncCert 298
1163#define OBJ_id_it_caProtEncCert OBJ_id_it,1L
1164
1165#define SN_id_it_signKeyPairTypes "id-it-signKeyPairTypes"
1166#define NID_id_it_signKeyPairTypes 299
1167#define OBJ_id_it_signKeyPairTypes OBJ_id_it,2L
1168
1169#define SN_id_it_encKeyPairTypes "id-it-encKeyPairTypes"
1170#define NID_id_it_encKeyPairTypes 300
1171#define OBJ_id_it_encKeyPairTypes OBJ_id_it,3L
1172
1173#define SN_id_it_preferredSymmAlg "id-it-preferredSymmAlg"
1174#define NID_id_it_preferredSymmAlg 301
1175#define OBJ_id_it_preferredSymmAlg OBJ_id_it,4L
1176
1177#define SN_id_it_caKeyUpdateInfo "id-it-caKeyUpdateInfo"
1178#define NID_id_it_caKeyUpdateInfo 302
1179#define OBJ_id_it_caKeyUpdateInfo OBJ_id_it,5L
1180
1181#define SN_id_it_currentCRL "id-it-currentCRL"
1182#define NID_id_it_currentCRL 303
1183#define OBJ_id_it_currentCRL OBJ_id_it,6L
1184
1185#define SN_id_it_unsupportedOIDs "id-it-unsupportedOIDs"
1186#define NID_id_it_unsupportedOIDs 304
1187#define OBJ_id_it_unsupportedOIDs OBJ_id_it,7L
1188
1189#define SN_id_it_subscriptionRequest "id-it-subscriptionRequest"
1190#define NID_id_it_subscriptionRequest 305
1191#define OBJ_id_it_subscriptionRequest OBJ_id_it,8L
1192
1193#define SN_id_it_subscriptionResponse "id-it-subscriptionResponse"
1194#define NID_id_it_subscriptionResponse 306
1195#define OBJ_id_it_subscriptionResponse OBJ_id_it,9L
1196
1197#define SN_id_it_keyPairParamReq "id-it-keyPairParamReq"
1198#define NID_id_it_keyPairParamReq 307
1199#define OBJ_id_it_keyPairParamReq OBJ_id_it,10L
1200
1201#define SN_id_it_keyPairParamRep "id-it-keyPairParamRep"
1202#define NID_id_it_keyPairParamRep 308
1203#define OBJ_id_it_keyPairParamRep OBJ_id_it,11L
1204
1205#define SN_id_it_revPassphrase "id-it-revPassphrase"
1206#define NID_id_it_revPassphrase 309
1207#define OBJ_id_it_revPassphrase OBJ_id_it,12L
1208
1209#define SN_id_it_implicitConfirm "id-it-implicitConfirm"
1210#define NID_id_it_implicitConfirm 310
1211#define OBJ_id_it_implicitConfirm OBJ_id_it,13L
1212
1213#define SN_id_it_confirmWaitTime "id-it-confirmWaitTime"
1214#define NID_id_it_confirmWaitTime 311
1215#define OBJ_id_it_confirmWaitTime OBJ_id_it,14L
1216
1217#define SN_id_it_origPKIMessage "id-it-origPKIMessage"
1218#define NID_id_it_origPKIMessage 312
1219#define OBJ_id_it_origPKIMessage OBJ_id_it,15L
1220
1221#define SN_id_regCtrl "id-regCtrl"
1222#define NID_id_regCtrl 313
1223#define OBJ_id_regCtrl OBJ_id_pkip,1L
1224
1225#define SN_id_regInfo "id-regInfo"
1226#define NID_id_regInfo 314
1227#define OBJ_id_regInfo OBJ_id_pkip,2L
1228
1229#define SN_id_regCtrl_regToken "id-regCtrl-regToken"
1230#define NID_id_regCtrl_regToken 315
1231#define OBJ_id_regCtrl_regToken OBJ_id_regCtrl,1L
1232
1233#define SN_id_regCtrl_authenticator "id-regCtrl-authenticator"
1234#define NID_id_regCtrl_authenticator 316
1235#define OBJ_id_regCtrl_authenticator OBJ_id_regCtrl,2L
1236
1237#define SN_id_regCtrl_pkiPublicationInfo "id-regCtrl-pkiPublicationInfo"
1238#define NID_id_regCtrl_pkiPublicationInfo 317
1239#define OBJ_id_regCtrl_pkiPublicationInfo OBJ_id_regCtrl,3L
1240
1241#define SN_id_regCtrl_pkiArchiveOptions "id-regCtrl-pkiArchiveOptions"
1242#define NID_id_regCtrl_pkiArchiveOptions 318
1243#define OBJ_id_regCtrl_pkiArchiveOptions OBJ_id_regCtrl,4L
1244
1245#define SN_id_regCtrl_oldCertID "id-regCtrl-oldCertID"
1246#define NID_id_regCtrl_oldCertID 319
1247#define OBJ_id_regCtrl_oldCertID OBJ_id_regCtrl,5L
1248
1249#define SN_id_regCtrl_protocolEncrKey "id-regCtrl-protocolEncrKey"
1250#define NID_id_regCtrl_protocolEncrKey 320
1251#define OBJ_id_regCtrl_protocolEncrKey OBJ_id_regCtrl,6L
1252
1253#define SN_id_regInfo_utf8Pairs "id-regInfo-utf8Pairs"
1254#define NID_id_regInfo_utf8Pairs 321
1255#define OBJ_id_regInfo_utf8Pairs OBJ_id_regInfo,1L
1256
1257#define SN_id_regInfo_certReq "id-regInfo-certReq"
1258#define NID_id_regInfo_certReq 322
1259#define OBJ_id_regInfo_certReq OBJ_id_regInfo,2L
1260
1261#define SN_id_alg_des40 "id-alg-des40"
1262#define NID_id_alg_des40 323
1263#define OBJ_id_alg_des40 OBJ_id_alg,1L
1264
1265#define SN_id_alg_noSignature "id-alg-noSignature"
1266#define NID_id_alg_noSignature 324
1267#define OBJ_id_alg_noSignature OBJ_id_alg,2L
1268
1269#define SN_id_alg_dh_sig_hmac_sha1 "id-alg-dh-sig-hmac-sha1"
1270#define NID_id_alg_dh_sig_hmac_sha1 325
1271#define OBJ_id_alg_dh_sig_hmac_sha1 OBJ_id_alg,3L
1272
1273#define SN_id_alg_dh_pop "id-alg-dh-pop"
1274#define NID_id_alg_dh_pop 326
1275#define OBJ_id_alg_dh_pop OBJ_id_alg,4L
1276
1277#define SN_id_cmc_statusInfo "id-cmc-statusInfo"
1278#define NID_id_cmc_statusInfo 327
1279#define OBJ_id_cmc_statusInfo OBJ_id_cmc,1L
1280
1281#define SN_id_cmc_identification "id-cmc-identification"
1282#define NID_id_cmc_identification 328
1283#define OBJ_id_cmc_identification OBJ_id_cmc,2L
1284
1285#define SN_id_cmc_identityProof "id-cmc-identityProof"
1286#define NID_id_cmc_identityProof 329
1287#define OBJ_id_cmc_identityProof OBJ_id_cmc,3L
1288
1289#define SN_id_cmc_dataReturn "id-cmc-dataReturn"
1290#define NID_id_cmc_dataReturn 330
1291#define OBJ_id_cmc_dataReturn OBJ_id_cmc,4L
1292
1293#define SN_id_cmc_transactionId "id-cmc-transactionId"
1294#define NID_id_cmc_transactionId 331
1295#define OBJ_id_cmc_transactionId OBJ_id_cmc,5L
1296
1297#define SN_id_cmc_senderNonce "id-cmc-senderNonce"
1298#define NID_id_cmc_senderNonce 332
1299#define OBJ_id_cmc_senderNonce OBJ_id_cmc,6L
1300
1301#define SN_id_cmc_recipientNonce "id-cmc-recipientNonce"
1302#define NID_id_cmc_recipientNonce 333
1303#define OBJ_id_cmc_recipientNonce OBJ_id_cmc,7L
1304
1305#define SN_id_cmc_addExtensions "id-cmc-addExtensions"
1306#define NID_id_cmc_addExtensions 334
1307#define OBJ_id_cmc_addExtensions OBJ_id_cmc,8L
1308
1309#define SN_id_cmc_encryptedPOP "id-cmc-encryptedPOP"
1310#define NID_id_cmc_encryptedPOP 335
1311#define OBJ_id_cmc_encryptedPOP OBJ_id_cmc,9L
1312
1313#define SN_id_cmc_decryptedPOP "id-cmc-decryptedPOP"
1314#define NID_id_cmc_decryptedPOP 336
1315#define OBJ_id_cmc_decryptedPOP OBJ_id_cmc,10L
1316
1317#define SN_id_cmc_lraPOPWitness "id-cmc-lraPOPWitness"
1318#define NID_id_cmc_lraPOPWitness 337
1319#define OBJ_id_cmc_lraPOPWitness OBJ_id_cmc,11L
1320
1321#define SN_id_cmc_getCert "id-cmc-getCert"
1322#define NID_id_cmc_getCert 338
1323#define OBJ_id_cmc_getCert OBJ_id_cmc,15L
1324
1325#define SN_id_cmc_getCRL "id-cmc-getCRL"
1326#define NID_id_cmc_getCRL 339
1327#define OBJ_id_cmc_getCRL OBJ_id_cmc,16L
1328
1329#define SN_id_cmc_revokeRequest "id-cmc-revokeRequest"
1330#define NID_id_cmc_revokeRequest 340
1331#define OBJ_id_cmc_revokeRequest OBJ_id_cmc,17L
1332
1333#define SN_id_cmc_regInfo "id-cmc-regInfo"
1334#define NID_id_cmc_regInfo 341
1335#define OBJ_id_cmc_regInfo OBJ_id_cmc,18L
1336
1337#define SN_id_cmc_responseInfo "id-cmc-responseInfo"
1338#define NID_id_cmc_responseInfo 342
1339#define OBJ_id_cmc_responseInfo OBJ_id_cmc,19L
1340
1341#define SN_id_cmc_queryPending "id-cmc-queryPending"
1342#define NID_id_cmc_queryPending 343
1343#define OBJ_id_cmc_queryPending OBJ_id_cmc,21L
1344
1345#define SN_id_cmc_popLinkRandom "id-cmc-popLinkRandom"
1346#define NID_id_cmc_popLinkRandom 344
1347#define OBJ_id_cmc_popLinkRandom OBJ_id_cmc,22L
1348
1349#define SN_id_cmc_popLinkWitness "id-cmc-popLinkWitness"
1350#define NID_id_cmc_popLinkWitness 345
1351#define OBJ_id_cmc_popLinkWitness OBJ_id_cmc,23L
1352
1353#define SN_id_cmc_confirmCertAcceptance "id-cmc-confirmCertAcceptance"
1354#define NID_id_cmc_confirmCertAcceptance 346
1355#define OBJ_id_cmc_confirmCertAcceptance OBJ_id_cmc,24L
1356
1357#define SN_id_on_personalData "id-on-personalData"
1358#define NID_id_on_personalData 347
1359#define OBJ_id_on_personalData OBJ_id_on,1L
1360
1361#define SN_id_pda_dateOfBirth "id-pda-dateOfBirth"
1362#define NID_id_pda_dateOfBirth 348
1363#define OBJ_id_pda_dateOfBirth OBJ_id_pda,1L
1364
1365#define SN_id_pda_placeOfBirth "id-pda-placeOfBirth"
1366#define NID_id_pda_placeOfBirth 349
1367#define OBJ_id_pda_placeOfBirth OBJ_id_pda,2L
1368
1369#define SN_id_pda_gender "id-pda-gender"
1370#define NID_id_pda_gender 351
1371#define OBJ_id_pda_gender OBJ_id_pda,3L
1372
1373#define SN_id_pda_countryOfCitizenship "id-pda-countryOfCitizenship"
1374#define NID_id_pda_countryOfCitizenship 352
1375#define OBJ_id_pda_countryOfCitizenship OBJ_id_pda,4L
1376
1377#define SN_id_pda_countryOfResidence "id-pda-countryOfResidence"
1378#define NID_id_pda_countryOfResidence 353
1379#define OBJ_id_pda_countryOfResidence OBJ_id_pda,5L
1380
1381#define SN_id_aca_authenticationInfo "id-aca-authenticationInfo"
1382#define NID_id_aca_authenticationInfo 354
1383#define OBJ_id_aca_authenticationInfo OBJ_id_aca,1L
1384
1385#define SN_id_aca_accessIdentity "id-aca-accessIdentity"
1386#define NID_id_aca_accessIdentity 355
1387#define OBJ_id_aca_accessIdentity OBJ_id_aca,2L
1388
1389#define SN_id_aca_chargingIdentity "id-aca-chargingIdentity"
1390#define NID_id_aca_chargingIdentity 356
1391#define OBJ_id_aca_chargingIdentity OBJ_id_aca,3L
1392
1393#define SN_id_aca_group "id-aca-group"
1394#define NID_id_aca_group 357
1395#define OBJ_id_aca_group OBJ_id_aca,4L
1396
1397#define SN_id_aca_role "id-aca-role"
1398#define NID_id_aca_role 358
1399#define OBJ_id_aca_role OBJ_id_aca,5L
1400
1401#define SN_id_aca_encAttrs "id-aca-encAttrs"
1402#define NID_id_aca_encAttrs 399
1403#define OBJ_id_aca_encAttrs OBJ_id_aca,6L
1404
1405#define SN_id_qcs_pkixQCSyntax_v1 "id-qcs-pkixQCSyntax-v1"
1406#define NID_id_qcs_pkixQCSyntax_v1 359
1407#define OBJ_id_qcs_pkixQCSyntax_v1 OBJ_id_qcs,1L
1408
1409#define SN_id_cct_crs "id-cct-crs"
1410#define NID_id_cct_crs 360
1411#define OBJ_id_cct_crs OBJ_id_cct,1L
1412
1413#define SN_id_cct_PKIData "id-cct-PKIData"
1414#define NID_id_cct_PKIData 361
1415#define OBJ_id_cct_PKIData OBJ_id_cct,2L
1416
1417#define SN_id_cct_PKIResponse "id-cct-PKIResponse"
1418#define NID_id_cct_PKIResponse 362
1419#define OBJ_id_cct_PKIResponse OBJ_id_cct,3L
1420
1421#define SN_id_ppl_anyLanguage "id-ppl-anyLanguage"
1422#define LN_id_ppl_anyLanguage "Any language"
1423#define NID_id_ppl_anyLanguage 664
1424#define OBJ_id_ppl_anyLanguage OBJ_id_ppl,0L
1425
1426#define SN_id_ppl_inheritAll "id-ppl-inheritAll"
1427#define LN_id_ppl_inheritAll "Inherit all"
1428#define NID_id_ppl_inheritAll 665
1429#define OBJ_id_ppl_inheritAll OBJ_id_ppl,1L
1430
1431#define SN_Independent "id-ppl-independent"
1432#define LN_Independent "Independent"
1433#define NID_Independent 667
1434#define OBJ_Independent OBJ_id_ppl,2L
1435
1436#define SN_ad_OCSP "OCSP"
1437#define LN_ad_OCSP "OCSP"
1438#define NID_ad_OCSP 178
1439#define OBJ_ad_OCSP OBJ_id_ad,1L
1440
1441#define SN_ad_ca_issuers "caIssuers"
1442#define LN_ad_ca_issuers "CA Issuers"
1443#define NID_ad_ca_issuers 179
1444#define OBJ_ad_ca_issuers OBJ_id_ad,2L
1445
1446#define SN_ad_timeStamping "ad_timestamping"
1447#define LN_ad_timeStamping "AD Time Stamping"
1448#define NID_ad_timeStamping 363
1449#define OBJ_ad_timeStamping OBJ_id_ad,3L
1450
1451#define SN_ad_dvcs "AD_DVCS"
1452#define LN_ad_dvcs "ad dvcs"
1453#define NID_ad_dvcs 364
1454#define OBJ_ad_dvcs OBJ_id_ad,4L
1455
1456#define OBJ_id_pkix_OCSP OBJ_ad_OCSP
1457
1458#define SN_id_pkix_OCSP_basic "basicOCSPResponse"
1459#define LN_id_pkix_OCSP_basic "Basic OCSP Response"
1460#define NID_id_pkix_OCSP_basic 365
1461#define OBJ_id_pkix_OCSP_basic OBJ_id_pkix_OCSP,1L
1462
1463#define SN_id_pkix_OCSP_Nonce "Nonce"
1464#define LN_id_pkix_OCSP_Nonce "OCSP Nonce"
1465#define NID_id_pkix_OCSP_Nonce 366
1466#define OBJ_id_pkix_OCSP_Nonce OBJ_id_pkix_OCSP,2L
1467
1468#define SN_id_pkix_OCSP_CrlID "CrlID"
1469#define LN_id_pkix_OCSP_CrlID "OCSP CRL ID"
1470#define NID_id_pkix_OCSP_CrlID 367
1471#define OBJ_id_pkix_OCSP_CrlID OBJ_id_pkix_OCSP,3L
1472
1473#define SN_id_pkix_OCSP_acceptableResponses "acceptableResponses"
1474#define LN_id_pkix_OCSP_acceptableResponses "Acceptable OCSP Responses"
1475#define NID_id_pkix_OCSP_acceptableResponses 368
1476#define OBJ_id_pkix_OCSP_acceptableResponses OBJ_id_pkix_OCSP,4L
1477
1478#define SN_id_pkix_OCSP_noCheck "noCheck"
1479#define LN_id_pkix_OCSP_noCheck "OCSP No Check"
1480#define NID_id_pkix_OCSP_noCheck 369
1481#define OBJ_id_pkix_OCSP_noCheck OBJ_id_pkix_OCSP,5L
1482
1483#define SN_id_pkix_OCSP_archiveCutoff "archiveCutoff"
1484#define LN_id_pkix_OCSP_archiveCutoff "OCSP Archive Cutoff"
1485#define NID_id_pkix_OCSP_archiveCutoff 370
1486#define OBJ_id_pkix_OCSP_archiveCutoff OBJ_id_pkix_OCSP,6L
1487
1488#define SN_id_pkix_OCSP_serviceLocator "serviceLocator"
1489#define LN_id_pkix_OCSP_serviceLocator "OCSP Service Locator"
1490#define NID_id_pkix_OCSP_serviceLocator 371
1491#define OBJ_id_pkix_OCSP_serviceLocator OBJ_id_pkix_OCSP,7L
1492
1493#define SN_id_pkix_OCSP_extendedStatus "extendedStatus"
1494#define LN_id_pkix_OCSP_extendedStatus "Extended OCSP Status"
1495#define NID_id_pkix_OCSP_extendedStatus 372
1496#define OBJ_id_pkix_OCSP_extendedStatus OBJ_id_pkix_OCSP,8L
1497
1498#define SN_id_pkix_OCSP_valid "valid"
1499#define NID_id_pkix_OCSP_valid 373
1500#define OBJ_id_pkix_OCSP_valid OBJ_id_pkix_OCSP,9L
1501
1502#define SN_id_pkix_OCSP_path "path"
1503#define NID_id_pkix_OCSP_path 374
1504#define OBJ_id_pkix_OCSP_path OBJ_id_pkix_OCSP,10L
1505
1506#define SN_id_pkix_OCSP_trustRoot "trustRoot"
1507#define LN_id_pkix_OCSP_trustRoot "Trust Root"
1508#define NID_id_pkix_OCSP_trustRoot 375
1509#define OBJ_id_pkix_OCSP_trustRoot OBJ_id_pkix_OCSP,11L
1510
1511#define SN_algorithm "algorithm"
1512#define LN_algorithm "algorithm"
1513#define NID_algorithm 376
1514#define OBJ_algorithm 1L,3L,14L,3L,2L
1515
1516#define SN_md5WithRSA "RSA-NP-MD5"
1517#define LN_md5WithRSA "md5WithRSA"
1518#define NID_md5WithRSA 104
1519#define OBJ_md5WithRSA OBJ_algorithm,3L
1520
1521#define SN_des_ecb "DES-ECB"
1522#define LN_des_ecb "des-ecb"
1523#define NID_des_ecb 29
1524#define OBJ_des_ecb OBJ_algorithm,6L
1525
1526#define SN_des_cbc "DES-CBC"
1527#define LN_des_cbc "des-cbc"
1528#define NID_des_cbc 31
1529#define OBJ_des_cbc OBJ_algorithm,7L
1530
1531#define SN_des_ofb64 "DES-OFB"
1532#define LN_des_ofb64 "des-ofb"
1533#define NID_des_ofb64 45
1534#define OBJ_des_ofb64 OBJ_algorithm,8L
1535
1536#define SN_des_cfb64 "DES-CFB"
1537#define LN_des_cfb64 "des-cfb"
1538#define NID_des_cfb64 30
1539#define OBJ_des_cfb64 OBJ_algorithm,9L
1540
1541#define SN_rsaSignature "rsaSignature"
1542#define NID_rsaSignature 377
1543#define OBJ_rsaSignature OBJ_algorithm,11L
1544
1545#define SN_dsa_2 "DSA-old"
1546#define LN_dsa_2 "dsaEncryption-old"
1547#define NID_dsa_2 67
1548#define OBJ_dsa_2 OBJ_algorithm,12L
1549
1550#define SN_dsaWithSHA "DSA-SHA"
1551#define LN_dsaWithSHA "dsaWithSHA"
1552#define NID_dsaWithSHA 66
1553#define OBJ_dsaWithSHA OBJ_algorithm,13L
1554
1555#define SN_shaWithRSAEncryption "RSA-SHA"
1556#define LN_shaWithRSAEncryption "shaWithRSAEncryption"
1557#define NID_shaWithRSAEncryption 42
1558#define OBJ_shaWithRSAEncryption OBJ_algorithm,15L
1559
1560#define SN_des_ede_ecb "DES-EDE"
1561#define LN_des_ede_ecb "des-ede"
1562#define NID_des_ede_ecb 32
1563#define OBJ_des_ede_ecb OBJ_algorithm,17L
1564
1565#define SN_des_ede3_ecb "DES-EDE3"
1566#define LN_des_ede3_ecb "des-ede3"
1567#define NID_des_ede3_ecb 33
1568
1569#define SN_des_ede_cbc "DES-EDE-CBC"
1570#define LN_des_ede_cbc "des-ede-cbc"
1571#define NID_des_ede_cbc 43
1572
1573#define SN_des_ede_cfb64 "DES-EDE-CFB"
1574#define LN_des_ede_cfb64 "des-ede-cfb"
1575#define NID_des_ede_cfb64 60
1576
1577#define SN_des_ede3_cfb64 "DES-EDE3-CFB"
1578#define LN_des_ede3_cfb64 "des-ede3-cfb"
1579#define NID_des_ede3_cfb64 61
1580
1581#define SN_des_ede_ofb64 "DES-EDE-OFB"
1582#define LN_des_ede_ofb64 "des-ede-ofb"
1583#define NID_des_ede_ofb64 62
1584
1585#define SN_des_ede3_ofb64 "DES-EDE3-OFB"
1586#define LN_des_ede3_ofb64 "des-ede3-ofb"
1587#define NID_des_ede3_ofb64 63
1588
1589#define SN_desx_cbc "DESX-CBC"
1590#define LN_desx_cbc "desx-cbc"
1591#define NID_desx_cbc 80
1592
1593#define SN_sha "SHA"
1594#define LN_sha "sha"
1595#define NID_sha 41
1596#define OBJ_sha OBJ_algorithm,18L
1597
1598#define SN_sha1 "SHA1"
1599#define LN_sha1 "sha1"
1600#define NID_sha1 64
1601#define OBJ_sha1 OBJ_algorithm,26L
1602
1603#define SN_dsaWithSHA1_2 "DSA-SHA1-old"
1604#define LN_dsaWithSHA1_2 "dsaWithSHA1-old"
1605#define NID_dsaWithSHA1_2 70
1606#define OBJ_dsaWithSHA1_2 OBJ_algorithm,27L
1607
1608#define SN_sha1WithRSA "RSA-SHA1-2"
1609#define LN_sha1WithRSA "sha1WithRSA"
1610#define NID_sha1WithRSA 115
1611#define OBJ_sha1WithRSA OBJ_algorithm,29L
1612
1613#define SN_ripemd160 "RIPEMD160"
1614#define LN_ripemd160 "ripemd160"
1615#define NID_ripemd160 117
1616#define OBJ_ripemd160 1L,3L,36L,3L,2L,1L
1617
1618#define SN_ripemd160WithRSA "RSA-RIPEMD160"
1619#define LN_ripemd160WithRSA "ripemd160WithRSA"
1620#define NID_ripemd160WithRSA 119
1621#define OBJ_ripemd160WithRSA 1L,3L,36L,3L,3L,1L,2L
1622
1623#define SN_sxnet "SXNetID"
1624#define LN_sxnet "Strong Extranet ID"
1625#define NID_sxnet 143
1626#define OBJ_sxnet 1L,3L,101L,1L,4L,1L
1627
1628#define SN_X500 "X500"
1629#define LN_X500 "directory services (X.500)"
1630#define NID_X500 11
1631#define OBJ_X500 2L,5L
1632
1633#define SN_X509 "X509"
1634#define NID_X509 12
1635#define OBJ_X509 OBJ_X500,4L
1636
1637#define SN_commonName "CN"
1638#define LN_commonName "commonName"
1639#define NID_commonName 13
1640#define OBJ_commonName OBJ_X509,3L
1641
1642#define SN_surname "SN"
1643#define LN_surname "surname"
1644#define NID_surname 100
1645#define OBJ_surname OBJ_X509,4L
1646
1647#define LN_serialNumber "serialNumber"
1648#define NID_serialNumber 105
1649#define OBJ_serialNumber OBJ_X509,5L
1650
1651#define SN_countryName "C"
1652#define LN_countryName "countryName"
1653#define NID_countryName 14
1654#define OBJ_countryName OBJ_X509,6L
1655
1656#define SN_localityName "L"
1657#define LN_localityName "localityName"
1658#define NID_localityName 15
1659#define OBJ_localityName OBJ_X509,7L
1660
1661#define SN_stateOrProvinceName "ST"
1662#define LN_stateOrProvinceName "stateOrProvinceName"
1663#define NID_stateOrProvinceName 16
1664#define OBJ_stateOrProvinceName OBJ_X509,8L
1665
1666#define LN_streetAddress "streetAddress"
1667#define NID_streetAddress 660
1668#define OBJ_streetAddress OBJ_X509,9L
1669
1670#define SN_organizationName "O"
1671#define LN_organizationName "organizationName"
1672#define NID_organizationName 17
1673#define OBJ_organizationName OBJ_X509,10L
1674
1675#define SN_organizationalUnitName "OU"
1676#define LN_organizationalUnitName "organizationalUnitName"
1677#define NID_organizationalUnitName 18
1678#define OBJ_organizationalUnitName OBJ_X509,11L
1679
1680#define LN_title "title"
1681#define NID_title 106
1682#define OBJ_title OBJ_X509,12L
1683
1684#define LN_description "description"
1685#define NID_description 107
1686#define OBJ_description OBJ_X509,13L
1687
1688#define LN_postalCode "postalCode"
1689#define NID_postalCode 661
1690#define OBJ_postalCode OBJ_X509,17L
1691
1692#define SN_name "name"
1693#define LN_name "name"
1694#define NID_name 173
1695#define OBJ_name OBJ_X509,41L
1696
1697#define SN_givenName "GN"
1698#define LN_givenName "givenName"
1699#define NID_givenName 99
1700#define OBJ_givenName OBJ_X509,42L
1701
1702#define LN_initials "initials"
1703#define NID_initials 101
1704#define OBJ_initials OBJ_X509,43L
1705
1706#define LN_generationQualifier "generationQualifier"
1707#define NID_generationQualifier 509
1708#define OBJ_generationQualifier OBJ_X509,44L
1709
1710#define LN_x500UniqueIdentifier "x500UniqueIdentifier"
1711#define NID_x500UniqueIdentifier 503
1712#define OBJ_x500UniqueIdentifier OBJ_X509,45L
1713
1714#define SN_dnQualifier "dnQualifier"
1715#define LN_dnQualifier "dnQualifier"
1716#define NID_dnQualifier 174
1717#define OBJ_dnQualifier OBJ_X509,46L
1718
1719#define LN_pseudonym "pseudonym"
1720#define NID_pseudonym 510
1721#define OBJ_pseudonym OBJ_X509,65L
1722
1723#define SN_role "role"
1724#define LN_role "role"
1725#define NID_role 400
1726#define OBJ_role OBJ_X509,72L
1727
1728#define SN_X500algorithms "X500algorithms"
1729#define LN_X500algorithms "directory services - algorithms"
1730#define NID_X500algorithms 378
1731#define OBJ_X500algorithms OBJ_X500,8L
1732
1733#define SN_rsa "RSA"
1734#define LN_rsa "rsa"
1735#define NID_rsa 19
1736#define OBJ_rsa OBJ_X500algorithms,1L,1L
1737
1738#define SN_mdc2WithRSA "RSA-MDC2"
1739#define LN_mdc2WithRSA "mdc2WithRSA"
1740#define NID_mdc2WithRSA 96
1741#define OBJ_mdc2WithRSA OBJ_X500algorithms,3L,100L
1742
1743#define SN_mdc2 "MDC2"
1744#define LN_mdc2 "mdc2"
1745#define NID_mdc2 95
1746#define OBJ_mdc2 OBJ_X500algorithms,3L,101L
1747
1748#define SN_id_ce "id-ce"
1749#define NID_id_ce 81
1750#define OBJ_id_ce OBJ_X500,29L
1751
1752#define SN_subject_key_identifier "subjectKeyIdentifier"
1753#define LN_subject_key_identifier "X509v3 Subject Key Identifier"
1754#define NID_subject_key_identifier 82
1755#define OBJ_subject_key_identifier OBJ_id_ce,14L
1756
1757#define SN_key_usage "keyUsage"
1758#define LN_key_usage "X509v3 Key Usage"
1759#define NID_key_usage 83
1760#define OBJ_key_usage OBJ_id_ce,15L
1761
1762#define SN_private_key_usage_period "privateKeyUsagePeriod"
1763#define LN_private_key_usage_period "X509v3 Private Key Usage Period"
1764#define NID_private_key_usage_period 84
1765#define OBJ_private_key_usage_period OBJ_id_ce,16L
1766
1767#define SN_subject_alt_name "subjectAltName"
1768#define LN_subject_alt_name "X509v3 Subject Alternative Name"
1769#define NID_subject_alt_name 85
1770#define OBJ_subject_alt_name OBJ_id_ce,17L
1771
1772#define SN_issuer_alt_name "issuerAltName"
1773#define LN_issuer_alt_name "X509v3 Issuer Alternative Name"
1774#define NID_issuer_alt_name 86
1775#define OBJ_issuer_alt_name OBJ_id_ce,18L
1776
1777#define SN_basic_constraints "basicConstraints"
1778#define LN_basic_constraints "X509v3 Basic Constraints"
1779#define NID_basic_constraints 87
1780#define OBJ_basic_constraints OBJ_id_ce,19L
1781
1782#define SN_crl_number "crlNumber"
1783#define LN_crl_number "X509v3 CRL Number"
1784#define NID_crl_number 88
1785#define OBJ_crl_number OBJ_id_ce,20L
1786
1787#define SN_crl_reason "CRLReason"
1788#define LN_crl_reason "X509v3 CRL Reason Code"
1789#define NID_crl_reason 141
1790#define OBJ_crl_reason OBJ_id_ce,21L
1791
1792#define SN_invalidity_date "invalidityDate"
1793#define LN_invalidity_date "Invalidity Date"
1794#define NID_invalidity_date 142
1795#define OBJ_invalidity_date OBJ_id_ce,24L
1796
1797#define SN_delta_crl "deltaCRL"
1798#define LN_delta_crl "X509v3 Delta CRL Indicator"
1799#define NID_delta_crl 140
1800#define OBJ_delta_crl OBJ_id_ce,27L
1801
1802#define SN_name_constraints "nameConstraints"
1803#define LN_name_constraints "X509v3 Name Constraints"
1804#define NID_name_constraints 666
1805#define OBJ_name_constraints OBJ_id_ce,30L
1806
1807#define SN_crl_distribution_points "crlDistributionPoints"
1808#define LN_crl_distribution_points "X509v3 CRL Distribution Points"
1809#define NID_crl_distribution_points 103
1810#define OBJ_crl_distribution_points OBJ_id_ce,31L
1811
1812#define SN_certificate_policies "certificatePolicies"
1813#define LN_certificate_policies "X509v3 Certificate Policies"
1814#define NID_certificate_policies 89
1815#define OBJ_certificate_policies OBJ_id_ce,32L
1816
1817#define SN_authority_key_identifier "authorityKeyIdentifier"
1818#define LN_authority_key_identifier "X509v3 Authority Key Identifier"
1819#define NID_authority_key_identifier 90
1820#define OBJ_authority_key_identifier OBJ_id_ce,35L
1821
1822#define SN_policy_constraints "policyConstraints"
1823#define LN_policy_constraints "X509v3 Policy Constraints"
1824#define NID_policy_constraints 401
1825#define OBJ_policy_constraints OBJ_id_ce,36L
1826
1827#define SN_ext_key_usage "extendedKeyUsage"
1828#define LN_ext_key_usage "X509v3 Extended Key Usage"
1829#define NID_ext_key_usage 126
1830#define OBJ_ext_key_usage OBJ_id_ce,37L
1831
1832#define SN_target_information "targetInformation"
1833#define LN_target_information "X509v3 AC Targeting"
1834#define NID_target_information 402
1835#define OBJ_target_information OBJ_id_ce,55L
1836
1837#define SN_no_rev_avail "noRevAvail"
1838#define LN_no_rev_avail "X509v3 No Revocation Available"
1839#define NID_no_rev_avail 403
1840#define OBJ_no_rev_avail OBJ_id_ce,56L
1841
1842#define SN_netscape "Netscape"
1843#define LN_netscape "Netscape Communications Corp."
1844#define NID_netscape 57
1845#define OBJ_netscape 2L,16L,840L,1L,113730L
1846
1847#define SN_netscape_cert_extension "nsCertExt"
1848#define LN_netscape_cert_extension "Netscape Certificate Extension"
1849#define NID_netscape_cert_extension 58
1850#define OBJ_netscape_cert_extension OBJ_netscape,1L
1851
1852#define SN_netscape_data_type "nsDataType"
1853#define LN_netscape_data_type "Netscape Data Type"
1854#define NID_netscape_data_type 59
1855#define OBJ_netscape_data_type OBJ_netscape,2L
1856
1857#define SN_netscape_cert_type "nsCertType"
1858#define LN_netscape_cert_type "Netscape Cert Type"
1859#define NID_netscape_cert_type 71
1860#define OBJ_netscape_cert_type OBJ_netscape_cert_extension,1L
1861
1862#define SN_netscape_base_url "nsBaseUrl"
1863#define LN_netscape_base_url "Netscape Base Url"
1864#define NID_netscape_base_url 72
1865#define OBJ_netscape_base_url OBJ_netscape_cert_extension,2L
1866
1867#define SN_netscape_revocation_url "nsRevocationUrl"
1868#define LN_netscape_revocation_url "Netscape Revocation Url"
1869#define NID_netscape_revocation_url 73
1870#define OBJ_netscape_revocation_url OBJ_netscape_cert_extension,3L
1871
1872#define SN_netscape_ca_revocation_url "nsCaRevocationUrl"
1873#define LN_netscape_ca_revocation_url "Netscape CA Revocation Url"
1874#define NID_netscape_ca_revocation_url 74
1875#define OBJ_netscape_ca_revocation_url OBJ_netscape_cert_extension,4L
1876
1877#define SN_netscape_renewal_url "nsRenewalUrl"
1878#define LN_netscape_renewal_url "Netscape Renewal Url"
1879#define NID_netscape_renewal_url 75
1880#define OBJ_netscape_renewal_url OBJ_netscape_cert_extension,7L
1881
1882#define SN_netscape_ca_policy_url "nsCaPolicyUrl"
1883#define LN_netscape_ca_policy_url "Netscape CA Policy Url"
1884#define NID_netscape_ca_policy_url 76
1885#define OBJ_netscape_ca_policy_url OBJ_netscape_cert_extension,8L
1886
1887#define SN_netscape_ssl_server_name "nsSslServerName"
1888#define LN_netscape_ssl_server_name "Netscape SSL Server Name"
1889#define NID_netscape_ssl_server_name 77
1890#define OBJ_netscape_ssl_server_name OBJ_netscape_cert_extension,12L
1891
1892#define SN_netscape_comment "nsComment"
1893#define LN_netscape_comment "Netscape Comment"
1894#define NID_netscape_comment 78
1895#define OBJ_netscape_comment OBJ_netscape_cert_extension,13L
1896
1897#define SN_netscape_cert_sequence "nsCertSequence"
1898#define LN_netscape_cert_sequence "Netscape Certificate Sequence"
1899#define NID_netscape_cert_sequence 79
1900#define OBJ_netscape_cert_sequence OBJ_netscape_data_type,5L
1901
1902#define SN_ns_sgc "nsSGC"
1903#define LN_ns_sgc "Netscape Server Gated Crypto"
1904#define NID_ns_sgc 139
1905#define OBJ_ns_sgc OBJ_netscape,4L,1L
1906
1907#define SN_org "ORG"
1908#define LN_org "org"
1909#define NID_org 379
1910#define OBJ_org OBJ_iso,3L
1911
1912#define SN_dod "DOD"
1913#define LN_dod "dod"
1914#define NID_dod 380
1915#define OBJ_dod OBJ_org,6L
1916
1917#define SN_iana "IANA"
1918#define LN_iana "iana"
1919#define NID_iana 381
1920#define OBJ_iana OBJ_dod,1L
1921
1922#define OBJ_internet OBJ_iana
1923
1924#define SN_Directory "directory"
1925#define LN_Directory "Directory"
1926#define NID_Directory 382
1927#define OBJ_Directory OBJ_internet,1L
1928
1929#define SN_Management "mgmt"
1930#define LN_Management "Management"
1931#define NID_Management 383
1932#define OBJ_Management OBJ_internet,2L
1933
1934#define SN_Experimental "experimental"
1935#define LN_Experimental "Experimental"
1936#define NID_Experimental 384
1937#define OBJ_Experimental OBJ_internet,3L
1938
1939#define SN_Private "private"
1940#define LN_Private "Private"
1941#define NID_Private 385
1942#define OBJ_Private OBJ_internet,4L
1943
1944#define SN_Security "security"
1945#define LN_Security "Security"
1946#define NID_Security 386
1947#define OBJ_Security OBJ_internet,5L
1948
1949#define SN_SNMPv2 "snmpv2"
1950#define LN_SNMPv2 "SNMPv2"
1951#define NID_SNMPv2 387
1952#define OBJ_SNMPv2 OBJ_internet,6L
1953
1954#define LN_Mail "Mail"
1955#define NID_Mail 388
1956#define OBJ_Mail OBJ_internet,7L
1957
1958#define SN_Enterprises "enterprises"
1959#define LN_Enterprises "Enterprises"
1960#define NID_Enterprises 389
1961#define OBJ_Enterprises OBJ_Private,1L
1962
1963#define SN_dcObject "dcobject"
1964#define LN_dcObject "dcObject"
1965#define NID_dcObject 390
1966#define OBJ_dcObject OBJ_Enterprises,1466L,344L
1967
1968#define SN_mime_mhs "mime-mhs"
1969#define LN_mime_mhs "MIME MHS"
1970#define NID_mime_mhs 504
1971#define OBJ_mime_mhs OBJ_Mail,1L
1972
1973#define SN_mime_mhs_headings "mime-mhs-headings"
1974#define LN_mime_mhs_headings "mime-mhs-headings"
1975#define NID_mime_mhs_headings 505
1976#define OBJ_mime_mhs_headings OBJ_mime_mhs,1L
1977
1978#define SN_mime_mhs_bodies "mime-mhs-bodies"
1979#define LN_mime_mhs_bodies "mime-mhs-bodies"
1980#define NID_mime_mhs_bodies 506
1981#define OBJ_mime_mhs_bodies OBJ_mime_mhs,2L
1982
1983#define SN_id_hex_partial_message "id-hex-partial-message"
1984#define LN_id_hex_partial_message "id-hex-partial-message"
1985#define NID_id_hex_partial_message 507
1986#define OBJ_id_hex_partial_message OBJ_mime_mhs_headings,1L
1987
1988#define SN_id_hex_multipart_message "id-hex-multipart-message"
1989#define LN_id_hex_multipart_message "id-hex-multipart-message"
1990#define NID_id_hex_multipart_message 508
1991#define OBJ_id_hex_multipart_message OBJ_mime_mhs_headings,2L
1992
1993#define SN_rle_compression "RLE"
1994#define LN_rle_compression "run length compression"
1995#define NID_rle_compression 124
1996#define OBJ_rle_compression 1L,1L,1L,1L,666L,1L
1997
1998#define SN_zlib_compression "ZLIB"
1999#define LN_zlib_compression "zlib compression"
2000#define NID_zlib_compression 125
2001#define OBJ_zlib_compression 1L,1L,1L,1L,666L,2L
2002
2003#define OBJ_csor 2L,16L,840L,1L,101L,3L
2004
2005#define OBJ_nistAlgorithms OBJ_csor,4L
2006
2007#define OBJ_aes OBJ_nistAlgorithms,1L
2008
2009#define SN_aes_128_ecb "AES-128-ECB"
2010#define LN_aes_128_ecb "aes-128-ecb"
2011#define NID_aes_128_ecb 418
2012#define OBJ_aes_128_ecb OBJ_aes,1L
2013
2014#define SN_aes_128_cbc "AES-128-CBC"
2015#define LN_aes_128_cbc "aes-128-cbc"
2016#define NID_aes_128_cbc 419
2017#define OBJ_aes_128_cbc OBJ_aes,2L
2018
2019#define SN_aes_128_ofb128 "AES-128-OFB"
2020#define LN_aes_128_ofb128 "aes-128-ofb"
2021#define NID_aes_128_ofb128 420
2022#define OBJ_aes_128_ofb128 OBJ_aes,3L
2023
2024#define SN_aes_128_cfb128 "AES-128-CFB"
2025#define LN_aes_128_cfb128 "aes-128-cfb"
2026#define NID_aes_128_cfb128 421
2027#define OBJ_aes_128_cfb128 OBJ_aes,4L
2028
2029#define SN_aes_192_ecb "AES-192-ECB"
2030#define LN_aes_192_ecb "aes-192-ecb"
2031#define NID_aes_192_ecb 422
2032#define OBJ_aes_192_ecb OBJ_aes,21L
2033
2034#define SN_aes_192_cbc "AES-192-CBC"
2035#define LN_aes_192_cbc "aes-192-cbc"
2036#define NID_aes_192_cbc 423
2037#define OBJ_aes_192_cbc OBJ_aes,22L
2038
2039#define SN_aes_192_ofb128 "AES-192-OFB"
2040#define LN_aes_192_ofb128 "aes-192-ofb"
2041#define NID_aes_192_ofb128 424
2042#define OBJ_aes_192_ofb128 OBJ_aes,23L
2043
2044#define SN_aes_192_cfb128 "AES-192-CFB"
2045#define LN_aes_192_cfb128 "aes-192-cfb"
2046#define NID_aes_192_cfb128 425
2047#define OBJ_aes_192_cfb128 OBJ_aes,24L
2048
2049#define SN_aes_256_ecb "AES-256-ECB"
2050#define LN_aes_256_ecb "aes-256-ecb"
2051#define NID_aes_256_ecb 426
2052#define OBJ_aes_256_ecb OBJ_aes,41L
2053
2054#define SN_aes_256_cbc "AES-256-CBC"
2055#define LN_aes_256_cbc "aes-256-cbc"
2056#define NID_aes_256_cbc 427
2057#define OBJ_aes_256_cbc OBJ_aes,42L
2058
2059#define SN_aes_256_ofb128 "AES-256-OFB"
2060#define LN_aes_256_ofb128 "aes-256-ofb"
2061#define NID_aes_256_ofb128 428
2062#define OBJ_aes_256_ofb128 OBJ_aes,43L
2063
2064#define SN_aes_256_cfb128 "AES-256-CFB"
2065#define LN_aes_256_cfb128 "aes-256-cfb"
2066#define NID_aes_256_cfb128 429
2067#define OBJ_aes_256_cfb128 OBJ_aes,44L
2068
2069#define SN_aes_128_cfb1 "AES-128-CFB1"
2070#define LN_aes_128_cfb1 "aes-128-cfb1"
2071#define NID_aes_128_cfb1 650
2072
2073#define SN_aes_192_cfb1 "AES-192-CFB1"
2074#define LN_aes_192_cfb1 "aes-192-cfb1"
2075#define NID_aes_192_cfb1 651
2076
2077#define SN_aes_256_cfb1 "AES-256-CFB1"
2078#define LN_aes_256_cfb1 "aes-256-cfb1"
2079#define NID_aes_256_cfb1 652
2080
2081#define SN_aes_128_cfb8 "AES-128-CFB8"
2082#define LN_aes_128_cfb8 "aes-128-cfb8"
2083#define NID_aes_128_cfb8 653
2084
2085#define SN_aes_192_cfb8 "AES-192-CFB8"
2086#define LN_aes_192_cfb8 "aes-192-cfb8"
2087#define NID_aes_192_cfb8 654
2088
2089#define SN_aes_256_cfb8 "AES-256-CFB8"
2090#define LN_aes_256_cfb8 "aes-256-cfb8"
2091#define NID_aes_256_cfb8 655
2092
2093#define SN_des_cfb1 "DES-CFB1"
2094#define LN_des_cfb1 "des-cfb1"
2095#define NID_des_cfb1 656
2096
2097#define SN_des_cfb8 "DES-CFB8"
2098#define LN_des_cfb8 "des-cfb8"
2099#define NID_des_cfb8 657
2100
2101#define SN_des_ede3_cfb1 "DES-EDE3-CFB1"
2102#define LN_des_ede3_cfb1 "des-ede3-cfb1"
2103#define NID_des_ede3_cfb1 658
2104
2105#define SN_des_ede3_cfb8 "DES-EDE3-CFB8"
2106#define LN_des_ede3_cfb8 "des-ede3-cfb8"
2107#define NID_des_ede3_cfb8 659
2108
2109#define OBJ_nist_hashalgs OBJ_nistAlgorithms,2L
2110
2111#define SN_sha256 "SHA256"
2112#define LN_sha256 "sha256"
2113#define NID_sha256 672
2114#define OBJ_sha256 OBJ_nist_hashalgs,1L
2115
2116#define SN_sha384 "SHA384"
2117#define LN_sha384 "sha384"
2118#define NID_sha384 673
2119#define OBJ_sha384 OBJ_nist_hashalgs,2L
2120
2121#define SN_sha512 "SHA512"
2122#define LN_sha512 "sha512"
2123#define NID_sha512 674
2124#define OBJ_sha512 OBJ_nist_hashalgs,3L
2125
2126#define SN_sha224 "SHA224"
2127#define LN_sha224 "sha224"
2128#define NID_sha224 675
2129#define OBJ_sha224 OBJ_nist_hashalgs,4L
2130
2131#define SN_hold_instruction_code "holdInstructionCode"
2132#define LN_hold_instruction_code "Hold Instruction Code"
2133#define NID_hold_instruction_code 430
2134#define OBJ_hold_instruction_code OBJ_id_ce,23L
2135
2136#define OBJ_holdInstruction OBJ_X9_57,2L
2137
2138#define SN_hold_instruction_none "holdInstructionNone"
2139#define LN_hold_instruction_none "Hold Instruction None"
2140#define NID_hold_instruction_none 431
2141#define OBJ_hold_instruction_none OBJ_holdInstruction,1L
2142
2143#define SN_hold_instruction_call_issuer "holdInstructionCallIssuer"
2144#define LN_hold_instruction_call_issuer "Hold Instruction Call Issuer"
2145#define NID_hold_instruction_call_issuer 432
2146#define OBJ_hold_instruction_call_issuer OBJ_holdInstruction,2L
2147
2148#define SN_hold_instruction_reject "holdInstructionReject"
2149#define LN_hold_instruction_reject "Hold Instruction Reject"
2150#define NID_hold_instruction_reject 433
2151#define OBJ_hold_instruction_reject OBJ_holdInstruction,3L
2152
2153#define SN_data "data"
2154#define NID_data 434
2155#define OBJ_data OBJ_ccitt,9L
2156
2157#define SN_pss "pss"
2158#define NID_pss 435
2159#define OBJ_pss OBJ_data,2342L
2160
2161#define SN_ucl "ucl"
2162#define NID_ucl 436
2163#define OBJ_ucl OBJ_pss,19200300L
2164
2165#define SN_pilot "pilot"
2166#define NID_pilot 437
2167#define OBJ_pilot OBJ_ucl,100L
2168
2169#define LN_pilotAttributeType "pilotAttributeType"
2170#define NID_pilotAttributeType 438
2171#define OBJ_pilotAttributeType OBJ_pilot,1L
2172
2173#define LN_pilotAttributeSyntax "pilotAttributeSyntax"
2174#define NID_pilotAttributeSyntax 439
2175#define OBJ_pilotAttributeSyntax OBJ_pilot,3L
2176
2177#define LN_pilotObjectClass "pilotObjectClass"
2178#define NID_pilotObjectClass 440
2179#define OBJ_pilotObjectClass OBJ_pilot,4L
2180
2181#define LN_pilotGroups "pilotGroups"
2182#define NID_pilotGroups 441
2183#define OBJ_pilotGroups OBJ_pilot,10L
2184
2185#define LN_iA5StringSyntax "iA5StringSyntax"
2186#define NID_iA5StringSyntax 442
2187#define OBJ_iA5StringSyntax OBJ_pilotAttributeSyntax,4L
2188
2189#define LN_caseIgnoreIA5StringSyntax "caseIgnoreIA5StringSyntax"
2190#define NID_caseIgnoreIA5StringSyntax 443
2191#define OBJ_caseIgnoreIA5StringSyntax OBJ_pilotAttributeSyntax,5L
2192
2193#define LN_pilotObject "pilotObject"
2194#define NID_pilotObject 444
2195#define OBJ_pilotObject OBJ_pilotObjectClass,3L
2196
2197#define LN_pilotPerson "pilotPerson"
2198#define NID_pilotPerson 445
2199#define OBJ_pilotPerson OBJ_pilotObjectClass,4L
2200
2201#define SN_account "account"
2202#define NID_account 446
2203#define OBJ_account OBJ_pilotObjectClass,5L
2204
2205#define SN_document "document"
2206#define NID_document 447
2207#define OBJ_document OBJ_pilotObjectClass,6L
2208
2209#define SN_room "room"
2210#define NID_room 448
2211#define OBJ_room OBJ_pilotObjectClass,7L
2212
2213#define LN_documentSeries "documentSeries"
2214#define NID_documentSeries 449
2215#define OBJ_documentSeries OBJ_pilotObjectClass,9L
2216
2217#define SN_Domain "domain"
2218#define LN_Domain "Domain"
2219#define NID_Domain 392
2220#define OBJ_Domain OBJ_pilotObjectClass,13L
2221
2222#define LN_rFC822localPart "rFC822localPart"
2223#define NID_rFC822localPart 450
2224#define OBJ_rFC822localPart OBJ_pilotObjectClass,14L
2225
2226#define LN_dNSDomain "dNSDomain"
2227#define NID_dNSDomain 451
2228#define OBJ_dNSDomain OBJ_pilotObjectClass,15L
2229
2230#define LN_domainRelatedObject "domainRelatedObject"
2231#define NID_domainRelatedObject 452
2232#define OBJ_domainRelatedObject OBJ_pilotObjectClass,17L
2233
2234#define LN_friendlyCountry "friendlyCountry"
2235#define NID_friendlyCountry 453
2236#define OBJ_friendlyCountry OBJ_pilotObjectClass,18L
2237
2238#define LN_simpleSecurityObject "simpleSecurityObject"
2239#define NID_simpleSecurityObject 454
2240#define OBJ_simpleSecurityObject OBJ_pilotObjectClass,19L
2241
2242#define LN_pilotOrganization "pilotOrganization"
2243#define NID_pilotOrganization 455
2244#define OBJ_pilotOrganization OBJ_pilotObjectClass,20L
2245
2246#define LN_pilotDSA "pilotDSA"
2247#define NID_pilotDSA 456
2248#define OBJ_pilotDSA OBJ_pilotObjectClass,21L
2249
2250#define LN_qualityLabelledData "qualityLabelledData"
2251#define NID_qualityLabelledData 457
2252#define OBJ_qualityLabelledData OBJ_pilotObjectClass,22L
2253
2254#define SN_userId "UID"
2255#define LN_userId "userId"
2256#define NID_userId 458
2257#define OBJ_userId OBJ_pilotAttributeType,1L
2258
2259#define LN_textEncodedORAddress "textEncodedORAddress"
2260#define NID_textEncodedORAddress 459
2261#define OBJ_textEncodedORAddress OBJ_pilotAttributeType,2L
2262
2263#define SN_rfc822Mailbox "mail"
2264#define LN_rfc822Mailbox "rfc822Mailbox"
2265#define NID_rfc822Mailbox 460
2266#define OBJ_rfc822Mailbox OBJ_pilotAttributeType,3L
2267
2268#define SN_info "info"
2269#define NID_info 461
2270#define OBJ_info OBJ_pilotAttributeType,4L
2271
2272#define LN_favouriteDrink "favouriteDrink"
2273#define NID_favouriteDrink 462
2274#define OBJ_favouriteDrink OBJ_pilotAttributeType,5L
2275
2276#define LN_roomNumber "roomNumber"
2277#define NID_roomNumber 463
2278#define OBJ_roomNumber OBJ_pilotAttributeType,6L
2279
2280#define SN_photo "photo"
2281#define NID_photo 464
2282#define OBJ_photo OBJ_pilotAttributeType,7L
2283
2284#define LN_userClass "userClass"
2285#define NID_userClass 465
2286#define OBJ_userClass OBJ_pilotAttributeType,8L
2287
2288#define SN_host "host"
2289#define NID_host 466
2290#define OBJ_host OBJ_pilotAttributeType,9L
2291
2292#define SN_manager "manager"
2293#define NID_manager 467
2294#define OBJ_manager OBJ_pilotAttributeType,10L
2295
2296#define LN_documentIdentifier "documentIdentifier"
2297#define NID_documentIdentifier 468
2298#define OBJ_documentIdentifier OBJ_pilotAttributeType,11L
2299
2300#define LN_documentTitle "documentTitle"
2301#define NID_documentTitle 469
2302#define OBJ_documentTitle OBJ_pilotAttributeType,12L
2303
2304#define LN_documentVersion "documentVersion"
2305#define NID_documentVersion 470
2306#define OBJ_documentVersion OBJ_pilotAttributeType,13L
2307
2308#define LN_documentAuthor "documentAuthor"
2309#define NID_documentAuthor 471
2310#define OBJ_documentAuthor OBJ_pilotAttributeType,14L
2311
2312#define LN_documentLocation "documentLocation"
2313#define NID_documentLocation 472
2314#define OBJ_documentLocation OBJ_pilotAttributeType,15L
2315
2316#define LN_homeTelephoneNumber "homeTelephoneNumber"
2317#define NID_homeTelephoneNumber 473
2318#define OBJ_homeTelephoneNumber OBJ_pilotAttributeType,20L
2319
2320#define SN_secretary "secretary"
2321#define NID_secretary 474
2322#define OBJ_secretary OBJ_pilotAttributeType,21L
2323
2324#define LN_otherMailbox "otherMailbox"
2325#define NID_otherMailbox 475
2326#define OBJ_otherMailbox OBJ_pilotAttributeType,22L
2327
2328#define LN_lastModifiedTime "lastModifiedTime"
2329#define NID_lastModifiedTime 476
2330#define OBJ_lastModifiedTime OBJ_pilotAttributeType,23L
2331
2332#define LN_lastModifiedBy "lastModifiedBy"
2333#define NID_lastModifiedBy 477
2334#define OBJ_lastModifiedBy OBJ_pilotAttributeType,24L
2335
2336#define SN_domainComponent "DC"
2337#define LN_domainComponent "domainComponent"
2338#define NID_domainComponent 391
2339#define OBJ_domainComponent OBJ_pilotAttributeType,25L
2340
2341#define LN_aRecord "aRecord"
2342#define NID_aRecord 478
2343#define OBJ_aRecord OBJ_pilotAttributeType,26L
2344
2345#define LN_pilotAttributeType27 "pilotAttributeType27"
2346#define NID_pilotAttributeType27 479
2347#define OBJ_pilotAttributeType27 OBJ_pilotAttributeType,27L
2348
2349#define LN_mXRecord "mXRecord"
2350#define NID_mXRecord 480
2351#define OBJ_mXRecord OBJ_pilotAttributeType,28L
2352
2353#define LN_nSRecord "nSRecord"
2354#define NID_nSRecord 481
2355#define OBJ_nSRecord OBJ_pilotAttributeType,29L
2356
2357#define LN_sOARecord "sOARecord"
2358#define NID_sOARecord 482
2359#define OBJ_sOARecord OBJ_pilotAttributeType,30L
2360
2361#define LN_cNAMERecord "cNAMERecord"
2362#define NID_cNAMERecord 483
2363#define OBJ_cNAMERecord OBJ_pilotAttributeType,31L
2364
2365#define LN_associatedDomain "associatedDomain"
2366#define NID_associatedDomain 484
2367#define OBJ_associatedDomain OBJ_pilotAttributeType,37L
2368
2369#define LN_associatedName "associatedName"
2370#define NID_associatedName 485
2371#define OBJ_associatedName OBJ_pilotAttributeType,38L
2372
2373#define LN_homePostalAddress "homePostalAddress"
2374#define NID_homePostalAddress 486
2375#define OBJ_homePostalAddress OBJ_pilotAttributeType,39L
2376
2377#define LN_personalTitle "personalTitle"
2378#define NID_personalTitle 487
2379#define OBJ_personalTitle OBJ_pilotAttributeType,40L
2380
2381#define LN_mobileTelephoneNumber "mobileTelephoneNumber"
2382#define NID_mobileTelephoneNumber 488
2383#define OBJ_mobileTelephoneNumber OBJ_pilotAttributeType,41L
2384
2385#define LN_pagerTelephoneNumber "pagerTelephoneNumber"
2386#define NID_pagerTelephoneNumber 489
2387#define OBJ_pagerTelephoneNumber OBJ_pilotAttributeType,42L
2388
2389#define LN_friendlyCountryName "friendlyCountryName"
2390#define NID_friendlyCountryName 490
2391#define OBJ_friendlyCountryName OBJ_pilotAttributeType,43L
2392
2393#define LN_organizationalStatus "organizationalStatus"
2394#define NID_organizationalStatus 491
2395#define OBJ_organizationalStatus OBJ_pilotAttributeType,45L
2396
2397#define LN_janetMailbox "janetMailbox"
2398#define NID_janetMailbox 492
2399#define OBJ_janetMailbox OBJ_pilotAttributeType,46L
2400
2401#define LN_mailPreferenceOption "mailPreferenceOption"
2402#define NID_mailPreferenceOption 493
2403#define OBJ_mailPreferenceOption OBJ_pilotAttributeType,47L
2404
2405#define LN_buildingName "buildingName"
2406#define NID_buildingName 494
2407#define OBJ_buildingName OBJ_pilotAttributeType,48L
2408
2409#define LN_dSAQuality "dSAQuality"
2410#define NID_dSAQuality 495
2411#define OBJ_dSAQuality OBJ_pilotAttributeType,49L
2412
2413#define LN_singleLevelQuality "singleLevelQuality"
2414#define NID_singleLevelQuality 496
2415#define OBJ_singleLevelQuality OBJ_pilotAttributeType,50L
2416
2417#define LN_subtreeMinimumQuality "subtreeMinimumQuality"
2418#define NID_subtreeMinimumQuality 497
2419#define OBJ_subtreeMinimumQuality OBJ_pilotAttributeType,51L
2420
2421#define LN_subtreeMaximumQuality "subtreeMaximumQuality"
2422#define NID_subtreeMaximumQuality 498
2423#define OBJ_subtreeMaximumQuality OBJ_pilotAttributeType,52L
2424
2425#define LN_personalSignature "personalSignature"
2426#define NID_personalSignature 499
2427#define OBJ_personalSignature OBJ_pilotAttributeType,53L
2428
2429#define LN_dITRedirect "dITRedirect"
2430#define NID_dITRedirect 500
2431#define OBJ_dITRedirect OBJ_pilotAttributeType,54L
2432
2433#define SN_audio "audio"
2434#define NID_audio 501
2435#define OBJ_audio OBJ_pilotAttributeType,55L
2436
2437#define LN_documentPublisher "documentPublisher"
2438#define NID_documentPublisher 502
2439#define OBJ_documentPublisher OBJ_pilotAttributeType,56L
2440
2441#define SN_id_set "id-set"
2442#define LN_id_set "Secure Electronic Transactions"
2443#define NID_id_set 512
2444#define OBJ_id_set 2L,23L,42L
2445
2446#define SN_set_ctype "set-ctype"
2447#define LN_set_ctype "content types"
2448#define NID_set_ctype 513
2449#define OBJ_set_ctype OBJ_id_set,0L
2450
2451#define SN_set_msgExt "set-msgExt"
2452#define LN_set_msgExt "message extensions"
2453#define NID_set_msgExt 514
2454#define OBJ_set_msgExt OBJ_id_set,1L
2455
2456#define SN_set_attr "set-attr"
2457#define NID_set_attr 515
2458#define OBJ_set_attr OBJ_id_set,3L
2459
2460#define SN_set_policy "set-policy"
2461#define NID_set_policy 516
2462#define OBJ_set_policy OBJ_id_set,5L
2463
2464#define SN_set_certExt "set-certExt"
2465#define LN_set_certExt "certificate extensions"
2466#define NID_set_certExt 517
2467#define OBJ_set_certExt OBJ_id_set,7L
2468
2469#define SN_set_brand "set-brand"
2470#define NID_set_brand 518
2471#define OBJ_set_brand OBJ_id_set,8L
2472
2473#define SN_setct_PANData "setct-PANData"
2474#define NID_setct_PANData 519
2475#define OBJ_setct_PANData OBJ_set_ctype,0L
2476
2477#define SN_setct_PANToken "setct-PANToken"
2478#define NID_setct_PANToken 520
2479#define OBJ_setct_PANToken OBJ_set_ctype,1L
2480
2481#define SN_setct_PANOnly "setct-PANOnly"
2482#define NID_setct_PANOnly 521
2483#define OBJ_setct_PANOnly OBJ_set_ctype,2L
2484
2485#define SN_setct_OIData "setct-OIData"
2486#define NID_setct_OIData 522
2487#define OBJ_setct_OIData OBJ_set_ctype,3L
2488
2489#define SN_setct_PI "setct-PI"
2490#define NID_setct_PI 523
2491#define OBJ_setct_PI OBJ_set_ctype,4L
2492
2493#define SN_setct_PIData "setct-PIData"
2494#define NID_setct_PIData 524
2495#define OBJ_setct_PIData OBJ_set_ctype,5L
2496
2497#define SN_setct_PIDataUnsigned "setct-PIDataUnsigned"
2498#define NID_setct_PIDataUnsigned 525
2499#define OBJ_setct_PIDataUnsigned OBJ_set_ctype,6L
2500
2501#define SN_setct_HODInput "setct-HODInput"
2502#define NID_setct_HODInput 526
2503#define OBJ_setct_HODInput OBJ_set_ctype,7L
2504
2505#define SN_setct_AuthResBaggage "setct-AuthResBaggage"
2506#define NID_setct_AuthResBaggage 527
2507#define OBJ_setct_AuthResBaggage OBJ_set_ctype,8L
2508
2509#define SN_setct_AuthRevReqBaggage "setct-AuthRevReqBaggage"
2510#define NID_setct_AuthRevReqBaggage 528
2511#define OBJ_setct_AuthRevReqBaggage OBJ_set_ctype,9L
2512
2513#define SN_setct_AuthRevResBaggage "setct-AuthRevResBaggage"
2514#define NID_setct_AuthRevResBaggage 529
2515#define OBJ_setct_AuthRevResBaggage OBJ_set_ctype,10L
2516
2517#define SN_setct_CapTokenSeq "setct-CapTokenSeq"
2518#define NID_setct_CapTokenSeq 530
2519#define OBJ_setct_CapTokenSeq OBJ_set_ctype,11L
2520
2521#define SN_setct_PInitResData "setct-PInitResData"
2522#define NID_setct_PInitResData 531
2523#define OBJ_setct_PInitResData OBJ_set_ctype,12L
2524
2525#define SN_setct_PI_TBS "setct-PI-TBS"
2526#define NID_setct_PI_TBS 532
2527#define OBJ_setct_PI_TBS OBJ_set_ctype,13L
2528
2529#define SN_setct_PResData "setct-PResData"
2530#define NID_setct_PResData 533
2531#define OBJ_setct_PResData OBJ_set_ctype,14L
2532
2533#define SN_setct_AuthReqTBS "setct-AuthReqTBS"
2534#define NID_setct_AuthReqTBS 534
2535#define OBJ_setct_AuthReqTBS OBJ_set_ctype,16L
2536
2537#define SN_setct_AuthResTBS "setct-AuthResTBS"
2538#define NID_setct_AuthResTBS 535
2539#define OBJ_setct_AuthResTBS OBJ_set_ctype,17L
2540
2541#define SN_setct_AuthResTBSX "setct-AuthResTBSX"
2542#define NID_setct_AuthResTBSX 536
2543#define OBJ_setct_AuthResTBSX OBJ_set_ctype,18L
2544
2545#define SN_setct_AuthTokenTBS "setct-AuthTokenTBS"
2546#define NID_setct_AuthTokenTBS 537
2547#define OBJ_setct_AuthTokenTBS OBJ_set_ctype,19L
2548
2549#define SN_setct_CapTokenData "setct-CapTokenData"
2550#define NID_setct_CapTokenData 538
2551#define OBJ_setct_CapTokenData OBJ_set_ctype,20L
2552
2553#define SN_setct_CapTokenTBS "setct-CapTokenTBS"
2554#define NID_setct_CapTokenTBS 539
2555#define OBJ_setct_CapTokenTBS OBJ_set_ctype,21L
2556
2557#define SN_setct_AcqCardCodeMsg "setct-AcqCardCodeMsg"
2558#define NID_setct_AcqCardCodeMsg 540
2559#define OBJ_setct_AcqCardCodeMsg OBJ_set_ctype,22L
2560
2561#define SN_setct_AuthRevReqTBS "setct-AuthRevReqTBS"
2562#define NID_setct_AuthRevReqTBS 541
2563#define OBJ_setct_AuthRevReqTBS OBJ_set_ctype,23L
2564
2565#define SN_setct_AuthRevResData "setct-AuthRevResData"
2566#define NID_setct_AuthRevResData 542
2567#define OBJ_setct_AuthRevResData OBJ_set_ctype,24L
2568
2569#define SN_setct_AuthRevResTBS "setct-AuthRevResTBS"
2570#define NID_setct_AuthRevResTBS 543
2571#define OBJ_setct_AuthRevResTBS OBJ_set_ctype,25L
2572
2573#define SN_setct_CapReqTBS "setct-CapReqTBS"
2574#define NID_setct_CapReqTBS 544
2575#define OBJ_setct_CapReqTBS OBJ_set_ctype,26L
2576
2577#define SN_setct_CapReqTBSX "setct-CapReqTBSX"
2578#define NID_setct_CapReqTBSX 545
2579#define OBJ_setct_CapReqTBSX OBJ_set_ctype,27L
2580
2581#define SN_setct_CapResData "setct-CapResData"
2582#define NID_setct_CapResData 546
2583#define OBJ_setct_CapResData OBJ_set_ctype,28L
2584
2585#define SN_setct_CapRevReqTBS "setct-CapRevReqTBS"
2586#define NID_setct_CapRevReqTBS 547
2587#define OBJ_setct_CapRevReqTBS OBJ_set_ctype,29L
2588
2589#define SN_setct_CapRevReqTBSX "setct-CapRevReqTBSX"
2590#define NID_setct_CapRevReqTBSX 548
2591#define OBJ_setct_CapRevReqTBSX OBJ_set_ctype,30L
2592
2593#define SN_setct_CapRevResData "setct-CapRevResData"
2594#define NID_setct_CapRevResData 549
2595#define OBJ_setct_CapRevResData OBJ_set_ctype,31L
2596
2597#define SN_setct_CredReqTBS "setct-CredReqTBS"
2598#define NID_setct_CredReqTBS 550
2599#define OBJ_setct_CredReqTBS OBJ_set_ctype,32L
2600
2601#define SN_setct_CredReqTBSX "setct-CredReqTBSX"
2602#define NID_setct_CredReqTBSX 551
2603#define OBJ_setct_CredReqTBSX OBJ_set_ctype,33L
2604
2605#define SN_setct_CredResData "setct-CredResData"
2606#define NID_setct_CredResData 552
2607#define OBJ_setct_CredResData OBJ_set_ctype,34L
2608
2609#define SN_setct_CredRevReqTBS "setct-CredRevReqTBS"
2610#define NID_setct_CredRevReqTBS 553
2611#define OBJ_setct_CredRevReqTBS OBJ_set_ctype,35L
2612
2613#define SN_setct_CredRevReqTBSX "setct-CredRevReqTBSX"
2614#define NID_setct_CredRevReqTBSX 554
2615#define OBJ_setct_CredRevReqTBSX OBJ_set_ctype,36L
2616
2617#define SN_setct_CredRevResData "setct-CredRevResData"
2618#define NID_setct_CredRevResData 555
2619#define OBJ_setct_CredRevResData OBJ_set_ctype,37L
2620
2621#define SN_setct_PCertReqData "setct-PCertReqData"
2622#define NID_setct_PCertReqData 556
2623#define OBJ_setct_PCertReqData OBJ_set_ctype,38L
2624
2625#define SN_setct_PCertResTBS "setct-PCertResTBS"
2626#define NID_setct_PCertResTBS 557
2627#define OBJ_setct_PCertResTBS OBJ_set_ctype,39L
2628
2629#define SN_setct_BatchAdminReqData "setct-BatchAdminReqData"
2630#define NID_setct_BatchAdminReqData 558
2631#define OBJ_setct_BatchAdminReqData OBJ_set_ctype,40L
2632
2633#define SN_setct_BatchAdminResData "setct-BatchAdminResData"
2634#define NID_setct_BatchAdminResData 559
2635#define OBJ_setct_BatchAdminResData OBJ_set_ctype,41L
2636
2637#define SN_setct_CardCInitResTBS "setct-CardCInitResTBS"
2638#define NID_setct_CardCInitResTBS 560
2639#define OBJ_setct_CardCInitResTBS OBJ_set_ctype,42L
2640
2641#define SN_setct_MeAqCInitResTBS "setct-MeAqCInitResTBS"
2642#define NID_setct_MeAqCInitResTBS 561
2643#define OBJ_setct_MeAqCInitResTBS OBJ_set_ctype,43L
2644
2645#define SN_setct_RegFormResTBS "setct-RegFormResTBS"
2646#define NID_setct_RegFormResTBS 562
2647#define OBJ_setct_RegFormResTBS OBJ_set_ctype,44L
2648
2649#define SN_setct_CertReqData "setct-CertReqData"
2650#define NID_setct_CertReqData 563
2651#define OBJ_setct_CertReqData OBJ_set_ctype,45L
2652
2653#define SN_setct_CertReqTBS "setct-CertReqTBS"
2654#define NID_setct_CertReqTBS 564
2655#define OBJ_setct_CertReqTBS OBJ_set_ctype,46L
2656
2657#define SN_setct_CertResData "setct-CertResData"
2658#define NID_setct_CertResData 565
2659#define OBJ_setct_CertResData OBJ_set_ctype,47L
2660
2661#define SN_setct_CertInqReqTBS "setct-CertInqReqTBS"
2662#define NID_setct_CertInqReqTBS 566
2663#define OBJ_setct_CertInqReqTBS OBJ_set_ctype,48L
2664
2665#define SN_setct_ErrorTBS "setct-ErrorTBS"
2666#define NID_setct_ErrorTBS 567
2667#define OBJ_setct_ErrorTBS OBJ_set_ctype,49L
2668
2669#define SN_setct_PIDualSignedTBE "setct-PIDualSignedTBE"
2670#define NID_setct_PIDualSignedTBE 568
2671#define OBJ_setct_PIDualSignedTBE OBJ_set_ctype,50L
2672
2673#define SN_setct_PIUnsignedTBE "setct-PIUnsignedTBE"
2674#define NID_setct_PIUnsignedTBE 569
2675#define OBJ_setct_PIUnsignedTBE OBJ_set_ctype,51L
2676
2677#define SN_setct_AuthReqTBE "setct-AuthReqTBE"
2678#define NID_setct_AuthReqTBE 570
2679#define OBJ_setct_AuthReqTBE OBJ_set_ctype,52L
2680
2681#define SN_setct_AuthResTBE "setct-AuthResTBE"
2682#define NID_setct_AuthResTBE 571
2683#define OBJ_setct_AuthResTBE OBJ_set_ctype,53L
2684
2685#define SN_setct_AuthResTBEX "setct-AuthResTBEX"
2686#define NID_setct_AuthResTBEX 572
2687#define OBJ_setct_AuthResTBEX OBJ_set_ctype,54L
2688
2689#define SN_setct_AuthTokenTBE "setct-AuthTokenTBE"
2690#define NID_setct_AuthTokenTBE 573
2691#define OBJ_setct_AuthTokenTBE OBJ_set_ctype,55L
2692
2693#define SN_setct_CapTokenTBE "setct-CapTokenTBE"
2694#define NID_setct_CapTokenTBE 574
2695#define OBJ_setct_CapTokenTBE OBJ_set_ctype,56L
2696
2697#define SN_setct_CapTokenTBEX "setct-CapTokenTBEX"
2698#define NID_setct_CapTokenTBEX 575
2699#define OBJ_setct_CapTokenTBEX OBJ_set_ctype,57L
2700
2701#define SN_setct_AcqCardCodeMsgTBE "setct-AcqCardCodeMsgTBE"
2702#define NID_setct_AcqCardCodeMsgTBE 576
2703#define OBJ_setct_AcqCardCodeMsgTBE OBJ_set_ctype,58L
2704
2705#define SN_setct_AuthRevReqTBE "setct-AuthRevReqTBE"
2706#define NID_setct_AuthRevReqTBE 577
2707#define OBJ_setct_AuthRevReqTBE OBJ_set_ctype,59L
2708
2709#define SN_setct_AuthRevResTBE "setct-AuthRevResTBE"
2710#define NID_setct_AuthRevResTBE 578
2711#define OBJ_setct_AuthRevResTBE OBJ_set_ctype,60L
2712
2713#define SN_setct_AuthRevResTBEB "setct-AuthRevResTBEB"
2714#define NID_setct_AuthRevResTBEB 579
2715#define OBJ_setct_AuthRevResTBEB OBJ_set_ctype,61L
2716
2717#define SN_setct_CapReqTBE "setct-CapReqTBE"
2718#define NID_setct_CapReqTBE 580
2719#define OBJ_setct_CapReqTBE OBJ_set_ctype,62L
2720
2721#define SN_setct_CapReqTBEX "setct-CapReqTBEX"
2722#define NID_setct_CapReqTBEX 581
2723#define OBJ_setct_CapReqTBEX OBJ_set_ctype,63L
2724
2725#define SN_setct_CapResTBE "setct-CapResTBE"
2726#define NID_setct_CapResTBE 582
2727#define OBJ_setct_CapResTBE OBJ_set_ctype,64L
2728
2729#define SN_setct_CapRevReqTBE "setct-CapRevReqTBE"
2730#define NID_setct_CapRevReqTBE 583
2731#define OBJ_setct_CapRevReqTBE OBJ_set_ctype,65L
2732
2733#define SN_setct_CapRevReqTBEX "setct-CapRevReqTBEX"
2734#define NID_setct_CapRevReqTBEX 584
2735#define OBJ_setct_CapRevReqTBEX OBJ_set_ctype,66L
2736
2737#define SN_setct_CapRevResTBE "setct-CapRevResTBE"
2738#define NID_setct_CapRevResTBE 585
2739#define OBJ_setct_CapRevResTBE OBJ_set_ctype,67L
2740
2741#define SN_setct_CredReqTBE "setct-CredReqTBE"
2742#define NID_setct_CredReqTBE 586
2743#define OBJ_setct_CredReqTBE OBJ_set_ctype,68L
2744
2745#define SN_setct_CredReqTBEX "setct-CredReqTBEX"
2746#define NID_setct_CredReqTBEX 587
2747#define OBJ_setct_CredReqTBEX OBJ_set_ctype,69L
2748
2749#define SN_setct_CredResTBE "setct-CredResTBE"
2750#define NID_setct_CredResTBE 588
2751#define OBJ_setct_CredResTBE OBJ_set_ctype,70L
2752
2753#define SN_setct_CredRevReqTBE "setct-CredRevReqTBE"
2754#define NID_setct_CredRevReqTBE 589
2755#define OBJ_setct_CredRevReqTBE OBJ_set_ctype,71L
2756
2757#define SN_setct_CredRevReqTBEX "setct-CredRevReqTBEX"
2758#define NID_setct_CredRevReqTBEX 590
2759#define OBJ_setct_CredRevReqTBEX OBJ_set_ctype,72L
2760
2761#define SN_setct_CredRevResTBE "setct-CredRevResTBE"
2762#define NID_setct_CredRevResTBE 591
2763#define OBJ_setct_CredRevResTBE OBJ_set_ctype,73L
2764
2765#define SN_setct_BatchAdminReqTBE "setct-BatchAdminReqTBE"
2766#define NID_setct_BatchAdminReqTBE 592
2767#define OBJ_setct_BatchAdminReqTBE OBJ_set_ctype,74L
2768
2769#define SN_setct_BatchAdminResTBE "setct-BatchAdminResTBE"
2770#define NID_setct_BatchAdminResTBE 593
2771#define OBJ_setct_BatchAdminResTBE OBJ_set_ctype,75L
2772
2773#define SN_setct_RegFormReqTBE "setct-RegFormReqTBE"
2774#define NID_setct_RegFormReqTBE 594
2775#define OBJ_setct_RegFormReqTBE OBJ_set_ctype,76L
2776
2777#define SN_setct_CertReqTBE "setct-CertReqTBE"
2778#define NID_setct_CertReqTBE 595
2779#define OBJ_setct_CertReqTBE OBJ_set_ctype,77L
2780
2781#define SN_setct_CertReqTBEX "setct-CertReqTBEX"
2782#define NID_setct_CertReqTBEX 596
2783#define OBJ_setct_CertReqTBEX OBJ_set_ctype,78L
2784
2785#define SN_setct_CertResTBE "setct-CertResTBE"
2786#define NID_setct_CertResTBE 597
2787#define OBJ_setct_CertResTBE OBJ_set_ctype,79L
2788
2789#define SN_setct_CRLNotificationTBS "setct-CRLNotificationTBS"
2790#define NID_setct_CRLNotificationTBS 598
2791#define OBJ_setct_CRLNotificationTBS OBJ_set_ctype,80L
2792
2793#define SN_setct_CRLNotificationResTBS "setct-CRLNotificationResTBS"
2794#define NID_setct_CRLNotificationResTBS 599
2795#define OBJ_setct_CRLNotificationResTBS OBJ_set_ctype,81L
2796
2797#define SN_setct_BCIDistributionTBS "setct-BCIDistributionTBS"
2798#define NID_setct_BCIDistributionTBS 600
2799#define OBJ_setct_BCIDistributionTBS OBJ_set_ctype,82L
2800
2801#define SN_setext_genCrypt "setext-genCrypt"
2802#define LN_setext_genCrypt "generic cryptogram"
2803#define NID_setext_genCrypt 601
2804#define OBJ_setext_genCrypt OBJ_set_msgExt,1L
2805
2806#define SN_setext_miAuth "setext-miAuth"
2807#define LN_setext_miAuth "merchant initiated auth"
2808#define NID_setext_miAuth 602
2809#define OBJ_setext_miAuth OBJ_set_msgExt,3L
2810
2811#define SN_setext_pinSecure "setext-pinSecure"
2812#define NID_setext_pinSecure 603
2813#define OBJ_setext_pinSecure OBJ_set_msgExt,4L
2814
2815#define SN_setext_pinAny "setext-pinAny"
2816#define NID_setext_pinAny 604
2817#define OBJ_setext_pinAny OBJ_set_msgExt,5L
2818
2819#define SN_setext_track2 "setext-track2"
2820#define NID_setext_track2 605
2821#define OBJ_setext_track2 OBJ_set_msgExt,7L
2822
2823#define SN_setext_cv "setext-cv"
2824#define LN_setext_cv "additional verification"
2825#define NID_setext_cv 606
2826#define OBJ_setext_cv OBJ_set_msgExt,8L
2827
2828#define SN_set_policy_root "set-policy-root"
2829#define NID_set_policy_root 607
2830#define OBJ_set_policy_root OBJ_set_policy,0L
2831
2832#define SN_setCext_hashedRoot "setCext-hashedRoot"
2833#define NID_setCext_hashedRoot 608
2834#define OBJ_setCext_hashedRoot OBJ_set_certExt,0L
2835
2836#define SN_setCext_certType "setCext-certType"
2837#define NID_setCext_certType 609
2838#define OBJ_setCext_certType OBJ_set_certExt,1L
2839
2840#define SN_setCext_merchData "setCext-merchData"
2841#define NID_setCext_merchData 610
2842#define OBJ_setCext_merchData OBJ_set_certExt,2L
2843
2844#define SN_setCext_cCertRequired "setCext-cCertRequired"
2845#define NID_setCext_cCertRequired 611
2846#define OBJ_setCext_cCertRequired OBJ_set_certExt,3L
2847
2848#define SN_setCext_tunneling "setCext-tunneling"
2849#define NID_setCext_tunneling 612
2850#define OBJ_setCext_tunneling OBJ_set_certExt,4L
2851
2852#define SN_setCext_setExt "setCext-setExt"
2853#define NID_setCext_setExt 613
2854#define OBJ_setCext_setExt OBJ_set_certExt,5L
2855
2856#define SN_setCext_setQualf "setCext-setQualf"
2857#define NID_setCext_setQualf 614
2858#define OBJ_setCext_setQualf OBJ_set_certExt,6L
2859
2860#define SN_setCext_PGWYcapabilities "setCext-PGWYcapabilities"
2861#define NID_setCext_PGWYcapabilities 615
2862#define OBJ_setCext_PGWYcapabilities OBJ_set_certExt,7L
2863
2864#define SN_setCext_TokenIdentifier "setCext-TokenIdentifier"
2865#define NID_setCext_TokenIdentifier 616
2866#define OBJ_setCext_TokenIdentifier OBJ_set_certExt,8L
2867
2868#define SN_setCext_Track2Data "setCext-Track2Data"
2869#define NID_setCext_Track2Data 617
2870#define OBJ_setCext_Track2Data OBJ_set_certExt,9L
2871
2872#define SN_setCext_TokenType "setCext-TokenType"
2873#define NID_setCext_TokenType 618
2874#define OBJ_setCext_TokenType OBJ_set_certExt,10L
2875
2876#define SN_setCext_IssuerCapabilities "setCext-IssuerCapabilities"
2877#define NID_setCext_IssuerCapabilities 619
2878#define OBJ_setCext_IssuerCapabilities OBJ_set_certExt,11L
2879
2880#define SN_setAttr_Cert "setAttr-Cert"
2881#define NID_setAttr_Cert 620
2882#define OBJ_setAttr_Cert OBJ_set_attr,0L
2883
2884#define SN_setAttr_PGWYcap "setAttr-PGWYcap"
2885#define LN_setAttr_PGWYcap "payment gateway capabilities"
2886#define NID_setAttr_PGWYcap 621
2887#define OBJ_setAttr_PGWYcap OBJ_set_attr,1L
2888
2889#define SN_setAttr_TokenType "setAttr-TokenType"
2890#define NID_setAttr_TokenType 622
2891#define OBJ_setAttr_TokenType OBJ_set_attr,2L
2892
2893#define SN_setAttr_IssCap "setAttr-IssCap"
2894#define LN_setAttr_IssCap "issuer capabilities"
2895#define NID_setAttr_IssCap 623
2896#define OBJ_setAttr_IssCap OBJ_set_attr,3L
2897
2898#define SN_set_rootKeyThumb "set-rootKeyThumb"
2899#define NID_set_rootKeyThumb 624
2900#define OBJ_set_rootKeyThumb OBJ_setAttr_Cert,0L
2901
2902#define SN_set_addPolicy "set-addPolicy"
2903#define NID_set_addPolicy 625
2904#define OBJ_set_addPolicy OBJ_setAttr_Cert,1L
2905
2906#define SN_setAttr_Token_EMV "setAttr-Token-EMV"
2907#define NID_setAttr_Token_EMV 626
2908#define OBJ_setAttr_Token_EMV OBJ_setAttr_TokenType,1L
2909
2910#define SN_setAttr_Token_B0Prime "setAttr-Token-B0Prime"
2911#define NID_setAttr_Token_B0Prime 627
2912#define OBJ_setAttr_Token_B0Prime OBJ_setAttr_TokenType,2L
2913
2914#define SN_setAttr_IssCap_CVM "setAttr-IssCap-CVM"
2915#define NID_setAttr_IssCap_CVM 628
2916#define OBJ_setAttr_IssCap_CVM OBJ_setAttr_IssCap,3L
2917
2918#define SN_setAttr_IssCap_T2 "setAttr-IssCap-T2"
2919#define NID_setAttr_IssCap_T2 629
2920#define OBJ_setAttr_IssCap_T2 OBJ_setAttr_IssCap,4L
2921
2922#define SN_setAttr_IssCap_Sig "setAttr-IssCap-Sig"
2923#define NID_setAttr_IssCap_Sig 630
2924#define OBJ_setAttr_IssCap_Sig OBJ_setAttr_IssCap,5L
2925
2926#define SN_setAttr_GenCryptgrm "setAttr-GenCryptgrm"
2927#define LN_setAttr_GenCryptgrm "generate cryptogram"
2928#define NID_setAttr_GenCryptgrm 631
2929#define OBJ_setAttr_GenCryptgrm OBJ_setAttr_IssCap_CVM,1L
2930
2931#define SN_setAttr_T2Enc "setAttr-T2Enc"
2932#define LN_setAttr_T2Enc "encrypted track 2"
2933#define NID_setAttr_T2Enc 632
2934#define OBJ_setAttr_T2Enc OBJ_setAttr_IssCap_T2,1L
2935
2936#define SN_setAttr_T2cleartxt "setAttr-T2cleartxt"
2937#define LN_setAttr_T2cleartxt "cleartext track 2"
2938#define NID_setAttr_T2cleartxt 633
2939#define OBJ_setAttr_T2cleartxt OBJ_setAttr_IssCap_T2,2L
2940
2941#define SN_setAttr_TokICCsig "setAttr-TokICCsig"
2942#define LN_setAttr_TokICCsig "ICC or token signature"
2943#define NID_setAttr_TokICCsig 634
2944#define OBJ_setAttr_TokICCsig OBJ_setAttr_IssCap_Sig,1L
2945
2946#define SN_setAttr_SecDevSig "setAttr-SecDevSig"
2947#define LN_setAttr_SecDevSig "secure device signature"
2948#define NID_setAttr_SecDevSig 635
2949#define OBJ_setAttr_SecDevSig OBJ_setAttr_IssCap_Sig,2L
2950
2951#define SN_set_brand_IATA_ATA "set-brand-IATA-ATA"
2952#define NID_set_brand_IATA_ATA 636
2953#define OBJ_set_brand_IATA_ATA OBJ_set_brand,1L
2954
2955#define SN_set_brand_Diners "set-brand-Diners"
2956#define NID_set_brand_Diners 637
2957#define OBJ_set_brand_Diners OBJ_set_brand,30L
2958
2959#define SN_set_brand_AmericanExpress "set-brand-AmericanExpress"
2960#define NID_set_brand_AmericanExpress 638
2961#define OBJ_set_brand_AmericanExpress OBJ_set_brand,34L
2962
2963#define SN_set_brand_JCB "set-brand-JCB"
2964#define NID_set_brand_JCB 639
2965#define OBJ_set_brand_JCB OBJ_set_brand,35L
2966
2967#define SN_set_brand_Visa "set-brand-Visa"
2968#define NID_set_brand_Visa 640
2969#define OBJ_set_brand_Visa OBJ_set_brand,4L
2970
2971#define SN_set_brand_MasterCard "set-brand-MasterCard"
2972#define NID_set_brand_MasterCard 641
2973#define OBJ_set_brand_MasterCard OBJ_set_brand,5L
2974
2975#define SN_set_brand_Novus "set-brand-Novus"
2976#define NID_set_brand_Novus 642
2977#define OBJ_set_brand_Novus OBJ_set_brand,6011L
2978
2979#define SN_des_cdmf "DES-CDMF"
2980#define LN_des_cdmf "des-cdmf"
2981#define NID_des_cdmf 643
2982#define OBJ_des_cdmf OBJ_rsadsi,3L,10L
2983
2984#define SN_rsaOAEPEncryptionSET "rsaOAEPEncryptionSET"
2985#define NID_rsaOAEPEncryptionSET 644
2986#define OBJ_rsaOAEPEncryptionSET OBJ_rsadsi,1L,1L,6L
2987
diff --git a/src/lib/libssl/src/crypto/objects/obj_mac.num b/src/lib/libssl/src/crypto/objects/obj_mac.num
index 84555d936e..0e64a929ba 100644
--- a/src/lib/libssl/src/crypto/objects/obj_mac.num
+++ b/src/lib/libssl/src/crypto/objects/obj_mac.num
@@ -287,9 +287,9 @@ qcStatements 286
287ac_auditEntity 287 287ac_auditEntity 287
288ac_targeting 288 288ac_targeting 288
289aaControls 289 289aaControls 289
290sbgp_ipAddrBlock 290 290sbqp_ipAddrBlock 290
291sbgp_autonomousSysNum 291 291sbqp_autonomousSysNum 291
292sbgp_routerIdentifier 292 292sbqp_routerIdentifier 292
293textNotice 293 293textNotice 293
294ipsecEndSystem 294 294ipsecEndSystem 294
295ipsecTunnel 295 295ipsecTunnel 295
@@ -663,13 +663,5 @@ id_ppl 662
663proxyCertInfo 663 663proxyCertInfo 663
664id_ppl_anyLanguage 664 664id_ppl_anyLanguage 664
665id_ppl_inheritAll 665 665id_ppl_inheritAll 665
666name_constraints 666 666id_ppl_independent 666
667Independent 667 667Independent 667
668sha256WithRSAEncryption 668
669sha384WithRSAEncryption 669
670sha512WithRSAEncryption 670
671sha224WithRSAEncryption 671
672sha256 672
673sha384 673
674sha512 674
675sha224 675
diff --git a/src/lib/libssl/src/crypto/objects/objects.pl b/src/lib/libssl/src/crypto/objects/objects.pl
index 76c06cc8f9..76bb8da677 100644
--- a/src/lib/libssl/src/crypto/objects/objects.pl
+++ b/src/lib/libssl/src/crypto/objects/objects.pl
@@ -107,12 +107,13 @@ while (<IN>)
107 } 107 }
108close IN; 108close IN;
109 109
110open (NUMOUT,">$ARGV[1]") || die "Can't open output file $ARGV[1]"; 110#XXX don't modify input files
111foreach (sort { $a <=> $b } keys %nidn) 111#open (NUMOUT,">$ARGV[1]") || die "Can't open output file $ARGV[1]";
112 { 112#foreach (sort { $a <=> $b } keys %nidn)
113 print NUMOUT $nidn{$_},"\t\t",$_,"\n"; 113# {
114 } 114# print NUMOUT $nidn{$_},"\t\t",$_,"\n";
115close NUMOUT; 115# }
116#close NUMOUT;
116 117
117open (OUT,">$ARGV[2]") || die "Can't open output file $ARGV[2]"; 118open (OUT,">$ARGV[2]") || die "Can't open output file $ARGV[2]";
118print OUT <<'EOF'; 119print OUT <<'EOF';
diff --git a/src/lib/libssl/src/crypto/objects/objects.txt b/src/lib/libssl/src/crypto/objects/objects.txt
index 2635c4e667..50e9031e61 100644
--- a/src/lib/libssl/src/crypto/objects/objects.txt
+++ b/src/lib/libssl/src/crypto/objects/objects.txt
@@ -63,11 +63,6 @@ pkcs1 2 : RSA-MD2 : md2WithRSAEncryption
63pkcs1 3 : RSA-MD4 : md4WithRSAEncryption 63pkcs1 3 : RSA-MD4 : md4WithRSAEncryption
64pkcs1 4 : RSA-MD5 : md5WithRSAEncryption 64pkcs1 4 : RSA-MD5 : md5WithRSAEncryption
65pkcs1 5 : RSA-SHA1 : sha1WithRSAEncryption 65pkcs1 5 : RSA-SHA1 : sha1WithRSAEncryption
66# According to PKCS #1 version 2.1
67pkcs1 11 : RSA-SHA256 : sha256WithRSAEncryption
68pkcs1 12 : RSA-SHA384 : sha384WithRSAEncryption
69pkcs1 13 : RSA-SHA512 : sha512WithRSAEncryption
70pkcs1 14 : RSA-SHA224 : sha224WithRSAEncryption
71 66
72pkcs 3 : pkcs3 67pkcs 3 : pkcs3
73pkcs3 1 : : dhKeyAgreement 68pkcs3 1 : : dhKeyAgreement
@@ -346,9 +341,9 @@ id-pe 3 : qcStatements
346id-pe 4 : ac-auditEntity 341id-pe 4 : ac-auditEntity
347id-pe 5 : ac-targeting 342id-pe 5 : ac-targeting
348id-pe 6 : aaControls 343id-pe 6 : aaControls
349id-pe 7 : sbgp-ipAddrBlock 344id-pe 7 : sbqp-ipAddrBlock
350id-pe 8 : sbgp-autonomousSysNum 345id-pe 8 : sbqp-autonomousSysNum
351id-pe 9 : sbgp-routerIdentifier 346id-pe 9 : sbqp-routerIdentifier
352id-pe 10 : ac-proxying 347id-pe 10 : ac-proxying
353!Cname sinfo-access 348!Cname sinfo-access
354id-pe 11 : subjectInfoAccess : Subject Information Access 349id-pe 11 : subjectInfoAccess : Subject Information Access
@@ -589,8 +584,6 @@ id-ce 21 : CRLReason : X509v3 CRL Reason Code
589id-ce 24 : invalidityDate : Invalidity Date 584id-ce 24 : invalidityDate : Invalidity Date
590!Cname delta-crl 585!Cname delta-crl
591id-ce 27 : deltaCRL : X509v3 Delta CRL Indicator 586id-ce 27 : deltaCRL : X509v3 Delta CRL Indicator
592!Cname name-constraints
593id-ce 30 : nameConstraints : X509v3 Name Constraints
594!Cname crl-distribution-points 587!Cname crl-distribution-points
595id-ce 31 : crlDistributionPoints : X509v3 CRL Distribution Points 588id-ce 31 : crlDistributionPoints : X509v3 CRL Distribution Points
596!Cname certificate-policies 589!Cname certificate-policies
@@ -710,13 +703,6 @@ aes 44 : AES-256-CFB : aes-256-cfb
710 : DES-EDE3-CFB1 : des-ede3-cfb1 703 : DES-EDE3-CFB1 : des-ede3-cfb1
711 : DES-EDE3-CFB8 : des-ede3-cfb8 704 : DES-EDE3-CFB8 : des-ede3-cfb8
712 705
713# OIDs for SHA224, SHA256, SHA385 and SHA512, according to x9.84.
714!Alias nist_hashalgs nistAlgorithms 2
715nist_hashalgs 1 : SHA256 : sha256
716nist_hashalgs 2 : SHA384 : sha384
717nist_hashalgs 3 : SHA512 : sha512
718nist_hashalgs 4 : SHA224 : sha224
719
720# Hold instruction CRL entry extension 706# Hold instruction CRL entry extension
721!Cname hold-instruction-code 707!Cname hold-instruction-code
722id-ce 23 : holdInstructionCode : Hold Instruction Code 708id-ce 23 : holdInstructionCode : Hold Instruction Code
diff --git a/src/lib/libssl/src/crypto/ocsp/Makefile.ssl b/src/lib/libssl/src/crypto/ocsp/Makefile.ssl
new file mode 100644
index 0000000000..02477be538
--- /dev/null
+++ b/src/lib/libssl/src/crypto/ocsp/Makefile.ssl
@@ -0,0 +1,293 @@
1#
2# OpenSSL/ocsp/Makefile.ssl
3#
4
5DIR= ocsp
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile README
22TEST=
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC= ocsp_asn.c ocsp_ext.c ocsp_ht.c ocsp_lib.c ocsp_cl.c \
27 ocsp_srv.c ocsp_prn.c ocsp_vfy.c ocsp_err.c
28
29LIBOBJ= ocsp_asn.o ocsp_ext.o ocsp_ht.o ocsp_lib.o ocsp_cl.o \
30 ocsp_srv.o ocsp_prn.o ocsp_vfy.o ocsp_err.o
31
32SRC= $(LIBSRC)
33
34EXHEADER= ocsp.h
35HEADER= $(EXHEADER)
36
37ALL= $(GENERAL) $(SRC) $(HEADER)
38
39top:
40 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
41
42all: lib
43
44lib: $(LIBOBJ)
45 $(AR) $(LIB) $(LIBOBJ)
46 $(RANLIB) $(LIB) || echo Never mind.
47 @touch lib
48
49files:
50 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
51
52links:
53 @sh $(TOP)/util/point.sh Makefile.ssl Makefile ;
54 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
55 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
56 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
57
58install:
59 @for i in $(EXHEADER) ; \
60 do \
61 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
62 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
63 done;
64
65tags:
66 ctags $(SRC)
67
68tests:
69
70lint:
71 lint -DLINT $(INCLUDES) $(SRC)>fluff
72
73depend:
74 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(LIBSRC)
75
76dclean:
77 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
78 mv -f Makefile.new $(MAKEFILE)
79
80clean:
81 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
82
83# DO NOT DELETE THIS LINE -- make depend depends on it.
84
85ocsp_asn.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
86ocsp_asn.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
87ocsp_asn.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
88ocsp_asn.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
89ocsp_asn.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
90ocsp_asn.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
91ocsp_asn.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
92ocsp_asn.o: ../../include/openssl/e_os2.h ../../include/openssl/evp.h
93ocsp_asn.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
94ocsp_asn.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
95ocsp_asn.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
96ocsp_asn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
97ocsp_asn.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h
98ocsp_asn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
99ocsp_asn.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
100ocsp_asn.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
101ocsp_asn.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
102ocsp_asn.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
103ocsp_asn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
104ocsp_asn.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
105ocsp_asn.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
106ocsp_asn.o: ../../include/openssl/x509v3.h ocsp_asn.c
107ocsp_cl.o: ../../e_os.h ../../include/openssl/aes.h
108ocsp_cl.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
109ocsp_cl.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
110ocsp_cl.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
111ocsp_cl.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
112ocsp_cl.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
113ocsp_cl.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
114ocsp_cl.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
115ocsp_cl.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
116ocsp_cl.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
117ocsp_cl.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
118ocsp_cl.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
119ocsp_cl.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h
120ocsp_cl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
121ocsp_cl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
122ocsp_cl.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h
123ocsp_cl.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
124ocsp_cl.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
125ocsp_cl.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
126ocsp_cl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
127ocsp_cl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
128ocsp_cl.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
129ocsp_cl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
130ocsp_cl.o: ../../include/openssl/x509v3.h ../cryptlib.h ocsp_cl.c
131ocsp_err.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
132ocsp_err.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
133ocsp_err.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
134ocsp_err.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
135ocsp_err.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
136ocsp_err.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
137ocsp_err.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
138ocsp_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h
139ocsp_err.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
140ocsp_err.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
141ocsp_err.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
142ocsp_err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
143ocsp_err.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h
144ocsp_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
145ocsp_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
146ocsp_err.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
147ocsp_err.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
148ocsp_err.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
149ocsp_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
150ocsp_err.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
151ocsp_err.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
152ocsp_err.o: ../../include/openssl/x509v3.h ocsp_err.c
153ocsp_ext.o: ../../e_os.h ../../include/openssl/aes.h
154ocsp_ext.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
155ocsp_ext.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
156ocsp_ext.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
157ocsp_ext.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
158ocsp_ext.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
159ocsp_ext.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
160ocsp_ext.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
161ocsp_ext.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
162ocsp_ext.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
163ocsp_ext.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
164ocsp_ext.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
165ocsp_ext.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h
166ocsp_ext.o: ../../include/openssl/opensslconf.h
167ocsp_ext.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
168ocsp_ext.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
169ocsp_ext.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
170ocsp_ext.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
171ocsp_ext.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
172ocsp_ext.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
173ocsp_ext.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
174ocsp_ext.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
175ocsp_ext.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
176ocsp_ext.o: ../cryptlib.h ocsp_ext.c
177ocsp_ht.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
178ocsp_ht.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
179ocsp_ht.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
180ocsp_ht.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
181ocsp_ht.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
182ocsp_ht.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
183ocsp_ht.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
184ocsp_ht.o: ../../include/openssl/err.h ../../include/openssl/evp.h
185ocsp_ht.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
186ocsp_ht.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
187ocsp_ht.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
188ocsp_ht.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
189ocsp_ht.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h
190ocsp_ht.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
191ocsp_ht.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
192ocsp_ht.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
193ocsp_ht.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
194ocsp_ht.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
195ocsp_ht.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
196ocsp_ht.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
197ocsp_ht.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
198ocsp_ht.o: ../../include/openssl/x509v3.h ocsp_ht.c
199ocsp_lib.o: ../../e_os.h ../../include/openssl/aes.h
200ocsp_lib.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
201ocsp_lib.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
202ocsp_lib.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
203ocsp_lib.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
204ocsp_lib.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
205ocsp_lib.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
206ocsp_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
207ocsp_lib.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
208ocsp_lib.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
209ocsp_lib.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
210ocsp_lib.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
211ocsp_lib.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h
212ocsp_lib.o: ../../include/openssl/opensslconf.h
213ocsp_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
214ocsp_lib.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
215ocsp_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
216ocsp_lib.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
217ocsp_lib.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
218ocsp_lib.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
219ocsp_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
220ocsp_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
221ocsp_lib.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
222ocsp_lib.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
223ocsp_lib.o: ../cryptlib.h ocsp_lib.c
224ocsp_prn.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
225ocsp_prn.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
226ocsp_prn.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
227ocsp_prn.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
228ocsp_prn.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
229ocsp_prn.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
230ocsp_prn.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
231ocsp_prn.o: ../../include/openssl/err.h ../../include/openssl/evp.h
232ocsp_prn.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
233ocsp_prn.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
234ocsp_prn.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
235ocsp_prn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
236ocsp_prn.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h
237ocsp_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
238ocsp_prn.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
239ocsp_prn.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
240ocsp_prn.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
241ocsp_prn.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
242ocsp_prn.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
243ocsp_prn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
244ocsp_prn.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
245ocsp_prn.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
246ocsp_prn.o: ../../include/openssl/x509v3.h ocsp_prn.c
247ocsp_srv.o: ../../e_os.h ../../include/openssl/aes.h
248ocsp_srv.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
249ocsp_srv.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
250ocsp_srv.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
251ocsp_srv.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
252ocsp_srv.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
253ocsp_srv.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
254ocsp_srv.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
255ocsp_srv.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
256ocsp_srv.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
257ocsp_srv.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
258ocsp_srv.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
259ocsp_srv.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h
260ocsp_srv.o: ../../include/openssl/opensslconf.h
261ocsp_srv.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
262ocsp_srv.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
263ocsp_srv.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
264ocsp_srv.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
265ocsp_srv.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
266ocsp_srv.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
267ocsp_srv.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
268ocsp_srv.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
269ocsp_srv.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
270ocsp_srv.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
271ocsp_srv.o: ../cryptlib.h ocsp_srv.c
272ocsp_vfy.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
273ocsp_vfy.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
274ocsp_vfy.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
275ocsp_vfy.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
276ocsp_vfy.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
277ocsp_vfy.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
278ocsp_vfy.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
279ocsp_vfy.o: ../../include/openssl/err.h ../../include/openssl/evp.h
280ocsp_vfy.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
281ocsp_vfy.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
282ocsp_vfy.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
283ocsp_vfy.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
284ocsp_vfy.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h
285ocsp_vfy.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
286ocsp_vfy.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
287ocsp_vfy.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
288ocsp_vfy.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
289ocsp_vfy.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
290ocsp_vfy.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
291ocsp_vfy.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
292ocsp_vfy.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
293ocsp_vfy.o: ../../include/openssl/x509v3.h ocsp_vfy.c
diff --git a/src/lib/libssl/src/crypto/ocsp/ocsp_err.c b/src/lib/libssl/src/crypto/ocsp/ocsp_err.c
index 65e6093fbc..4c4d8306f8 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-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999 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
@@ -64,64 +64,60 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_OCSP,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_OCSP,0,reason)
70
71static ERR_STRING_DATA OCSP_str_functs[]= 67static ERR_STRING_DATA OCSP_str_functs[]=
72 { 68 {
73{ERR_FUNC(OCSP_F_ASN1_STRING_ENCODE), "ASN1_STRING_encode"}, 69{ERR_PACK(0,OCSP_F_ASN1_STRING_ENCODE,0), "ASN1_STRING_encode"},
74{ERR_FUNC(OCSP_F_CERT_ID_NEW), "CERT_ID_NEW"}, 70{ERR_PACK(0,OCSP_F_CERT_ID_NEW,0), "CERT_ID_NEW"},
75{ERR_FUNC(OCSP_F_D2I_OCSP_NONCE), "D2I_OCSP_NONCE"}, 71{ERR_PACK(0,OCSP_F_D2I_OCSP_NONCE,0), "D2I_OCSP_NONCE"},
76{ERR_FUNC(OCSP_F_OCSP_BASIC_ADD1_STATUS), "OCSP_basic_add1_status"}, 72{ERR_PACK(0,OCSP_F_OCSP_BASIC_ADD1_STATUS,0), "OCSP_basic_add1_status"},
77{ERR_FUNC(OCSP_F_OCSP_BASIC_SIGN), "OCSP_basic_sign"}, 73{ERR_PACK(0,OCSP_F_OCSP_BASIC_SIGN,0), "OCSP_basic_sign"},
78{ERR_FUNC(OCSP_F_OCSP_BASIC_VERIFY), "OCSP_basic_verify"}, 74{ERR_PACK(0,OCSP_F_OCSP_BASIC_VERIFY,0), "OCSP_basic_verify"},
79{ERR_FUNC(OCSP_F_OCSP_CHECK_DELEGATED), "OCSP_CHECK_DELEGATED"}, 75{ERR_PACK(0,OCSP_F_OCSP_CHECK_DELEGATED,0), "OCSP_CHECK_DELEGATED"},
80{ERR_FUNC(OCSP_F_OCSP_CHECK_IDS), "OCSP_CHECK_IDS"}, 76{ERR_PACK(0,OCSP_F_OCSP_CHECK_IDS,0), "OCSP_CHECK_IDS"},
81{ERR_FUNC(OCSP_F_OCSP_CHECK_ISSUER), "OCSP_CHECK_ISSUER"}, 77{ERR_PACK(0,OCSP_F_OCSP_CHECK_ISSUER,0), "OCSP_CHECK_ISSUER"},
82{ERR_FUNC(OCSP_F_OCSP_CHECK_VALIDITY), "OCSP_check_validity"}, 78{ERR_PACK(0,OCSP_F_OCSP_CHECK_VALIDITY,0), "OCSP_check_validity"},
83{ERR_FUNC(OCSP_F_OCSP_MATCH_ISSUERID), "OCSP_MATCH_ISSUERID"}, 79{ERR_PACK(0,OCSP_F_OCSP_MATCH_ISSUERID,0), "OCSP_MATCH_ISSUERID"},
84{ERR_FUNC(OCSP_F_OCSP_PARSE_URL), "OCSP_parse_url"}, 80{ERR_PACK(0,OCSP_F_OCSP_PARSE_URL,0), "OCSP_parse_url"},
85{ERR_FUNC(OCSP_F_OCSP_REQUEST_SIGN), "OCSP_request_sign"}, 81{ERR_PACK(0,OCSP_F_OCSP_REQUEST_SIGN,0), "OCSP_request_sign"},
86{ERR_FUNC(OCSP_F_OCSP_REQUEST_VERIFY), "OCSP_request_verify"}, 82{ERR_PACK(0,OCSP_F_OCSP_REQUEST_VERIFY,0), "OCSP_request_verify"},
87{ERR_FUNC(OCSP_F_OCSP_RESPONSE_GET1_BASIC), "OCSP_response_get1_basic"}, 83{ERR_PACK(0,OCSP_F_OCSP_RESPONSE_GET1_BASIC,0), "OCSP_response_get1_basic"},
88{ERR_FUNC(OCSP_F_OCSP_SENDREQ_BIO), "OCSP_sendreq_bio"}, 84{ERR_PACK(0,OCSP_F_OCSP_SENDREQ_BIO,0), "OCSP_sendreq_bio"},
89{ERR_FUNC(OCSP_F_REQUEST_VERIFY), "REQUEST_VERIFY"}, 85{ERR_PACK(0,OCSP_F_REQUEST_VERIFY,0), "REQUEST_VERIFY"},
90{0,NULL} 86{0,NULL}
91 }; 87 };
92 88
93static ERR_STRING_DATA OCSP_str_reasons[]= 89static ERR_STRING_DATA OCSP_str_reasons[]=
94 { 90 {
95{ERR_REASON(OCSP_R_BAD_DATA) ,"bad data"}, 91{OCSP_R_BAD_DATA ,"bad data"},
96{ERR_REASON(OCSP_R_CERTIFICATE_VERIFY_ERROR),"certificate verify error"}, 92{OCSP_R_CERTIFICATE_VERIFY_ERROR ,"certificate verify error"},
97{ERR_REASON(OCSP_R_DIGEST_ERR) ,"digest err"}, 93{OCSP_R_DIGEST_ERR ,"digest err"},
98{ERR_REASON(OCSP_R_ERROR_IN_NEXTUPDATE_FIELD),"error in nextupdate field"}, 94{OCSP_R_ERROR_IN_NEXTUPDATE_FIELD ,"error in nextupdate field"},
99{ERR_REASON(OCSP_R_ERROR_IN_THISUPDATE_FIELD),"error in thisupdate field"}, 95{OCSP_R_ERROR_IN_THISUPDATE_FIELD ,"error in thisupdate field"},
100{ERR_REASON(OCSP_R_ERROR_PARSING_URL) ,"error parsing url"}, 96{OCSP_R_ERROR_PARSING_URL ,"error parsing url"},
101{ERR_REASON(OCSP_R_MISSING_OCSPSIGNING_USAGE),"missing ocspsigning usage"}, 97{OCSP_R_MISSING_OCSPSIGNING_USAGE ,"missing ocspsigning usage"},
102{ERR_REASON(OCSP_R_NEXTUPDATE_BEFORE_THISUPDATE),"nextupdate before thisupdate"}, 98{OCSP_R_NEXTUPDATE_BEFORE_THISUPDATE ,"nextupdate before thisupdate"},
103{ERR_REASON(OCSP_R_NOT_BASIC_RESPONSE) ,"not basic response"}, 99{OCSP_R_NOT_BASIC_RESPONSE ,"not basic response"},
104{ERR_REASON(OCSP_R_NO_CERTIFICATES_IN_CHAIN),"no certificates in chain"}, 100{OCSP_R_NO_CERTIFICATES_IN_CHAIN ,"no certificates in chain"},
105{ERR_REASON(OCSP_R_NO_CONTENT) ,"no content"}, 101{OCSP_R_NO_CONTENT ,"no content"},
106{ERR_REASON(OCSP_R_NO_PUBLIC_KEY) ,"no public key"}, 102{OCSP_R_NO_PUBLIC_KEY ,"no public key"},
107{ERR_REASON(OCSP_R_NO_RESPONSE_DATA) ,"no response data"}, 103{OCSP_R_NO_RESPONSE_DATA ,"no response data"},
108{ERR_REASON(OCSP_R_NO_REVOKED_TIME) ,"no revoked time"}, 104{OCSP_R_NO_REVOKED_TIME ,"no revoked time"},
109{ERR_REASON(OCSP_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE),"private key does not match certificate"}, 105{OCSP_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE,"private key does not match certificate"},
110{ERR_REASON(OCSP_R_REQUEST_NOT_SIGNED) ,"request not signed"}, 106{OCSP_R_REQUEST_NOT_SIGNED ,"request not signed"},
111{ERR_REASON(OCSP_R_RESPONSE_CONTAINS_NO_REVOCATION_DATA),"response contains no revocation data"}, 107{OCSP_R_RESPONSE_CONTAINS_NO_REVOCATION_DATA,"response contains no revocation data"},
112{ERR_REASON(OCSP_R_ROOT_CA_NOT_TRUSTED) ,"root ca not trusted"}, 108{OCSP_R_ROOT_CA_NOT_TRUSTED ,"root ca not trusted"},
113{ERR_REASON(OCSP_R_SERVER_READ_ERROR) ,"server read error"}, 109{OCSP_R_SERVER_READ_ERROR ,"server read error"},
114{ERR_REASON(OCSP_R_SERVER_RESPONSE_ERROR),"server response error"}, 110{OCSP_R_SERVER_RESPONSE_ERROR ,"server response error"},
115{ERR_REASON(OCSP_R_SERVER_RESPONSE_PARSE_ERROR),"server response parse error"}, 111{OCSP_R_SERVER_RESPONSE_PARSE_ERROR ,"server response parse error"},
116{ERR_REASON(OCSP_R_SERVER_WRITE_ERROR) ,"server write error"}, 112{OCSP_R_SERVER_WRITE_ERROR ,"server write error"},
117{ERR_REASON(OCSP_R_SIGNATURE_FAILURE) ,"signature failure"}, 113{OCSP_R_SIGNATURE_FAILURE ,"signature failure"},
118{ERR_REASON(OCSP_R_SIGNER_CERTIFICATE_NOT_FOUND),"signer certificate not found"}, 114{OCSP_R_SIGNER_CERTIFICATE_NOT_FOUND ,"signer certificate not found"},
119{ERR_REASON(OCSP_R_STATUS_EXPIRED) ,"status expired"}, 115{OCSP_R_STATUS_EXPIRED ,"status expired"},
120{ERR_REASON(OCSP_R_STATUS_NOT_YET_VALID) ,"status not yet valid"}, 116{OCSP_R_STATUS_NOT_YET_VALID ,"status not yet valid"},
121{ERR_REASON(OCSP_R_STATUS_TOO_OLD) ,"status too old"}, 117{OCSP_R_STATUS_TOO_OLD ,"status too old"},
122{ERR_REASON(OCSP_R_UNKNOWN_MESSAGE_DIGEST),"unknown message digest"}, 118{OCSP_R_UNKNOWN_MESSAGE_DIGEST ,"unknown message digest"},
123{ERR_REASON(OCSP_R_UNKNOWN_NID) ,"unknown nid"}, 119{OCSP_R_UNKNOWN_NID ,"unknown nid"},
124{ERR_REASON(OCSP_R_UNSUPPORTED_REQUESTORNAME_TYPE),"unsupported requestorname type"}, 120{OCSP_R_UNSUPPORTED_REQUESTORNAME_TYPE ,"unsupported requestorname type"},
125{0,NULL} 121{0,NULL}
126 }; 122 };
127 123
@@ -135,8 +131,8 @@ void ERR_load_OCSP_strings(void)
135 { 131 {
136 init=0; 132 init=0;
137#ifndef OPENSSL_NO_ERR 133#ifndef OPENSSL_NO_ERR
138 ERR_load_strings(0,OCSP_str_functs); 134 ERR_load_strings(ERR_LIB_OCSP,OCSP_str_functs);
139 ERR_load_strings(0,OCSP_str_reasons); 135 ERR_load_strings(ERR_LIB_OCSP,OCSP_str_reasons);
140#endif 136#endif
141 137
142 } 138 }
diff --git a/src/lib/libssl/src/crypto/opensslv.h b/src/lib/libssl/src/crypto/opensslv.h
index e50c1baf00..5d5f688edd 100644
--- a/src/lib/libssl/src/crypto/opensslv.h
+++ b/src/lib/libssl/src/crypto/opensslv.h
@@ -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 0x009070afL 28#define OPENSSL_VERSION_NUMBER 0x0090707fL
29#ifdef OPENSSL_FIPS 29#ifdef OPENSSL_FIPS
30#define OPENSSL_VERSION_TEXT "OpenSSL 0.9.7j-fips 04 May 2006" 30#define OPENSSL_VERSION_TEXT "OpenSSL 0.9.7g-fips 11 Apr 2005"
31#else 31#else
32#define OPENSSL_VERSION_TEXT "OpenSSL 0.9.7j 04 May 2006" 32#define OPENSSL_VERSION_TEXT "OpenSSL 0.9.7g 11 Apr 2005"
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
diff --git a/src/lib/libssl/src/crypto/pem/Makefile.ssl b/src/lib/libssl/src/crypto/pem/Makefile.ssl
new file mode 100644
index 0000000000..d3043eb401
--- /dev/null
+++ b/src/lib/libssl/src/crypto/pem/Makefile.ssl
@@ -0,0 +1,336 @@
1#
2# SSLeay/crypto/pem/Makefile
3#
4
5DIR= pem
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST=
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC= pem_sign.c pem_seal.c pem_info.c pem_lib.c pem_all.c pem_err.c \
27 pem_x509.c pem_xaux.c pem_oth.c pem_pk8.c pem_pkey.c
28
29LIBOBJ= pem_sign.o pem_seal.o pem_info.o pem_lib.o pem_all.o pem_err.o \
30 pem_x509.o pem_xaux.o pem_oth.o pem_pk8.o pem_pkey.o
31
32SRC= $(LIBSRC)
33
34EXHEADER= pem.h pem2.h
35HEADER= $(EXHEADER)
36
37ALL= $(GENERAL) $(SRC) $(HEADER)
38
39top:
40 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
41
42all: lib
43
44lib: $(LIBOBJ)
45 $(AR) $(LIB) $(LIBOBJ)
46 $(RANLIB) $(LIB) || echo Never mind.
47 @touch lib
48
49files:
50 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
51
52links: $(EXHEADER)
53 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
54 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
55 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
56 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
57
58install:
59 @for i in $(EXHEADER) ; \
60 do \
61 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
62 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
63 done;
64
65tags:
66 ctags $(SRC)
67
68tests:
69
70lint:
71 lint -DLINT $(INCLUDES) $(SRC)>fluff
72
73depend:
74 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(LIBSRC)
75
76dclean:
77 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
78 mv -f Makefile.new $(MAKEFILE)
79
80clean:
81 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
82
83# DO NOT DELETE THIS LINE -- make depend depends on it.
84
85pem_all.o: ../../e_os.h ../../include/openssl/aes.h
86pem_all.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
87pem_all.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
88pem_all.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
89pem_all.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
90pem_all.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
91pem_all.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
92pem_all.o: ../../include/openssl/err.h ../../include/openssl/evp.h
93pem_all.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
94pem_all.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
95pem_all.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
96pem_all.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
97pem_all.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
98pem_all.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
99pem_all.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h
100pem_all.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
101pem_all.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
102pem_all.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
103pem_all.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
104pem_all.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
105pem_all.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
106pem_all.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_all.c
107pem_err.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
108pem_err.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
109pem_err.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
110pem_err.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
111pem_err.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
112pem_err.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
113pem_err.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
114pem_err.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
115pem_err.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
116pem_err.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
117pem_err.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
118pem_err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
119pem_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
120pem_err.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
121pem_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
122pem_err.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
123pem_err.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
124pem_err.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
125pem_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
126pem_err.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
127pem_err.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
128pem_err.o: pem_err.c
129pem_info.o: ../../e_os.h ../../include/openssl/aes.h
130pem_info.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
131pem_info.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
132pem_info.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
133pem_info.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
134pem_info.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
135pem_info.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
136pem_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h
137pem_info.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
138pem_info.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
139pem_info.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
140pem_info.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
141pem_info.o: ../../include/openssl/opensslconf.h
142pem_info.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
143pem_info.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
144pem_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
145pem_info.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
146pem_info.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
147pem_info.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
148pem_info.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
149pem_info.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
150pem_info.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
151pem_info.o: ../cryptlib.h pem_info.c
152pem_lib.o: ../../e_os.h ../../include/openssl/aes.h
153pem_lib.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
154pem_lib.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
155pem_lib.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
156pem_lib.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
157pem_lib.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
158pem_lib.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
159pem_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
160pem_lib.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
161pem_lib.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
162pem_lib.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
163pem_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
164pem_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
165pem_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
166pem_lib.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs12.h
167pem_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
168pem_lib.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
169pem_lib.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
170pem_lib.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
171pem_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
172pem_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
173pem_lib.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
174pem_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_lib.c
175pem_oth.o: ../../e_os.h ../../include/openssl/aes.h
176pem_oth.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
177pem_oth.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
178pem_oth.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
179pem_oth.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
180pem_oth.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
181pem_oth.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
182pem_oth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
183pem_oth.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
184pem_oth.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
185pem_oth.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
186pem_oth.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
187pem_oth.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
188pem_oth.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
189pem_oth.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h
190pem_oth.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
191pem_oth.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
192pem_oth.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
193pem_oth.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
194pem_oth.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
195pem_oth.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
196pem_oth.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
197pem_oth.o: ../cryptlib.h pem_oth.c
198pem_pk8.o: ../../e_os.h ../../include/openssl/aes.h
199pem_pk8.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
200pem_pk8.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
201pem_pk8.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
202pem_pk8.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
203pem_pk8.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
204pem_pk8.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
205pem_pk8.o: ../../include/openssl/err.h ../../include/openssl/evp.h
206pem_pk8.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
207pem_pk8.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
208pem_pk8.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
209pem_pk8.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
210pem_pk8.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
211pem_pk8.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
212pem_pk8.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs12.h
213pem_pk8.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
214pem_pk8.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
215pem_pk8.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
216pem_pk8.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
217pem_pk8.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
218pem_pk8.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
219pem_pk8.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
220pem_pk8.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_pk8.c
221pem_pkey.o: ../../e_os.h ../../include/openssl/aes.h
222pem_pkey.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
223pem_pkey.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
224pem_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
225pem_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
226pem_pkey.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
227pem_pkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
228pem_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
229pem_pkey.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
230pem_pkey.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
231pem_pkey.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
232pem_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
233pem_pkey.o: ../../include/openssl/opensslconf.h
234pem_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
235pem_pkey.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
236pem_pkey.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
237pem_pkey.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
238pem_pkey.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
239pem_pkey.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
240pem_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
241pem_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
242pem_pkey.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
243pem_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
244pem_pkey.o: ../cryptlib.h pem_pkey.c
245pem_seal.o: ../../e_os.h ../../include/openssl/aes.h
246pem_seal.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
247pem_seal.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
248pem_seal.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
249pem_seal.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
250pem_seal.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
251pem_seal.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
252pem_seal.o: ../../include/openssl/err.h ../../include/openssl/evp.h
253pem_seal.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
254pem_seal.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
255pem_seal.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
256pem_seal.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
257pem_seal.o: ../../include/openssl/opensslconf.h
258pem_seal.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
259pem_seal.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
260pem_seal.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
261pem_seal.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
262pem_seal.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
263pem_seal.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
264pem_seal.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
265pem_seal.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
266pem_seal.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
267pem_seal.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_seal.c
268pem_sign.o: ../../e_os.h ../../include/openssl/aes.h
269pem_sign.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
270pem_sign.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
271pem_sign.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
272pem_sign.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
273pem_sign.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
274pem_sign.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
275pem_sign.o: ../../include/openssl/err.h ../../include/openssl/evp.h
276pem_sign.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
277pem_sign.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
278pem_sign.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
279pem_sign.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
280pem_sign.o: ../../include/openssl/opensslconf.h
281pem_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
282pem_sign.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
283pem_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
284pem_sign.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
285pem_sign.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
286pem_sign.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
287pem_sign.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
288pem_sign.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
289pem_sign.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
290pem_sign.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_sign.c
291pem_x509.o: ../../e_os.h ../../include/openssl/aes.h
292pem_x509.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
293pem_x509.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
294pem_x509.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
295pem_x509.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
296pem_x509.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
297pem_x509.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
298pem_x509.o: ../../include/openssl/err.h ../../include/openssl/evp.h
299pem_x509.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
300pem_x509.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
301pem_x509.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
302pem_x509.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
303pem_x509.o: ../../include/openssl/opensslconf.h
304pem_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
305pem_x509.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
306pem_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
307pem_x509.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
308pem_x509.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
309pem_x509.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
310pem_x509.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
311pem_x509.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
312pem_x509.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
313pem_x509.o: ../cryptlib.h pem_x509.c
314pem_xaux.o: ../../e_os.h ../../include/openssl/aes.h
315pem_xaux.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
316pem_xaux.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
317pem_xaux.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
318pem_xaux.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
319pem_xaux.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
320pem_xaux.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
321pem_xaux.o: ../../include/openssl/err.h ../../include/openssl/evp.h
322pem_xaux.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
323pem_xaux.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
324pem_xaux.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
325pem_xaux.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
326pem_xaux.o: ../../include/openssl/opensslconf.h
327pem_xaux.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
328pem_xaux.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
329pem_xaux.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
330pem_xaux.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
331pem_xaux.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
332pem_xaux.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
333pem_xaux.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
334pem_xaux.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
335pem_xaux.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
336pem_xaux.o: ../cryptlib.h pem_xaux.c
diff --git a/src/lib/libssl/src/crypto/pem/pem_err.c b/src/lib/libssl/src/crypto/pem/pem_err.c
index 8527028ebc..3b39b84d66 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 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
@@ -64,56 +64,52 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_PEM,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_PEM,0,reason)
70
71static ERR_STRING_DATA PEM_str_functs[]= 67static ERR_STRING_DATA PEM_str_functs[]=
72 { 68 {
73{ERR_FUNC(PEM_F_D2I_PKCS8PRIVATEKEY_BIO), "d2i_PKCS8PrivateKey_bio"}, 69{ERR_PACK(0,PEM_F_D2I_PKCS8PRIVATEKEY_BIO,0), "d2i_PKCS8PrivateKey_bio"},
74{ERR_FUNC(PEM_F_D2I_PKCS8PRIVATEKEY_FP), "d2i_PKCS8PrivateKey_fp"}, 70{ERR_PACK(0,PEM_F_D2I_PKCS8PRIVATEKEY_FP,0), "d2i_PKCS8PrivateKey_fp"},
75{ERR_FUNC(PEM_F_DEF_CALLBACK), "DEF_CALLBACK"}, 71{ERR_PACK(0,PEM_F_DEF_CALLBACK,0), "DEF_CALLBACK"},
76{ERR_FUNC(PEM_F_LOAD_IV), "LOAD_IV"}, 72{ERR_PACK(0,PEM_F_LOAD_IV,0), "LOAD_IV"},
77{ERR_FUNC(PEM_F_PEM_ASN1_READ), "PEM_ASN1_read"}, 73{ERR_PACK(0,PEM_F_PEM_ASN1_READ,0), "PEM_ASN1_read"},
78{ERR_FUNC(PEM_F_PEM_ASN1_READ_BIO), "PEM_ASN1_read_bio"}, 74{ERR_PACK(0,PEM_F_PEM_ASN1_READ_BIO,0), "PEM_ASN1_read_bio"},
79{ERR_FUNC(PEM_F_PEM_ASN1_WRITE), "PEM_ASN1_write"}, 75{ERR_PACK(0,PEM_F_PEM_ASN1_WRITE,0), "PEM_ASN1_write"},
80{ERR_FUNC(PEM_F_PEM_ASN1_WRITE_BIO), "PEM_ASN1_write_bio"}, 76{ERR_PACK(0,PEM_F_PEM_ASN1_WRITE_BIO,0), "PEM_ASN1_write_bio"},
81{ERR_FUNC(PEM_F_PEM_DO_HEADER), "PEM_do_header"}, 77{ERR_PACK(0,PEM_F_PEM_DO_HEADER,0), "PEM_do_header"},
82{ERR_FUNC(PEM_F_PEM_F_DO_PK8KEY_FP), "PEM_F_DO_PK8KEY_FP"}, 78{ERR_PACK(0,PEM_F_PEM_F_DO_PK8KEY_FP,0), "PEM_F_DO_PK8KEY_FP"},
83{ERR_FUNC(PEM_F_PEM_F_PEM_WRITE_PKCS8PRIVATEKEY), "PEM_F_PEM_WRITE_PKCS8PRIVATEKEY"}, 79{ERR_PACK(0,PEM_F_PEM_F_PEM_WRITE_PKCS8PRIVATEKEY,0), "PEM_F_PEM_WRITE_PKCS8PRIVATEKEY"},
84{ERR_FUNC(PEM_F_PEM_GET_EVP_CIPHER_INFO), "PEM_get_EVP_CIPHER_INFO"}, 80{ERR_PACK(0,PEM_F_PEM_GET_EVP_CIPHER_INFO,0), "PEM_get_EVP_CIPHER_INFO"},
85{ERR_FUNC(PEM_F_PEM_READ), "PEM_read"}, 81{ERR_PACK(0,PEM_F_PEM_READ,0), "PEM_read"},
86{ERR_FUNC(PEM_F_PEM_READ_BIO), "PEM_read_bio"}, 82{ERR_PACK(0,PEM_F_PEM_READ_BIO,0), "PEM_read_bio"},
87{ERR_FUNC(PEM_F_PEM_SEALFINAL), "PEM_SealFinal"}, 83{ERR_PACK(0,PEM_F_PEM_SEALFINAL,0), "PEM_SealFinal"},
88{ERR_FUNC(PEM_F_PEM_SEALINIT), "PEM_SealInit"}, 84{ERR_PACK(0,PEM_F_PEM_SEALINIT,0), "PEM_SealInit"},
89{ERR_FUNC(PEM_F_PEM_SIGNFINAL), "PEM_SignFinal"}, 85{ERR_PACK(0,PEM_F_PEM_SIGNFINAL,0), "PEM_SignFinal"},
90{ERR_FUNC(PEM_F_PEM_WRITE), "PEM_write"}, 86{ERR_PACK(0,PEM_F_PEM_WRITE,0), "PEM_write"},
91{ERR_FUNC(PEM_F_PEM_WRITE_BIO), "PEM_write_bio"}, 87{ERR_PACK(0,PEM_F_PEM_WRITE_BIO,0), "PEM_write_bio"},
92{ERR_FUNC(PEM_F_PEM_WRITE_BIO_PKCS8PRIVATEKEY), "PEM_write_bio_PKCS8PrivateKey"}, 88{ERR_PACK(0,PEM_F_PEM_WRITE_BIO_PKCS8PRIVATEKEY,0), "PEM_write_bio_PKCS8PrivateKey"},
93{ERR_FUNC(PEM_F_PEM_X509_INFO_READ), "PEM_X509_INFO_read"}, 89{ERR_PACK(0,PEM_F_PEM_X509_INFO_READ,0), "PEM_X509_INFO_read"},
94{ERR_FUNC(PEM_F_PEM_X509_INFO_READ_BIO), "PEM_X509_INFO_read_bio"}, 90{ERR_PACK(0,PEM_F_PEM_X509_INFO_READ_BIO,0), "PEM_X509_INFO_read_bio"},
95{ERR_FUNC(PEM_F_PEM_X509_INFO_WRITE_BIO), "PEM_X509_INFO_write_bio"}, 91{ERR_PACK(0,PEM_F_PEM_X509_INFO_WRITE_BIO,0), "PEM_X509_INFO_write_bio"},
96{0,NULL} 92{0,NULL}
97 }; 93 };
98 94
99static ERR_STRING_DATA PEM_str_reasons[]= 95static ERR_STRING_DATA PEM_str_reasons[]=
100 { 96 {
101{ERR_REASON(PEM_R_BAD_BASE64_DECODE) ,"bad base64 decode"}, 97{PEM_R_BAD_BASE64_DECODE ,"bad base64 decode"},
102{ERR_REASON(PEM_R_BAD_DECRYPT) ,"bad decrypt"}, 98{PEM_R_BAD_DECRYPT ,"bad decrypt"},
103{ERR_REASON(PEM_R_BAD_END_LINE) ,"bad end line"}, 99{PEM_R_BAD_END_LINE ,"bad end line"},
104{ERR_REASON(PEM_R_BAD_IV_CHARS) ,"bad iv chars"}, 100{PEM_R_BAD_IV_CHARS ,"bad iv chars"},
105{ERR_REASON(PEM_R_BAD_PASSWORD_READ) ,"bad password read"}, 101{PEM_R_BAD_PASSWORD_READ ,"bad password read"},
106{ERR_REASON(PEM_R_ERROR_CONVERTING_PRIVATE_KEY),"error converting private key"}, 102{PEM_R_ERROR_CONVERTING_PRIVATE_KEY ,"error converting private key"},
107{ERR_REASON(PEM_R_NOT_DEK_INFO) ,"not dek info"}, 103{PEM_R_NOT_DEK_INFO ,"not dek info"},
108{ERR_REASON(PEM_R_NOT_ENCRYPTED) ,"not encrypted"}, 104{PEM_R_NOT_ENCRYPTED ,"not encrypted"},
109{ERR_REASON(PEM_R_NOT_PROC_TYPE) ,"not proc type"}, 105{PEM_R_NOT_PROC_TYPE ,"not proc type"},
110{ERR_REASON(PEM_R_NO_START_LINE) ,"no start line"}, 106{PEM_R_NO_START_LINE ,"no start line"},
111{ERR_REASON(PEM_R_PROBLEMS_GETTING_PASSWORD),"problems getting password"}, 107{PEM_R_PROBLEMS_GETTING_PASSWORD ,"problems getting password"},
112{ERR_REASON(PEM_R_PUBLIC_KEY_NO_RSA) ,"public key no rsa"}, 108{PEM_R_PUBLIC_KEY_NO_RSA ,"public key no rsa"},
113{ERR_REASON(PEM_R_READ_KEY) ,"read key"}, 109{PEM_R_READ_KEY ,"read key"},
114{ERR_REASON(PEM_R_SHORT_HEADER) ,"short header"}, 110{PEM_R_SHORT_HEADER ,"short header"},
115{ERR_REASON(PEM_R_UNSUPPORTED_CIPHER) ,"unsupported cipher"}, 111{PEM_R_UNSUPPORTED_CIPHER ,"unsupported cipher"},
116{ERR_REASON(PEM_R_UNSUPPORTED_ENCRYPTION),"unsupported encryption"}, 112{PEM_R_UNSUPPORTED_ENCRYPTION ,"unsupported encryption"},
117{0,NULL} 113{0,NULL}
118 }; 114 };
119 115
@@ -127,8 +123,8 @@ void ERR_load_PEM_strings(void)
127 { 123 {
128 init=0; 124 init=0;
129#ifndef OPENSSL_NO_ERR 125#ifndef OPENSSL_NO_ERR
130 ERR_load_strings(0,PEM_str_functs); 126 ERR_load_strings(ERR_LIB_PEM,PEM_str_functs);
131 ERR_load_strings(0,PEM_str_reasons); 127 ERR_load_strings(ERR_LIB_PEM,PEM_str_reasons);
132#endif 128#endif
133 129
134 } 130 }
diff --git a/src/lib/libssl/src/crypto/perlasm/x86asm.pl b/src/lib/libssl/src/crypto/perlasm/x86asm.pl
index ea54a1edc5..60233f80e8 100644
--- a/src/lib/libssl/src/crypto/perlasm/x86asm.pl
+++ b/src/lib/libssl/src/crypto/perlasm/x86asm.pl
@@ -18,9 +18,13 @@ sub main'asm_init
18 ($type,$fn,$i386)=@_; 18 ($type,$fn,$i386)=@_;
19 $filename=$fn; 19 $filename=$fn;
20 20
21 $elf=$cpp=$sol=$aout=$win32=$gaswin=0; 21 $elf=$cpp=$sol=$aout=$win32=$gaswin=$openbsd=0;
22 if ( ($type eq "elf")) 22 if ( ($type eq "elf"))
23 { $elf=1; require "x86unix.pl"; } 23 { $elf=1; require "x86unix.pl"; }
24 elsif ( ($type eq "openbsd-elf"))
25 { $openbsd=$elf=1; require "x86unix.pl"; }
26 elsif ( ($type eq "openbsd-a.out"))
27 { $openbsd=1; require "x86unix.pl"; }
24 elsif ( ($type eq "a.out")) 28 elsif ( ($type eq "a.out"))
25 { $aout=1; require "x86unix.pl"; } 29 { $aout=1; require "x86unix.pl"; }
26 elsif ( ($type eq "gaswin")) 30 elsif ( ($type eq "gaswin"))
@@ -43,6 +47,8 @@ Pick one target type from
43 cpp - format so x86unix.cpp can be used 47 cpp - format so x86unix.cpp can be used
44 win32 - Windows 95/Windows NT 48 win32 - Windows 95/Windows NT
45 win32n - Windows 95/Windows NT NASM format 49 win32n - Windows 95/Windows NT NASM format
50 openbsd-elf - OpenBSD elf
51 openbsd-a.out - OpenBSD a.out
46EOF 52EOF
47 exit(1); 53 exit(1);
48 } 54 }
@@ -90,7 +96,7 @@ $tmp
90#ifdef OUT 96#ifdef OUT
91#define OK 1 97#define OK 1
92#define ALIGN 4 98#define ALIGN 4
93#if defined(__CYGWIN__) || defined(__DJGPP__) || defined(__MINGW32__) 99#if defined(__CYGWIN__) || defined(__DJGPP__)
94#undef SIZE 100#undef SIZE
95#undef TYPE 101#undef TYPE
96#define SIZE(a,b) 102#define SIZE(a,b)
diff --git a/src/lib/libssl/src/crypto/perlasm/x86nasm.pl b/src/lib/libssl/src/crypto/perlasm/x86nasm.pl
index 4bdb3fe180..5009acb4b3 100644
--- a/src/lib/libssl/src/crypto/perlasm/x86nasm.pl
+++ b/src/lib/libssl/src/crypto/perlasm/x86nasm.pl
@@ -221,15 +221,7 @@ sub using486
221 221
222sub main'file 222sub main'file
223 { 223 {
224 local $tmp; 224 push(@out, "segment .text use32\n");
225 $tmp=<<___;
226%ifdef __omf__
227section code use32 class=code
228%else
229section .text
230%endif
231___
232 push(@out,$tmp);
233 } 225 }
234 226
235sub main'function_begin 227sub main'function_begin
diff --git a/src/lib/libssl/src/crypto/perlasm/x86unix.pl b/src/lib/libssl/src/crypto/perlasm/x86unix.pl
index a31a25c12b..b61425e951 100644
--- a/src/lib/libssl/src/crypto/perlasm/x86unix.pl
+++ b/src/lib/libssl/src/crypto/perlasm/x86unix.pl
@@ -15,6 +15,12 @@ sub main'asm_get_output { return(@out); }
15sub main'get_labels { return(@labels); } 15sub main'get_labels { return(@labels); }
16sub main'external_label { push(@labels,@_); } 16sub main'external_label { push(@labels,@_); }
17 17
18if ($main'openbsd)
19 {
20 $com_start='/*';
21 $com_end='*/';
22 }
23
18if ($main'cpp) 24if ($main'cpp)
19 { 25 {
20 $align="ALIGN"; 26 $align="ALIGN";
@@ -173,7 +179,9 @@ sub main'not { &out1("notl",@_); }
173sub main'call { &out1("call",($_[0]=~/^\.L/?'':$under).$_[0]); } 179sub main'call { &out1("call",($_[0]=~/^\.L/?'':$under).$_[0]); }
174sub main'ret { &out0("ret"); } 180sub main'ret { &out0("ret"); }
175sub main'nop { &out0("nop"); } 181sub main'nop { &out0("nop"); }
182sub main'test { &out2("testl",@_); }
176sub main'movz { &out2("movzbl",@_); } 183sub main'movz { &out2("movzbl",@_); }
184sub main'neg { &out1("negl",@_); }
177 185
178# The bswapl instruction is new for the 486. Emulate if i386. 186# The bswapl instruction is new for the 486. Emulate if i386.
179sub main'bswap 187sub main'bswap
@@ -277,6 +285,9 @@ sub main'file
277 { 285 {
278 local($file)=@_; 286 local($file)=@_;
279 287
288 if ($main'openbsd)
289 { push(@out,"#include <machine/asm.h>\n"); return; }
290
280 local($tmp)=<<"EOF"; 291 local($tmp)=<<"EOF";
281 .file "$file.s" 292 .file "$file.s"
282 .version "01.01" 293 .version "01.01"
@@ -292,6 +303,9 @@ sub main'function_begin
292 &main'external_label($func); 303 &main'external_label($func);
293 $func=$under.$func; 304 $func=$under.$func;
294 305
306 if ($main'openbsd)
307 { push (@out, "\nENTRY($func)\n"); goto skip; }
308
295 local($tmp)=<<"EOF"; 309 local($tmp)=<<"EOF";
296.text 310.text
297 .align $align 311 .align $align
@@ -304,6 +318,7 @@ EOF
304 { $tmp=push(@out,"\t.def\t$func;\t.scl\t2;\t.type\t32;\t.endef\n"); } 318 { $tmp=push(@out,"\t.def\t$func;\t.scl\t2;\t.type\t32;\t.endef\n"); }
305 else { $tmp=push(@out,"\t.type\t$func,\@function\n"); } 319 else { $tmp=push(@out,"\t.type\t$func,\@function\n"); }
306 push(@out,"$func:\n"); 320 push(@out,"$func:\n");
321skip:
307 $tmp=<<"EOF"; 322 $tmp=<<"EOF";
308 pushl %ebp 323 pushl %ebp
309 pushl %ebx 324 pushl %ebx
@@ -322,6 +337,9 @@ sub main'function_begin_B
322 &main'external_label($func); 337 &main'external_label($func);
323 $func=$under.$func; 338 $func=$under.$func;
324 339
340 if ($main'openbsd)
341 { push(@out, "\nENTRY($func)\n"); goto skip; }
342
325 local($tmp)=<<"EOF"; 343 local($tmp)=<<"EOF";
326.text 344.text
327 .align $align 345 .align $align
@@ -334,6 +352,7 @@ EOF
334 { $tmp=push(@out,"\t.def\t$func;\t.scl\t2;\t.type\t32;\t.endef\n"); } 352 { $tmp=push(@out,"\t.def\t$func;\t.scl\t2;\t.type\t32;\t.endef\n"); }
335 else { push(@out,"\t.type $func,\@function\n"); } 353 else { push(@out,"\t.type $func,\@function\n"); }
336 push(@out,"$func:\n"); 354 push(@out,"$func:\n");
355skip:
337 $stack=4; 356 $stack=4;
338 } 357 }
339 358
@@ -430,7 +449,8 @@ sub main'swtmp
430 449
431sub main'comment 450sub main'comment
432 { 451 {
433 if ($main'elf) # GNU and SVR4 as'es use different comment delimiters, 452 if (!$main'openbsd && $main'elf)
453 # GNU and SVR4 as'es use different comment delimiters,
434 { # so we just skip comments... 454 { # so we just skip comments...
435 push(@out,"\n"); 455 push(@out,"\n");
436 return; 456 return;
@@ -444,6 +464,12 @@ sub main'comment
444 } 464 }
445 } 465 }
446 466
467sub main'public_label
468 {
469 $label{$_[0]}="${under}${_[0]}" if (!defined($label{$_[0]}));
470 push(@out,".globl\t$label{$_[0]}\n");
471 }
472
447sub main'label 473sub main'label
448 { 474 {
449 if (!defined($label{$_[0]})) 475 if (!defined($label{$_[0]}))
@@ -461,7 +487,10 @@ sub main'set_label
461 $label{$_[0]}=".${label}${_[0]}"; 487 $label{$_[0]}=".${label}${_[0]}";
462 $label++; 488 $label++;
463 } 489 }
464 push(@out,".align $align\n") if ($_[1] != 0); 490 if ($main'openbsd)
491 { push(@out,"_ALIGN_TEXT\n") if ($_[1] != 0); }
492 else
493 { push(@out,".align $align\n") if ($_[1] != 0); }
465 push(@out,"$label{$_[0]}:\n"); 494 push(@out,"$label{$_[0]}:\n");
466 } 495 }
467 496
@@ -477,7 +506,7 @@ sub main'file_end
477 506
478sub main'data_word 507sub main'data_word
479 { 508 {
480 push(@out,"\t.long $_[0]\n"); 509 push(@out,"\t.long\t".join(',',@_)."\n");
481 } 510 }
482 511
483# debug output functions: puts, putx, printf 512# debug output functions: puts, putx, printf
@@ -570,6 +599,16 @@ sub main'picmeup
570___ 599___
571 push(@out,$tmp); 600 push(@out,$tmp);
572 } 601 }
602 elsif ($main'openbsd)
603 {
604 push(@out, "#ifdef PIC\n");
605 push(@out, "\tPIC_PROLOGUE\n");
606 &main'mov($dst,"PIC_GOT($sym)");
607 push(@out, "\tPIC_EPILOGUE\n");
608 push(@out, "#else\n");
609 &main'lea($dst,&main'DWP($sym));
610 push(@out, "#endif\n");
611 }
573 elsif ($main'pic && ($main'elf || $main'aout)) 612 elsif ($main'pic && ($main'elf || $main'aout))
574 { 613 {
575 push(@out,"\t.align\t8\n"); 614 push(@out,"\t.align\t8\n");
diff --git a/src/lib/libssl/src/crypto/pkcs12/Makefile.ssl b/src/lib/libssl/src/crypto/pkcs12/Makefile.ssl
new file mode 100644
index 0000000000..a6e47b4085
--- /dev/null
+++ b/src/lib/libssl/src/crypto/pkcs12/Makefile.ssl
@@ -0,0 +1,417 @@
1#
2# SSLeay/crypto/pkcs12/Makefile
3#
4
5DIR= pkcs12
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST=
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC= p12_add.c p12_asn.c p12_attr.c p12_crpt.c p12_crt.c p12_decr.c \
27 p12_init.c p12_key.c p12_kiss.c p12_mutl.c\
28 p12_utl.c p12_npas.c pk12err.c p12_p8d.c p12_p8e.c
29LIBOBJ= p12_add.o p12_asn.o p12_attr.o p12_crpt.o p12_crt.o p12_decr.o \
30 p12_init.o p12_key.o p12_kiss.o p12_mutl.o\
31 p12_utl.o p12_npas.o pk12err.o p12_p8d.o p12_p8e.o
32
33SRC= $(LIBSRC)
34
35EXHEADER= pkcs12.h
36HEADER= $(EXHEADER)
37
38ALL= $(GENERAL) $(SRC) $(HEADER)
39
40top:
41 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
42
43test:
44
45all: lib
46
47lib: $(LIBOBJ)
48 $(AR) $(LIB) $(LIBOBJ)
49 $(RANLIB) $(LIB) || echo Never mind.
50 @touch lib
51
52files:
53 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
54
55links:
56 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
57 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
58 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
59 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
60
61install:
62 @for i in $(EXHEADER) ; \
63 do \
64 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
65 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
66 done;
67
68tags:
69 ctags $(SRC)
70
71tests:
72
73lint:
74 lint -DLINT $(INCLUDES) $(SRC)>fluff
75
76depend:
77 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
78
79dclean:
80 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
81 mv -f Makefile.new $(MAKEFILE)
82
83clean:
84 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
85
86# DO NOT DELETE THIS LINE -- make depend depends on it.
87
88p12_add.o: ../../e_os.h ../../include/openssl/aes.h
89p12_add.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
90p12_add.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
91p12_add.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
92p12_add.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
93p12_add.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
94p12_add.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
95p12_add.o: ../../include/openssl/err.h ../../include/openssl/evp.h
96p12_add.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
97p12_add.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
98p12_add.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
99p12_add.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
100p12_add.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
101p12_add.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h
102p12_add.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
103p12_add.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
104p12_add.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
105p12_add.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
106p12_add.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
107p12_add.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
108p12_add.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
109p12_add.o: ../cryptlib.h p12_add.c
110p12_asn.o: ../../e_os.h ../../include/openssl/aes.h
111p12_asn.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
112p12_asn.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
113p12_asn.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
114p12_asn.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
115p12_asn.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
116p12_asn.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
117p12_asn.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
118p12_asn.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
119p12_asn.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
120p12_asn.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
121p12_asn.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
122p12_asn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
123p12_asn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
124p12_asn.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
125p12_asn.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
126p12_asn.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
127p12_asn.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
128p12_asn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
129p12_asn.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
130p12_asn.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
131p12_asn.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_asn.c
132p12_attr.o: ../../e_os.h ../../include/openssl/aes.h
133p12_attr.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
134p12_attr.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
135p12_attr.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
136p12_attr.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
137p12_attr.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
138p12_attr.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
139p12_attr.o: ../../include/openssl/err.h ../../include/openssl/evp.h
140p12_attr.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
141p12_attr.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
142p12_attr.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
143p12_attr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
144p12_attr.o: ../../include/openssl/opensslconf.h
145p12_attr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
146p12_attr.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
147p12_attr.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
148p12_attr.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
149p12_attr.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
150p12_attr.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
151p12_attr.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
152p12_attr.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
153p12_attr.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_attr.c
154p12_crpt.o: ../../e_os.h ../../include/openssl/aes.h
155p12_crpt.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
156p12_crpt.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
157p12_crpt.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
158p12_crpt.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
159p12_crpt.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
160p12_crpt.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
161p12_crpt.o: ../../include/openssl/err.h ../../include/openssl/evp.h
162p12_crpt.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
163p12_crpt.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
164p12_crpt.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
165p12_crpt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
166p12_crpt.o: ../../include/openssl/opensslconf.h
167p12_crpt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
168p12_crpt.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
169p12_crpt.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
170p12_crpt.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
171p12_crpt.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
172p12_crpt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
173p12_crpt.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
174p12_crpt.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
175p12_crpt.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_crpt.c
176p12_crt.o: ../../e_os.h ../../include/openssl/aes.h
177p12_crt.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
178p12_crt.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
179p12_crt.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
180p12_crt.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
181p12_crt.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
182p12_crt.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
183p12_crt.o: ../../include/openssl/err.h ../../include/openssl/evp.h
184p12_crt.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
185p12_crt.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
186p12_crt.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
187p12_crt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
188p12_crt.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
189p12_crt.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h
190p12_crt.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
191p12_crt.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
192p12_crt.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
193p12_crt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
194p12_crt.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
195p12_crt.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
196p12_crt.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
197p12_crt.o: ../cryptlib.h p12_crt.c
198p12_decr.o: ../../e_os.h ../../include/openssl/aes.h
199p12_decr.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
200p12_decr.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
201p12_decr.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
202p12_decr.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
203p12_decr.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
204p12_decr.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
205p12_decr.o: ../../include/openssl/err.h ../../include/openssl/evp.h
206p12_decr.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
207p12_decr.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
208p12_decr.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
209p12_decr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
210p12_decr.o: ../../include/openssl/opensslconf.h
211p12_decr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
212p12_decr.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
213p12_decr.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
214p12_decr.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
215p12_decr.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
216p12_decr.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
217p12_decr.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
218p12_decr.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
219p12_decr.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_decr.c
220p12_init.o: ../../e_os.h ../../include/openssl/aes.h
221p12_init.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
222p12_init.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
223p12_init.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
224p12_init.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
225p12_init.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
226p12_init.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
227p12_init.o: ../../include/openssl/err.h ../../include/openssl/evp.h
228p12_init.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
229p12_init.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
230p12_init.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
231p12_init.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
232p12_init.o: ../../include/openssl/opensslconf.h
233p12_init.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
234p12_init.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
235p12_init.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
236p12_init.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
237p12_init.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
238p12_init.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
239p12_init.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
240p12_init.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
241p12_init.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_init.c
242p12_key.o: ../../e_os.h ../../include/openssl/aes.h
243p12_key.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
244p12_key.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
245p12_key.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
246p12_key.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
247p12_key.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
248p12_key.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
249p12_key.o: ../../include/openssl/err.h ../../include/openssl/evp.h
250p12_key.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
251p12_key.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
252p12_key.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
253p12_key.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
254p12_key.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
255p12_key.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h
256p12_key.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
257p12_key.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
258p12_key.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
259p12_key.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
260p12_key.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
261p12_key.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
262p12_key.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
263p12_key.o: ../cryptlib.h p12_key.c
264p12_kiss.o: ../../e_os.h ../../include/openssl/aes.h
265p12_kiss.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
266p12_kiss.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
267p12_kiss.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
268p12_kiss.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
269p12_kiss.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
270p12_kiss.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
271p12_kiss.o: ../../include/openssl/err.h ../../include/openssl/evp.h
272p12_kiss.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
273p12_kiss.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
274p12_kiss.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
275p12_kiss.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
276p12_kiss.o: ../../include/openssl/opensslconf.h
277p12_kiss.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
278p12_kiss.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
279p12_kiss.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
280p12_kiss.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
281p12_kiss.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
282p12_kiss.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
283p12_kiss.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
284p12_kiss.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
285p12_kiss.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_kiss.c
286p12_mutl.o: ../../e_os.h ../../include/openssl/aes.h
287p12_mutl.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
288p12_mutl.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
289p12_mutl.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
290p12_mutl.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
291p12_mutl.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
292p12_mutl.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
293p12_mutl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
294p12_mutl.o: ../../include/openssl/hmac.h ../../include/openssl/idea.h
295p12_mutl.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
296p12_mutl.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
297p12_mutl.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
298p12_mutl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
299p12_mutl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
300p12_mutl.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
301p12_mutl.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
302p12_mutl.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
303p12_mutl.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
304p12_mutl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
305p12_mutl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
306p12_mutl.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
307p12_mutl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
308p12_mutl.o: ../cryptlib.h p12_mutl.c
309p12_npas.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
310p12_npas.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
311p12_npas.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
312p12_npas.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
313p12_npas.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
314p12_npas.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
315p12_npas.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
316p12_npas.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
317p12_npas.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
318p12_npas.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
319p12_npas.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
320p12_npas.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
321p12_npas.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
322p12_npas.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
323p12_npas.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
324p12_npas.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
325p12_npas.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
326p12_npas.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
327p12_npas.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
328p12_npas.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
329p12_npas.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
330p12_npas.o: ../../include/openssl/x509_vfy.h p12_npas.c
331p12_p8d.o: ../../e_os.h ../../include/openssl/aes.h
332p12_p8d.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
333p12_p8d.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
334p12_p8d.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
335p12_p8d.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
336p12_p8d.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
337p12_p8d.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
338p12_p8d.o: ../../include/openssl/err.h ../../include/openssl/evp.h
339p12_p8d.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
340p12_p8d.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
341p12_p8d.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
342p12_p8d.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
343p12_p8d.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
344p12_p8d.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h
345p12_p8d.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
346p12_p8d.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
347p12_p8d.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
348p12_p8d.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
349p12_p8d.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
350p12_p8d.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
351p12_p8d.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
352p12_p8d.o: ../cryptlib.h p12_p8d.c
353p12_p8e.o: ../../e_os.h ../../include/openssl/aes.h
354p12_p8e.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
355p12_p8e.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
356p12_p8e.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
357p12_p8e.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
358p12_p8e.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
359p12_p8e.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
360p12_p8e.o: ../../include/openssl/err.h ../../include/openssl/evp.h
361p12_p8e.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
362p12_p8e.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
363p12_p8e.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
364p12_p8e.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
365p12_p8e.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
366p12_p8e.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h
367p12_p8e.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
368p12_p8e.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
369p12_p8e.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
370p12_p8e.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
371p12_p8e.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
372p12_p8e.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
373p12_p8e.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
374p12_p8e.o: ../cryptlib.h p12_p8e.c
375p12_utl.o: ../../e_os.h ../../include/openssl/aes.h
376p12_utl.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
377p12_utl.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
378p12_utl.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
379p12_utl.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
380p12_utl.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
381p12_utl.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
382p12_utl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
383p12_utl.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
384p12_utl.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
385p12_utl.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
386p12_utl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
387p12_utl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
388p12_utl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h
389p12_utl.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
390p12_utl.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
391p12_utl.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
392p12_utl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
393p12_utl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
394p12_utl.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
395p12_utl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
396p12_utl.o: ../cryptlib.h p12_utl.c
397pk12err.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
398pk12err.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
399pk12err.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
400pk12err.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
401pk12err.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
402pk12err.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
403pk12err.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
404pk12err.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
405pk12err.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
406pk12err.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
407pk12err.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
408pk12err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
409pk12err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
410pk12err.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
411pk12err.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
412pk12err.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
413pk12err.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
414pk12err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
415pk12err.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
416pk12err.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
417pk12err.o: ../../include/openssl/x509_vfy.h 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 27015dd8c3..1909f28506 100644
--- a/src/lib/libssl/src/crypto/pkcs12/p12_add.c
+++ b/src/lib/libssl/src/crypto/pkcs12/p12_add.c
@@ -148,11 +148,7 @@ PKCS7 *PKCS12_pack_p7data(STACK_OF(PKCS12_SAFEBAG) *sk)
148/* Unpack SAFEBAGS from PKCS#7 data ContentInfo */ 148/* Unpack SAFEBAGS from PKCS#7 data ContentInfo */
149STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7data(PKCS7 *p7) 149STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7data(PKCS7 *p7)
150{ 150{
151 if(!PKCS7_type_is_data(p7)) 151 if(!PKCS7_type_is_data(p7)) return NULL;
152 {
153 PKCS12err(PKCS12_F_PKCS12_UNPACK_P7DATA,PKCS12_R_CONTENT_TYPE_NOT_DATA);
154 return NULL;
155 }
156 return ASN1_item_unpack(p7->d.data, ASN1_ITEM_rptr(PKCS12_SAFEBAGS)); 152 return ASN1_item_unpack(p7->d.data, ASN1_ITEM_rptr(PKCS12_SAFEBAGS));
157} 153}
158 154
@@ -215,10 +211,5 @@ int PKCS12_pack_authsafes(PKCS12 *p12, STACK_OF(PKCS7) *safes)
215 211
216STACK_OF(PKCS7) *PKCS12_unpack_authsafes(PKCS12 *p12) 212STACK_OF(PKCS7) *PKCS12_unpack_authsafes(PKCS12 *p12)
217{ 213{
218 if (!PKCS7_type_is_data(p12->authsafes))
219 {
220 PKCS12err(PKCS12_F_PKCS12_UNPACK_AUTHSAFES,PKCS12_R_CONTENT_TYPE_NOT_DATA);
221 return NULL;
222 }
223 return ASN1_item_unpack(p12->authsafes->d.data, ASN1_ITEM_rptr(PKCS12_AUTHSAFES)); 214 return ASN1_item_unpack(p12->authsafes->d.data, ASN1_ITEM_rptr(PKCS12_AUTHSAFES));
224} 215}
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_crt.c b/src/lib/libssl/src/crypto/pkcs12/p12_crt.c
index 40340a7bef..4c36c643ce 100644
--- a/src/lib/libssl/src/crypto/pkcs12/p12_crt.c
+++ b/src/lib/libssl/src/crypto/pkcs12/p12_crt.c
@@ -76,15 +76,7 @@ PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert,
76 unsigned int keyidlen; 76 unsigned int keyidlen;
77 77
78 /* Set defaults */ 78 /* Set defaults */
79 if(!nid_cert) 79 if(!nid_cert) nid_cert = NID_pbe_WithSHA1And40BitRC2_CBC;
80 {
81#ifdef OPENSSL_FIPS
82 if (FIPS_mode())
83 nid_cert = NID_pbe_WithSHA1And3_Key_TripleDES_CBC;
84 else
85#endif
86 nid_cert = NID_pbe_WithSHA1And40BitRC2_CBC;
87 }
88 if(!nid_key) nid_key = NID_pbe_WithSHA1And3_Key_TripleDES_CBC; 80 if(!nid_key) nid_key = NID_pbe_WithSHA1And3_Key_TripleDES_CBC;
89 if(!iter) iter = PKCS12_DEFAULT_ITER; 81 if(!iter) iter = PKCS12_DEFAULT_ITER;
90 if(!mac_iter) mac_iter = 1; 82 if(!mac_iter) mac_iter = 1;
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_mutl.c b/src/lib/libssl/src/crypto/pkcs12/p12_mutl.c
index 140d21155e..4886b9b289 100644
--- a/src/lib/libssl/src/crypto/pkcs12/p12_mutl.c
+++ b/src/lib/libssl/src/crypto/pkcs12/p12_mutl.c
@@ -72,12 +72,6 @@ int PKCS12_gen_mac (PKCS12 *p12, const char *pass, int passlen,
72 unsigned char key[PKCS12_MAC_KEY_LENGTH], *salt; 72 unsigned char key[PKCS12_MAC_KEY_LENGTH], *salt;
73 int saltlen, iter; 73 int saltlen, iter;
74 74
75 if (!PKCS7_type_is_data(p12->authsafes))
76 {
77 PKCS12err(PKCS12_F_PKCS12_GEN_MAC,PKCS12_R_CONTENT_TYPE_NOT_DATA);
78 return 0;
79 }
80
81 salt = p12->mac->salt->data; 75 salt = p12->mac->salt->data;
82 saltlen = p12->mac->salt->length; 76 saltlen = p12->mac->salt->length;
83 if (!p12->mac->iter) iter = 1; 77 if (!p12->mac->iter) iter = 1;
diff --git a/src/lib/libssl/src/crypto/pkcs12/pk12err.c b/src/lib/libssl/src/crypto/pkcs12/pk12err.c
index a33b37b1c7..10ab80502c 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 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
@@ -64,67 +64,60 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_PKCS12,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_PKCS12,0,reason)
70
71static ERR_STRING_DATA PKCS12_str_functs[]= 67static ERR_STRING_DATA PKCS12_str_functs[]=
72 { 68 {
73{ERR_FUNC(PKCS12_F_PARSE_BAGS), "PARSE_BAGS"}, 69{ERR_PACK(0,PKCS12_F_PARSE_BAGS,0), "PARSE_BAGS"},
74{ERR_FUNC(PKCS12_F_PKCS12_ADD_FRIENDLYNAME), "PKCS12_ADD_FRIENDLYNAME"}, 70{ERR_PACK(0,PKCS12_F_PKCS12_ADD_FRIENDLYNAME,0), "PKCS12_ADD_FRIENDLYNAME"},
75{ERR_FUNC(PKCS12_F_PKCS12_ADD_FRIENDLYNAME_ASC), "PKCS12_add_friendlyname_asc"}, 71{ERR_PACK(0,PKCS12_F_PKCS12_ADD_FRIENDLYNAME_ASC,0), "PKCS12_add_friendlyname_asc"},
76{ERR_FUNC(PKCS12_F_PKCS12_ADD_FRIENDLYNAME_UNI), "PKCS12_add_friendlyname_uni"}, 72{ERR_PACK(0,PKCS12_F_PKCS12_ADD_FRIENDLYNAME_UNI,0), "PKCS12_add_friendlyname_uni"},
77{ERR_FUNC(PKCS12_F_PKCS12_ADD_LOCALKEYID), "PKCS12_add_localkeyid"}, 73{ERR_PACK(0,PKCS12_F_PKCS12_ADD_LOCALKEYID,0), "PKCS12_add_localkeyid"},
78{ERR_FUNC(PKCS12_F_PKCS12_CREATE), "PKCS12_create"}, 74{ERR_PACK(0,PKCS12_F_PKCS12_CREATE,0), "PKCS12_create"},
79{ERR_FUNC(PKCS12_F_PKCS12_DECRYPT_D2I), "PKCS12_DECRYPT_D2I"}, 75{ERR_PACK(0,PKCS12_F_PKCS12_DECRYPT_D2I,0), "PKCS12_decrypt_d2i"},
80{ERR_FUNC(PKCS12_F_PKCS12_GEN_MAC), "PKCS12_gen_mac"}, 76{ERR_PACK(0,PKCS12_F_PKCS12_GEN_MAC,0), "PKCS12_gen_mac"},
81{ERR_FUNC(PKCS12_F_PKCS12_I2D_ENCRYPT), "PKCS12_I2D_ENCRYPT"}, 77{ERR_PACK(0,PKCS12_F_PKCS12_I2D_ENCRYPT,0), "PKCS12_i2d_encrypt"},
82{ERR_FUNC(PKCS12_F_PKCS12_INIT), "PKCS12_init"}, 78{ERR_PACK(0,PKCS12_F_PKCS12_INIT,0), "PKCS12_init"},
83{ERR_FUNC(PKCS12_F_PKCS12_KEY_GEN_ASC), "PKCS12_key_gen_asc"}, 79{ERR_PACK(0,PKCS12_F_PKCS12_KEY_GEN_ASC,0), "PKCS12_key_gen_asc"},
84{ERR_FUNC(PKCS12_F_PKCS12_KEY_GEN_UNI), "PKCS12_key_gen_uni"}, 80{ERR_PACK(0,PKCS12_F_PKCS12_KEY_GEN_UNI,0), "PKCS12_key_gen_uni"},
85{ERR_FUNC(PKCS12_F_PKCS12_MAKE_KEYBAG), "PKCS12_MAKE_KEYBAG"}, 81{ERR_PACK(0,PKCS12_F_PKCS12_MAKE_KEYBAG,0), "PKCS12_MAKE_KEYBAG"},
86{ERR_FUNC(PKCS12_F_PKCS12_MAKE_SHKEYBAG), "PKCS12_MAKE_SHKEYBAG"}, 82{ERR_PACK(0,PKCS12_F_PKCS12_MAKE_SHKEYBAG,0), "PKCS12_MAKE_SHKEYBAG"},
87{ERR_FUNC(PKCS12_F_PKCS12_NEWPASS), "PKCS12_newpass"}, 83{ERR_PACK(0,PKCS12_F_PKCS12_NEWPASS,0), "PKCS12_newpass"},
88{ERR_FUNC(PKCS12_F_PKCS12_PACK_P7DATA), "PKCS12_pack_p7data"}, 84{ERR_PACK(0,PKCS12_F_PKCS12_PACK_P7DATA,0), "PKCS12_pack_p7data"},
89{ERR_FUNC(PKCS12_F_PKCS12_PACK_P7ENCDATA), "PKCS12_pack_p7encdata"}, 85{ERR_PACK(0,PKCS12_F_PKCS12_PACK_P7ENCDATA,0), "PKCS12_pack_p7encdata"},
90{ERR_FUNC(PKCS12_F_PKCS12_PACK_SAFEBAG), "PKCS12_PACK_SAFEBAG"}, 86{ERR_PACK(0,PKCS12_F_PKCS12_PACK_SAFEBAG,0), "PKCS12_pack_safebag"},
91{ERR_FUNC(PKCS12_F_PKCS12_PARSE), "PKCS12_parse"}, 87{ERR_PACK(0,PKCS12_F_PKCS12_PARSE,0), "PKCS12_parse"},
92{ERR_FUNC(PKCS12_F_PKCS12_PBE_CRYPT), "PKCS12_pbe_crypt"}, 88{ERR_PACK(0,PKCS12_F_PKCS12_PBE_CRYPT,0), "PKCS12_pbe_crypt"},
93{ERR_FUNC(PKCS12_F_PKCS12_PBE_KEYIVGEN), "PKCS12_PBE_keyivgen"}, 89{ERR_PACK(0,PKCS12_F_PKCS12_PBE_KEYIVGEN,0), "PKCS12_PBE_keyivgen"},
94{ERR_FUNC(PKCS12_F_PKCS12_SETUP_MAC), "PKCS12_setup_mac"}, 90{ERR_PACK(0,PKCS12_F_PKCS12_SETUP_MAC,0), "PKCS12_setup_mac"},
95{ERR_FUNC(PKCS12_F_PKCS12_SET_MAC), "PKCS12_set_mac"}, 91{ERR_PACK(0,PKCS12_F_PKCS12_SET_MAC,0), "PKCS12_set_mac"},
96{ERR_FUNC(PKCS12_F_PKCS12_UNPACK_AUTHSAFES), "PKCS12_unpack_authsafes"}, 92{ERR_PACK(0,PKCS12_F_PKCS8_ADD_KEYUSAGE,0), "PKCS8_add_keyusage"},
97{ERR_FUNC(PKCS12_F_PKCS12_UNPACK_P7DATA), "PKCS12_unpack_p7data"}, 93{ERR_PACK(0,PKCS12_F_PKCS8_ENCRYPT,0), "PKCS8_encrypt"},
98{ERR_FUNC(PKCS12_F_PKCS8_ADD_KEYUSAGE), "PKCS8_add_keyusage"}, 94{ERR_PACK(0,PKCS12_F_VERIFY_MAC,0), "VERIFY_MAC"},
99{ERR_FUNC(PKCS12_F_PKCS8_ENCRYPT), "PKCS8_encrypt"},
100{ERR_FUNC(PKCS12_F_VERIFY_MAC), "VERIFY_MAC"},
101{0,NULL} 95{0,NULL}
102 }; 96 };
103 97
104static ERR_STRING_DATA PKCS12_str_reasons[]= 98static ERR_STRING_DATA PKCS12_str_reasons[]=
105 { 99 {
106{ERR_REASON(PKCS12_R_CANT_PACK_STRUCTURE),"cant pack structure"}, 100{PKCS12_R_CANT_PACK_STRUCTURE ,"cant pack structure"},
107{ERR_REASON(PKCS12_R_CONTENT_TYPE_NOT_DATA),"content type not data"}, 101{PKCS12_R_DECODE_ERROR ,"decode error"},
108{ERR_REASON(PKCS12_R_DECODE_ERROR) ,"decode error"}, 102{PKCS12_R_ENCODE_ERROR ,"encode error"},
109{ERR_REASON(PKCS12_R_ENCODE_ERROR) ,"encode error"}, 103{PKCS12_R_ENCRYPT_ERROR ,"encrypt error"},
110{ERR_REASON(PKCS12_R_ENCRYPT_ERROR) ,"encrypt error"}, 104{PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE,"error setting encrypted data type"},
111{ERR_REASON(PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE),"error setting encrypted data type"}, 105{PKCS12_R_INVALID_NULL_ARGUMENT ,"invalid null argument"},
112{ERR_REASON(PKCS12_R_INVALID_NULL_ARGUMENT),"invalid null argument"}, 106{PKCS12_R_INVALID_NULL_PKCS12_POINTER ,"invalid null pkcs12 pointer"},
113{ERR_REASON(PKCS12_R_INVALID_NULL_PKCS12_POINTER),"invalid null pkcs12 pointer"}, 107{PKCS12_R_IV_GEN_ERROR ,"iv gen error"},
114{ERR_REASON(PKCS12_R_IV_GEN_ERROR) ,"iv gen error"}, 108{PKCS12_R_KEY_GEN_ERROR ,"key gen error"},
115{ERR_REASON(PKCS12_R_KEY_GEN_ERROR) ,"key gen error"}, 109{PKCS12_R_MAC_ABSENT ,"mac absent"},
116{ERR_REASON(PKCS12_R_MAC_ABSENT) ,"mac absent"}, 110{PKCS12_R_MAC_GENERATION_ERROR ,"mac generation error"},
117{ERR_REASON(PKCS12_R_MAC_GENERATION_ERROR),"mac generation error"}, 111{PKCS12_R_MAC_SETUP_ERROR ,"mac setup error"},
118{ERR_REASON(PKCS12_R_MAC_SETUP_ERROR) ,"mac setup error"}, 112{PKCS12_R_MAC_STRING_SET_ERROR ,"mac string set error"},
119{ERR_REASON(PKCS12_R_MAC_STRING_SET_ERROR),"mac string set error"}, 113{PKCS12_R_MAC_VERIFY_ERROR ,"mac verify error"},
120{ERR_REASON(PKCS12_R_MAC_VERIFY_ERROR) ,"mac verify error"}, 114{PKCS12_R_MAC_VERIFY_FAILURE ,"mac verify failure"},
121{ERR_REASON(PKCS12_R_MAC_VERIFY_FAILURE) ,"mac verify failure"}, 115{PKCS12_R_PARSE_ERROR ,"parse error"},
122{ERR_REASON(PKCS12_R_PARSE_ERROR) ,"parse error"}, 116{PKCS12_R_PKCS12_ALGOR_CIPHERINIT_ERROR ,"pkcs12 algor cipherinit error"},
123{ERR_REASON(PKCS12_R_PKCS12_ALGOR_CIPHERINIT_ERROR),"pkcs12 algor cipherinit error"}, 117{PKCS12_R_PKCS12_CIPHERFINAL_ERROR ,"pkcs12 cipherfinal error"},
124{ERR_REASON(PKCS12_R_PKCS12_CIPHERFINAL_ERROR),"pkcs12 cipherfinal error"}, 118{PKCS12_R_PKCS12_PBE_CRYPT_ERROR ,"pkcs12 pbe crypt error"},
125{ERR_REASON(PKCS12_R_PKCS12_PBE_CRYPT_ERROR),"pkcs12 pbe crypt error"}, 119{PKCS12_R_UNKNOWN_DIGEST_ALGORITHM ,"unknown digest algorithm"},
126{ERR_REASON(PKCS12_R_UNKNOWN_DIGEST_ALGORITHM),"unknown digest algorithm"}, 120{PKCS12_R_UNSUPPORTED_PKCS12_MODE ,"unsupported pkcs12 mode"},
127{ERR_REASON(PKCS12_R_UNSUPPORTED_PKCS12_MODE),"unsupported pkcs12 mode"},
128{0,NULL} 121{0,NULL}
129 }; 122 };
130 123
@@ -138,8 +131,8 @@ void ERR_load_PKCS12_strings(void)
138 { 131 {
139 init=0; 132 init=0;
140#ifndef OPENSSL_NO_ERR 133#ifndef OPENSSL_NO_ERR
141 ERR_load_strings(0,PKCS12_str_functs); 134 ERR_load_strings(ERR_LIB_PKCS12,PKCS12_str_functs);
142 ERR_load_strings(0,PKCS12_str_reasons); 135 ERR_load_strings(ERR_LIB_PKCS12,PKCS12_str_reasons);
143#endif 136#endif
144 137
145 } 138 }
diff --git a/src/lib/libssl/src/crypto/pkcs12/pkcs12.h b/src/lib/libssl/src/crypto/pkcs12/pkcs12.h
index fb8af82d4f..dd338f266c 100644
--- a/src/lib/libssl/src/crypto/pkcs12/pkcs12.h
+++ b/src/lib/libssl/src/crypto/pkcs12/pkcs12.h
@@ -287,15 +287,12 @@ void ERR_load_PKCS12_strings(void);
287#define PKCS12_F_PKCS12_PBE_KEYIVGEN 120 287#define PKCS12_F_PKCS12_PBE_KEYIVGEN 120
288#define PKCS12_F_PKCS12_SETUP_MAC 122 288#define PKCS12_F_PKCS12_SETUP_MAC 122
289#define PKCS12_F_PKCS12_SET_MAC 123 289#define PKCS12_F_PKCS12_SET_MAC 123
290#define PKCS12_F_PKCS12_UNPACK_AUTHSAFES 129
291#define PKCS12_F_PKCS12_UNPACK_P7DATA 130
292#define PKCS12_F_PKCS8_ADD_KEYUSAGE 124 290#define PKCS12_F_PKCS8_ADD_KEYUSAGE 124
293#define PKCS12_F_PKCS8_ENCRYPT 125 291#define PKCS12_F_PKCS8_ENCRYPT 125
294#define PKCS12_F_VERIFY_MAC 126 292#define PKCS12_F_VERIFY_MAC 126
295 293
296/* Reason codes. */ 294/* Reason codes. */
297#define PKCS12_R_CANT_PACK_STRUCTURE 100 295#define PKCS12_R_CANT_PACK_STRUCTURE 100
298#define PKCS12_R_CONTENT_TYPE_NOT_DATA 121
299#define PKCS12_R_DECODE_ERROR 101 296#define PKCS12_R_DECODE_ERROR 101
300#define PKCS12_R_ENCODE_ERROR 102 297#define PKCS12_R_ENCODE_ERROR 102
301#define PKCS12_R_ENCRYPT_ERROR 103 298#define PKCS12_R_ENCRYPT_ERROR 103
diff --git a/src/lib/libssl/src/crypto/pkcs7/Makefile.ssl b/src/lib/libssl/src/crypto/pkcs7/Makefile.ssl
new file mode 100644
index 0000000000..c3bfc7d560
--- /dev/null
+++ b/src/lib/libssl/src/crypto/pkcs7/Makefile.ssl
@@ -0,0 +1,243 @@
1#
2# SSLeay/crypto/pkcs7/Makefile
3#
4
5DIR= pkcs7
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19PEX_LIBS=
20EX_LIBS=
21
22CFLAGS= $(INCLUDES) $(CFLAG)
23
24GENERAL=Makefile README
25TEST=
26APPS=
27
28LIB=$(TOP)/libcrypto.a
29LIBSRC= pk7_asn1.c pk7_lib.c pkcs7err.c pk7_doit.c pk7_smime.c pk7_attr.c \
30 pk7_mime.c
31LIBOBJ= pk7_asn1.o pk7_lib.o pkcs7err.o pk7_doit.o pk7_smime.o pk7_attr.o \
32 pk7_mime.o
33
34SRC= $(LIBSRC)
35
36EXHEADER= pkcs7.h
37HEADER= $(EXHEADER)
38
39ALL= $(GENERAL) $(SRC) $(HEADER)
40
41top:
42 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
43
44test:
45
46all: lib
47
48testapps: enc dec sign verify
49
50enc: enc.o lib
51 $(CC) $(CFLAGS) -o enc enc.o $(PEX_LIBS) $(LIB) $(EX_LIBS)
52
53dec: dec.o lib
54 $(CC) $(CFLAGS) -o dec dec.o $(PEX_LIBS) $(LIB) $(EX_LIBS)
55
56sign: sign.o lib
57 $(CC) $(CFLAGS) -o sign sign.o $(PEX_LIBS) $(LIB) $(EX_LIBS)
58
59verify: verify.o example.o lib
60 $(CC) $(CFLAGS) -o verify verify.o $(PEX_LIBS) example.o $(LIB) $(EX_LIBS)
61
62lib: $(LIBOBJ)
63 $(AR) $(LIB) $(LIBOBJ)
64 $(RANLIB) $(LIB) || echo Never mind.
65 @touch lib
66
67files:
68 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
69
70links:
71 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
72 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
73 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
74 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
75
76install:
77 @for i in $(EXHEADER) ; \
78 do \
79 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
80 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
81 done;
82
83tags:
84 ctags $(SRC)
85
86tests:
87
88lint:
89 lint -DLINT $(INCLUDES) $(SRC)>fluff
90
91depend:
92 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
93
94dclean:
95 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
96 mv -f Makefile.new $(MAKEFILE)
97
98clean:
99 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff enc dec sign verify
100
101# DO NOT DELETE THIS LINE -- make depend depends on it.
102
103pk7_asn1.o: ../../e_os.h ../../include/openssl/aes.h
104pk7_asn1.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
105pk7_asn1.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
106pk7_asn1.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
107pk7_asn1.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
108pk7_asn1.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
109pk7_asn1.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
110pk7_asn1.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
111pk7_asn1.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
112pk7_asn1.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
113pk7_asn1.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
114pk7_asn1.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
115pk7_asn1.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
116pk7_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
117pk7_asn1.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
118pk7_asn1.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
119pk7_asn1.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
120pk7_asn1.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
121pk7_asn1.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
122pk7_asn1.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
123pk7_asn1.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
124pk7_asn1.o: ../cryptlib.h pk7_asn1.c
125pk7_attr.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
126pk7_attr.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
127pk7_attr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
128pk7_attr.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
129pk7_attr.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
130pk7_attr.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
131pk7_attr.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
132pk7_attr.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
133pk7_attr.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
134pk7_attr.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
135pk7_attr.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
136pk7_attr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
137pk7_attr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
138pk7_attr.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
139pk7_attr.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
140pk7_attr.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
141pk7_attr.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
142pk7_attr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
143pk7_attr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
144pk7_attr.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
145pk7_attr.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
146pk7_attr.o: pk7_attr.c
147pk7_doit.o: ../../e_os.h ../../include/openssl/aes.h
148pk7_doit.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
149pk7_doit.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
150pk7_doit.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
151pk7_doit.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
152pk7_doit.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
153pk7_doit.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
154pk7_doit.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
155pk7_doit.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
156pk7_doit.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
157pk7_doit.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
158pk7_doit.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
159pk7_doit.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
160pk7_doit.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
161pk7_doit.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
162pk7_doit.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
163pk7_doit.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
164pk7_doit.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
165pk7_doit.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
166pk7_doit.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
167pk7_doit.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
168pk7_doit.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
169pk7_doit.o: ../cryptlib.h pk7_doit.c
170pk7_lib.o: ../../e_os.h ../../include/openssl/aes.h
171pk7_lib.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
172pk7_lib.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
173pk7_lib.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
174pk7_lib.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
175pk7_lib.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
176pk7_lib.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
177pk7_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
178pk7_lib.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
179pk7_lib.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
180pk7_lib.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
181pk7_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
182pk7_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
183pk7_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
184pk7_lib.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
185pk7_lib.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
186pk7_lib.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
187pk7_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
188pk7_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
189pk7_lib.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
190pk7_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pk7_lib.c
191pk7_mime.o: ../../e_os.h ../../include/openssl/aes.h
192pk7_mime.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
193pk7_mime.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
194pk7_mime.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
195pk7_mime.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
196pk7_mime.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
197pk7_mime.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
198pk7_mime.o: ../../include/openssl/err.h ../../include/openssl/evp.h
199pk7_mime.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
200pk7_mime.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
201pk7_mime.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
202pk7_mime.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
203pk7_mime.o: ../../include/openssl/opensslconf.h
204pk7_mime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
205pk7_mime.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
206pk7_mime.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
207pk7_mime.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
208pk7_mime.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
209pk7_mime.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
210pk7_mime.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
211pk7_mime.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
212pk7_mime.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pk7_mime.c
213pk7_smime.o: ../../e_os.h ../../include/openssl/aes.h
214pk7_smime.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
215pk7_smime.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
216pk7_smime.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
217pk7_smime.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
218pk7_smime.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
219pk7_smime.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
220pk7_smime.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
221pk7_smime.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
222pk7_smime.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
223pk7_smime.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
224pk7_smime.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
225pk7_smime.o: ../../include/openssl/objects.h
226pk7_smime.o: ../../include/openssl/opensslconf.h
227pk7_smime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
228pk7_smime.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
229pk7_smime.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
230pk7_smime.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
231pk7_smime.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
232pk7_smime.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
233pk7_smime.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
234pk7_smime.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
235pk7_smime.o: ../../include/openssl/x509v3.h ../cryptlib.h pk7_smime.c
236pkcs7err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
237pkcs7err.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
238pkcs7err.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
239pkcs7err.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
240pkcs7err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
241pkcs7err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
242pkcs7err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
243pkcs7err.o: pkcs7err.c
diff --git a/src/lib/libssl/src/crypto/pkcs7/pk7_mime.c b/src/lib/libssl/src/crypto/pkcs7/pk7_mime.c
index 927b88c3e7..5d2a97839d 100644
--- a/src/lib/libssl/src/crypto/pkcs7/pk7_mime.c
+++ b/src/lib/libssl/src/crypto/pkcs7/pk7_mime.c
@@ -3,7 +3,7 @@
3 * project 1999. 3 * project 1999.
4 */ 4 */
5/* ==================================================================== 5/* ====================================================================
6 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. 6 * Copyright (c) 1999-2003 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
@@ -152,12 +152,11 @@ int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags)
152{ 152{
153 char bound[33], c; 153 char bound[33], c;
154 int i; 154 int i;
155 char *mime_prefix, *mime_eol, *msg_type=NULL; 155 char *mime_prefix, *mime_eol;
156 if (flags & PKCS7_NOOLDMIMETYPE) 156 if (flags & PKCS7_NOOLDMIMETYPE)
157 mime_prefix = "application/pkcs7-"; 157 mime_prefix = "application/pkcs7-";
158 else 158 else
159 mime_prefix = "application/x-pkcs7-"; 159 mime_prefix = "application/x-pkcs7-";
160
161 if (flags & PKCS7_CRLFEOL) 160 if (flags & PKCS7_CRLFEOL)
162 mime_eol = "\r\n"; 161 mime_eol = "\r\n";
163 else 162 else
@@ -199,30 +198,11 @@ int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags)
199 mime_eol, mime_eol); 198 mime_eol, mime_eol);
200 return 1; 199 return 1;
201 } 200 }
202
203 /* Determine smime-type header */
204
205 if (PKCS7_type_is_enveloped(p7))
206 msg_type = "enveloped-data";
207 else if (PKCS7_type_is_signed(p7))
208 {
209 /* If we have any signers it is signed-data othewise
210 * certs-only.
211 */
212 STACK_OF(PKCS7_SIGNER_INFO) *sinfos;
213 sinfos = PKCS7_get_signer_info(p7);
214 if (sk_PKCS7_SIGNER_INFO_num(sinfos) > 0)
215 msg_type = "signed-data";
216 else
217 msg_type = "certs-only";
218 }
219 /* MIME headers */ 201 /* MIME headers */
220 BIO_printf(bio, "MIME-Version: 1.0%s", mime_eol); 202 BIO_printf(bio, "MIME-Version: 1.0%s", mime_eol);
221 BIO_printf(bio, "Content-Disposition: attachment;"); 203 BIO_printf(bio, "Content-Disposition: attachment;");
222 BIO_printf(bio, " filename=\"smime.p7m\"%s", mime_eol); 204 BIO_printf(bio, " filename=\"smime.p7m\"%s", mime_eol);
223 BIO_printf(bio, "Content-Type: %smime;", mime_prefix); 205 BIO_printf(bio, "Content-Type: %smime;", mime_prefix);
224 if (msg_type)
225 BIO_printf(bio, " smime-type=%s;", msg_type);
226 BIO_printf(bio, " name=\"smime.p7m\"%s", mime_eol); 206 BIO_printf(bio, " name=\"smime.p7m\"%s", mime_eol);
227 BIO_printf(bio, "Content-Transfer-Encoding: base64%s%s", 207 BIO_printf(bio, "Content-Transfer-Encoding: base64%s%s",
228 mime_eol, mime_eol); 208 mime_eol, mime_eol);
diff --git a/src/lib/libssl/src/crypto/pkcs7/pk7_smime.c b/src/lib/libssl/src/crypto/pkcs7/pk7_smime.c
index 99a0d63f38..a852b49235 100644
--- a/src/lib/libssl/src/crypto/pkcs7/pk7_smime.c
+++ b/src/lib/libssl/src/crypto/pkcs7/pk7_smime.c
@@ -296,9 +296,11 @@ int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
296 296
297 if (tmpin == indata) 297 if (tmpin == indata)
298 { 298 {
299 if (indata) BIO_pop(p7bio); 299 if(indata) BIO_pop(p7bio);
300 BIO_free_all(p7bio);
300 } 301 }
301 BIO_free_all(p7bio); 302 else
303 BIO_free_all(tmpin);
302 304
303 sk_X509_free(signers); 305 sk_X509_free(signers);
304 306
diff --git a/src/lib/libssl/src/crypto/pkcs7/pkcs7err.c b/src/lib/libssl/src/crypto/pkcs7/pkcs7err.c
index 19894c80a4..5e51527a40 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 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
@@ -64,85 +64,81 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_PKCS7,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_PKCS7,0,reason)
70
71static ERR_STRING_DATA PKCS7_str_functs[]= 67static ERR_STRING_DATA PKCS7_str_functs[]=
72 { 68 {
73{ERR_FUNC(PKCS7_F_B64_READ_PKCS7), "B64_READ_PKCS7"}, 69{ERR_PACK(0,PKCS7_F_B64_READ_PKCS7,0), "B64_READ_PKCS7"},
74{ERR_FUNC(PKCS7_F_B64_WRITE_PKCS7), "B64_WRITE_PKCS7"}, 70{ERR_PACK(0,PKCS7_F_B64_WRITE_PKCS7,0), "B64_WRITE_PKCS7"},
75{ERR_FUNC(PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP), "PKCS7_add_attrib_smimecap"}, 71{ERR_PACK(0,PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP,0), "PKCS7_add_attrib_smimecap"},
76{ERR_FUNC(PKCS7_F_PKCS7_ADD_CERTIFICATE), "PKCS7_add_certificate"}, 72{ERR_PACK(0,PKCS7_F_PKCS7_ADD_CERTIFICATE,0), "PKCS7_add_certificate"},
77{ERR_FUNC(PKCS7_F_PKCS7_ADD_CRL), "PKCS7_add_crl"}, 73{ERR_PACK(0,PKCS7_F_PKCS7_ADD_CRL,0), "PKCS7_add_crl"},
78{ERR_FUNC(PKCS7_F_PKCS7_ADD_RECIPIENT_INFO), "PKCS7_add_recipient_info"}, 74{ERR_PACK(0,PKCS7_F_PKCS7_ADD_RECIPIENT_INFO,0), "PKCS7_add_recipient_info"},
79{ERR_FUNC(PKCS7_F_PKCS7_ADD_SIGNER), "PKCS7_add_signer"}, 75{ERR_PACK(0,PKCS7_F_PKCS7_ADD_SIGNER,0), "PKCS7_add_signer"},
80{ERR_FUNC(PKCS7_F_PKCS7_CTRL), "PKCS7_ctrl"}, 76{ERR_PACK(0,PKCS7_F_PKCS7_CTRL,0), "PKCS7_ctrl"},
81{ERR_FUNC(PKCS7_F_PKCS7_DATADECODE), "PKCS7_dataDecode"}, 77{ERR_PACK(0,PKCS7_F_PKCS7_DATADECODE,0), "PKCS7_dataDecode"},
82{ERR_FUNC(PKCS7_F_PKCS7_DATAINIT), "PKCS7_dataInit"}, 78{ERR_PACK(0,PKCS7_F_PKCS7_DATAINIT,0), "PKCS7_dataInit"},
83{ERR_FUNC(PKCS7_F_PKCS7_DATASIGN), "PKCS7_DATASIGN"}, 79{ERR_PACK(0,PKCS7_F_PKCS7_DATASIGN,0), "PKCS7_DATASIGN"},
84{ERR_FUNC(PKCS7_F_PKCS7_DATAVERIFY), "PKCS7_dataVerify"}, 80{ERR_PACK(0,PKCS7_F_PKCS7_DATAVERIFY,0), "PKCS7_dataVerify"},
85{ERR_FUNC(PKCS7_F_PKCS7_DECRYPT), "PKCS7_decrypt"}, 81{ERR_PACK(0,PKCS7_F_PKCS7_DECRYPT,0), "PKCS7_decrypt"},
86{ERR_FUNC(PKCS7_F_PKCS7_ENCRYPT), "PKCS7_encrypt"}, 82{ERR_PACK(0,PKCS7_F_PKCS7_ENCRYPT,0), "PKCS7_encrypt"},
87{ERR_FUNC(PKCS7_F_PKCS7_GET0_SIGNERS), "PKCS7_get0_signers"}, 83{ERR_PACK(0,PKCS7_F_PKCS7_GET0_SIGNERS,0), "PKCS7_get0_signers"},
88{ERR_FUNC(PKCS7_F_PKCS7_SET_CIPHER), "PKCS7_set_cipher"}, 84{ERR_PACK(0,PKCS7_F_PKCS7_SET_CIPHER,0), "PKCS7_set_cipher"},
89{ERR_FUNC(PKCS7_F_PKCS7_SET_CONTENT), "PKCS7_set_content"}, 85{ERR_PACK(0,PKCS7_F_PKCS7_SET_CONTENT,0), "PKCS7_set_content"},
90{ERR_FUNC(PKCS7_F_PKCS7_SET_TYPE), "PKCS7_set_type"}, 86{ERR_PACK(0,PKCS7_F_PKCS7_SET_TYPE,0), "PKCS7_set_type"},
91{ERR_FUNC(PKCS7_F_PKCS7_SIGN), "PKCS7_sign"}, 87{ERR_PACK(0,PKCS7_F_PKCS7_SIGN,0), "PKCS7_sign"},
92{ERR_FUNC(PKCS7_F_PKCS7_SIGNATUREVERIFY), "PKCS7_signatureVerify"}, 88{ERR_PACK(0,PKCS7_F_PKCS7_SIGNATUREVERIFY,0), "PKCS7_signatureVerify"},
93{ERR_FUNC(PKCS7_F_PKCS7_SIMPLE_SMIMECAP), "PKCS7_simple_smimecap"}, 89{ERR_PACK(0,PKCS7_F_PKCS7_SIMPLE_SMIMECAP,0), "PKCS7_simple_smimecap"},
94{ERR_FUNC(PKCS7_F_PKCS7_VERIFY), "PKCS7_verify"}, 90{ERR_PACK(0,PKCS7_F_PKCS7_VERIFY,0), "PKCS7_verify"},
95{ERR_FUNC(PKCS7_F_SMIME_READ_PKCS7), "SMIME_read_PKCS7"}, 91{ERR_PACK(0,PKCS7_F_SMIME_READ_PKCS7,0), "SMIME_read_PKCS7"},
96{ERR_FUNC(PKCS7_F_SMIME_TEXT), "SMIME_text"}, 92{ERR_PACK(0,PKCS7_F_SMIME_TEXT,0), "SMIME_text"},
97{0,NULL} 93{0,NULL}
98 }; 94 };
99 95
100static ERR_STRING_DATA PKCS7_str_reasons[]= 96static ERR_STRING_DATA PKCS7_str_reasons[]=
101 { 97 {
102{ERR_REASON(PKCS7_R_CERTIFICATE_VERIFY_ERROR),"certificate verify error"}, 98{PKCS7_R_CERTIFICATE_VERIFY_ERROR ,"certificate verify error"},
103{ERR_REASON(PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER),"cipher has no object identifier"}, 99{PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER ,"cipher has no object identifier"},
104{ERR_REASON(PKCS7_R_CIPHER_NOT_INITIALIZED),"cipher not initialized"}, 100{PKCS7_R_CIPHER_NOT_INITIALIZED ,"cipher not initialized"},
105{ERR_REASON(PKCS7_R_CONTENT_AND_DATA_PRESENT),"content and data present"}, 101{PKCS7_R_CONTENT_AND_DATA_PRESENT ,"content and data present"},
106{ERR_REASON(PKCS7_R_DECODE_ERROR) ,"decode error"}, 102{PKCS7_R_DECODE_ERROR ,"decode error"},
107{ERR_REASON(PKCS7_R_DECRYPTED_KEY_IS_WRONG_LENGTH),"decrypted key is wrong length"}, 103{PKCS7_R_DECRYPTED_KEY_IS_WRONG_LENGTH ,"decrypted key is wrong length"},
108{ERR_REASON(PKCS7_R_DECRYPT_ERROR) ,"decrypt error"}, 104{PKCS7_R_DECRYPT_ERROR ,"decrypt error"},
109{ERR_REASON(PKCS7_R_DIGEST_FAILURE) ,"digest failure"}, 105{PKCS7_R_DIGEST_FAILURE ,"digest failure"},
110{ERR_REASON(PKCS7_R_ERROR_ADDING_RECIPIENT),"error adding recipient"}, 106{PKCS7_R_ERROR_ADDING_RECIPIENT ,"error adding recipient"},
111{ERR_REASON(PKCS7_R_ERROR_SETTING_CIPHER),"error setting cipher"}, 107{PKCS7_R_ERROR_SETTING_CIPHER ,"error setting cipher"},
112{ERR_REASON(PKCS7_R_INVALID_MIME_TYPE) ,"invalid mime type"}, 108{PKCS7_R_INVALID_MIME_TYPE ,"invalid mime type"},
113{ERR_REASON(PKCS7_R_INVALID_NULL_POINTER),"invalid null pointer"}, 109{PKCS7_R_INVALID_NULL_POINTER ,"invalid null pointer"},
114{ERR_REASON(PKCS7_R_MIME_NO_CONTENT_TYPE),"mime no content type"}, 110{PKCS7_R_MIME_NO_CONTENT_TYPE ,"mime no content type"},
115{ERR_REASON(PKCS7_R_MIME_PARSE_ERROR) ,"mime parse error"}, 111{PKCS7_R_MIME_PARSE_ERROR ,"mime parse error"},
116{ERR_REASON(PKCS7_R_MIME_SIG_PARSE_ERROR),"mime sig parse error"}, 112{PKCS7_R_MIME_SIG_PARSE_ERROR ,"mime sig parse error"},
117{ERR_REASON(PKCS7_R_MISSING_CERIPEND_INFO),"missing ceripend info"}, 113{PKCS7_R_MISSING_CERIPEND_INFO ,"missing ceripend info"},
118{ERR_REASON(PKCS7_R_NO_CONTENT) ,"no content"}, 114{PKCS7_R_NO_CONTENT ,"no content"},
119{ERR_REASON(PKCS7_R_NO_CONTENT_TYPE) ,"no content type"}, 115{PKCS7_R_NO_CONTENT_TYPE ,"no content type"},
120{ERR_REASON(PKCS7_R_NO_MULTIPART_BODY_FAILURE),"no multipart body failure"}, 116{PKCS7_R_NO_MULTIPART_BODY_FAILURE ,"no multipart body failure"},
121{ERR_REASON(PKCS7_R_NO_MULTIPART_BOUNDARY),"no multipart boundary"}, 117{PKCS7_R_NO_MULTIPART_BOUNDARY ,"no multipart boundary"},
122{ERR_REASON(PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE),"no recipient matches certificate"}, 118{PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE,"no recipient matches certificate"},
123{ERR_REASON(PKCS7_R_NO_SIGNATURES_ON_DATA),"no signatures on data"}, 119{PKCS7_R_NO_SIGNATURES_ON_DATA ,"no signatures on data"},
124{ERR_REASON(PKCS7_R_NO_SIGNERS) ,"no signers"}, 120{PKCS7_R_NO_SIGNERS ,"no signers"},
125{ERR_REASON(PKCS7_R_NO_SIG_CONTENT_TYPE) ,"no sig content type"}, 121{PKCS7_R_NO_SIG_CONTENT_TYPE ,"no sig content type"},
126{ERR_REASON(PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE),"operation not supported on this type"}, 122{PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE,"operation not supported on this type"},
127{ERR_REASON(PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR),"pkcs7 add signature error"}, 123{PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR ,"pkcs7 add signature error"},
128{ERR_REASON(PKCS7_R_PKCS7_DATAFINAL_ERROR),"pkcs7 datafinal error"}, 124{PKCS7_R_PKCS7_DATAFINAL_ERROR ,"pkcs7 datafinal error"},
129{ERR_REASON(PKCS7_R_PKCS7_DATASIGN) ,"pkcs7 datasign"}, 125{PKCS7_R_PKCS7_DATASIGN ,"pkcs7 datasign"},
130{ERR_REASON(PKCS7_R_PKCS7_PARSE_ERROR) ,"pkcs7 parse error"}, 126{PKCS7_R_PKCS7_PARSE_ERROR ,"pkcs7 parse error"},
131{ERR_REASON(PKCS7_R_PKCS7_SIG_PARSE_ERROR),"pkcs7 sig parse error"}, 127{PKCS7_R_PKCS7_SIG_PARSE_ERROR ,"pkcs7 sig parse error"},
132{ERR_REASON(PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE),"private key does not match certificate"}, 128{PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE,"private key does not match certificate"},
133{ERR_REASON(PKCS7_R_SIGNATURE_FAILURE) ,"signature failure"}, 129{PKCS7_R_SIGNATURE_FAILURE ,"signature failure"},
134{ERR_REASON(PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND),"signer certificate not found"}, 130{PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND ,"signer certificate not found"},
135{ERR_REASON(PKCS7_R_SIG_INVALID_MIME_TYPE),"sig invalid mime type"}, 131{PKCS7_R_SIG_INVALID_MIME_TYPE ,"sig invalid mime type"},
136{ERR_REASON(PKCS7_R_SMIME_TEXT_ERROR) ,"smime text error"}, 132{PKCS7_R_SMIME_TEXT_ERROR ,"smime text error"},
137{ERR_REASON(PKCS7_R_UNABLE_TO_FIND_CERTIFICATE),"unable to find certificate"}, 133{PKCS7_R_UNABLE_TO_FIND_CERTIFICATE ,"unable to find certificate"},
138{ERR_REASON(PKCS7_R_UNABLE_TO_FIND_MEM_BIO),"unable to find mem bio"}, 134{PKCS7_R_UNABLE_TO_FIND_MEM_BIO ,"unable to find mem bio"},
139{ERR_REASON(PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST),"unable to find message digest"}, 135{PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST ,"unable to find message digest"},
140{ERR_REASON(PKCS7_R_UNKNOWN_DIGEST_TYPE) ,"unknown digest type"}, 136{PKCS7_R_UNKNOWN_DIGEST_TYPE ,"unknown digest type"},
141{ERR_REASON(PKCS7_R_UNKNOWN_OPERATION) ,"unknown operation"}, 137{PKCS7_R_UNKNOWN_OPERATION ,"unknown operation"},
142{ERR_REASON(PKCS7_R_UNSUPPORTED_CIPHER_TYPE),"unsupported cipher type"}, 138{PKCS7_R_UNSUPPORTED_CIPHER_TYPE ,"unsupported cipher type"},
143{ERR_REASON(PKCS7_R_UNSUPPORTED_CONTENT_TYPE),"unsupported content type"}, 139{PKCS7_R_UNSUPPORTED_CONTENT_TYPE ,"unsupported content type"},
144{ERR_REASON(PKCS7_R_WRONG_CONTENT_TYPE) ,"wrong content type"}, 140{PKCS7_R_WRONG_CONTENT_TYPE ,"wrong content type"},
145{ERR_REASON(PKCS7_R_WRONG_PKCS7_TYPE) ,"wrong pkcs7 type"}, 141{PKCS7_R_WRONG_PKCS7_TYPE ,"wrong pkcs7 type"},
146{0,NULL} 142{0,NULL}
147 }; 143 };
148 144
@@ -156,8 +152,8 @@ void ERR_load_PKCS7_strings(void)
156 { 152 {
157 init=0; 153 init=0;
158#ifndef OPENSSL_NO_ERR 154#ifndef OPENSSL_NO_ERR
159 ERR_load_strings(0,PKCS7_str_functs); 155 ERR_load_strings(ERR_LIB_PKCS7,PKCS7_str_functs);
160 ERR_load_strings(0,PKCS7_str_reasons); 156 ERR_load_strings(ERR_LIB_PKCS7,PKCS7_str_reasons);
161#endif 157#endif
162 158
163 } 159 }
diff --git a/src/lib/libssl/src/crypto/rand/Makefile.ssl b/src/lib/libssl/src/crypto/rand/Makefile.ssl
new file mode 100644
index 0000000000..e5cbe5319c
--- /dev/null
+++ b/src/lib/libssl/src/crypto/rand/Makefile.ssl
@@ -0,0 +1,196 @@
1#
2# SSLeay/crypto/rand/Makefile
3#
4
5DIR= rand
6TOP= ../..
7CC= cc
8INCLUDES=
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST= randtest.c
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC=md_rand.c randfile.c rand_lib.c rand_err.c rand_egd.c \
27 rand_win.c rand_unix.c rand_os2.c
28LIBOBJ=md_rand.o randfile.o rand_lib.o rand_err.o rand_egd.o \
29 rand_win.o rand_unix.o rand_os2.o
30
31SRC= $(LIBSRC)
32
33EXHEADER= rand.h
34HEADER= $(EXHEADER)
35
36ALL= $(GENERAL) $(SRC) $(HEADER)
37
38top:
39 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
40
41all: lib
42
43lib: $(LIBOBJ)
44 $(AR) $(LIB) $(LIBOBJ)
45 $(RANLIB) $(LIB) || echo Never mind.
46 @touch lib
47
48files:
49 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
50
51links:
52 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
53 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
54 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
55 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
56
57install:
58 @for i in $(EXHEADER) ; \
59 do \
60 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
61 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
62 done;
63
64tags:
65 ctags $(SRC)
66
67tests:
68
69lint:
70 lint -DLINT $(INCLUDES) $(SRC)>fluff
71
72depend:
73 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
74
75dclean:
76 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
77 mv -f Makefile.new $(MAKEFILE)
78
79clean:
80 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
81
82# DO NOT DELETE THIS LINE -- make depend depends on it.
83
84md_rand.o: ../../e_os.h ../../include/openssl/aes.h
85md_rand.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
86md_rand.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
87md_rand.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
88md_rand.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
89md_rand.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
90md_rand.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
91md_rand.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
92md_rand.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
93md_rand.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
94md_rand.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
95md_rand.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
96md_rand.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
97md_rand.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
98md_rand.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
99md_rand.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
100md_rand.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
101md_rand.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
102md_rand.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
103md_rand.o: md_rand.c rand_lcl.h
104rand_egd.o: ../../include/openssl/buffer.h ../../include/openssl/e_os2.h
105rand_egd.o: ../../include/openssl/opensslconf.h
106rand_egd.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
107rand_egd.o: rand_egd.c
108rand_err.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
109rand_err.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
110rand_err.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
111rand_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
112rand_err.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
113rand_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
114rand_err.o: rand_err.c
115rand_lib.o: ../../e_os.h ../../include/openssl/asn1.h
116rand_lib.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
117rand_lib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
118rand_lib.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
119rand_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/engine.h
120rand_lib.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
121rand_lib.o: ../../include/openssl/opensslconf.h
122rand_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
123rand_lib.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
124rand_lib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
125rand_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
126rand_lib.o: ../cryptlib.h rand_lib.c
127rand_os2.o: ../../e_os.h ../../include/openssl/aes.h
128rand_os2.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
129rand_os2.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
130rand_os2.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
131rand_os2.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
132rand_os2.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
133rand_os2.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
134rand_os2.o: ../../include/openssl/err.h ../../include/openssl/evp.h
135rand_os2.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
136rand_os2.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
137rand_os2.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
138rand_os2.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
139rand_os2.o: ../../include/openssl/opensslconf.h
140rand_os2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
141rand_os2.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
142rand_os2.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
143rand_os2.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
144rand_os2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
145rand_os2.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
146rand_os2.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
147rand_os2.o: ../cryptlib.h rand_lcl.h rand_os2.c
148rand_unix.o: ../../e_os.h ../../include/openssl/aes.h
149rand_unix.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
150rand_unix.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
151rand_unix.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
152rand_unix.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
153rand_unix.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
154rand_unix.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
155rand_unix.o: ../../include/openssl/err.h ../../include/openssl/evp.h
156rand_unix.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
157rand_unix.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
158rand_unix.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
159rand_unix.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
160rand_unix.o: ../../include/openssl/opensslconf.h
161rand_unix.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
162rand_unix.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
163rand_unix.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
164rand_unix.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
165rand_unix.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
166rand_unix.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
167rand_unix.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
168rand_unix.o: ../cryptlib.h rand_lcl.h rand_unix.c
169rand_win.o: ../../e_os.h ../../include/openssl/aes.h
170rand_win.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
171rand_win.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
172rand_win.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
173rand_win.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
174rand_win.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
175rand_win.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
176rand_win.o: ../../include/openssl/err.h ../../include/openssl/evp.h
177rand_win.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
178rand_win.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
179rand_win.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
180rand_win.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
181rand_win.o: ../../include/openssl/opensslconf.h
182rand_win.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
183rand_win.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
184rand_win.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
185rand_win.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
186rand_win.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
187rand_win.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
188rand_win.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
189rand_win.o: ../cryptlib.h rand_lcl.h rand_win.c
190randfile.o: ../../e_os.h ../../include/openssl/buffer.h
191randfile.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
192randfile.o: ../../include/openssl/opensslconf.h
193randfile.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
194randfile.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
195randfile.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
196randfile.o: randfile.c
diff --git a/src/lib/libssl/src/crypto/rand/rand_err.c b/src/lib/libssl/src/crypto/rand/rand_err.c
index 97f96e1aee..95574659ac 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-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2003 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
@@ -64,26 +64,22 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_RAND,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_RAND,0,reason)
70
71static ERR_STRING_DATA RAND_str_functs[]= 67static ERR_STRING_DATA RAND_str_functs[]=
72 { 68 {
73{ERR_FUNC(RAND_F_FIPS_RAND_BYTES), "FIPS_RAND_BYTES"}, 69{ERR_PACK(0,RAND_F_FIPS_RAND_BYTES,0), "FIPS_RAND_BYTES"},
74{ERR_FUNC(RAND_F_RAND_GET_RAND_METHOD), "RAND_get_rand_method"}, 70{ERR_PACK(0,RAND_F_RAND_GET_RAND_METHOD,0), "RAND_get_rand_method"},
75{ERR_FUNC(RAND_F_SSLEAY_RAND_BYTES), "SSLEAY_RAND_BYTES"}, 71{ERR_PACK(0,RAND_F_SSLEAY_RAND_BYTES,0), "SSLEAY_RAND_BYTES"},
76{0,NULL} 72{0,NULL}
77 }; 73 };
78 74
79static ERR_STRING_DATA RAND_str_reasons[]= 75static ERR_STRING_DATA RAND_str_reasons[]=
80 { 76 {
81{ERR_REASON(RAND_R_NON_FIPS_METHOD) ,"non fips method"}, 77{RAND_R_NON_FIPS_METHOD ,"non fips method"},
82{ERR_REASON(RAND_R_PRNG_ASKING_FOR_TOO_MUCH),"prng asking for too much"}, 78{RAND_R_PRNG_ASKING_FOR_TOO_MUCH ,"prng asking for too much"},
83{ERR_REASON(RAND_R_PRNG_NOT_REKEYED) ,"prng not rekeyed"}, 79{RAND_R_PRNG_NOT_REKEYED ,"prng not rekeyed"},
84{ERR_REASON(RAND_R_PRNG_NOT_RESEEDED) ,"prng not reseeded"}, 80{RAND_R_PRNG_NOT_RESEEDED ,"prng not reseeded"},
85{ERR_REASON(RAND_R_PRNG_NOT_SEEDED) ,"PRNG not seeded"}, 81{RAND_R_PRNG_NOT_SEEDED ,"PRNG not seeded"},
86{ERR_REASON(RAND_R_PRNG_STUCK) ,"prng stuck"}, 82{RAND_R_PRNG_STUCK ,"prng stuck"},
87{0,NULL} 83{0,NULL}
88 }; 84 };
89 85
@@ -97,8 +93,8 @@ void ERR_load_RAND_strings(void)
97 { 93 {
98 init=0; 94 init=0;
99#ifndef OPENSSL_NO_ERR 95#ifndef OPENSSL_NO_ERR
100 ERR_load_strings(0,RAND_str_functs); 96 ERR_load_strings(ERR_LIB_RAND,RAND_str_functs);
101 ERR_load_strings(0,RAND_str_reasons); 97 ERR_load_strings(ERR_LIB_RAND,RAND_str_reasons);
102#endif 98#endif
103 99
104 } 100 }
diff --git a/src/lib/libssl/src/crypto/rand/rand_lib.c b/src/lib/libssl/src/crypto/rand/rand_lib.c
index a21bde79de..88f1b56d91 100644
--- a/src/lib/libssl/src/crypto/rand/rand_lib.c
+++ b/src/lib/libssl/src/crypto/rand/rand_lib.c
@@ -87,6 +87,16 @@ int RAND_set_rand_method(const RAND_METHOD *meth)
87 87
88const RAND_METHOD *RAND_get_rand_method(void) 88const RAND_METHOD *RAND_get_rand_method(void)
89 { 89 {
90#ifdef OPENSSL_FIPS
91 if(FIPS_mode()
92 && default_RAND_meth != FIPS_rand_check())
93 {
94 RANDerr(RAND_F_RAND_GET_RAND_METHOD,RAND_R_NON_FIPS_METHOD);
95 return 0;
96 }
97#endif
98
99
90 if (!default_RAND_meth) 100 if (!default_RAND_meth)
91 { 101 {
92#ifndef OPENSSL_NO_ENGINE 102#ifndef OPENSSL_NO_ENGINE
@@ -104,22 +114,8 @@ const RAND_METHOD *RAND_get_rand_method(void)
104 funct_ref = e; 114 funct_ref = e;
105 else 115 else
106#endif 116#endif
107#ifdef OPENSSL_FIPS 117 default_RAND_meth = RAND_SSLeay();
108 if(FIPS_mode())
109 default_RAND_meth=FIPS_rand_method();
110 else
111#endif
112 default_RAND_meth = RAND_SSLeay();
113 } 118 }
114
115#ifdef OPENSSL_FIPS
116 if(FIPS_mode()
117 && default_RAND_meth != FIPS_rand_check())
118 {
119 RANDerr(RAND_F_RAND_GET_RAND_METHOD,RAND_R_NON_FIPS_METHOD);
120 return 0;
121 }
122#endif
123 return default_RAND_meth; 119 return default_RAND_meth;
124 } 120 }
125 121
diff --git a/src/lib/libssl/src/crypto/rand/randfile.c b/src/lib/libssl/src/crypto/rand/randfile.c
index 7183fa32e4..9bd89ba495 100644
--- a/src/lib/libssl/src/crypto/rand/randfile.c
+++ b/src/lib/libssl/src/crypto/rand/randfile.c
@@ -57,7 +57,7 @@
57 */ 57 */
58 58
59/* We need to define this to get macros like S_IFBLK and S_IFCHR */ 59/* We need to define this to get macros like S_IFBLK and S_IFCHR */
60#define _XOPEN_SOURCE 500 60#define _XOPEN_SOURCE 1
61 61
62#include <errno.h> 62#include <errno.h>
63#include <stdio.h> 63#include <stdio.h>
@@ -233,7 +233,7 @@ const char *RAND_file_name(char *buf, size_t size)
233 struct stat sb; 233 struct stat sb;
234#endif 234#endif
235 235
236 if (OPENSSL_issetugid() == 0) 236 if (issetugid() == 0)
237 s=getenv("RANDFILE"); 237 s=getenv("RANDFILE");
238 if (s != NULL && *s && strlen(s) + 1 < size) 238 if (s != NULL && *s && strlen(s) + 1 < size)
239 { 239 {
@@ -242,7 +242,7 @@ const char *RAND_file_name(char *buf, size_t size)
242 } 242 }
243 else 243 else
244 { 244 {
245 if (OPENSSL_issetugid() == 0) 245 if (issetugid() == 0)
246 s=getenv("HOME"); 246 s=getenv("HOME");
247#ifdef DEFAULT_HOME 247#ifdef DEFAULT_HOME
248 if (s == NULL) 248 if (s == NULL)
diff --git a/src/lib/libssl/src/crypto/rc2/Makefile.ssl b/src/lib/libssl/src/crypto/rc2/Makefile.ssl
new file mode 100644
index 0000000000..98d5960d5d
--- /dev/null
+++ b/src/lib/libssl/src/crypto/rc2/Makefile.ssl
@@ -0,0 +1,91 @@
1#
2# SSLeay/crypto/rc2/Makefile
3#
4
5DIR= rc2
6TOP= ../..
7CC= cc
8INCLUDES=
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST=rc2test.c
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC=rc2_ecb.c rc2_skey.c rc2_cbc.c rc2cfb64.c rc2ofb64.c
27LIBOBJ=rc2_ecb.o rc2_skey.o rc2_cbc.o rc2cfb64.o rc2ofb64.o
28
29SRC= $(LIBSRC)
30
31EXHEADER= rc2.h
32HEADER= rc2_locl.h $(EXHEADER)
33
34ALL= $(GENERAL) $(SRC) $(HEADER)
35
36top:
37 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
38
39all: lib
40
41lib: $(LIBOBJ)
42 $(AR) $(LIB) $(LIBOBJ)
43 $(RANLIB) $(LIB) || echo Never mind.
44 @touch lib
45
46files:
47 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
48
49links:
50 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
51 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
52 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
53 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
54
55install:
56 @for i in $(EXHEADER) ; \
57 do \
58 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
59 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
60 done;
61
62tags:
63 ctags $(SRC)
64
65tests:
66
67lint:
68 lint -DLINT $(INCLUDES) $(SRC)>fluff
69
70depend:
71 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
72
73dclean:
74 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
75 mv -f Makefile.new $(MAKEFILE)
76
77clean:
78 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
79
80# DO NOT DELETE THIS LINE -- make depend depends on it.
81
82rc2_cbc.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc2.h
83rc2_cbc.o: rc2_cbc.c rc2_locl.h
84rc2_ecb.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
85rc2_ecb.o: ../../include/openssl/rc2.h rc2_ecb.c rc2_locl.h
86rc2_skey.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc2.h
87rc2_skey.o: rc2_locl.h rc2_skey.c
88rc2cfb64.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc2.h
89rc2cfb64.o: rc2_locl.h rc2cfb64.c
90rc2ofb64.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc2.h
91rc2ofb64.o: rc2_locl.h rc2ofb64.c
diff --git a/src/lib/libssl/src/crypto/rc2/rc2_skey.c b/src/lib/libssl/src/crypto/rc2/rc2_skey.c
index 9652865188..22f372f85c 100644
--- a/src/lib/libssl/src/crypto/rc2/rc2_skey.c
+++ b/src/lib/libssl/src/crypto/rc2/rc2_skey.c
@@ -58,7 +58,6 @@
58 58
59#include <openssl/rc2.h> 59#include <openssl/rc2.h>
60#include <openssl/crypto.h> 60#include <openssl/crypto.h>
61#include <openssl/fips.h>
62#include "rc2_locl.h" 61#include "rc2_locl.h"
63 62
64static unsigned char key_table[256]={ 63static unsigned char key_table[256]={
diff --git a/src/lib/libssl/src/crypto/rc2/rc2speed.c b/src/lib/libssl/src/crypto/rc2/rc2speed.c
index 4d0e1242ea..47d34b444e 100644
--- a/src/lib/libssl/src/crypto/rc2/rc2speed.c
+++ b/src/lib/libssl/src/crypto/rc2/rc2speed.c
@@ -102,10 +102,10 @@ OPENSSL_DECLARE_EXIT
102#ifndef HZ 102#ifndef HZ
103#ifndef CLK_TCK 103#ifndef CLK_TCK
104#define HZ 100.0 104#define HZ 100.0
105#else /* CLK_TCK */ 105#endif
106#else /* CLK_TCK */
106#define HZ ((double)CLK_TCK) 107#define HZ ((double)CLK_TCK)
107#endif /* CLK_TCK */ 108#endif
108#endif /* HZ */
109 109
110#define BUFSIZE ((long)1024) 110#define BUFSIZE ((long)1024)
111long run=0; 111long run=0;
diff --git a/src/lib/libssl/src/crypto/rc4/Makefile.ssl b/src/lib/libssl/src/crypto/rc4/Makefile.ssl
new file mode 100644
index 0000000000..3e602662be
--- /dev/null
+++ b/src/lib/libssl/src/crypto/rc4/Makefile.ssl
@@ -0,0 +1,110 @@
1#
2# SSLeay/crypto/rc4/Makefile
3#
4
5DIR= rc4
6TOP= ../..
7CC= cc
8CPP= $(CC) -E
9INCLUDES=
10CFLAG=-g
11INSTALL_PREFIX=
12OPENSSLDIR= /usr/local/ssl
13INSTALLTOP=/usr/local/ssl
14MAKE= make -f Makefile.ssl
15MAKEDEPPROG= makedepend
16MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
17MAKEFILE= Makefile.ssl
18AR= ar r
19
20RC4_ENC=rc4_enc.o
21# or use
22#RC4_ENC=asm/rx86-elf.o
23#RC4_ENC=asm/rx86-out.o
24#RC4_ENC=asm/rx86-sol.o
25#RC4_ENC=asm/rx86bdsi.o
26
27CFLAGS= $(INCLUDES) $(CFLAG)
28ASFLAGS= $(INCLUDES) $(ASFLAG)
29
30GENERAL=Makefile
31TEST=rc4test.c
32APPS=
33
34LIB=$(TOP)/libcrypto.a
35LIBSRC=rc4_skey.c rc4_enc.c
36LIBOBJ=rc4_skey.o $(RC4_ENC)
37
38SRC= $(LIBSRC)
39
40EXHEADER= rc4.h
41HEADER= $(EXHEADER) rc4_locl.h
42
43ALL= $(GENERAL) $(SRC) $(HEADER)
44
45top:
46 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
47
48all: lib
49
50lib: $(LIBOBJ)
51 $(AR) $(LIB) $(LIBOBJ)
52 $(RANLIB) $(LIB) || echo Never mind.
53 @touch lib
54
55# elf
56asm/rx86-elf.s: asm/rc4-586.pl ../perlasm/x86asm.pl
57 (cd asm; $(PERL) rc4-586.pl elf $(CFLAGS) > rx86-elf.s)
58
59# a.out
60asm/rx86-out.o: asm/rx86unix.cpp
61 $(CPP) -DOUT asm/rx86unix.cpp | as -o asm/rx86-out.o
62
63# bsdi
64asm/rx86bsdi.o: asm/rx86unix.cpp
65 $(CPP) -DBSDI asm/rx86unix.cpp | sed 's/ :/:/' | as -o asm/rx86bsdi.o
66
67asm/rx86unix.cpp: asm/rc4-586.pl ../perlasm/x86asm.pl
68 (cd asm; $(PERL) rc4-586.pl cpp >rx86unix.cpp)
69
70files:
71 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
72
73links:
74 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
75 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
76 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
77 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
78
79install:
80 @for i in $(EXHEADER) ; \
81 do \
82 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
83 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
84 done;
85
86tags:
87 ctags $(SRC)
88
89tests:
90
91lint:
92 lint -DLINT $(INCLUDES) $(SRC)>fluff
93
94depend:
95 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
96
97dclean:
98 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
99 mv -f Makefile.new $(MAKEFILE)
100
101clean:
102 rm -f asm/rx86unix.cpp asm/*-elf.* *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff asm/*.o
103
104# DO NOT DELETE THIS LINE -- make depend depends on it.
105
106rc4_enc.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc4.h
107rc4_enc.o: rc4_enc.c rc4_locl.h
108rc4_skey.o: ../../include/openssl/opensslconf.h
109rc4_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/rc4.h
110rc4_skey.o: rc4_locl.h rc4_skey.c
diff --git a/src/lib/libssl/src/crypto/rc4/asm/rc4-amd64.pl b/src/lib/libssl/src/crypto/rc4/asm/rc4-amd64.pl
new file mode 100755
index 0000000000..9e0da8af99
--- /dev/null
+++ b/src/lib/libssl/src/crypto/rc4/asm/rc4-amd64.pl
@@ -0,0 +1,227 @@
1#!/usr/bin/env perl
2#
3# ====================================================================
4# Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL
5# project. Rights for redistribution and usage in source and binary
6# forms are granted according to the OpenSSL license.
7# ====================================================================
8#
9# 2.22x RC4 tune-up:-) It should be noted though that my hand [as in
10# "hand-coded assembler"] doesn't stand for the whole improvement
11# coefficient. It turned out that eliminating RC4_CHAR from config
12# line results in ~40% improvement (yes, even for C implementation).
13# Presumably it has everything to do with AMD cache architecture and
14# RAW or whatever penalties. Once again! The module *requires* config
15# line *without* RC4_CHAR! As for coding "secret," I bet on partial
16# register arithmetics. For example instead of 'inc %r8; and $255,%r8'
17# I simply 'inc %r8b'. Even though optimization manual discourages
18# to operate on partial registers, it turned out to be the best bet.
19# At least for AMD... How IA32E would perform remains to be seen...
20
21# As was shown by Marc Bevand reordering of couple of load operations
22# results in even higher performance gain of 3.3x:-) At least on
23# Opteron... For reference, 1x in this case is RC4_CHAR C-code
24# compiled with gcc 3.3.2, which performs at ~54MBps per 1GHz clock.
25# Latter means that if you want to *estimate* what to expect from
26# *your* CPU, then multiply 54 by 3.3 and clock frequency in GHz.
27
28# Intel P4 EM64T core was found to run the AMD64 code really slow...
29# The only way to achieve comparable performance on P4 is to keep
30# RC4_CHAR. Kind of ironic, huh? As it's apparently impossible to
31# compose blended code, which would perform even within 30% marginal
32# on either AMD and Intel platforms, I implement both cases. See
33# rc4_skey.c for further details... This applies to 0.9.8 and later.
34# In 0.9.7 context RC4_CHAR codepath is never engaged and ~70 bytes
35# of code remain redundant.
36
37$output=shift;
38
39$win64a=1 if ($output =~ /win64a.[s|asm]/);
40
41open STDOUT,">$output" || die "can't open $output: $!";
42
43if (defined($win64a)) {
44 $dat="%rcx"; # arg1
45 $len="%rdx"; # arg2
46 $inp="%rsi"; # r8, arg3 moves here
47 $out="%rdi"; # r9, arg4 moves here
48} else {
49 $dat="%rdi"; # arg1
50 $len="%rsi"; # arg2
51 $inp="%rdx"; # arg3
52 $out="%rcx"; # arg4
53}
54
55$XX="%r10";
56$TX="%r8";
57$YY="%r11";
58$TY="%r9";
59
60sub PTR() {
61 my $ret=shift;
62 if (defined($win64a)) {
63 $ret =~ s/\[([\S]+)\+([\S]+)\]/[$2+$1]/g; # [%rN+%rM*4]->[%rM*4+%rN]
64 $ret =~ s/:([^\[]+)\[([^\]]+)\]/:[$2+$1]/g; # :off[ea]->:[ea+off]
65 } else {
66 $ret =~ s/[\+\*]/,/g; # [%rN+%rM*4]->[%rN,%rM,4]
67 $ret =~ s/\[([^\]]+)\]/($1)/g; # [%rN]->(%rN)
68 }
69 $ret;
70}
71
72$code=<<___ if (!defined($win64a));
73.text
74
75.globl RC4
76.type RC4,\@function
77.align 16
78RC4: or $len,$len
79 jne .Lentry
80 repret
81.Lentry:
82___
83$code=<<___ if (defined($win64a));
84_TEXT SEGMENT
85PUBLIC RC4
86ALIGN 16
87RC4 PROC
88 or $len,$len
89 jne .Lentry
90 repret
91.Lentry:
92 push %rdi
93 push %rsi
94 sub \$40,%rsp
95 mov %r8,$inp
96 mov %r9,$out
97___
98$code.=<<___;
99 add \$8,$dat
100 movl `&PTR("DWORD:-8[$dat]")`,$XX#d
101 movl `&PTR("DWORD:-4[$dat]")`,$YY#d
102 cmpl \$-1,`&PTR("DWORD:256[$dat]")`
103 je .LRC4_CHAR
104 test \$-8,$len
105 jz .Lloop1
106.align 16
107.Lloop8:
108 inc $XX#b
109 movl `&PTR("DWORD:[$dat+$XX*4]")`,$TX#d
110 add $TX#b,$YY#b
111 movl `&PTR("DWORD:[$dat+$YY*4]")`,$TY#d
112 movl $TX#d,`&PTR("DWORD:[$dat+$YY*4]")`
113 movl $TY#d,`&PTR("DWORD:[$dat+$XX*4]")`
114 add $TX#b,$TY#b
115 inc $XX#b
116 movl `&PTR("DWORD:[$dat+$XX*4]")`,$TX#d
117 movb `&PTR("BYTE:[$dat+$TY*4]")`,%al
118___
119for ($i=1;$i<=6;$i++) {
120$code.=<<___;
121 add $TX#b,$YY#b
122 ror \$8,%rax
123 movl `&PTR("DWORD:[$dat+$YY*4]")`,$TY#d
124 movl $TX#d,`&PTR("DWORD:[$dat+$YY*4]")`
125 movl $TY#d,`&PTR("DWORD:[$dat+$XX*4]")`
126 add $TX#b,$TY#b
127 inc $XX#b
128 movl `&PTR("DWORD:[$dat+$XX*4]")`,$TX#d
129 movb `&PTR("BYTE:[$dat+$TY*4]")`,%al
130___
131}
132$code.=<<___;
133 add $TX#b,$YY#b
134 ror \$8,%rax
135 movl `&PTR("DWORD:[$dat+$YY*4]")`,$TY#d
136 movl $TX#d,`&PTR("DWORD:[$dat+$YY*4]")`
137 movl $TY#d,`&PTR("DWORD:[$dat+$XX*4]")`
138 sub \$8,$len
139 add $TY#b,$TX#b
140 movb `&PTR("BYTE:[$dat+$TX*4]")`,%al
141 ror \$8,%rax
142 add \$8,$inp
143 add \$8,$out
144
145 xor `&PTR("QWORD:-8[$inp]")`,%rax
146 mov %rax,`&PTR("QWORD:-8[$out]")`
147
148 test \$-8,$len
149 jnz .Lloop8
150 cmp \$0,$len
151 jne .Lloop1
152.Lexit:
153 movl $XX#d,`&PTR("DWORD:-8[$dat]")`
154 movl $YY#d,`&PTR("DWORD:-4[$dat]")`
155___
156$code.=<<___ if (defined($win64a));
157 add \$40,%rsp
158 pop %rsi
159 pop %rdi
160___
161$code.=<<___;
162 repret
163.align 16
164.Lloop1:
165 movzb `&PTR("BYTE:[$inp]")`,%eax
166 inc $XX#b
167 movl `&PTR("DWORD:[$dat+$XX*4]")`,$TX#d
168 add $TX#b,$YY#b
169 movl `&PTR("DWORD:[$dat+$YY*4]")`,$TY#d
170 movl $TX#d,`&PTR("DWORD:[$dat+$YY*4]")`
171 movl $TY#d,`&PTR("DWORD:[$dat+$XX*4]")`
172 add $TY#b,$TX#b
173 movl `&PTR("DWORD:[$dat+$TX*4]")`,$TY#d
174 xor $TY,%rax
175 inc $inp
176 movb %al,`&PTR("BYTE:[$out]")`
177 inc $out
178 dec $len
179 jnz .Lloop1
180 jmp .Lexit
181
182.align 16
183.LRC4_CHAR:
184 inc $XX#b
185 movzb `&PTR("BYTE:[$dat+$XX]")`,$TX#d
186 add $TX#b,$YY#b
187 movzb `&PTR("BYTE:[$dat+$YY]")`,$TY#d
188 movb $TX#b,`&PTR("BYTE:[$dat+$YY]")`
189 movb $TY#b,`&PTR("BYTE:[$dat+$XX]")`
190 add $TX#b,$TY#b
191 movzb `&PTR("BYTE:[$dat+$TY]")`,$TY#d
192 xorb `&PTR("BYTE:[$inp]")`,$TY#b
193 movb $TY#b,`&PTR("BYTE:[$out]")`
194 inc $inp
195 inc $out
196 dec $len
197 jnz .LRC4_CHAR
198 jmp .Lexit
199___
200$code.=<<___ if (defined($win64a));
201RC4 ENDP
202_TEXT ENDS
203END
204___
205$code.=<<___ if (!defined($win64a));
206.size RC4,.-RC4
207___
208
209$code =~ s/#([bwd])/$1/gm;
210$code =~ s/\`([^\`]*)\`/eval $1/gem;
211
212if (defined($win64a)) {
213 $code =~ s/\.align/ALIGN/gm;
214 $code =~ s/[\$%]//gm;
215 $code =~ s/\.L/\$L/gm;
216 $code =~ s/([\w]+)([\s]+)([\S]+),([\S]+)/$1$2$4,$3/gm;
217 $code =~ s/([QD]*WORD|BYTE):/$1 PTR/gm;
218 $code =~ s/mov[bwlq]/mov/gm;
219 $code =~ s/movzb/movzx/gm;
220 $code =~ s/repret/DB\t0F3h,0C3h/gm;
221 $code =~ s/cmpl/cmp/gm;
222 $code =~ s/xorb/xor/gm;
223} else {
224 $code =~ s/([QD]*WORD|BYTE)://gm;
225 $code =~ s/repret/.byte\t0xF3,0xC3/gm;
226}
227print $code;
diff --git a/src/lib/libssl/src/crypto/rc4/asm/rc4-x86_64.pl b/src/lib/libssl/src/crypto/rc4/asm/rc4-x86_64.pl
new file mode 100755
index 0000000000..b628daca70
--- /dev/null
+++ b/src/lib/libssl/src/crypto/rc4/asm/rc4-x86_64.pl
@@ -0,0 +1,150 @@
1#!/usr/bin/env perl
2#
3# ====================================================================
4# Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL
5# project. Rights for redistribution and usage in source and binary
6# forms are granted according to the OpenSSL license.
7# ====================================================================
8#
9# Unlike 0.9.7f this code expects RC4_CHAR back in config line! See
10# commentary section in corresponding script in development branch
11# for background information about this option carousel. For those
12# who don't have energy to figure out these gory details, here is
13# basis in form of performance matrix relative to the original
14# 0.9.7e C code-base:
15#
16# 0.9.7e 0.9.7f this
17# AMD64 1x 3.3x 2.4x
18# EM64T 1x 0.8x 1.5x
19#
20# In other words idea is to trade -25% AMD64 performance to compensate
21# for deterioration and gain +90% on EM64T core. Development branch
22# maintains best performance for either target, i.e. 3.3x for AMD64
23# and 1.5x for EM64T.
24
25$output=shift;
26
27open STDOUT,">$output" || die "can't open $output: $!";
28
29$dat="%rdi"; # arg1
30$len="%rsi"; # arg2
31$inp="%rdx"; # arg3
32$out="%rcx"; # arg4
33
34@XX=("%r8","%r10");
35@TX=("%r9","%r11");
36$YY="%r12";
37$TY="%r13";
38
39$code=<<___;;
40.text
41
42.globl RC4
43.type RC4,\@function
44.align 16
45RC4: or $len,$len
46 jne .Lentry
47 repret
48.Lentry:
49 push %r12
50 push %r13
51
52 add \$2,$dat
53 movzb -2($dat),$XX[0]#d
54 movzb -1($dat),$YY#d
55
56 add \$1,$XX[0]#b
57 movzb ($dat,$XX[0]),$TX[0]#d
58 test \$-8,$len
59 jz .Lcloop1
60 push %rbx
61.align 16 # incidentally aligned already
62.Lcloop8:
63 mov ($inp),%eax
64 mov 4($inp),%ebx
65___
66# unroll 2x4-wise, because 64-bit rotates kill Intel P4...
67for ($i=0;$i<4;$i++) {
68$code.=<<___;
69 add $TX[0]#b,$YY#b
70 lea 1($XX[0]),$XX[1]
71 movzb ($dat,$YY),$TY#d
72 movzb $XX[1]#b,$XX[1]#d
73 movzb ($dat,$XX[1]),$TX[1]#d
74 movb $TX[0]#b,($dat,$YY)
75 cmp $XX[1],$YY
76 movb $TY#b,($dat,$XX[0])
77 jne .Lcmov$i # Intel cmov is sloooow...
78 mov $TX[0],$TX[1]
79.Lcmov$i:
80 add $TX[0]#b,$TY#b
81 xor ($dat,$TY),%al
82 ror \$8,%eax
83___
84push(@TX,shift(@TX)); push(@XX,shift(@XX)); # "rotate" registers
85}
86for ($i=4;$i<8;$i++) {
87$code.=<<___;
88 add $TX[0]#b,$YY#b
89 lea 1($XX[0]),$XX[1]
90 movzb ($dat,$YY),$TY#d
91 movzb $XX[1]#b,$XX[1]#d
92 movzb ($dat,$XX[1]),$TX[1]#d
93 movb $TX[0]#b,($dat,$YY)
94 cmp $XX[1],$YY
95 movb $TY#b,($dat,$XX[0])
96 jne .Lcmov$i # Intel cmov is sloooow...
97 mov $TX[0],$TX[1]
98.Lcmov$i:
99 add $TX[0]#b,$TY#b
100 xor ($dat,$TY),%bl
101 ror \$8,%ebx
102___
103push(@TX,shift(@TX)); push(@XX,shift(@XX)); # "rotate" registers
104}
105$code.=<<___;
106 lea -8($len),$len
107 mov %eax,($out)
108 lea 8($inp),$inp
109 mov %ebx,4($out)
110 lea 8($out),$out
111
112 test \$-8,$len
113 jnz .Lcloop8
114 pop %rbx
115 cmp \$0,$len
116 jne .Lcloop1
117.Lexit:
118 sub \$1,$XX[0]#b
119 movb $XX[0]#b,-2($dat)
120 movb $YY#b,-1($dat)
121
122 pop %r13
123 pop %r12
124 repret
125
126.align 16
127.Lcloop1:
128 add $TX[0]#b,$YY#b
129 movzb ($dat,$YY),$TY#d
130 movb $TX[0]#b,($dat,$YY)
131 movb $TY#b,($dat,$XX[0])
132 add $TX[0]#b,$TY#b
133 add \$1,$XX[0]#b
134 movzb ($dat,$TY),$TY#d
135 movzb ($dat,$XX[0]),$TX[0]#d
136 xorb ($inp),$TY#b
137 lea 1($inp),$inp
138 movb $TY#b,($out)
139 lea 1($out),$out
140 sub \$1,$len
141 jnz .Lcloop1
142 jmp .Lexit
143.size RC4,.-RC4
144___
145
146$code =~ s/#([bwd])/$1/gm;
147
148$code =~ s/repret/.byte\t0xF3,0xC3/gm;
149
150print $code;
diff --git a/src/lib/libssl/src/crypto/rc4/rc4.h b/src/lib/libssl/src/crypto/rc4/rc4.h
index ae0cea75b8..dd90d9fde0 100644
--- a/src/lib/libssl/src/crypto/rc4/rc4.h
+++ b/src/lib/libssl/src/crypto/rc4/rc4.h
@@ -73,6 +73,10 @@ typedef struct rc4_key_st
73 { 73 {
74 RC4_INT x,y; 74 RC4_INT x,y;
75 RC4_INT data[256]; 75 RC4_INT data[256];
76#if defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
77 /* see crypto/rc4/asm/rc4-ia64.S for further details... */
78 RC4_INT pad[512-256-2];
79#endif
76 } RC4_KEY; 80 } RC4_KEY;
77 81
78 82
diff --git a/src/lib/libssl/src/crypto/rc4/rc4_enc.c b/src/lib/libssl/src/crypto/rc4/rc4_enc.c
index d5f18a3a70..81a97ea3b7 100644
--- a/src/lib/libssl/src/crypto/rc4/rc4_enc.c
+++ b/src/lib/libssl/src/crypto/rc4/rc4_enc.c
@@ -77,6 +77,10 @@ void RC4(RC4_KEY *key, unsigned long len, const unsigned char *indata,
77 x=key->x; 77 x=key->x;
78 y=key->y; 78 y=key->y;
79 d=key->data; 79 d=key->data;
80#if defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
81 /* see crypto/rc4/asm/rc4-ia64.S for further details... */
82 d=(RC4_INT *)(((size_t)(d+255))&~(sizeof(key->data)-1));
83#endif
80 84
81#if defined(RC4_CHUNK) 85#if defined(RC4_CHUNK)
82 /* 86 /*
diff --git a/src/lib/libssl/src/crypto/rc4/rc4_skey.c b/src/lib/libssl/src/crypto/rc4/rc4_skey.c
index 60510624fd..07234f061a 100644
--- a/src/lib/libssl/src/crypto/rc4/rc4_skey.c
+++ b/src/lib/libssl/src/crypto/rc4/rc4_skey.c
@@ -58,7 +58,6 @@
58 58
59#include <openssl/rc4.h> 59#include <openssl/rc4.h>
60#include <openssl/crypto.h> 60#include <openssl/crypto.h>
61#include <openssl/fips.h>
62#include "rc4_locl.h" 61#include "rc4_locl.h"
63#include <openssl/opensslv.h> 62#include <openssl/opensslv.h>
64 63
@@ -95,6 +94,10 @@ FIPS_NON_FIPS_VCIPHER_Init(RC4)
95 unsigned int i; 94 unsigned int i;
96 95
97 d= &(key->data[0]); 96 d= &(key->data[0]);
97#if defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
98 /* see crypto/rc4/asm/rc4-ia64.S for further details... */
99 d=(RC4_INT *)(((size_t)(d+255))&~(sizeof(key->data)-1));
100#endif
98 101
99 for (i=0; i<256; i++) 102 for (i=0; i<256; i++)
100 d[i]=i; 103 d[i]=i;
diff --git a/src/lib/libssl/src/crypto/rc5/Makefile.ssl b/src/lib/libssl/src/crypto/rc5/Makefile.ssl
new file mode 100644
index 0000000000..3f9632f8f7
--- /dev/null
+++ b/src/lib/libssl/src/crypto/rc5/Makefile.ssl
@@ -0,0 +1,108 @@
1#
2# SSLeay/crypto/rc5/Makefile
3#
4
5DIR= rc5
6TOP= ../..
7CC= cc
8CPP= $(CC) -E
9INCLUDES=
10CFLAG=-g
11INSTALL_PREFIX=
12OPENSSLDIR= /usr/local/ssl
13INSTALLTOP=/usr/local/ssl
14MAKE= make -f Makefile.ssl
15MAKEDEPPROG= makedepend
16MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
17MAKEFILE= Makefile.ssl
18AR= ar r
19
20RC5_ENC= rc5_enc.o
21# or use
22#DES_ENC= r586-elf.o
23
24CFLAGS= $(INCLUDES) $(CFLAG)
25ASFLAGS= $(INCLUDES) $(ASFLAG)
26
27GENERAL=Makefile
28TEST=rc5test.c
29APPS=
30
31LIB=$(TOP)/libcrypto.a
32LIBSRC=rc5_skey.c rc5_ecb.c rc5_enc.c rc5cfb64.c rc5ofb64.c
33LIBOBJ=rc5_skey.o rc5_ecb.o $(RC5_ENC) rc5cfb64.o rc5ofb64.o
34
35SRC= $(LIBSRC)
36
37EXHEADER= rc5.h
38HEADER= rc5_locl.h $(EXHEADER)
39
40ALL= $(GENERAL) $(SRC) $(HEADER)
41
42top:
43 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
44
45all: lib
46
47lib: $(LIBOBJ)
48 $(AR) $(LIB) $(LIBOBJ)
49 $(RANLIB) $(LIB) || echo Never mind.
50 @touch lib
51
52# elf
53asm/r586-elf.s: asm/rc5-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
54 (cd asm; $(PERL) rc5-586.pl elf $(CFLAGS) > r586-elf.s)
55
56# a.out
57asm/r586-out.o: asm/r586unix.cpp
58 $(CPP) -DOUT asm/r586unix.cpp | as -o asm/r586-out.o
59
60# bsdi
61asm/r586bsdi.o: asm/r586unix.cpp
62 $(CPP) -DBSDI asm/r586unix.cpp | sed 's/ :/:/' | as -o asm/r586bsdi.o
63
64asm/r586unix.cpp: asm/rc5-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
65 (cd asm; $(PERL) rc5-586.pl cpp >r586unix.cpp)
66
67files:
68 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
69
70links:
71 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
72 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
73 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
74 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
75
76install:
77 @for i in $(EXHEADER) ; \
78 do \
79 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
80 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
81 done;
82
83tags:
84 ctags $(SRC)
85
86tests:
87
88lint:
89 lint -DLINT $(INCLUDES) $(SRC)>fluff
90
91depend:
92 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
93
94dclean:
95 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
96 mv -f Makefile.new $(MAKEFILE)
97
98clean:
99 rm -f asm/r586unix.cpp asm/*-elf.* *.o asm/*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
100
101# DO NOT DELETE THIS LINE -- make depend depends on it.
102
103rc5_ecb.o: ../../include/openssl/opensslv.h ../../include/openssl/rc5.h
104rc5_ecb.o: rc5_ecb.c rc5_locl.h
105rc5_enc.o: ../../include/openssl/rc5.h rc5_enc.c rc5_locl.h
106rc5_skey.o: ../../include/openssl/rc5.h rc5_locl.h rc5_skey.c
107rc5cfb64.o: ../../include/openssl/rc5.h rc5_locl.h rc5cfb64.c
108rc5ofb64.o: ../../include/openssl/rc5.h rc5_locl.h rc5ofb64.c
diff --git a/src/lib/libssl/src/crypto/ripemd/Makefile.ssl b/src/lib/libssl/src/crypto/ripemd/Makefile.ssl
new file mode 100644
index 0000000000..f22ac790ae
--- /dev/null
+++ b/src/lib/libssl/src/crypto/ripemd/Makefile.ssl
@@ -0,0 +1,108 @@
1#
2# SSLeay/crypto/ripemd/Makefile
3#
4
5DIR= ripemd
6TOP= ../..
7CC= cc
8CPP= $(CC) -E
9INCLUDES=
10CFLAG=-g
11INSTALL_PREFIX=
12OPENSSLDIR= /usr/local/ssl
13INSTALLTOP=/usr/local/ssl
14MAKE= make -f Makefile.ssl
15MAKEDEPPROG= makedepend
16MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
17MAKEFILE= Makefile.ssl
18AR= ar r
19
20RIP_ASM_OBJ=
21
22CFLAGS= $(INCLUDES) $(CFLAG)
23ASFLAGS= $(INCLUDES) $(ASFLAG)
24
25GENERAL=Makefile
26TEST=rmdtest.c
27APPS=
28
29LIB=$(TOP)/libcrypto.a
30LIBSRC=rmd_dgst.c rmd_one.c
31LIBOBJ=rmd_dgst.o rmd_one.o $(RMD160_ASM_OBJ)
32
33SRC= $(LIBSRC)
34
35EXHEADER= ripemd.h
36HEADER= rmd_locl.h rmdconst.h $(EXHEADER)
37
38ALL= $(GENERAL) $(SRC) $(HEADER)
39
40top:
41 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
42
43all: lib
44
45lib: $(LIBOBJ)
46 $(AR) $(LIB) $(LIBOBJ)
47 $(RANLIB) $(LIB) || echo Never mind.
48 @touch lib
49
50# elf
51asm/rm86-elf.s: asm/rmd-586.pl ../perlasm/x86asm.pl
52 (cd asm; $(PERL) rmd-586.pl elf $(CFLAGS) > rm86-elf.s)
53
54# a.out
55asm/rm86-out.o: asm/rm86unix.cpp
56 $(CPP) -DOUT asm/rm86unix.cpp | as -o asm/rm86-out.o
57
58# bsdi
59asm/rm86bsdi.o: asm/rm86unix.cpp
60 $(CPP) -DBSDI asm/rm86unix.cpp | sed 's/ :/:/' | as -o asm/rm86bsdi.o
61
62asm/rm86unix.cpp: asm/rmd-586.pl ../perlasm/x86asm.pl
63 (cd asm; $(PERL) rmd-586.pl cpp >rm86unix.cpp)
64
65files:
66 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
67
68links:
69 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
70 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
71 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
72 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
73
74install:
75 @for i in $(EXHEADER) ; \
76 do \
77 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
78 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
79 done;
80
81tags:
82 ctags $(SRC)
83
84tests:
85
86lint:
87 lint -DLINT $(INCLUDES) $(SRC)>fluff
88
89depend:
90 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
91
92dclean:
93 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
94 mv -f Makefile.new $(MAKEFILE)
95
96clean:
97 rm -f asm/rm86unix.cpp asm/*-elf.* *.o asm/*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
98
99# DO NOT DELETE THIS LINE -- make depend depends on it.
100
101rmd_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
102rmd_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ripemd.h
103rmd_dgst.o: ../md32_common.h rmd_dgst.c rmd_locl.h rmdconst.h
104rmd_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
105rmd_one.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
106rmd_one.o: ../../include/openssl/ripemd.h ../../include/openssl/safestack.h
107rmd_one.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
108rmd_one.o: rmd_one.c
diff --git a/src/lib/libssl/src/crypto/ripemd/README b/src/lib/libssl/src/crypto/ripemd/README
index 7097707264..f1ffc8b134 100644
--- a/src/lib/libssl/src/crypto/ripemd/README
+++ b/src/lib/libssl/src/crypto/ripemd/README
@@ -4,7 +4,7 @@ http://www.esat.kuleuven.ac.be/~bosselae/ripemd160.html
4This is my implementation of RIPEMD-160. The pentium assember is a little 4This is my implementation of RIPEMD-160. The pentium assember is a little
5off the pace since I only get 1050 cycles, while the best is 1013. 5off the pace since I only get 1050 cycles, while the best is 1013.
6I have a few ideas for how to get another 20 or so cycles, but at 6I have a few ideas for how to get another 20 or so cycles, but at
7this point I will not bother right now. I belive the trick will be 7this point I will not bother right now. I believe the trick will be
8to remove my 'copy X array onto stack' until inside the RIP1() finctions the 8to remove my 'copy X array onto stack' until inside the RIP1() finctions the
9first time round. To do this I need another register and will only have one 9first time round. To do this I need another register and will only have one
10temporary one. A bit tricky.... I can also cleanup the saving of the 5 words 10temporary one. A bit tricky.... I can also cleanup the saving of the 5 words
diff --git a/src/lib/libssl/src/crypto/ripemd/rmd_dgst.c b/src/lib/libssl/src/crypto/ripemd/rmd_dgst.c
index 5dff6bafa1..58ff010d11 100644
--- a/src/lib/libssl/src/crypto/ripemd/rmd_dgst.c
+++ b/src/lib/libssl/src/crypto/ripemd/rmd_dgst.c
@@ -91,7 +91,7 @@ FIPS_NON_FIPS_MD_Init(RIPEMD160)
91void ripemd160_block_host_order (RIPEMD160_CTX *ctx, const void *p, int num) 91void ripemd160_block_host_order (RIPEMD160_CTX *ctx, const void *p, int num)
92 { 92 {
93 const RIPEMD160_LONG *XX=p; 93 const RIPEMD160_LONG *XX=p;
94 register unsigned MD32_REG_T A,B,C,D,E; 94 register volatile unsigned MD32_REG_T A,B,C,D,E;
95 register unsigned MD32_REG_T a,b,c,d,e; 95 register unsigned MD32_REG_T a,b,c,d,e;
96 96
97 for (;num--;XX+=HASH_LBLOCK) 97 for (;num--;XX+=HASH_LBLOCK)
@@ -291,7 +291,7 @@ void ripemd160_block_host_order (RIPEMD160_CTX *ctx, const void *p, int num)
291void ripemd160_block_data_order (RIPEMD160_CTX *ctx, const void *p, int num) 291void ripemd160_block_data_order (RIPEMD160_CTX *ctx, const void *p, int num)
292 { 292 {
293 const unsigned char *data=p; 293 const unsigned char *data=p;
294 register unsigned MD32_REG_T A,B,C,D,E; 294 register volatile unsigned MD32_REG_T A,B,C,D,E;
295 unsigned MD32_REG_T a,b,c,d,e,l; 295 unsigned MD32_REG_T a,b,c,d,e,l;
296#ifndef MD32_XARRAY 296#ifndef MD32_XARRAY
297 /* See comment in crypto/sha/sha_locl.h for details. */ 297 /* See comment in crypto/sha/sha_locl.h for details. */
diff --git a/src/lib/libssl/src/crypto/ripemd/rmd_one.c b/src/lib/libssl/src/crypto/ripemd/rmd_one.c
index b88446b267..f8b580c33a 100644
--- a/src/lib/libssl/src/crypto/ripemd/rmd_one.c
+++ b/src/lib/libssl/src/crypto/ripemd/rmd_one.c
@@ -68,8 +68,7 @@ unsigned char *RIPEMD160(const unsigned char *d, unsigned long n,
68 static unsigned char m[RIPEMD160_DIGEST_LENGTH]; 68 static unsigned char m[RIPEMD160_DIGEST_LENGTH];
69 69
70 if (md == NULL) md=m; 70 if (md == NULL) md=m;
71 if (!RIPEMD160_Init(&c)) 71 RIPEMD160_Init(&c);
72 return NULL;
73 RIPEMD160_Update(&c,d,n); 72 RIPEMD160_Update(&c,d,n);
74 RIPEMD160_Final(md,&c); 73 RIPEMD160_Final(md,&c);
75 OPENSSL_cleanse(&c,sizeof(c)); /* security consideration */ 74 OPENSSL_cleanse(&c,sizeof(c)); /* security consideration */
diff --git a/src/lib/libssl/src/crypto/rsa/Makefile.ssl b/src/lib/libssl/src/crypto/rsa/Makefile.ssl
new file mode 100644
index 0000000000..8089344a04
--- /dev/null
+++ b/src/lib/libssl/src/crypto/rsa/Makefile.ssl
@@ -0,0 +1,241 @@
1#
2# SSLeay/crypto/rsa/Makefile
3#
4
5DIR= rsa
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST=rsa_test.c
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC= rsa_eay.c rsa_gen.c rsa_lib.c rsa_sign.c rsa_saos.c rsa_err.c \
27 rsa_pk1.c rsa_ssl.c rsa_none.c rsa_oaep.c rsa_chk.c rsa_null.c \
28 rsa_asn1.c
29LIBOBJ= rsa_eay.o rsa_gen.o rsa_lib.o rsa_sign.o rsa_saos.o rsa_err.o \
30 rsa_pk1.o rsa_ssl.o rsa_none.o rsa_oaep.o rsa_chk.o rsa_null.o \
31 rsa_asn1.o
32
33SRC= $(LIBSRC)
34
35EXHEADER= rsa.h
36HEADER= $(EXHEADER)
37
38ALL= $(GENERAL) $(SRC) $(HEADER)
39
40top:
41 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
42
43all: lib
44
45lib: $(LIBOBJ)
46 $(AR) $(LIB) $(LIBOBJ)
47 $(RANLIB) $(LIB) || echo Never mind.
48 @touch lib
49
50files:
51 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
52
53links:
54 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
55 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
56 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
57 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
58
59install:
60 @for i in $(EXHEADER) ; \
61 do \
62 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
63 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
64 done;
65
66tags:
67 ctags $(SRC)
68
69tests:
70
71lint:
72 lint -DLINT $(INCLUDES) $(SRC)>fluff
73
74depend:
75 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
76
77dclean:
78 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
79 mv -f Makefile.new $(MAKEFILE)
80
81clean:
82 rm -f *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
83
84# DO NOT DELETE THIS LINE -- make depend depends on it.
85
86rsa_asn1.o: ../../e_os.h ../../include/openssl/asn1.h
87rsa_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
88rsa_asn1.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
89rsa_asn1.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
90rsa_asn1.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
91rsa_asn1.o: ../../include/openssl/opensslconf.h
92rsa_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
93rsa_asn1.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
94rsa_asn1.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
95rsa_asn1.o: ../cryptlib.h rsa_asn1.c
96rsa_chk.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
97rsa_chk.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
98rsa_chk.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
99rsa_chk.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
100rsa_chk.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
101rsa_chk.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
102rsa_chk.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
103rsa_chk.o: rsa_chk.c
104rsa_eay.o: ../../e_os.h ../../include/openssl/asn1.h
105rsa_eay.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
106rsa_eay.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
107rsa_eay.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
108rsa_eay.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
109rsa_eay.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
110rsa_eay.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
111rsa_eay.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
112rsa_eay.o: ../../include/openssl/symhacks.h ../cryptlib.h rsa_eay.c
113rsa_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
114rsa_err.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
115rsa_err.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
116rsa_err.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
117rsa_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
118rsa_err.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
119rsa_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
120rsa_err.o: rsa_err.c
121rsa_gen.o: ../../e_os.h ../../include/openssl/asn1.h
122rsa_gen.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
123rsa_gen.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
124rsa_gen.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
125rsa_gen.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
126rsa_gen.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
127rsa_gen.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
128rsa_gen.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
129rsa_gen.o: ../cryptlib.h rsa_gen.c
130rsa_lib.o: ../../e_os.h ../../include/openssl/asn1.h
131rsa_lib.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
132rsa_lib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
133rsa_lib.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
134rsa_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/engine.h
135rsa_lib.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
136rsa_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
137rsa_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
138rsa_lib.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
139rsa_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
140rsa_lib.o: ../../include/openssl/ui.h ../cryptlib.h rsa_lib.c
141rsa_none.o: ../../e_os.h ../../include/openssl/asn1.h
142rsa_none.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
143rsa_none.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
144rsa_none.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
145rsa_none.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
146rsa_none.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
147rsa_none.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
148rsa_none.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
149rsa_none.o: ../../include/openssl/symhacks.h ../cryptlib.h rsa_none.c
150rsa_null.o: ../../e_os.h ../../include/openssl/asn1.h
151rsa_null.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
152rsa_null.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
153rsa_null.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
154rsa_null.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
155rsa_null.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
156rsa_null.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
157rsa_null.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
158rsa_null.o: ../../include/openssl/symhacks.h ../cryptlib.h rsa_null.c
159rsa_oaep.o: ../../e_os.h ../../include/openssl/aes.h
160rsa_oaep.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
161rsa_oaep.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
162rsa_oaep.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
163rsa_oaep.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
164rsa_oaep.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
165rsa_oaep.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
166rsa_oaep.o: ../../include/openssl/err.h ../../include/openssl/evp.h
167rsa_oaep.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
168rsa_oaep.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
169rsa_oaep.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
170rsa_oaep.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
171rsa_oaep.o: ../../include/openssl/opensslconf.h
172rsa_oaep.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
173rsa_oaep.o: ../../include/openssl/rand.h ../../include/openssl/rc2.h
174rsa_oaep.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
175rsa_oaep.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
176rsa_oaep.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
177rsa_oaep.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
178rsa_oaep.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
179rsa_oaep.o: ../cryptlib.h rsa_oaep.c
180rsa_pk1.o: ../../e_os.h ../../include/openssl/asn1.h
181rsa_pk1.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
182rsa_pk1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
183rsa_pk1.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
184rsa_pk1.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
185rsa_pk1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
186rsa_pk1.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
187rsa_pk1.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
188rsa_pk1.o: ../../include/openssl/symhacks.h ../cryptlib.h rsa_pk1.c
189rsa_saos.o: ../../e_os.h ../../include/openssl/aes.h
190rsa_saos.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
191rsa_saos.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
192rsa_saos.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
193rsa_saos.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
194rsa_saos.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
195rsa_saos.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
196rsa_saos.o: ../../include/openssl/err.h ../../include/openssl/evp.h
197rsa_saos.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
198rsa_saos.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
199rsa_saos.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
200rsa_saos.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
201rsa_saos.o: ../../include/openssl/opensslconf.h
202rsa_saos.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
203rsa_saos.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
204rsa_saos.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
205rsa_saos.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
206rsa_saos.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
207rsa_saos.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
208rsa_saos.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
209rsa_saos.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
210rsa_saos.o: ../cryptlib.h rsa_saos.c
211rsa_sign.o: ../../e_os.h ../../include/openssl/aes.h
212rsa_sign.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
213rsa_sign.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
214rsa_sign.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
215rsa_sign.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
216rsa_sign.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
217rsa_sign.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
218rsa_sign.o: ../../include/openssl/err.h ../../include/openssl/evp.h
219rsa_sign.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
220rsa_sign.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
221rsa_sign.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
222rsa_sign.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
223rsa_sign.o: ../../include/openssl/opensslconf.h
224rsa_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
225rsa_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
226rsa_sign.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
227rsa_sign.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
228rsa_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
229rsa_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
230rsa_sign.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
231rsa_sign.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
232rsa_sign.o: ../cryptlib.h rsa_sign.c
233rsa_ssl.o: ../../e_os.h ../../include/openssl/asn1.h
234rsa_ssl.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
235rsa_ssl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
236rsa_ssl.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
237rsa_ssl.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
238rsa_ssl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
239rsa_ssl.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
240rsa_ssl.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
241rsa_ssl.o: ../../include/openssl/symhacks.h ../cryptlib.h rsa_ssl.c
diff --git a/src/lib/libssl/src/crypto/rsa/rsa.h b/src/lib/libssl/src/crypto/rsa/rsa.h
index 0b639cd37f..fc3bb5f86d 100644
--- a/src/lib/libssl/src/crypto/rsa/rsa.h
+++ b/src/lib/libssl/src/crypto/rsa/rsa.h
@@ -157,41 +157,33 @@ struct rsa_st
157#define RSA_3 0x3L 157#define RSA_3 0x3L
158#define RSA_F4 0x10001L 158#define RSA_F4 0x10001L
159 159
160#define RSA_METHOD_FLAG_NO_CHECK 0x0001 /* don't check pub/private match */ 160#define RSA_METHOD_FLAG_NO_CHECK 0x01 /* don't check pub/private match */
161 161
162#define RSA_FLAG_CACHE_PUBLIC 0x0002 162#define RSA_FLAG_CACHE_PUBLIC 0x02
163#define RSA_FLAG_CACHE_PRIVATE 0x0004 163#define RSA_FLAG_CACHE_PRIVATE 0x04
164#define RSA_FLAG_BLINDING 0x0008 164#define RSA_FLAG_BLINDING 0x08
165#define RSA_FLAG_THREAD_SAFE 0x0010 165#define RSA_FLAG_THREAD_SAFE 0x10
166/* This flag means the private key operations will be handled by rsa_mod_exp 166/* This flag means the private key operations will be handled by rsa_mod_exp
167 * and that they do not depend on the private key components being present: 167 * and that they do not depend on the private key components being present:
168 * for example a key stored in external hardware. Without this flag bn_mod_exp 168 * for example a key stored in external hardware. Without this flag bn_mod_exp
169 * gets called when private key components are absent. 169 * gets called when private key components are absent.
170 */ 170 */
171#define RSA_FLAG_EXT_PKEY 0x0020 171#define RSA_FLAG_EXT_PKEY 0x20
172 172
173/* This flag in the RSA_METHOD enables the new rsa_sign, rsa_verify functions. 173/* This flag in the RSA_METHOD enables the new rsa_sign, rsa_verify functions.
174 */ 174 */
175#define RSA_FLAG_SIGN_VER 0x0040 175#define RSA_FLAG_SIGN_VER 0x40
176 176
177#define RSA_FLAG_NO_BLINDING 0x0080 /* new with 0.9.6j and 0.9.7b; the built-in 177#define RSA_FLAG_NO_BLINDING 0x80 /* new with 0.9.6j and 0.9.7b; the built-in
178 * RSA implementation now uses blinding by 178 * RSA implementation now uses blinding by
179 * default (ignoring RSA_FLAG_BLINDING), 179 * default (ignoring RSA_FLAG_BLINDING),
180 * but other engines might not need it 180 * but other engines might not need it
181 */ 181 */
182#define RSA_FLAG_NO_EXP_CONSTTIME 0x0100 /* new with 0.9.7h; the built-in RSA
183 * implementation now uses constant time
184 * modular exponentiation for secret exponents
185 * by default. This flag causes the
186 * faster variable sliding window method to
187 * be used for all exponents.
188 */
189 182
190#define RSA_PKCS1_PADDING 1 183#define RSA_PKCS1_PADDING 1
191#define RSA_SSLV23_PADDING 2 184#define RSA_SSLV23_PADDING 2
192#define RSA_NO_PADDING 3 185#define RSA_NO_PADDING 3
193#define RSA_PKCS1_OAEP_PADDING 4 186#define RSA_PKCS1_OAEP_PADDING 4
194#define RSA_X931_PADDING 5
195 187
196#define RSA_PKCS1_PADDING_SIZE 11 188#define RSA_PKCS1_PADDING_SIZE 11
197 189
@@ -204,15 +196,6 @@ int RSA_size(const RSA *);
204RSA * RSA_generate_key(int bits, unsigned long e,void 196RSA * RSA_generate_key(int bits, unsigned long e,void
205 (*callback)(int,int,void *),void *cb_arg); 197 (*callback)(int,int,void *),void *cb_arg);
206int RSA_check_key(const RSA *); 198int RSA_check_key(const RSA *);
207#ifdef OPENSSL_FIPS
208int RSA_X931_derive(RSA *rsa, BIGNUM *p1, BIGNUM *p2, BIGNUM *q1, BIGNUM *q2,
209 void (*cb)(int, int, void *), void *cb_arg,
210 const BIGNUM *Xp1, const BIGNUM *Xp2, const BIGNUM *Xp,
211 const BIGNUM *Xq1, const BIGNUM *Xq2, const BIGNUM *Xq,
212 const BIGNUM *e);
213RSA *RSA_X931_generate_key(int bits, const BIGNUM *e,
214 void (*cb)(int,int,void *), void *cb_arg);
215#endif
216 /* next 4 return -1 on error */ 199 /* next 4 return -1 on error */
217int RSA_public_encrypt(int flen, const unsigned char *from, 200int RSA_public_encrypt(int flen, const unsigned char *from,
218 unsigned char *to, RSA *rsa,int padding); 201 unsigned char *to, RSA *rsa,int padding);
@@ -285,8 +268,6 @@ int RSA_padding_add_PKCS1_type_2(unsigned char *to,int tlen,
285 const unsigned char *f,int fl); 268 const unsigned char *f,int fl);
286int RSA_padding_check_PKCS1_type_2(unsigned char *to,int tlen, 269int RSA_padding_check_PKCS1_type_2(unsigned char *to,int tlen,
287 const unsigned char *f,int fl,int rsa_len); 270 const unsigned char *f,int fl,int rsa_len);
288int PKCS1_MGF1(unsigned char *mask, long len,
289 const unsigned char *seed, long seedlen, const EVP_MD *dgst);
290int RSA_padding_add_PKCS1_OAEP(unsigned char *to,int tlen, 271int RSA_padding_add_PKCS1_OAEP(unsigned char *to,int tlen,
291 const unsigned char *f,int fl, 272 const unsigned char *f,int fl,
292 const unsigned char *p,int pl); 273 const unsigned char *p,int pl);
@@ -301,17 +282,6 @@ int RSA_padding_add_none(unsigned char *to,int tlen,
301 const unsigned char *f,int fl); 282 const unsigned char *f,int fl);
302int RSA_padding_check_none(unsigned char *to,int tlen, 283int RSA_padding_check_none(unsigned char *to,int tlen,
303 const unsigned char *f,int fl,int rsa_len); 284 const unsigned char *f,int fl,int rsa_len);
304int RSA_padding_add_X931(unsigned char *to,int tlen,
305 const unsigned char *f,int fl);
306int RSA_padding_check_X931(unsigned char *to,int tlen,
307 const unsigned char *f,int fl,int rsa_len);
308int RSA_X931_hash_id(int nid);
309
310int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash,
311 const EVP_MD *Hash, const unsigned char *EM, int sLen);
312int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM,
313 const unsigned char *mHash,
314 const EVP_MD *Hash, int sLen);
315 285
316int RSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, 286int RSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
317 CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); 287 CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
@@ -341,24 +311,20 @@ void ERR_load_RSA_strings(void);
341#define RSA_F_RSA_NULL 124 311#define RSA_F_RSA_NULL 124
342#define RSA_F_RSA_PADDING_ADD_NONE 107 312#define RSA_F_RSA_PADDING_ADD_NONE 107
343#define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP 121 313#define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP 121
344#define RSA_F_RSA_PADDING_ADD_PKCS1_PSS 125
345#define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1 108 314#define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1 108
346#define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2 109 315#define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2 109
347#define RSA_F_RSA_PADDING_ADD_SSLV23 110 316#define RSA_F_RSA_PADDING_ADD_SSLV23 110
348#define RSA_F_RSA_PADDING_ADD_X931 127
349#define RSA_F_RSA_PADDING_CHECK_NONE 111 317#define RSA_F_RSA_PADDING_CHECK_NONE 111
350#define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP 122 318#define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP 122
351#define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1 112 319#define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1 112
352#define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2 113 320#define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2 113
353#define RSA_F_RSA_PADDING_CHECK_SSLV23 114 321#define RSA_F_RSA_PADDING_CHECK_SSLV23 114
354#define RSA_F_RSA_PADDING_CHECK_X931 128
355#define RSA_F_RSA_PRINT 115 322#define RSA_F_RSA_PRINT 115
356#define RSA_F_RSA_PRINT_FP 116 323#define RSA_F_RSA_PRINT_FP 116
357#define RSA_F_RSA_SIGN 117 324#define RSA_F_RSA_SIGN 117
358#define RSA_F_RSA_SIGN_ASN1_OCTET_STRING 118 325#define RSA_F_RSA_SIGN_ASN1_OCTET_STRING 118
359#define RSA_F_RSA_VERIFY 119 326#define RSA_F_RSA_VERIFY 119
360#define RSA_F_RSA_VERIFY_ASN1_OCTET_STRING 120 327#define RSA_F_RSA_VERIFY_ASN1_OCTET_STRING 120
361#define RSA_F_RSA_VERIFY_PKCS1_PSS 126
362 328
363/* Reason codes. */ 329/* Reason codes. */
364#define RSA_R_ALGORITHM_MISMATCH 100 330#define RSA_R_ALGORITHM_MISMATCH 100
@@ -378,14 +344,9 @@ void ERR_load_RSA_strings(void);
378#define RSA_R_DMP1_NOT_CONGRUENT_TO_D 124 344#define RSA_R_DMP1_NOT_CONGRUENT_TO_D 124
379#define RSA_R_DMQ1_NOT_CONGRUENT_TO_D 125 345#define RSA_R_DMQ1_NOT_CONGRUENT_TO_D 125
380#define RSA_R_D_E_NOT_CONGRUENT_TO_1 123 346#define RSA_R_D_E_NOT_CONGRUENT_TO_1 123
381#define RSA_R_FIRST_OCTET_INVALID 133
382#define RSA_R_INVALID_HEADER 137
383#define RSA_R_INVALID_MESSAGE_LENGTH 131 347#define RSA_R_INVALID_MESSAGE_LENGTH 131
384#define RSA_R_INVALID_PADDING 138
385#define RSA_R_INVALID_TRAILER 139
386#define RSA_R_IQMP_NOT_INVERSE_OF_Q 126 348#define RSA_R_IQMP_NOT_INVERSE_OF_Q 126
387#define RSA_R_KEY_SIZE_TOO_SMALL 120 349#define RSA_R_KEY_SIZE_TOO_SMALL 120
388#define RSA_R_LAST_OCTET_INVALID 134
389#define RSA_R_NULL_BEFORE_BLOCK_MISSING 113 350#define RSA_R_NULL_BEFORE_BLOCK_MISSING 113
390#define RSA_R_N_DOES_NOT_EQUAL_P_Q 127 351#define RSA_R_N_DOES_NOT_EQUAL_P_Q 127
391#define RSA_R_OAEP_DECODING_ERROR 121 352#define RSA_R_OAEP_DECODING_ERROR 121
@@ -393,8 +354,6 @@ void ERR_load_RSA_strings(void);
393#define RSA_R_P_NOT_PRIME 128 354#define RSA_R_P_NOT_PRIME 128
394#define RSA_R_Q_NOT_PRIME 129 355#define RSA_R_Q_NOT_PRIME 129
395#define RSA_R_RSA_OPERATIONS_NOT_SUPPORTED 130 356#define RSA_R_RSA_OPERATIONS_NOT_SUPPORTED 130
396#define RSA_R_SLEN_CHECK_FAILED 136
397#define RSA_R_SLEN_RECOVERY_FAILED 135
398#define RSA_R_SSLV3_ROLLBACK_ATTACK 115 357#define RSA_R_SSLV3_ROLLBACK_ATTACK 115
399#define RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 116 358#define RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 116
400#define RSA_R_UNKNOWN_ALGORITHM_TYPE 117 359#define RSA_R_UNKNOWN_ALGORITHM_TYPE 117
diff --git a/src/lib/libssl/src/crypto/rsa/rsa_eay.c b/src/lib/libssl/src/crypto/rsa/rsa_eay.c
index be4ac96ce3..d4caab3f95 100644
--- a/src/lib/libssl/src/crypto/rsa/rsa_eay.c
+++ b/src/lib/libssl/src/crypto/rsa/rsa_eay.c
@@ -55,59 +55,6 @@
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-2005 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 58
112#include <stdio.h> 59#include <stdio.h>
113#include "cryptlib.h" 60#include "cryptlib.h"
@@ -198,13 +145,30 @@ static int RSA_eay_public_encrypt(int flen, const unsigned char *from,
198 goto err; 145 goto err;
199 } 146 }
200 147
201 if (rsa->flags & RSA_FLAG_CACHE_PUBLIC) 148 if ((rsa->_method_mod_n == NULL) && (rsa->flags & RSA_FLAG_CACHE_PUBLIC))
202 { 149 {
203 if (!BN_MONT_CTX_set_locked(&rsa->_method_mod_n, 150 BN_MONT_CTX* bn_mont_ctx;
204 CRYPTO_LOCK_RSA, rsa->n, ctx)) 151 if ((bn_mont_ctx=BN_MONT_CTX_new()) == NULL)
152 goto err;
153 if (!BN_MONT_CTX_set(bn_mont_ctx,rsa->n,ctx))
154 {
155 BN_MONT_CTX_free(bn_mont_ctx);
205 goto err; 156 goto err;
157 }
158 if (rsa->_method_mod_n == NULL) /* other thread may have finished first */
159 {
160 CRYPTO_w_lock(CRYPTO_LOCK_RSA);
161 if (rsa->_method_mod_n == NULL)
162 {
163 rsa->_method_mod_n = bn_mont_ctx;
164 bn_mont_ctx = NULL;
165 }
166 CRYPTO_w_unlock(CRYPTO_LOCK_RSA);
167 }
168 if (bn_mont_ctx)
169 BN_MONT_CTX_free(bn_mont_ctx);
206 } 170 }
207 171
208 if (!rsa->meth->bn_mod_exp(&ret,&f,rsa->e,rsa->n,ctx, 172 if (!rsa->meth->bn_mod_exp(&ret,&f,rsa->e,rsa->n,ctx,
209 rsa->_method_mod_n)) goto err; 173 rsa->_method_mod_n)) goto err;
210 174
@@ -285,7 +249,7 @@ err:
285static int RSA_eay_private_encrypt(int flen, const unsigned char *from, 249static int RSA_eay_private_encrypt(int flen, const unsigned char *from,
286 unsigned char *to, RSA *rsa, int padding) 250 unsigned char *to, RSA *rsa, int padding)
287 { 251 {
288 BIGNUM f,ret, *res; 252 BIGNUM f,ret;
289 int i,j,k,num=0,r= -1; 253 int i,j,k,num=0,r= -1;
290 unsigned char *buf=NULL; 254 unsigned char *buf=NULL;
291 BN_CTX *ctx=NULL; 255 BN_CTX *ctx=NULL;
@@ -367,43 +331,19 @@ static int RSA_eay_private_encrypt(int flen, const unsigned char *from,
367 (rsa->dmp1 != NULL) && 331 (rsa->dmp1 != NULL) &&
368 (rsa->dmq1 != NULL) && 332 (rsa->dmq1 != NULL) &&
369 (rsa->iqmp != NULL)) ) 333 (rsa->iqmp != NULL)) )
370 { 334 { if (!rsa->meth->rsa_mod_exp(&ret,&f,rsa)) goto err; }
371 if (!rsa->meth->rsa_mod_exp(&ret,&f,rsa)) goto err;
372 }
373 else 335 else
374 { 336 {
375 BIGNUM local_d; 337 if (!rsa->meth->bn_mod_exp(&ret,&f,rsa->d,rsa->n,ctx,NULL)) goto err;
376 BIGNUM *d = NULL;
377
378 if (!(rsa->flags & RSA_FLAG_NO_EXP_CONSTTIME))
379 {
380 BN_init(&local_d);
381 d = &local_d;
382 BN_with_flags(d, rsa->d, BN_FLG_EXP_CONSTTIME);
383 }
384 else
385 d = rsa->d;
386 if (!rsa->meth->bn_mod_exp(&ret,&f,d,rsa->n,ctx,NULL)) goto err;
387 } 338 }
388 339
389 if (blinding) 340 if (blinding)
390 if (!BN_BLINDING_invert(&ret, blinding, ctx)) goto err; 341 if (!BN_BLINDING_invert(&ret, blinding, ctx)) goto err;
391 342
392 if (padding == RSA_X931_PADDING)
393 {
394 BN_sub(&f, rsa->n, &ret);
395 if (BN_cmp(&ret, &f))
396 res = &f;
397 else
398 res = &ret;
399 }
400 else
401 res = &ret;
402
403 /* put in leading 0 bytes if the number is less than the 343 /* put in leading 0 bytes if the number is less than the
404 * length of the modulus */ 344 * length of the modulus */
405 j=BN_num_bytes(res); 345 j=BN_num_bytes(&ret);
406 i=BN_bn2bin(res,&(to[num-j])); 346 i=BN_bn2bin(&ret,&(to[num-j]));
407 for (k=0; k<(num-i); k++) 347 for (k=0; k<(num-i); k++)
408 to[k]=0; 348 to[k]=0;
409 349
@@ -504,22 +444,10 @@ static int RSA_eay_private_decrypt(int flen, const unsigned char *from,
504 (rsa->dmp1 != NULL) && 444 (rsa->dmp1 != NULL) &&
505 (rsa->dmq1 != NULL) && 445 (rsa->dmq1 != NULL) &&
506 (rsa->iqmp != NULL)) ) 446 (rsa->iqmp != NULL)) )
507 { 447 { if (!rsa->meth->rsa_mod_exp(&ret,&f,rsa)) goto err; }
508 if (!rsa->meth->rsa_mod_exp(&ret,&f,rsa)) goto err;
509 }
510 else 448 else
511 { 449 {
512 BIGNUM local_d; 450 if (!rsa->meth->bn_mod_exp(&ret,&f,rsa->d,rsa->n,ctx,NULL))
513 BIGNUM *d = NULL;
514
515 if (!(rsa->flags & RSA_FLAG_NO_EXP_CONSTTIME))
516 {
517 d = &local_d;
518 BN_with_flags(d, rsa->d, BN_FLG_EXP_CONSTTIME);
519 }
520 else
521 d = rsa->d;
522 if (!rsa->meth->bn_mod_exp(&ret,&f,d,rsa->n,ctx,NULL))
523 goto err; 451 goto err;
524 } 452 }
525 453
@@ -606,20 +534,33 @@ static int RSA_eay_public_decrypt(int flen, const unsigned char *from,
606 } 534 }
607 535
608 /* do the decrypt */ 536 /* do the decrypt */
609 537 if ((rsa->_method_mod_n == NULL) && (rsa->flags & RSA_FLAG_CACHE_PUBLIC))
610 if (rsa->flags & RSA_FLAG_CACHE_PUBLIC)
611 { 538 {
612 if (!BN_MONT_CTX_set_locked(&rsa->_method_mod_n, 539 BN_MONT_CTX* bn_mont_ctx;
613 CRYPTO_LOCK_RSA, rsa->n, ctx)) 540 if ((bn_mont_ctx=BN_MONT_CTX_new()) == NULL)
541 goto err;
542 if (!BN_MONT_CTX_set(bn_mont_ctx,rsa->n,ctx))
543 {
544 BN_MONT_CTX_free(bn_mont_ctx);
614 goto err; 545 goto err;
546 }
547 if (rsa->_method_mod_n == NULL) /* other thread may have finished first */
548 {
549 CRYPTO_w_lock(CRYPTO_LOCK_RSA);
550 if (rsa->_method_mod_n == NULL)
551 {
552 rsa->_method_mod_n = bn_mont_ctx;
553 bn_mont_ctx = NULL;
554 }
555 CRYPTO_w_unlock(CRYPTO_LOCK_RSA);
556 }
557 if (bn_mont_ctx)
558 BN_MONT_CTX_free(bn_mont_ctx);
615 } 559 }
616 560
617 if (!rsa->meth->bn_mod_exp(&ret,&f,rsa->e,rsa->n,ctx, 561 if (!rsa->meth->bn_mod_exp(&ret,&f,rsa->e,rsa->n,ctx,
618 rsa->_method_mod_n)) goto err; 562 rsa->_method_mod_n)) goto err;
619 563
620 if ((padding == RSA_X931_PADDING) && ((ret.d[0] & 0xf) != 12))
621 BN_sub(&ret, rsa->n, &ret);
622
623 p=buf; 564 p=buf;
624 i=BN_bn2bin(&ret,p); 565 i=BN_bn2bin(&ret,p);
625 566
@@ -653,8 +594,6 @@ err:
653static int RSA_eay_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa) 594static int RSA_eay_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa)
654 { 595 {
655 BIGNUM r1,m1,vrfy; 596 BIGNUM r1,m1,vrfy;
656 BIGNUM local_dmp1, local_dmq1;
657 BIGNUM *dmp1, *dmq1;
658 int ret=0; 597 int ret=0;
659 BN_CTX *ctx; 598 BN_CTX *ctx;
660 599
@@ -665,34 +604,61 @@ static int RSA_eay_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa)
665 604
666 if (rsa->flags & RSA_FLAG_CACHE_PRIVATE) 605 if (rsa->flags & RSA_FLAG_CACHE_PRIVATE)
667 { 606 {
668 if (!BN_MONT_CTX_set_locked(&rsa->_method_mod_p, 607 if (rsa->_method_mod_p == NULL)
669 CRYPTO_LOCK_RSA, rsa->p, ctx)) 608 {
670 goto err; 609 BN_MONT_CTX* bn_mont_ctx;
671 if (!BN_MONT_CTX_set_locked(&rsa->_method_mod_q, 610 if ((bn_mont_ctx=BN_MONT_CTX_new()) == NULL)
672 CRYPTO_LOCK_RSA, rsa->q, ctx)) 611 goto err;
673 goto err; 612 if (!BN_MONT_CTX_set(bn_mont_ctx,rsa->p,ctx))
674 } 613 {
614 BN_MONT_CTX_free(bn_mont_ctx);
615 goto err;
616 }
617 if (rsa->_method_mod_p == NULL) /* other thread may have finished first */
618 {
619 CRYPTO_w_lock(CRYPTO_LOCK_RSA);
620 if (rsa->_method_mod_p == NULL)
621 {
622 rsa->_method_mod_p = bn_mont_ctx;
623 bn_mont_ctx = NULL;
624 }
625 CRYPTO_w_unlock(CRYPTO_LOCK_RSA);
626 }
627 if (bn_mont_ctx)
628 BN_MONT_CTX_free(bn_mont_ctx);
629 }
675 630
676 if (!BN_mod(&r1,I,rsa->q,ctx)) goto err; 631 if (rsa->_method_mod_q == NULL)
677 if (!(rsa->flags & RSA_FLAG_NO_EXP_CONSTTIME)) 632 {
678 { 633 BN_MONT_CTX* bn_mont_ctx;
679 dmq1 = &local_dmq1; 634 if ((bn_mont_ctx=BN_MONT_CTX_new()) == NULL)
680 BN_with_flags(dmq1, rsa->dmq1, BN_FLG_EXP_CONSTTIME); 635 goto err;
636 if (!BN_MONT_CTX_set(bn_mont_ctx,rsa->q,ctx))
637 {
638 BN_MONT_CTX_free(bn_mont_ctx);
639 goto err;
640 }
641 if (rsa->_method_mod_q == NULL) /* other thread may have finished first */
642 {
643 CRYPTO_w_lock(CRYPTO_LOCK_RSA);
644 if (rsa->_method_mod_q == NULL)
645 {
646 rsa->_method_mod_q = bn_mont_ctx;
647 bn_mont_ctx = NULL;
648 }
649 CRYPTO_w_unlock(CRYPTO_LOCK_RSA);
650 }
651 if (bn_mont_ctx)
652 BN_MONT_CTX_free(bn_mont_ctx);
653 }
681 } 654 }
682 else 655
683 dmq1 = rsa->dmq1; 656 if (!BN_mod(&r1,I,rsa->q,ctx)) goto err;
684 if (!rsa->meth->bn_mod_exp(&m1,&r1,dmq1,rsa->q,ctx, 657 if (!rsa->meth->bn_mod_exp(&m1,&r1,rsa->dmq1,rsa->q,ctx,
685 rsa->_method_mod_q)) goto err; 658 rsa->_method_mod_q)) goto err;
686 659
687 if (!BN_mod(&r1,I,rsa->p,ctx)) goto err; 660 if (!BN_mod(&r1,I,rsa->p,ctx)) goto err;
688 if (!(rsa->flags & RSA_FLAG_NO_EXP_CONSTTIME)) 661 if (!rsa->meth->bn_mod_exp(r0,&r1,rsa->dmp1,rsa->p,ctx,
689 {
690 dmp1 = &local_dmp1;
691 BN_with_flags(dmp1, rsa->dmp1, BN_FLG_EXP_CONSTTIME);
692 }
693 else
694 dmp1 = rsa->dmp1;
695 if (!rsa->meth->bn_mod_exp(r0,&r1,dmp1,rsa->p,ctx,
696 rsa->_method_mod_p)) goto err; 662 rsa->_method_mod_p)) goto err;
697 663
698 if (!BN_sub(r0,r0,&m1)) goto err; 664 if (!BN_sub(r0,r0,&m1)) goto err;
@@ -727,23 +693,10 @@ static int RSA_eay_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa)
727 if (vrfy.neg) 693 if (vrfy.neg)
728 if (!BN_add(&vrfy, &vrfy, rsa->n)) goto err; 694 if (!BN_add(&vrfy, &vrfy, rsa->n)) goto err;
729 if (!BN_is_zero(&vrfy)) 695 if (!BN_is_zero(&vrfy))
730 {
731 /* 'I' and 'vrfy' aren't congruent mod n. Don't leak 696 /* 'I' and 'vrfy' aren't congruent mod n. Don't leak
732 * miscalculated CRT output, just do a raw (slower) 697 * miscalculated CRT output, just do a raw (slower)
733 * mod_exp and return that instead. */ 698 * mod_exp and return that instead. */
734 699 if (!rsa->meth->bn_mod_exp(r0,I,rsa->d,rsa->n,ctx,NULL)) goto err;
735 BIGNUM local_d;
736 BIGNUM *d = NULL;
737
738 if (!(rsa->flags & RSA_FLAG_NO_EXP_CONSTTIME))
739 {
740 d = &local_d;
741 BN_with_flags(d, rsa->d, BN_FLG_EXP_CONSTTIME);
742 }
743 else
744 d = rsa->d;
745 if (!rsa->meth->bn_mod_exp(r0,I,d,rsa->n,ctx,NULL)) goto err;
746 }
747 } 700 }
748 ret=1; 701 ret=1;
749err: 702err:
diff --git a/src/lib/libssl/src/crypto/rsa/rsa_err.c b/src/lib/libssl/src/crypto/rsa/rsa_err.c
index 2ec4b30ff7..a7766c3b76 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-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999 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
@@ -64,85 +64,70 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_RSA,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_RSA,0,reason)
70
71static ERR_STRING_DATA RSA_str_functs[]= 67static ERR_STRING_DATA RSA_str_functs[]=
72 { 68 {
73{ERR_FUNC(RSA_F_MEMORY_LOCK), "MEMORY_LOCK"}, 69{ERR_PACK(0,RSA_F_MEMORY_LOCK,0), "MEMORY_LOCK"},
74{ERR_FUNC(RSA_F_RSA_CHECK_KEY), "RSA_check_key"}, 70{ERR_PACK(0,RSA_F_RSA_CHECK_KEY,0), "RSA_check_key"},
75{ERR_FUNC(RSA_F_RSA_EAY_PRIVATE_DECRYPT), "RSA_EAY_PRIVATE_DECRYPT"}, 71{ERR_PACK(0,RSA_F_RSA_EAY_PRIVATE_DECRYPT,0), "RSA_EAY_PRIVATE_DECRYPT"},
76{ERR_FUNC(RSA_F_RSA_EAY_PRIVATE_ENCRYPT), "RSA_EAY_PRIVATE_ENCRYPT"}, 72{ERR_PACK(0,RSA_F_RSA_EAY_PRIVATE_ENCRYPT,0), "RSA_EAY_PRIVATE_ENCRYPT"},
77{ERR_FUNC(RSA_F_RSA_EAY_PUBLIC_DECRYPT), "RSA_EAY_PUBLIC_DECRYPT"}, 73{ERR_PACK(0,RSA_F_RSA_EAY_PUBLIC_DECRYPT,0), "RSA_EAY_PUBLIC_DECRYPT"},
78{ERR_FUNC(RSA_F_RSA_EAY_PUBLIC_ENCRYPT), "RSA_EAY_PUBLIC_ENCRYPT"}, 74{ERR_PACK(0,RSA_F_RSA_EAY_PUBLIC_ENCRYPT,0), "RSA_EAY_PUBLIC_ENCRYPT"},
79{ERR_FUNC(RSA_F_RSA_GENERATE_KEY), "RSA_generate_key"}, 75{ERR_PACK(0,RSA_F_RSA_GENERATE_KEY,0), "RSA_generate_key"},
80{ERR_FUNC(RSA_F_RSA_NEW_METHOD), "RSA_new_method"}, 76{ERR_PACK(0,RSA_F_RSA_NEW_METHOD,0), "RSA_new_method"},
81{ERR_FUNC(RSA_F_RSA_NULL), "RSA_NULL"}, 77{ERR_PACK(0,RSA_F_RSA_NULL,0), "RSA_NULL"},
82{ERR_FUNC(RSA_F_RSA_PADDING_ADD_NONE), "RSA_padding_add_none"}, 78{ERR_PACK(0,RSA_F_RSA_PADDING_ADD_NONE,0), "RSA_padding_add_none"},
83{ERR_FUNC(RSA_F_RSA_PADDING_ADD_PKCS1_OAEP), "RSA_padding_add_PKCS1_OAEP"}, 79{ERR_PACK(0,RSA_F_RSA_PADDING_ADD_PKCS1_OAEP,0), "RSA_padding_add_PKCS1_OAEP"},
84{ERR_FUNC(RSA_F_RSA_PADDING_ADD_PKCS1_PSS), "RSA_padding_add_PKCS1_PSS"}, 80{ERR_PACK(0,RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1,0), "RSA_padding_add_PKCS1_type_1"},
85{ERR_FUNC(RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1), "RSA_padding_add_PKCS1_type_1"}, 81{ERR_PACK(0,RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2,0), "RSA_padding_add_PKCS1_type_2"},
86{ERR_FUNC(RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2), "RSA_padding_add_PKCS1_type_2"}, 82{ERR_PACK(0,RSA_F_RSA_PADDING_ADD_SSLV23,0), "RSA_padding_add_SSLv23"},
87{ERR_FUNC(RSA_F_RSA_PADDING_ADD_SSLV23), "RSA_padding_add_SSLv23"}, 83{ERR_PACK(0,RSA_F_RSA_PADDING_CHECK_NONE,0), "RSA_padding_check_none"},
88{ERR_FUNC(RSA_F_RSA_PADDING_ADD_X931), "RSA_padding_add_X931"}, 84{ERR_PACK(0,RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP,0), "RSA_padding_check_PKCS1_OAEP"},
89{ERR_FUNC(RSA_F_RSA_PADDING_CHECK_NONE), "RSA_padding_check_none"}, 85{ERR_PACK(0,RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1,0), "RSA_padding_check_PKCS1_type_1"},
90{ERR_FUNC(RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP), "RSA_padding_check_PKCS1_OAEP"}, 86{ERR_PACK(0,RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2,0), "RSA_padding_check_PKCS1_type_2"},
91{ERR_FUNC(RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1), "RSA_padding_check_PKCS1_type_1"}, 87{ERR_PACK(0,RSA_F_RSA_PADDING_CHECK_SSLV23,0), "RSA_padding_check_SSLv23"},
92{ERR_FUNC(RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2), "RSA_padding_check_PKCS1_type_2"}, 88{ERR_PACK(0,RSA_F_RSA_PRINT,0), "RSA_print"},
93{ERR_FUNC(RSA_F_RSA_PADDING_CHECK_SSLV23), "RSA_padding_check_SSLv23"}, 89{ERR_PACK(0,RSA_F_RSA_PRINT_FP,0), "RSA_print_fp"},
94{ERR_FUNC(RSA_F_RSA_PADDING_CHECK_X931), "RSA_padding_check_X931"}, 90{ERR_PACK(0,RSA_F_RSA_SIGN,0), "RSA_sign"},
95{ERR_FUNC(RSA_F_RSA_PRINT), "RSA_print"}, 91{ERR_PACK(0,RSA_F_RSA_SIGN_ASN1_OCTET_STRING,0), "RSA_sign_ASN1_OCTET_STRING"},
96{ERR_FUNC(RSA_F_RSA_PRINT_FP), "RSA_print_fp"}, 92{ERR_PACK(0,RSA_F_RSA_VERIFY,0), "RSA_verify"},
97{ERR_FUNC(RSA_F_RSA_SIGN), "RSA_sign"}, 93{ERR_PACK(0,RSA_F_RSA_VERIFY_ASN1_OCTET_STRING,0), "RSA_verify_ASN1_OCTET_STRING"},
98{ERR_FUNC(RSA_F_RSA_SIGN_ASN1_OCTET_STRING), "RSA_sign_ASN1_OCTET_STRING"},
99{ERR_FUNC(RSA_F_RSA_VERIFY), "RSA_verify"},
100{ERR_FUNC(RSA_F_RSA_VERIFY_ASN1_OCTET_STRING), "RSA_verify_ASN1_OCTET_STRING"},
101{ERR_FUNC(RSA_F_RSA_VERIFY_PKCS1_PSS), "RSA_verify_PKCS1_PSS"},
102{0,NULL} 94{0,NULL}
103 }; 95 };
104 96
105static ERR_STRING_DATA RSA_str_reasons[]= 97static ERR_STRING_DATA RSA_str_reasons[]=
106 { 98 {
107{ERR_REASON(RSA_R_ALGORITHM_MISMATCH) ,"algorithm mismatch"}, 99{RSA_R_ALGORITHM_MISMATCH ,"algorithm mismatch"},
108{ERR_REASON(RSA_R_BAD_E_VALUE) ,"bad e value"}, 100{RSA_R_BAD_E_VALUE ,"bad e value"},
109{ERR_REASON(RSA_R_BAD_FIXED_HEADER_DECRYPT),"bad fixed header decrypt"}, 101{RSA_R_BAD_FIXED_HEADER_DECRYPT ,"bad fixed header decrypt"},
110{ERR_REASON(RSA_R_BAD_PAD_BYTE_COUNT) ,"bad pad byte count"}, 102{RSA_R_BAD_PAD_BYTE_COUNT ,"bad pad byte count"},
111{ERR_REASON(RSA_R_BAD_SIGNATURE) ,"bad signature"}, 103{RSA_R_BAD_SIGNATURE ,"bad signature"},
112{ERR_REASON(RSA_R_BLOCK_TYPE_IS_NOT_01) ,"block type is not 01"}, 104{RSA_R_BLOCK_TYPE_IS_NOT_01 ,"block type is not 01"},
113{ERR_REASON(RSA_R_BLOCK_TYPE_IS_NOT_02) ,"block type is not 02"}, 105{RSA_R_BLOCK_TYPE_IS_NOT_02 ,"block type is not 02"},
114{ERR_REASON(RSA_R_DATA_GREATER_THAN_MOD_LEN),"data greater than mod len"}, 106{RSA_R_DATA_GREATER_THAN_MOD_LEN ,"data greater than mod len"},
115{ERR_REASON(RSA_R_DATA_TOO_LARGE) ,"data too large"}, 107{RSA_R_DATA_TOO_LARGE ,"data too large"},
116{ERR_REASON(RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE),"data too large for key size"}, 108{RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE ,"data too large for key size"},
117{ERR_REASON(RSA_R_DATA_TOO_LARGE_FOR_MODULUS),"data too large for modulus"}, 109{RSA_R_DATA_TOO_LARGE_FOR_MODULUS ,"data too large for modulus"},
118{ERR_REASON(RSA_R_DATA_TOO_SMALL) ,"data too small"}, 110{RSA_R_DATA_TOO_SMALL ,"data too small"},
119{ERR_REASON(RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE),"data too small for key size"}, 111{RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE ,"data too small for key size"},
120{ERR_REASON(RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY),"digest too big for rsa key"}, 112{RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY ,"digest too big for rsa key"},
121{ERR_REASON(RSA_R_DMP1_NOT_CONGRUENT_TO_D),"dmp1 not congruent to d"}, 113{RSA_R_DMP1_NOT_CONGRUENT_TO_D ,"dmp1 not congruent to d"},
122{ERR_REASON(RSA_R_DMQ1_NOT_CONGRUENT_TO_D),"dmq1 not congruent to d"}, 114{RSA_R_DMQ1_NOT_CONGRUENT_TO_D ,"dmq1 not congruent to d"},
123{ERR_REASON(RSA_R_D_E_NOT_CONGRUENT_TO_1),"d e not congruent to 1"}, 115{RSA_R_D_E_NOT_CONGRUENT_TO_1 ,"d e not congruent to 1"},
124{ERR_REASON(RSA_R_FIRST_OCTET_INVALID) ,"first octet invalid"}, 116{RSA_R_INVALID_MESSAGE_LENGTH ,"invalid message length"},
125{ERR_REASON(RSA_R_INVALID_HEADER) ,"invalid header"}, 117{RSA_R_IQMP_NOT_INVERSE_OF_Q ,"iqmp not inverse of q"},
126{ERR_REASON(RSA_R_INVALID_MESSAGE_LENGTH),"invalid message length"}, 118{RSA_R_KEY_SIZE_TOO_SMALL ,"key size too small"},
127{ERR_REASON(RSA_R_INVALID_PADDING) ,"invalid padding"}, 119{RSA_R_NULL_BEFORE_BLOCK_MISSING ,"null before block missing"},
128{ERR_REASON(RSA_R_INVALID_TRAILER) ,"invalid trailer"}, 120{RSA_R_N_DOES_NOT_EQUAL_P_Q ,"n does not equal p q"},
129{ERR_REASON(RSA_R_IQMP_NOT_INVERSE_OF_Q) ,"iqmp not inverse of q"}, 121{RSA_R_OAEP_DECODING_ERROR ,"oaep decoding error"},
130{ERR_REASON(RSA_R_KEY_SIZE_TOO_SMALL) ,"key size too small"}, 122{RSA_R_PADDING_CHECK_FAILED ,"padding check failed"},
131{ERR_REASON(RSA_R_LAST_OCTET_INVALID) ,"last octet invalid"}, 123{RSA_R_P_NOT_PRIME ,"p not prime"},
132{ERR_REASON(RSA_R_NULL_BEFORE_BLOCK_MISSING),"null before block missing"}, 124{RSA_R_Q_NOT_PRIME ,"q not prime"},
133{ERR_REASON(RSA_R_N_DOES_NOT_EQUAL_P_Q) ,"n does not equal p q"}, 125{RSA_R_RSA_OPERATIONS_NOT_SUPPORTED ,"rsa operations not supported"},
134{ERR_REASON(RSA_R_OAEP_DECODING_ERROR) ,"oaep decoding error"}, 126{RSA_R_SSLV3_ROLLBACK_ATTACK ,"sslv3 rollback attack"},
135{ERR_REASON(RSA_R_SLEN_RECOVERY_FAILED) ,"salt length recovery failed"}, 127{RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD,"the asn1 object identifier is not known for this md"},
136{ERR_REASON(RSA_R_PADDING_CHECK_FAILED) ,"padding check failed"}, 128{RSA_R_UNKNOWN_ALGORITHM_TYPE ,"unknown algorithm type"},
137{ERR_REASON(RSA_R_P_NOT_PRIME) ,"p not prime"}, 129{RSA_R_UNKNOWN_PADDING_TYPE ,"unknown padding type"},
138{ERR_REASON(RSA_R_Q_NOT_PRIME) ,"q not prime"}, 130{RSA_R_WRONG_SIGNATURE_LENGTH ,"wrong signature length"},
139{ERR_REASON(RSA_R_RSA_OPERATIONS_NOT_SUPPORTED),"rsa operations not supported"},
140{ERR_REASON(RSA_R_SSLV3_ROLLBACK_ATTACK) ,"sslv3 rollback attack"},
141{ERR_REASON(RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD),"the asn1 object identifier is not known for this md"},
142{ERR_REASON(RSA_R_UNKNOWN_ALGORITHM_TYPE),"unknown algorithm type"},
143{ERR_REASON(RSA_R_UNKNOWN_PADDING_TYPE) ,"unknown padding type"},
144{ERR_REASON(RSA_R_WRONG_SIGNATURE_LENGTH),"wrong signature length"},
145{ERR_REASON(RSA_R_SLEN_CHECK_FAILED) ,"salt length check failed"},
146{0,NULL} 131{0,NULL}
147 }; 132 };
148 133
@@ -156,8 +141,8 @@ void ERR_load_RSA_strings(void)
156 { 141 {
157 init=0; 142 init=0;
158#ifndef OPENSSL_NO_ERR 143#ifndef OPENSSL_NO_ERR
159 ERR_load_strings(0,RSA_str_functs); 144 ERR_load_strings(ERR_LIB_RSA,RSA_str_functs);
160 ERR_load_strings(0,RSA_str_reasons); 145 ERR_load_strings(ERR_LIB_RSA,RSA_str_reasons);
161#endif 146#endif
162 147
163 } 148 }
diff --git a/src/lib/libssl/src/crypto/rsa/rsa_gen.c b/src/lib/libssl/src/crypto/rsa/rsa_gen.c
index dd1422cc98..adb5e34da5 100644
--- a/src/lib/libssl/src/crypto/rsa/rsa_gen.c
+++ b/src/lib/libssl/src/crypto/rsa/rsa_gen.c
@@ -184,8 +184,7 @@ err:
184 RSAerr(RSA_F_RSA_GENERATE_KEY,ERR_LIB_BN); 184 RSAerr(RSA_F_RSA_GENERATE_KEY,ERR_LIB_BN);
185 ok=0; 185 ok=0;
186 } 186 }
187 if (ctx != NULL) 187 BN_CTX_end(ctx);
188 BN_CTX_end(ctx);
189 BN_CTX_free(ctx); 188 BN_CTX_free(ctx);
190 BN_CTX_free(ctx2); 189 BN_CTX_free(ctx2);
191 190
diff --git a/src/lib/libssl/src/crypto/rsa/rsa_oaep.c b/src/lib/libssl/src/crypto/rsa/rsa_oaep.c
index d43ecaca63..e3f7c608ec 100644
--- a/src/lib/libssl/src/crypto/rsa/rsa_oaep.c
+++ b/src/lib/libssl/src/crypto/rsa/rsa_oaep.c
@@ -28,6 +28,9 @@
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,
32 const unsigned char *seed, long seedlen);
33
31int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, 34int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen,
32 const unsigned char *from, int flen, 35 const unsigned char *from, int flen,
33 const unsigned char *param, int plen) 36 const unsigned char *param, int plen)
@@ -73,13 +76,11 @@ int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen,
73 20); 76 20);
74#endif 77#endif
75 78
76 PKCS1_MGF1(dbmask, emlen - SHA_DIGEST_LENGTH, seed, SHA_DIGEST_LENGTH, 79 MGF1(dbmask, emlen - SHA_DIGEST_LENGTH, seed, SHA_DIGEST_LENGTH);
77 EVP_sha1());
78 for (i = 0; i < emlen - SHA_DIGEST_LENGTH; i++) 80 for (i = 0; i < emlen - SHA_DIGEST_LENGTH; i++)
79 db[i] ^= dbmask[i]; 81 db[i] ^= dbmask[i];
80 82
81 PKCS1_MGF1(seedmask, SHA_DIGEST_LENGTH, db, emlen - SHA_DIGEST_LENGTH, 83 MGF1(seedmask, SHA_DIGEST_LENGTH, db, emlen - SHA_DIGEST_LENGTH);
82 EVP_sha1());
83 for (i = 0; i < SHA_DIGEST_LENGTH; i++) 84 for (i = 0; i < SHA_DIGEST_LENGTH; i++)
84 seed[i] ^= seedmask[i]; 85 seed[i] ^= seedmask[i];
85 86
@@ -125,11 +126,11 @@ int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen,
125 return -1; 126 return -1;
126 } 127 }
127 128
128 PKCS1_MGF1(seed, SHA_DIGEST_LENGTH, maskeddb, dblen, EVP_sha1()); 129 MGF1(seed, SHA_DIGEST_LENGTH, maskeddb, dblen);
129 for (i = lzero; i < SHA_DIGEST_LENGTH; i++) 130 for (i = lzero; i < SHA_DIGEST_LENGTH; i++)
130 seed[i] ^= from[i - lzero]; 131 seed[i] ^= from[i - lzero];
131 132
132 PKCS1_MGF1(db, dblen, seed, SHA_DIGEST_LENGTH, EVP_sha1()); 133 MGF1(db, dblen, seed, SHA_DIGEST_LENGTH);
133 for (i = 0; i < dblen; i++) 134 for (i = 0; i < dblen; i++)
134 db[i] ^= maskeddb[i]; 135 db[i] ^= maskeddb[i];
135 136
@@ -169,30 +170,28 @@ decoding_err:
169 return -1; 170 return -1;
170 } 171 }
171 172
172int PKCS1_MGF1(unsigned char *mask, long len, 173int MGF1(unsigned char *mask, long len,
173 const unsigned char *seed, long seedlen, const EVP_MD *dgst) 174 const unsigned char *seed, long seedlen)
174 { 175 {
175 long i, outlen = 0; 176 long i, outlen = 0;
176 unsigned char cnt[4]; 177 unsigned char cnt[4];
177 EVP_MD_CTX c; 178 EVP_MD_CTX c;
178 unsigned char md[EVP_MAX_MD_SIZE]; 179 unsigned char md[SHA_DIGEST_LENGTH];
179 int mdlen;
180 180
181 EVP_MD_CTX_init(&c); 181 EVP_MD_CTX_init(&c);
182 mdlen = EVP_MD_size(dgst);
183 for (i = 0; outlen < len; i++) 182 for (i = 0; outlen < len; i++)
184 { 183 {
185 cnt[0] = (unsigned char)((i >> 24) & 255); 184 cnt[0] = (unsigned char)((i >> 24) & 255);
186 cnt[1] = (unsigned char)((i >> 16) & 255); 185 cnt[1] = (unsigned char)((i >> 16) & 255);
187 cnt[2] = (unsigned char)((i >> 8)) & 255; 186 cnt[2] = (unsigned char)((i >> 8)) & 255;
188 cnt[3] = (unsigned char)(i & 255); 187 cnt[3] = (unsigned char)(i & 255);
189 EVP_DigestInit_ex(&c,dgst, NULL); 188 EVP_DigestInit_ex(&c,EVP_sha1(), NULL);
190 EVP_DigestUpdate(&c, seed, seedlen); 189 EVP_DigestUpdate(&c, seed, seedlen);
191 EVP_DigestUpdate(&c, cnt, 4); 190 EVP_DigestUpdate(&c, cnt, 4);
192 if (outlen + mdlen <= len) 191 if (outlen + SHA_DIGEST_LENGTH <= len)
193 { 192 {
194 EVP_DigestFinal_ex(&c, mask + outlen, NULL); 193 EVP_DigestFinal_ex(&c, mask + outlen, NULL);
195 outlen += mdlen; 194 outlen += SHA_DIGEST_LENGTH;
196 } 195 }
197 else 196 else
198 { 197 {
@@ -204,9 +203,4 @@ int PKCS1_MGF1(unsigned char *mask, long len,
204 EVP_MD_CTX_cleanup(&c); 203 EVP_MD_CTX_cleanup(&c);
205 return 0; 204 return 0;
206 } 205 }
207
208int MGF1(unsigned char *mask, long len, const unsigned char *seed, long seedlen)
209 {
210 return PKCS1_MGF1(mask, len, seed, seedlen, EVP_sha1());
211 }
212#endif 206#endif
diff --git a/src/lib/libssl/src/crypto/rsa/rsa_pss.c b/src/lib/libssl/src/crypto/rsa/rsa_pss.c
new file mode 100644
index 0000000000..2815628f5f
--- /dev/null
+++ b/src/lib/libssl/src/crypto/rsa/rsa_pss.c
@@ -0,0 +1,261 @@
1/* rsa_pss.c */
2/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
3 * project 2005.
4 */
5/* ====================================================================
6 * Copyright (c) 2005 The OpenSSL Project. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 *
12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 *
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in
17 * the documentation and/or other materials provided with the
18 * distribution.
19 *
20 * 3. All advertising materials mentioning features or use of this
21 * software must display the following acknowledgment:
22 * "This product includes software developed by the OpenSSL Project
23 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
24 *
25 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
26 * endorse or promote products derived from this software without
27 * prior written permission. For written permission, please contact
28 * licensing@OpenSSL.org.
29 *
30 * 5. Products derived from this software may not be called "OpenSSL"
31 * nor may "OpenSSL" appear in their names without prior written
32 * permission of the OpenSSL Project.
33 *
34 * 6. Redistributions of any form whatsoever must retain the following
35 * acknowledgment:
36 * "This product includes software developed by the OpenSSL Project
37 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
38 *
39 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
40 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
43 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
46 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
48 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50 * OF THE POSSIBILITY OF SUCH DAMAGE.
51 * ====================================================================
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 */
58
59#include <stdio.h>
60#include "cryptlib.h"
61#include <openssl/bn.h>
62#include <openssl/rsa.h>
63#include <openssl/evp.h>
64#include <openssl/rand.h>
65#include <openssl/sha.h>
66
67const static unsigned char zeroes[] = {0,0,0,0,0,0,0,0};
68
69int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash,
70 const EVP_MD *Hash, const unsigned char *EM, int sLen)
71 {
72 int i;
73 int ret = 0;
74 int hLen, maskedDBLen, MSBits, emLen;
75 const unsigned char *H;
76 unsigned char *DB = NULL;
77 EVP_MD_CTX ctx;
78 unsigned char H_[EVP_MAX_MD_SIZE];
79
80 hLen = EVP_MD_size(Hash);
81 /*
82 * Negative sLen has special meanings:
83 * -1 sLen == hLen
84 * -2 salt length is autorecovered from signature
85 * -N reserved
86 */
87 if (sLen == -1) sLen = hLen;
88 else if (sLen == -2) sLen = -2;
89 else if (sLen < -2)
90 {
91 RSAerr(RSA_F_RSA_VERIFY_PKCS1_PSS, RSA_R_SLEN_CHECK_FAILED);
92 goto err;
93 }
94
95 MSBits = (BN_num_bits(rsa->n) - 1) & 0x7;
96 emLen = RSA_size(rsa);
97 if (EM[0] & (0xFF << MSBits))
98 {
99 RSAerr(RSA_F_RSA_VERIFY_PKCS1_PSS, RSA_R_FIRST_OCTET_INVALID);
100 goto err;
101 }
102 if (MSBits == 0)
103 {
104 EM++;
105 emLen--;
106 }
107 if (emLen < (hLen + sLen + 2)) /* sLen can be small negative */
108 {
109 RSAerr(RSA_F_RSA_VERIFY_PKCS1_PSS, RSA_R_DATA_TOO_LARGE);
110 goto err;
111 }
112 if (EM[emLen - 1] != 0xbc)
113 {
114 RSAerr(RSA_F_RSA_VERIFY_PKCS1_PSS, RSA_R_LAST_OCTET_INVALID);
115 goto err;
116 }
117 maskedDBLen = emLen - hLen - 1;
118 H = EM + maskedDBLen;
119 DB = OPENSSL_malloc(maskedDBLen);
120 if (!DB)
121 {
122 RSAerr(RSA_F_RSA_VERIFY_PKCS1_PSS, ERR_R_MALLOC_FAILURE);
123 goto err;
124 }
125 PKCS1_MGF1(DB, maskedDBLen, H, hLen, Hash);
126 for (i = 0; i < maskedDBLen; i++)
127 DB[i] ^= EM[i];
128 if (MSBits)
129 DB[0] &= 0xFF >> (8 - MSBits);
130 for (i = 0; DB[i] == 0 && i < (maskedDBLen-1); i++) ;
131 if (DB[i++] != 0x1)
132 {
133 RSAerr(RSA_F_RSA_VERIFY_PKCS1_PSS, RSA_R_SLEN_RECOVERY_FAILED);
134 goto err;
135 }
136 if (sLen >= 0 && (maskedDBLen - i) != sLen)
137 {
138 RSAerr(RSA_F_RSA_VERIFY_PKCS1_PSS, RSA_R_SLEN_CHECK_FAILED);
139 goto err;
140 }
141 EVP_MD_CTX_init(&ctx);
142 EVP_DigestInit_ex(&ctx, Hash, NULL);
143 EVP_DigestUpdate(&ctx, zeroes, sizeof zeroes);
144 EVP_DigestUpdate(&ctx, mHash, hLen);
145 if (maskedDBLen - i)
146 EVP_DigestUpdate(&ctx, DB + i, maskedDBLen - i);
147 EVP_DigestFinal(&ctx, H_, NULL);
148 EVP_MD_CTX_cleanup(&ctx);
149 if (memcmp(H_, H, hLen))
150 {
151 RSAerr(RSA_F_RSA_VERIFY_PKCS1_PSS, RSA_R_BAD_SIGNATURE);
152 ret = 0;
153 }
154 else
155 ret = 1;
156
157 err:
158 if (DB)
159 OPENSSL_free(DB);
160
161 return ret;
162
163 }
164
165int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM,
166 const unsigned char *mHash,
167 const EVP_MD *Hash, int sLen)
168 {
169 int i;
170 int ret = 0;
171 int hLen, maskedDBLen, MSBits, emLen;
172 unsigned char *H, *salt = NULL, *p;
173 EVP_MD_CTX ctx;
174
175 hLen = EVP_MD_size(Hash);
176 /*
177 * Negative sLen has special meanings:
178 * -1 sLen == hLen
179 * -2 salt length is maximized
180 * -N reserved
181 */
182 if (sLen == -1) sLen = hLen;
183 else if (sLen == -2) sLen = -2;
184 else if (sLen < -2)
185 {
186 RSAerr(RSA_F_RSA_PADDING_ADD_PKCS1_PSS, RSA_R_SLEN_CHECK_FAILED);
187 goto err;
188 }
189
190 MSBits = (BN_num_bits(rsa->n) - 1) & 0x7;
191 emLen = RSA_size(rsa);
192 if (MSBits == 0)
193 {
194 *EM++ = 0;
195 emLen--;
196 }
197 if (sLen == -2)
198 {
199 sLen = emLen - hLen - 2;
200 }
201 else if (emLen < (hLen + sLen + 2))
202 {
203 RSAerr(RSA_F_RSA_PADDING_ADD_PKCS1_PSS,
204 RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE);
205 goto err;
206 }
207 if (sLen > 0)
208 {
209 salt = OPENSSL_malloc(sLen);
210 if (!salt)
211 {
212 RSAerr(RSA_F_RSA_PADDING_ADD_PKCS1_PSS,
213 ERR_R_MALLOC_FAILURE);
214 goto err;
215 }
216 if (!RAND_bytes(salt, sLen))
217 goto err;
218 }
219 maskedDBLen = emLen - hLen - 1;
220 H = EM + maskedDBLen;
221 EVP_MD_CTX_init(&ctx);
222 EVP_DigestInit_ex(&ctx, Hash, NULL);
223 EVP_DigestUpdate(&ctx, zeroes, sizeof zeroes);
224 EVP_DigestUpdate(&ctx, mHash, hLen);
225 if (sLen)
226 EVP_DigestUpdate(&ctx, salt, sLen);
227 EVP_DigestFinal(&ctx, H, NULL);
228 EVP_MD_CTX_cleanup(&ctx);
229
230 /* Generate dbMask in place then perform XOR on it */
231 PKCS1_MGF1(EM, maskedDBLen, H, hLen, Hash);
232
233 p = EM;
234
235 /* Initial PS XORs with all zeroes which is a NOP so just update
236 * pointer. Note from a test above this value is guaranteed to
237 * be non-negative.
238 */
239 p += emLen - sLen - hLen - 2;
240 *p++ ^= 0x1;
241 if (sLen > 0)
242 {
243 for (i = 0; i < sLen; i++)
244 *p++ ^= salt[i];
245 }
246 if (MSBits)
247 EM[0] &= 0xFF >> (8 - MSBits);
248
249 /* H is already in place so just set final 0xbc */
250
251 EM[emLen - 1] = 0xbc;
252
253 ret = 1;
254
255 err:
256 if (salt)
257 OPENSSL_free(salt);
258
259 return ret;
260
261 }
diff --git a/src/lib/libssl/src/crypto/rsa/rsa_test.c b/src/lib/libssl/src/crypto/rsa/rsa_test.c
index 218bb2a39b..924e9ad1f6 100644
--- a/src/lib/libssl/src/crypto/rsa/rsa_test.c
+++ b/src/lib/libssl/src/crypto/rsa/rsa_test.c
@@ -227,10 +227,10 @@ int main(int argc, char *argv[])
227 227
228 plen = sizeof(ptext_ex) - 1; 228 plen = sizeof(ptext_ex) - 1;
229 229
230 for (v = 0; v < 6; v++) 230 for (v = 0; v < 3; v++)
231 { 231 {
232 key = RSA_new(); 232 key = RSA_new();
233 switch (v%3) { 233 switch (v) {
234 case 0: 234 case 0:
235 clen = key1(key, ctext_ex); 235 clen = key1(key, ctext_ex);
236 break; 236 break;
@@ -241,7 +241,6 @@ int main(int argc, char *argv[])
241 clen = key3(key, ctext_ex); 241 clen = key3(key, ctext_ex);
242 break; 242 break;
243 } 243 }
244 if (v/3 > 1) key->flags |= RSA_FLAG_NO_EXP_CONSTTIME;
245 244
246 num = RSA_public_encrypt(plen, ptext_ex, ctext, key, 245 num = RSA_public_encrypt(plen, ptext_ex, ctext, key,
247 RSA_PKCS1_PADDING); 246 RSA_PKCS1_PADDING);
diff --git a/src/lib/libssl/src/crypto/rsa/rsa_x931.c b/src/lib/libssl/src/crypto/rsa/rsa_x931.c
new file mode 100644
index 0000000000..df3c45f802
--- /dev/null
+++ b/src/lib/libssl/src/crypto/rsa/rsa_x931.c
@@ -0,0 +1,177 @@
1/* rsa_x931.c */
2/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
3 * project 2005.
4 */
5/* ====================================================================
6 * Copyright (c) 2005 The OpenSSL Project. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 *
12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 *
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in
17 * the documentation and/or other materials provided with the
18 * distribution.
19 *
20 * 3. All advertising materials mentioning features or use of this
21 * software must display the following acknowledgment:
22 * "This product includes software developed by the OpenSSL Project
23 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
24 *
25 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
26 * endorse or promote products derived from this software without
27 * prior written permission. For written permission, please contact
28 * licensing@OpenSSL.org.
29 *
30 * 5. Products derived from this software may not be called "OpenSSL"
31 * nor may "OpenSSL" appear in their names without prior written
32 * permission of the OpenSSL Project.
33 *
34 * 6. Redistributions of any form whatsoever must retain the following
35 * acknowledgment:
36 * "This product includes software developed by the OpenSSL Project
37 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
38 *
39 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
40 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
43 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
46 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
48 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50 * OF THE POSSIBILITY OF SUCH DAMAGE.
51 * ====================================================================
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 */
58
59#include <stdio.h>
60#include "cryptlib.h"
61#include <openssl/bn.h>
62#include <openssl/rsa.h>
63#include <openssl/rand.h>
64#include <openssl/objects.h>
65
66int RSA_padding_add_X931(unsigned char *to, int tlen,
67 const unsigned char *from, int flen)
68 {
69 int j;
70 unsigned char *p;
71
72 /* Absolute minimum amount of padding is 1 header nibble, 1 padding
73 * nibble and 2 trailer bytes: but 1 hash if is already in 'from'.
74 */
75
76 j = tlen - flen - 2;
77
78 if (j < 0)
79 {
80 RSAerr(RSA_F_RSA_PADDING_ADD_X931,RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE);
81 return -1;
82 }
83
84 p=(unsigned char *)to;
85
86 /* If no padding start and end nibbles are in one byte */
87 if (j == 0)
88 *p++ = 0x6A;
89 else
90 {
91 *p++ = 0x6B;
92 if (j > 1)
93 {
94 memset(p, 0xBB, j - 1);
95 p += j - 1;
96 }
97 *p++ = 0xBA;
98 }
99 memcpy(p,from,(unsigned int)flen);
100 p += flen;
101 *p = 0xCC;
102 return(1);
103 }
104
105int RSA_padding_check_X931(unsigned char *to, int tlen,
106 const unsigned char *from, int flen, int num)
107 {
108 int i,j;
109 const unsigned char *p;
110
111 p=from;
112 if ((num != flen) || ((*p != 0x6A) && (*p != 0x6B)))
113 {
114 RSAerr(RSA_F_RSA_PADDING_CHECK_X931,RSA_R_INVALID_HEADER);
115 return -1;
116 }
117
118 if (*p++ == 0x6B)
119 {
120 j=flen-3;
121 for (i = 0; i < j; i++)
122 {
123 unsigned char c = *p++;
124 if (c == 0xBA)
125 break;
126 if (c != 0xBB)
127 {
128 RSAerr(RSA_F_RSA_PADDING_CHECK_X931,
129 RSA_R_INVALID_PADDING);
130 return -1;
131 }
132 }
133
134 j -= i;
135
136 if (i == 0)
137 {
138 RSAerr(RSA_F_RSA_PADDING_CHECK_X931, RSA_R_INVALID_PADDING);
139 return -1;
140 }
141
142 }
143 else j = flen - 2;
144
145 if (p[j] != 0xCC)
146 {
147 RSAerr(RSA_F_RSA_PADDING_CHECK_X931, RSA_R_INVALID_TRAILER);
148 return -1;
149 }
150
151 memcpy(to,p,(unsigned int)j);
152
153 return(j);
154 }
155
156/* Translate between X931 hash ids and NIDs */
157
158int RSA_X931_hash_id(int nid)
159 {
160 switch (nid)
161 {
162 case NID_sha1:
163 return 0x33;
164
165 case NID_sha256:
166 return 0x34;
167
168 case NID_sha384:
169 return 0x36;
170
171 case NID_sha512:
172 return 0x35;
173
174 }
175 return -1;
176 }
177
diff --git a/src/lib/libssl/src/crypto/sha/Makefile.ssl b/src/lib/libssl/src/crypto/sha/Makefile.ssl
new file mode 100644
index 0000000000..4ba201c787
--- /dev/null
+++ b/src/lib/libssl/src/crypto/sha/Makefile.ssl
@@ -0,0 +1,116 @@
1#
2# SSLeay/crypto/sha/Makefile
3#
4
5DIR= sha
6TOP= ../..
7CC= cc
8CPP= $(CC) -E
9INCLUDES=
10CFLAG=-g
11INSTALL_PREFIX=
12OPENSSLDIR= /usr/local/ssl
13INSTALLTOP=/usr/local/ssl
14MAKE= make -f Makefile.ssl
15MAKEDEPPROG= makedepend
16MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
17MAKEFILE= Makefile.ssl
18AR= ar r
19
20SHA1_ASM_OBJ=
21
22CFLAGS= $(INCLUDES) $(CFLAG)
23ASFLAGS= $(INCLUDES) $(ASFLAG)
24
25GENERAL=Makefile
26TEST=shatest.c sha1test.c
27APPS=
28
29LIB=$(TOP)/libcrypto.a
30LIBSRC=sha_dgst.c sha1dgst.c sha_one.c sha1_one.c
31LIBOBJ=sha_dgst.o sha1dgst.o sha_one.o sha1_one.o $(SHA1_ASM_OBJ)
32
33SRC= $(LIBSRC)
34
35EXHEADER= sha.h
36HEADER= sha_locl.h $(EXHEADER)
37
38ALL= $(GENERAL) $(SRC) $(HEADER)
39
40top:
41 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
42
43all: lib
44
45lib: $(LIBOBJ)
46 $(AR) $(LIB) $(LIBOBJ)
47 $(RANLIB) $(LIB) || echo Never mind.
48 @touch lib
49
50# elf
51asm/sx86-elf.s: asm/sha1-586.pl ../perlasm/x86asm.pl
52 (cd asm; $(PERL) sha1-586.pl elf $(CFLAGS) $(PROCESSOR) > sx86-elf.s)
53
54# a.out
55asm/sx86-out.o: asm/sx86unix.cpp
56 $(CPP) -DOUT asm/sx86unix.cpp | as -o asm/sx86-out.o
57
58# bsdi
59asm/sx86bsdi.o: asm/sx86unix.cpp
60 $(CPP) -DBSDI asm/sx86unix.cpp | sed 's/ :/:/' | as -o asm/sx86bsdi.o
61
62asm/sx86unix.cpp: asm/sha1-586.pl ../perlasm/x86asm.pl
63 (cd asm; $(PERL) sha1-586.pl cpp $(PROCESSOR) >sx86unix.cpp)
64
65files:
66 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
67
68links:
69 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
70 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
71 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
72 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
73
74install:
75 @for i in $(EXHEADER) ; \
76 do \
77 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
78 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
79 done;
80
81tags:
82 ctags $(SRC)
83
84tests:
85
86lint:
87 lint -DLINT $(INCLUDES) $(SRC)>fluff
88
89depend:
90 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
91
92dclean:
93 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
94 mv -f Makefile.new $(MAKEFILE)
95
96clean:
97 rm -f asm/sx86unix.cpp asm/*-elf.* *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff asm/*.o
98
99# DO NOT DELETE THIS LINE -- make depend depends on it.
100
101sha1_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
102sha1_one.o: ../../include/openssl/opensslconf.h
103sha1_one.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
104sha1_one.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
105sha1_one.o: ../../include/openssl/symhacks.h sha1_one.c
106sha1dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
107sha1dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/sha.h
108sha1dgst.o: ../md32_common.h sha1dgst.c sha_locl.h
109sha_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
110sha_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/sha.h
111sha_dgst.o: ../md32_common.h sha_dgst.c sha_locl.h
112sha_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
113sha_one.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
114sha_one.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
115sha_one.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
116sha_one.o: sha_one.c
diff --git a/src/lib/libssl/src/crypto/sha/sha1_one.c b/src/lib/libssl/src/crypto/sha/sha1_one.c
index f4694b701b..20e660c71d 100644
--- a/src/lib/libssl/src/crypto/sha/sha1_one.c
+++ b/src/lib/libssl/src/crypto/sha/sha1_one.c
@@ -61,15 +61,14 @@
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) && !defined(OPENSSL_FIPS) 64#ifndef OPENSSL_NO_SHA1
65unsigned char *SHA1(const unsigned char *d, unsigned long n, unsigned char *md) 65unsigned char *SHA1(const unsigned char *d, unsigned long n, unsigned char *md)
66 { 66 {
67 SHA_CTX c; 67 SHA_CTX c;
68 static unsigned char m[SHA_DIGEST_LENGTH]; 68 static unsigned char m[SHA_DIGEST_LENGTH];
69 69
70 if (md == NULL) md=m; 70 if (md == NULL) md=m;
71 if (!SHA1_Init(&c)) 71 SHA1_Init(&c);
72 return NULL;
73 SHA1_Update(&c,d,n); 72 SHA1_Update(&c,d,n);
74 SHA1_Final(md,&c); 73 SHA1_Final(md,&c);
75 OPENSSL_cleanse(&c,sizeof(c)); 74 OPENSSL_cleanse(&c,sizeof(c));
diff --git a/src/lib/libssl/src/crypto/sha/sha_one.c b/src/lib/libssl/src/crypto/sha/sha_one.c
index d4f4d344df..e61c63f3e9 100644
--- a/src/lib/libssl/src/crypto/sha/sha_one.c
+++ b/src/lib/libssl/src/crypto/sha/sha_one.c
@@ -68,8 +68,7 @@ unsigned char *SHA(const unsigned char *d, unsigned long n, unsigned char *md)
68 static unsigned char m[SHA_DIGEST_LENGTH]; 68 static unsigned char m[SHA_DIGEST_LENGTH];
69 69
70 if (md == NULL) md=m; 70 if (md == NULL) md=m;
71 if (!SHA_Init(&c)) 71 SHA_Init(&c);
72 return NULL;
73 SHA_Update(&c,d,n); 72 SHA_Update(&c,d,n);
74 SHA_Final(md,&c); 73 SHA_Final(md,&c);
75 OPENSSL_cleanse(&c,sizeof(c)); 74 OPENSSL_cleanse(&c,sizeof(c));
diff --git a/src/lib/libssl/src/crypto/stack/Makefile.ssl b/src/lib/libssl/src/crypto/stack/Makefile.ssl
new file mode 100644
index 0000000000..7120fb804a
--- /dev/null
+++ b/src/lib/libssl/src/crypto/stack/Makefile.ssl
@@ -0,0 +1,88 @@
1#
2# SSLeay/crypto/stack/Makefile
3#
4
5DIR= stack
6TOP= ../..
7CC= cc
8INCLUDES=
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST=
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC=stack.c
27LIBOBJ=stack.o
28
29SRC= $(LIBSRC)
30
31EXHEADER= stack.h safestack.h
32HEADER= $(EXHEADER)
33
34ALL= $(GENERAL) $(SRC) $(HEADER)
35
36top:
37 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
38
39all: lib
40
41lib: $(LIBOBJ)
42 $(AR) $(LIB) $(LIBOBJ)
43 $(RANLIB) $(LIB) || echo Never mind.
44 @touch lib
45
46files:
47 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
48
49links:
50 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
51 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
52 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
53 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
54
55install:
56 @for i in $(EXHEADER) ; \
57 do \
58 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
59 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
60 done;
61
62tags:
63 ctags $(SRC)
64
65tests:
66
67lint:
68 lint -DLINT $(INCLUDES) $(SRC)>fluff
69
70depend:
71 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
72
73dclean:
74 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
75 mv -f Makefile.new $(MAKEFILE)
76
77clean:
78 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
79
80# DO NOT DELETE THIS LINE -- make depend depends on it.
81
82stack.o: ../../e_os.h ../../include/openssl/bio.h
83stack.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
84stack.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
85stack.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
86stack.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
87stack.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
88stack.o: ../cryptlib.h stack.c
diff --git a/src/lib/libssl/src/crypto/stack/safestack.h b/src/lib/libssl/src/crypto/stack/safestack.h
index 6010b7f122..bd1121c279 100644
--- a/src/lib/libssl/src/crypto/stack/safestack.h
+++ b/src/lib/libssl/src/crypto/stack/safestack.h
@@ -55,9 +55,6 @@
55#ifndef HEADER_SAFESTACK_H 55#ifndef HEADER_SAFESTACK_H
56#define HEADER_SAFESTACK_H 56#define HEADER_SAFESTACK_H
57 57
58typedef void (*openssl_fptr)(void);
59#define openssl_fcast(f) ((openssl_fptr)f)
60
61#include <openssl/stack.h> 58#include <openssl/stack.h>
62 59
63#ifdef DEBUG_SAFESTACK 60#ifdef DEBUG_SAFESTACK
@@ -76,74 +73,74 @@ STACK_OF(type) \
76/* SKM_sk_... stack macros are internal to safestack.h: 73/* SKM_sk_... stack macros are internal to safestack.h:
77 * never use them directly, use sk_<type>_... instead */ 74 * never use them directly, use sk_<type>_... instead */
78#define SKM_sk_new(type, cmp) \ 75#define SKM_sk_new(type, cmp) \
79 ((STACK_OF(type) * (*)(int (*)(const type * const *, const type * const *)))openssl_fcast(sk_new))(cmp) 76 ((STACK_OF(type) * (*)(int (*)(const type * const *, const type * const *)))sk_new)(cmp)
80#define SKM_sk_new_null(type) \ 77#define SKM_sk_new_null(type) \
81 ((STACK_OF(type) * (*)(void))openssl_fcast(sk_new_null))() 78 ((STACK_OF(type) * (*)(void))sk_new_null)()
82#define SKM_sk_free(type, st) \ 79#define SKM_sk_free(type, st) \
83 ((void (*)(STACK_OF(type) *))openssl_fcast(sk_free))(st) 80 ((void (*)(STACK_OF(type) *))sk_free)(st)
84#define SKM_sk_num(type, st) \ 81#define SKM_sk_num(type, st) \
85 ((int (*)(const STACK_OF(type) *))openssl_fcast(sk_num))(st) 82 ((int (*)(const STACK_OF(type) *))sk_num)(st)
86#define SKM_sk_value(type, st,i) \ 83#define SKM_sk_value(type, st,i) \
87 ((type * (*)(const STACK_OF(type) *, int))openssl_fcast(sk_value))(st, i) 84 ((type * (*)(const STACK_OF(type) *, int))sk_value)(st, i)
88#define SKM_sk_set(type, st,i,val) \ 85#define SKM_sk_set(type, st,i,val) \
89 ((type * (*)(STACK_OF(type) *, int, type *))openssl_fcast(sk_set))(st, i, val) 86 ((type * (*)(STACK_OF(type) *, int, type *))sk_set)(st, i, val)
90#define SKM_sk_zero(type, st) \ 87#define SKM_sk_zero(type, st) \
91 ((void (*)(STACK_OF(type) *))openssl_fcast(sk_zero))(st) 88 ((void (*)(STACK_OF(type) *))sk_zero)(st)
92#define SKM_sk_push(type, st,val) \ 89#define SKM_sk_push(type, st,val) \
93 ((int (*)(STACK_OF(type) *, type *))openssl_fcast(sk_push))(st, val) 90 ((int (*)(STACK_OF(type) *, type *))sk_push)(st, val)
94#define SKM_sk_unshift(type, st,val) \ 91#define SKM_sk_unshift(type, st,val) \
95 ((int (*)(STACK_OF(type) *, type *))openssl_fcast(sk_unshift))(st, val) 92 ((int (*)(STACK_OF(type) *, type *))sk_unshift)(st, val)
96#define SKM_sk_find(type, st,val) \ 93#define SKM_sk_find(type, st,val) \
97 ((int (*)(STACK_OF(type) *, type *))openssl_fcast(sk_find))(st, val) 94 ((int (*)(STACK_OF(type) *, type *))sk_find)(st, val)
98#define SKM_sk_delete(type, st,i) \ 95#define SKM_sk_delete(type, st,i) \
99 ((type * (*)(STACK_OF(type) *, int))openssl_fcast(sk_delete))(st, i) 96 ((type * (*)(STACK_OF(type) *, int))sk_delete)(st, i)
100#define SKM_sk_delete_ptr(type, st,ptr) \ 97#define SKM_sk_delete_ptr(type, st,ptr) \
101 ((type * (*)(STACK_OF(type) *, type *))openssl_fcast(sk_delete_ptr))(st, ptr) 98 ((type * (*)(STACK_OF(type) *, type *))sk_delete_ptr)(st, ptr)
102#define SKM_sk_insert(type, st,val,i) \ 99#define SKM_sk_insert(type, st,val,i) \
103 ((int (*)(STACK_OF(type) *, type *, int))openssl_fcast(sk_insert))(st, val, i) 100 ((int (*)(STACK_OF(type) *, type *, int))sk_insert)(st, val, i)
104#define SKM_sk_set_cmp_func(type, st,cmp) \ 101#define SKM_sk_set_cmp_func(type, st,cmp) \
105 ((int (*(*)(STACK_OF(type) *, int (*)(const type * const *, const type * const *))) \ 102 ((int (*(*)(STACK_OF(type) *, int (*)(const type * const *, const type * const *))) \
106 (const type * const *, const type * const *))openssl_fcast(sk_set_cmp_func))\ 103 (const type * const *, const type * const *))sk_set_cmp_func)\
107 (st, cmp) 104 (st, cmp)
108#define SKM_sk_dup(type, st) \ 105#define SKM_sk_dup(type, st) \
109 ((STACK_OF(type) *(*)(STACK_OF(type) *))openssl_fcast(sk_dup))(st) 106 ((STACK_OF(type) *(*)(STACK_OF(type) *))sk_dup)(st)
110#define SKM_sk_pop_free(type, st,free_func) \ 107#define SKM_sk_pop_free(type, st,free_func) \
111 ((void (*)(STACK_OF(type) *, void (*)(type *)))openssl_fcast(sk_pop_free))\ 108 ((void (*)(STACK_OF(type) *, void (*)(type *)))sk_pop_free)\
112 (st, free_func) 109 (st, free_func)
113#define SKM_sk_shift(type, st) \ 110#define SKM_sk_shift(type, st) \
114 ((type * (*)(STACK_OF(type) *))openssl_fcast(sk_shift))(st) 111 ((type * (*)(STACK_OF(type) *))sk_shift)(st)
115#define SKM_sk_pop(type, st) \ 112#define SKM_sk_pop(type, st) \
116 ((type * (*)(STACK_OF(type) *))openssl_fcast(sk_pop))(st) 113 ((type * (*)(STACK_OF(type) *))sk_pop)(st)
117#define SKM_sk_sort(type, st) \ 114#define SKM_sk_sort(type, st) \
118 ((void (*)(STACK_OF(type) *))openssl_fcast(sk_sort))(st) 115 ((void (*)(STACK_OF(type) *))sk_sort)(st)
119#define SKM_sk_is_sorted(type, st) \ 116#define SKM_sk_is_sorted(type, st) \
120 ((int (*)(const STACK_OF(type) *))openssl_fcast(sk_is_sorted))(st) 117 ((int (*)(const STACK_OF(type) *))sk_is_sorted)(st)
121 118
122#define SKM_ASN1_SET_OF_d2i(type, st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 119#define SKM_ASN1_SET_OF_d2i(type, st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
123 ((STACK_OF(type) * (*) (STACK_OF(type) **,unsigned char **, long , \ 120 ((STACK_OF(type) * (*) (STACK_OF(type) **,unsigned char **, long , \
124 type *(*)(type **, unsigned char **,long), \ 121 type *(*)(type **, unsigned char **,long), \
125 void (*)(type *), int ,int )) openssl_fcast(d2i_ASN1_SET)) \ 122 void (*)(type *), int ,int )) d2i_ASN1_SET) \
126 (st,pp,length, d2i_func, free_func, ex_tag,ex_class) 123 (st,pp,length, d2i_func, free_func, ex_tag,ex_class)
127#define SKM_ASN1_SET_OF_i2d(type, st, pp, i2d_func, ex_tag, ex_class, is_set) \ 124#define SKM_ASN1_SET_OF_i2d(type, st, pp, i2d_func, ex_tag, ex_class, is_set) \
128 ((int (*)(STACK_OF(type) *,unsigned char **, \ 125 ((int (*)(STACK_OF(type) *,unsigned char **, \
129 int (*)(type *,unsigned char **), int , int , int)) openssl_fcast(i2d_ASN1_SET)) \ 126 int (*)(type *,unsigned char **), int , int , int)) i2d_ASN1_SET) \
130 (st,pp,i2d_func,ex_tag,ex_class,is_set) 127 (st,pp,i2d_func,ex_tag,ex_class,is_set)
131 128
132#define SKM_ASN1_seq_pack(type, st, i2d_func, buf, len) \ 129#define SKM_ASN1_seq_pack(type, st, i2d_func, buf, len) \
133 ((unsigned char *(*)(STACK_OF(type) *, \ 130 ((unsigned char *(*)(STACK_OF(type) *, \
134 int (*)(type *,unsigned char **), unsigned char **,int *)) openssl_fcast(ASN1_seq_pack)) \ 131 int (*)(type *,unsigned char **), unsigned char **,int *)) ASN1_seq_pack) \
135 (st, i2d_func, buf, len) 132 (st, i2d_func, buf, len)
136#define SKM_ASN1_seq_unpack(type, buf, len, d2i_func, free_func) \ 133#define SKM_ASN1_seq_unpack(type, buf, len, d2i_func, free_func) \
137 ((STACK_OF(type) * (*)(unsigned char *,int, \ 134 ((STACK_OF(type) * (*)(unsigned char *,int, \
138 type *(*)(type **,unsigned char **, long), \ 135 type *(*)(type **,unsigned char **, long), \
139 void (*)(type *)))openssl_fcast(ASN1_seq_unpack)) \ 136 void (*)(type *)))ASN1_seq_unpack) \
140 (buf,len,d2i_func, free_func) 137 (buf,len,d2i_func, free_func)
141 138
142#define SKM_PKCS12_decrypt_d2i(type, algor, d2i_func, free_func, pass, passlen, oct, seq) \ 139#define SKM_PKCS12_decrypt_d2i(type, algor, d2i_func, free_func, pass, passlen, oct, seq) \
143 ((STACK_OF(type) * (*)(X509_ALGOR *, \ 140 ((STACK_OF(type) * (*)(X509_ALGOR *, \
144 type *(*)(type **, unsigned char **, long), void (*)(type *), \ 141 type *(*)(type **, unsigned char **, long), void (*)(type *), \
145 const char *, int, \ 142 const char *, int, \
146 ASN1_STRING *, int))openssl_fcast(PKCS12_decrypt_d2i)) \ 143 ASN1_STRING *, int))PKCS12_decrypt_d2i) \
147 (algor,d2i_func,free_func,pass,passlen,oct,seq) 144 (algor,d2i_func,free_func,pass,passlen,oct,seq)
148 145
149#else 146#else
diff --git a/src/lib/libssl/src/crypto/txt_db/Makefile.ssl b/src/lib/libssl/src/crypto/txt_db/Makefile.ssl
new file mode 100644
index 0000000000..6221dfae4d
--- /dev/null
+++ b/src/lib/libssl/src/crypto/txt_db/Makefile.ssl
@@ -0,0 +1,88 @@
1#
2# SSLeay/crypto/txt_db/Makefile
3#
4
5DIR= txt_db
6TOP= ../..
7CC= cc
8INCLUDES=
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22TEST=
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC=txt_db.c
27LIBOBJ=txt_db.o
28
29SRC= $(LIBSRC)
30
31EXHEADER= txt_db.h
32HEADER= $(EXHEADER)
33
34ALL= $(GENERAL) $(SRC) $(HEADER)
35
36top:
37 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
38
39all: lib
40
41lib: $(LIBOBJ)
42 $(AR) $(LIB) $(LIBOBJ)
43 $(RANLIB) $(LIB) || echo Never mind.
44 @touch lib
45
46files:
47 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
48
49links:
50 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
51 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
52 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
53 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
54
55install:
56 @for i in $(EXHEADER) ; \
57 do \
58 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
59 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
60 done;
61
62tags:
63 ctags $(SRC)
64
65tests:
66
67lint:
68 lint -DLINT $(INCLUDES) $(SRC)>fluff
69
70depend:
71 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
72
73dclean:
74 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
75 mv -f Makefile.new $(MAKEFILE)
76
77clean:
78 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
79
80# DO NOT DELETE THIS LINE -- make depend depends on it.
81
82txt_db.o: ../../e_os.h ../../include/openssl/bio.h
83txt_db.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
84txt_db.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
85txt_db.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
86txt_db.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
87txt_db.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
88txt_db.o: ../../include/openssl/txt_db.h ../cryptlib.h txt_db.c
diff --git a/src/lib/libssl/src/crypto/ui/Makefile.ssl b/src/lib/libssl/src/crypto/ui/Makefile.ssl
new file mode 100644
index 0000000000..ba46951d1c
--- /dev/null
+++ b/src/lib/libssl/src/crypto/ui/Makefile.ssl
@@ -0,0 +1,117 @@
1#
2# OpenSSL/crypto/ui/Makefile
3#
4
5DIR= ui
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile
22#TEST= uitest.c
23TEST=
24APPS=
25
26COMPATSRC= ui_compat.c
27COMPATOBJ= ui_compat.o
28
29LIB=$(TOP)/libcrypto.a
30LIBSRC= ui_err.c ui_lib.c ui_openssl.c ui_util.c $(COMPATSRC)
31LIBOBJ= ui_err.o ui_lib.o ui_openssl.o ui_util.o $(COMPATOBJ)
32
33SRC= $(LIBSRC)
34
35EXHEADER= ui.h ui_compat.h
36HEADER= $(EXHEADER) ui_locl.h
37
38ALL= $(GENERAL) $(SRC) $(HEADER)
39
40top:
41 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
42
43all: lib
44
45lib: $(LIBOBJ)
46 $(AR) $(LIB) $(LIBOBJ)
47 $(RANLIB) $(LIB) || echo Never mind.
48 @touch lib
49
50files:
51 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
52
53links:
54 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
55 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
56 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
57 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
58
59install:
60 @for i in $(EXHEADER) ; \
61 do \
62 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
63 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
64 done;
65
66tags:
67 ctags $(SRC)
68
69tests:
70
71lint:
72 lint -DLINT $(INCLUDES) $(SRC)>fluff
73
74depend:
75 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
76
77dclean:
78 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
79 mv -f Makefile.new $(MAKEFILE)
80
81clean:
82 rm -f *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
83
84# DO NOT DELETE THIS LINE -- make depend depends on it.
85
86ui_compat.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
87ui_compat.o: ../../include/openssl/opensslconf.h
88ui_compat.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
89ui_compat.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
90ui_compat.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
91ui_compat.o: ui_compat.c
92ui_err.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
93ui_err.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
94ui_err.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
95ui_err.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
96ui_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
97ui_err.o: ../../include/openssl/ui.h ui_err.c
98ui_lib.o: ../../e_os.h ../../include/openssl/bio.h
99ui_lib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
100ui_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
101ui_lib.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
102ui_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h
103ui_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
104ui_lib.o: ../../include/openssl/ui.h ../cryptlib.h ui_lib.c ui_locl.h
105ui_openssl.o: ../../e_os.h ../../include/openssl/bio.h
106ui_openssl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
107ui_openssl.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
108ui_openssl.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
109ui_openssl.o: ../../include/openssl/opensslv.h
110ui_openssl.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
111ui_openssl.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
112ui_openssl.o: ../cryptlib.h ui_locl.h ui_openssl.c
113ui_util.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
114ui_util.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
115ui_util.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
116ui_util.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
117ui_util.o: ui_util.c
diff --git a/src/lib/libssl/src/crypto/ui/ui_err.c b/src/lib/libssl/src/crypto/ui/ui_err.c
index d983cdd66f..39a62ae737 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 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
@@ -64,36 +64,32 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_UI,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_UI,0,reason)
70
71static ERR_STRING_DATA UI_str_functs[]= 67static ERR_STRING_DATA UI_str_functs[]=
72 { 68 {
73{ERR_FUNC(UI_F_GENERAL_ALLOCATE_BOOLEAN), "GENERAL_ALLOCATE_BOOLEAN"}, 69{ERR_PACK(0,UI_F_GENERAL_ALLOCATE_BOOLEAN,0), "GENERAL_ALLOCATE_BOOLEAN"},
74{ERR_FUNC(UI_F_GENERAL_ALLOCATE_PROMPT), "GENERAL_ALLOCATE_PROMPT"}, 70{ERR_PACK(0,UI_F_GENERAL_ALLOCATE_PROMPT,0), "GENERAL_ALLOCATE_PROMPT"},
75{ERR_FUNC(UI_F_GENERAL_ALLOCATE_STRING), "GENERAL_ALLOCATE_STRING"}, 71{ERR_PACK(0,UI_F_GENERAL_ALLOCATE_STRING,0), "GENERAL_ALLOCATE_STRING"},
76{ERR_FUNC(UI_F_UI_CTRL), "UI_ctrl"}, 72{ERR_PACK(0,UI_F_UI_CTRL,0), "UI_ctrl"},
77{ERR_FUNC(UI_F_UI_DUP_ERROR_STRING), "UI_dup_error_string"}, 73{ERR_PACK(0,UI_F_UI_DUP_ERROR_STRING,0), "UI_dup_error_string"},
78{ERR_FUNC(UI_F_UI_DUP_INFO_STRING), "UI_dup_info_string"}, 74{ERR_PACK(0,UI_F_UI_DUP_INFO_STRING,0), "UI_dup_info_string"},
79{ERR_FUNC(UI_F_UI_DUP_INPUT_BOOLEAN), "UI_dup_input_boolean"}, 75{ERR_PACK(0,UI_F_UI_DUP_INPUT_BOOLEAN,0), "UI_dup_input_boolean"},
80{ERR_FUNC(UI_F_UI_DUP_INPUT_STRING), "UI_dup_input_string"}, 76{ERR_PACK(0,UI_F_UI_DUP_INPUT_STRING,0), "UI_dup_input_string"},
81{ERR_FUNC(UI_F_UI_DUP_VERIFY_STRING), "UI_dup_verify_string"}, 77{ERR_PACK(0,UI_F_UI_DUP_VERIFY_STRING,0), "UI_dup_verify_string"},
82{ERR_FUNC(UI_F_UI_GET0_RESULT), "UI_get0_result"}, 78{ERR_PACK(0,UI_F_UI_GET0_RESULT,0), "UI_get0_result"},
83{ERR_FUNC(UI_F_UI_NEW_METHOD), "UI_new_method"}, 79{ERR_PACK(0,UI_F_UI_NEW_METHOD,0), "UI_new_method"},
84{ERR_FUNC(UI_F_UI_SET_RESULT), "UI_set_result"}, 80{ERR_PACK(0,UI_F_UI_SET_RESULT,0), "UI_set_result"},
85{0,NULL} 81{0,NULL}
86 }; 82 };
87 83
88static ERR_STRING_DATA UI_str_reasons[]= 84static ERR_STRING_DATA UI_str_reasons[]=
89 { 85 {
90{ERR_REASON(UI_R_COMMON_OK_AND_CANCEL_CHARACTERS),"common ok and cancel characters"}, 86{UI_R_COMMON_OK_AND_CANCEL_CHARACTERS ,"common ok and cancel characters"},
91{ERR_REASON(UI_R_INDEX_TOO_LARGE) ,"index too large"}, 87{UI_R_INDEX_TOO_LARGE ,"index too large"},
92{ERR_REASON(UI_R_INDEX_TOO_SMALL) ,"index too small"}, 88{UI_R_INDEX_TOO_SMALL ,"index too small"},
93{ERR_REASON(UI_R_NO_RESULT_BUFFER) ,"no result buffer"}, 89{UI_R_NO_RESULT_BUFFER ,"no result buffer"},
94{ERR_REASON(UI_R_RESULT_TOO_LARGE) ,"result too large"}, 90{UI_R_RESULT_TOO_LARGE ,"result too large"},
95{ERR_REASON(UI_R_RESULT_TOO_SMALL) ,"result too small"}, 91{UI_R_RESULT_TOO_SMALL ,"result too small"},
96{ERR_REASON(UI_R_UNKNOWN_CONTROL_COMMAND),"unknown control command"}, 92{UI_R_UNKNOWN_CONTROL_COMMAND ,"unknown control command"},
97{0,NULL} 93{0,NULL}
98 }; 94 };
99 95
@@ -107,8 +103,8 @@ void ERR_load_UI_strings(void)
107 { 103 {
108 init=0; 104 init=0;
109#ifndef OPENSSL_NO_ERR 105#ifndef OPENSSL_NO_ERR
110 ERR_load_strings(0,UI_str_functs); 106 ERR_load_strings(ERR_LIB_UI,UI_str_functs);
111 ERR_load_strings(0,UI_str_reasons); 107 ERR_load_strings(ERR_LIB_UI,UI_str_reasons);
112#endif 108#endif
113 109
114 } 110 }
diff --git a/src/lib/libssl/src/crypto/x509/Makefile.ssl b/src/lib/libssl/src/crypto/x509/Makefile.ssl
new file mode 100644
index 0000000000..3a3452536c
--- /dev/null
+++ b/src/lib/libssl/src/crypto/x509/Makefile.ssl
@@ -0,0 +1,594 @@
1#
2# SSLeay/crypto/x509/Makefile
3#
4
5DIR= x509
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile README
22TEST=
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC= x509_def.c x509_d2.c x509_r2x.c x509_cmp.c \
27 x509_obj.c x509_req.c x509spki.c x509_vfy.c \
28 x509_set.c x509cset.c x509rset.c x509_err.c \
29 x509name.c x509_v3.c x509_ext.c x509_att.c \
30 x509type.c x509_lu.c x_all.c x509_txt.c \
31 x509_trs.c by_file.c by_dir.c
32LIBOBJ= x509_def.o x509_d2.o x509_r2x.o x509_cmp.o \
33 x509_obj.o x509_req.o x509spki.o x509_vfy.o \
34 x509_set.o x509cset.o x509rset.o x509_err.o \
35 x509name.o x509_v3.o x509_ext.o x509_att.o \
36 x509type.o x509_lu.o x_all.o x509_txt.o \
37 x509_trs.o by_file.o by_dir.o
38
39SRC= $(LIBSRC)
40
41EXHEADER= x509.h x509_vfy.h
42HEADER= $(EXHEADER)
43
44ALL= $(GENERAL) $(SRC) $(HEADER)
45
46top:
47 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
48
49all: lib
50
51lib: $(LIBOBJ)
52 $(AR) $(LIB) $(LIBOBJ)
53 $(RANLIB) $(LIB) || echo Never mind.
54 @touch lib
55
56files:
57 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
58
59links:
60 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
61 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
62 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
63 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
64
65install:
66 @for i in $(EXHEADER) ; \
67 do \
68 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
69 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
70 done;
71
72tags:
73 ctags $(SRC)
74
75tests:
76
77lint:
78 lint -DLINT $(INCLUDES) $(SRC)>fluff
79
80depend:
81 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
82
83dclean:
84 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
85 mv -f Makefile.new $(MAKEFILE)
86
87clean:
88 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
89
90# DO NOT DELETE THIS LINE -- make depend depends on it.
91
92by_dir.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
93by_dir.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
94by_dir.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
95by_dir.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
96by_dir.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
97by_dir.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
98by_dir.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
99by_dir.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
100by_dir.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
101by_dir.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
102by_dir.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
103by_dir.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
104by_dir.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
105by_dir.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
106by_dir.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
107by_dir.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
108by_dir.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
109by_dir.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
110by_dir.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
111by_dir.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
112by_dir.o: ../cryptlib.h by_dir.c
113by_file.o: ../../e_os.h ../../include/openssl/aes.h
114by_file.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
115by_file.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
116by_file.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
117by_file.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
118by_file.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
119by_file.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
120by_file.o: ../../include/openssl/err.h ../../include/openssl/evp.h
121by_file.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
122by_file.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
123by_file.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
124by_file.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
125by_file.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
126by_file.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
127by_file.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h
128by_file.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
129by_file.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
130by_file.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
131by_file.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
132by_file.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
133by_file.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
134by_file.o: ../../include/openssl/x509_vfy.h ../cryptlib.h by_file.c
135x509_att.o: ../../e_os.h ../../include/openssl/aes.h
136x509_att.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
137x509_att.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
138x509_att.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
139x509_att.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
140x509_att.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
141x509_att.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
142x509_att.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
143x509_att.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
144x509_att.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
145x509_att.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
146x509_att.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
147x509_att.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
148x509_att.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
149x509_att.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
150x509_att.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
151x509_att.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
152x509_att.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
153x509_att.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
154x509_att.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
155x509_att.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
156x509_att.o: ../../include/openssl/x509v3.h ../cryptlib.h x509_att.c
157x509_cmp.o: ../../e_os.h ../../include/openssl/aes.h
158x509_cmp.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
159x509_cmp.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
160x509_cmp.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
161x509_cmp.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
162x509_cmp.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
163x509_cmp.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
164x509_cmp.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
165x509_cmp.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
166x509_cmp.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
167x509_cmp.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
168x509_cmp.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
169x509_cmp.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
170x509_cmp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
171x509_cmp.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
172x509_cmp.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
173x509_cmp.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
174x509_cmp.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
175x509_cmp.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
176x509_cmp.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
177x509_cmp.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
178x509_cmp.o: ../../include/openssl/x509v3.h ../cryptlib.h x509_cmp.c
179x509_d2.o: ../../e_os.h ../../include/openssl/aes.h
180x509_d2.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
181x509_d2.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
182x509_d2.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
183x509_d2.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
184x509_d2.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
185x509_d2.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
186x509_d2.o: ../../include/openssl/err.h ../../include/openssl/evp.h
187x509_d2.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
188x509_d2.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
189x509_d2.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
190x509_d2.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
191x509_d2.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
192x509_d2.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
193x509_d2.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
194x509_d2.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
195x509_d2.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
196x509_d2.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
197x509_d2.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
198x509_d2.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
199x509_d2.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x509_d2.c
200x509_def.o: ../../e_os.h ../../include/openssl/aes.h
201x509_def.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
202x509_def.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
203x509_def.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
204x509_def.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
205x509_def.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
206x509_def.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
207x509_def.o: ../../include/openssl/err.h ../../include/openssl/evp.h
208x509_def.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
209x509_def.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
210x509_def.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
211x509_def.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
212x509_def.o: ../../include/openssl/opensslconf.h
213x509_def.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
214x509_def.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
215x509_def.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
216x509_def.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
217x509_def.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
218x509_def.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
219x509_def.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
220x509_def.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
221x509_def.o: ../cryptlib.h x509_def.c
222x509_err.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
223x509_err.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
224x509_err.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
225x509_err.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
226x509_err.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
227x509_err.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
228x509_err.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
229x509_err.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
230x509_err.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
231x509_err.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
232x509_err.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
233x509_err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
234x509_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
235x509_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
236x509_err.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
237x509_err.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
238x509_err.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
239x509_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
240x509_err.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
241x509_err.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
242x509_err.o: x509_err.c
243x509_ext.o: ../../e_os.h ../../include/openssl/aes.h
244x509_ext.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
245x509_ext.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
246x509_ext.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
247x509_ext.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
248x509_ext.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
249x509_ext.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
250x509_ext.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
251x509_ext.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
252x509_ext.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
253x509_ext.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
254x509_ext.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
255x509_ext.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
256x509_ext.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
257x509_ext.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
258x509_ext.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
259x509_ext.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
260x509_ext.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
261x509_ext.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
262x509_ext.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
263x509_ext.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
264x509_ext.o: ../../include/openssl/x509v3.h ../cryptlib.h x509_ext.c
265x509_lu.o: ../../e_os.h ../../include/openssl/aes.h
266x509_lu.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
267x509_lu.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
268x509_lu.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
269x509_lu.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
270x509_lu.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
271x509_lu.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
272x509_lu.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
273x509_lu.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
274x509_lu.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
275x509_lu.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
276x509_lu.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
277x509_lu.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
278x509_lu.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
279x509_lu.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
280x509_lu.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
281x509_lu.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
282x509_lu.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
283x509_lu.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
284x509_lu.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
285x509_lu.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
286x509_lu.o: ../../include/openssl/x509v3.h ../cryptlib.h x509_lu.c
287x509_obj.o: ../../e_os.h ../../include/openssl/aes.h
288x509_obj.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
289x509_obj.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
290x509_obj.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
291x509_obj.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
292x509_obj.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
293x509_obj.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
294x509_obj.o: ../../include/openssl/err.h ../../include/openssl/evp.h
295x509_obj.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
296x509_obj.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
297x509_obj.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
298x509_obj.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
299x509_obj.o: ../../include/openssl/opensslconf.h
300x509_obj.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
301x509_obj.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
302x509_obj.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
303x509_obj.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
304x509_obj.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
305x509_obj.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
306x509_obj.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
307x509_obj.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
308x509_obj.o: ../cryptlib.h x509_obj.c
309x509_r2x.o: ../../e_os.h ../../include/openssl/aes.h
310x509_r2x.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
311x509_r2x.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
312x509_r2x.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
313x509_r2x.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
314x509_r2x.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
315x509_r2x.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
316x509_r2x.o: ../../include/openssl/err.h ../../include/openssl/evp.h
317x509_r2x.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
318x509_r2x.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
319x509_r2x.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
320x509_r2x.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
321x509_r2x.o: ../../include/openssl/opensslconf.h
322x509_r2x.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
323x509_r2x.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
324x509_r2x.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
325x509_r2x.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
326x509_r2x.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
327x509_r2x.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
328x509_r2x.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
329x509_r2x.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
330x509_r2x.o: ../cryptlib.h x509_r2x.c
331x509_req.o: ../../e_os.h ../../include/openssl/aes.h
332x509_req.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
333x509_req.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
334x509_req.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
335x509_req.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
336x509_req.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
337x509_req.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
338x509_req.o: ../../include/openssl/err.h ../../include/openssl/evp.h
339x509_req.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
340x509_req.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
341x509_req.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
342x509_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
343x509_req.o: ../../include/openssl/opensslconf.h
344x509_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
345x509_req.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
346x509_req.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
347x509_req.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
348x509_req.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
349x509_req.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
350x509_req.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
351x509_req.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
352x509_req.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
353x509_req.o: ../cryptlib.h x509_req.c
354x509_set.o: ../../e_os.h ../../include/openssl/aes.h
355x509_set.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
356x509_set.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
357x509_set.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
358x509_set.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
359x509_set.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
360x509_set.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
361x509_set.o: ../../include/openssl/err.h ../../include/openssl/evp.h
362x509_set.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
363x509_set.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
364x509_set.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
365x509_set.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
366x509_set.o: ../../include/openssl/opensslconf.h
367x509_set.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
368x509_set.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
369x509_set.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
370x509_set.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
371x509_set.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
372x509_set.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
373x509_set.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
374x509_set.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
375x509_set.o: ../cryptlib.h x509_set.c
376x509_trs.o: ../../e_os.h ../../include/openssl/aes.h
377x509_trs.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
378x509_trs.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
379x509_trs.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
380x509_trs.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
381x509_trs.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
382x509_trs.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
383x509_trs.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
384x509_trs.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
385x509_trs.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
386x509_trs.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
387x509_trs.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
388x509_trs.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
389x509_trs.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
390x509_trs.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
391x509_trs.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
392x509_trs.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
393x509_trs.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
394x509_trs.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
395x509_trs.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
396x509_trs.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
397x509_trs.o: ../../include/openssl/x509v3.h ../cryptlib.h x509_trs.c
398x509_txt.o: ../../e_os.h ../../include/openssl/aes.h
399x509_txt.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
400x509_txt.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
401x509_txt.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
402x509_txt.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
403x509_txt.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
404x509_txt.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
405x509_txt.o: ../../include/openssl/err.h ../../include/openssl/evp.h
406x509_txt.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
407x509_txt.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
408x509_txt.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
409x509_txt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
410x509_txt.o: ../../include/openssl/opensslconf.h
411x509_txt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
412x509_txt.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
413x509_txt.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
414x509_txt.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
415x509_txt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
416x509_txt.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
417x509_txt.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
418x509_txt.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
419x509_txt.o: ../cryptlib.h x509_txt.c
420x509_v3.o: ../../e_os.h ../../include/openssl/aes.h
421x509_v3.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
422x509_v3.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
423x509_v3.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
424x509_v3.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
425x509_v3.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
426x509_v3.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
427x509_v3.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
428x509_v3.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
429x509_v3.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
430x509_v3.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
431x509_v3.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
432x509_v3.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
433x509_v3.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
434x509_v3.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
435x509_v3.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
436x509_v3.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
437x509_v3.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
438x509_v3.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
439x509_v3.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
440x509_v3.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
441x509_v3.o: ../../include/openssl/x509v3.h ../cryptlib.h x509_v3.c
442x509_vfy.o: ../../e_os.h ../../include/openssl/aes.h
443x509_vfy.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
444x509_vfy.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
445x509_vfy.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
446x509_vfy.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
447x509_vfy.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
448x509_vfy.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
449x509_vfy.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
450x509_vfy.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
451x509_vfy.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
452x509_vfy.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
453x509_vfy.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
454x509_vfy.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
455x509_vfy.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
456x509_vfy.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
457x509_vfy.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
458x509_vfy.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
459x509_vfy.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
460x509_vfy.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
461x509_vfy.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
462x509_vfy.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
463x509_vfy.o: ../../include/openssl/x509v3.h ../cryptlib.h x509_vfy.c
464x509cset.o: ../../e_os.h ../../include/openssl/aes.h
465x509cset.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
466x509cset.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
467x509cset.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
468x509cset.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
469x509cset.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
470x509cset.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
471x509cset.o: ../../include/openssl/err.h ../../include/openssl/evp.h
472x509cset.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
473x509cset.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
474x509cset.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
475x509cset.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
476x509cset.o: ../../include/openssl/opensslconf.h
477x509cset.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
478x509cset.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
479x509cset.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
480x509cset.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
481x509cset.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
482x509cset.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
483x509cset.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
484x509cset.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
485x509cset.o: ../cryptlib.h x509cset.c
486x509name.o: ../../e_os.h ../../include/openssl/aes.h
487x509name.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
488x509name.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
489x509name.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
490x509name.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
491x509name.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
492x509name.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
493x509name.o: ../../include/openssl/err.h ../../include/openssl/evp.h
494x509name.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
495x509name.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
496x509name.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
497x509name.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
498x509name.o: ../../include/openssl/opensslconf.h
499x509name.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
500x509name.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
501x509name.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
502x509name.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
503x509name.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
504x509name.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
505x509name.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
506x509name.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
507x509name.o: ../cryptlib.h x509name.c
508x509rset.o: ../../e_os.h ../../include/openssl/aes.h
509x509rset.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
510x509rset.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
511x509rset.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
512x509rset.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
513x509rset.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
514x509rset.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
515x509rset.o: ../../include/openssl/err.h ../../include/openssl/evp.h
516x509rset.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
517x509rset.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
518x509rset.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
519x509rset.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
520x509rset.o: ../../include/openssl/opensslconf.h
521x509rset.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
522x509rset.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
523x509rset.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
524x509rset.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
525x509rset.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
526x509rset.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
527x509rset.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
528x509rset.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
529x509rset.o: ../cryptlib.h x509rset.c
530x509spki.o: ../../e_os.h ../../include/openssl/aes.h
531x509spki.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
532x509spki.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
533x509spki.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
534x509spki.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
535x509spki.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
536x509spki.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
537x509spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h
538x509spki.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
539x509spki.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
540x509spki.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
541x509spki.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
542x509spki.o: ../../include/openssl/opensslconf.h
543x509spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
544x509spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
545x509spki.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
546x509spki.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
547x509spki.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
548x509spki.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
549x509spki.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
550x509spki.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
551x509spki.o: ../cryptlib.h x509spki.c
552x509type.o: ../../e_os.h ../../include/openssl/aes.h
553x509type.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
554x509type.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
555x509type.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
556x509type.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
557x509type.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
558x509type.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
559x509type.o: ../../include/openssl/err.h ../../include/openssl/evp.h
560x509type.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
561x509type.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
562x509type.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
563x509type.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
564x509type.o: ../../include/openssl/opensslconf.h
565x509type.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
566x509type.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
567x509type.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
568x509type.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
569x509type.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
570x509type.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
571x509type.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
572x509type.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
573x509type.o: ../cryptlib.h x509type.c
574x_all.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
575x_all.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
576x_all.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
577x_all.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h
578x_all.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
579x_all.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
580x_all.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
581x_all.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
582x_all.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
583x_all.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
584x_all.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
585x_all.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
586x_all.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
587x_all.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
588x_all.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
589x_all.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
590x_all.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
591x_all.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
592x_all.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
593x_all.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
594x_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 ea689aed1a..6207340472 100644
--- a/src/lib/libssl/src/crypto/x509/by_dir.c
+++ b/src/lib/libssl/src/crypto/x509/by_dir.c
@@ -114,7 +114,7 @@ static int dir_ctrl(X509_LOOKUP *ctx, int cmd, const char *argp, long argl,
114 { 114 {
115 int ret=0; 115 int ret=0;
116 BY_DIR *ld; 116 BY_DIR *ld;
117 char *dir = NULL; 117 char *dir;
118 118
119 ld=(BY_DIR *)ctx->method_data; 119 ld=(BY_DIR *)ctx->method_data;
120 120
@@ -123,16 +123,17 @@ static int dir_ctrl(X509_LOOKUP *ctx, int cmd, const char *argp, long argl,
123 case X509_L_ADD_DIR: 123 case X509_L_ADD_DIR:
124 if (argl == X509_FILETYPE_DEFAULT) 124 if (argl == X509_FILETYPE_DEFAULT)
125 { 125 {
126 dir=(char *)Getenv(X509_get_default_cert_dir_env()); 126 ret=add_cert_dir(ld,X509_get_default_cert_dir(),
127 if (dir) 127 X509_FILETYPE_PEM);
128 ret=add_cert_dir(ld,dir,X509_FILETYPE_PEM);
129 else
130 ret=add_cert_dir(ld,X509_get_default_cert_dir(),
131 X509_FILETYPE_PEM);
132 if (!ret) 128 if (!ret)
133 { 129 {
134 X509err(X509_F_DIR_CTRL,X509_R_LOADING_CERT_DIR); 130 X509err(X509_F_DIR_CTRL,X509_R_LOADING_CERT_DIR);
135 } 131 }
132 else
133 {
134 dir=(char *)Getenv(X509_get_default_cert_dir_env());
135 ret=add_cert_dir(ld,dir,X509_FILETYPE_PEM);
136 }
136 } 137 }
137 else 138 else
138 ret=add_cert_dir(ld,argp,(int)argl); 139 ret=add_cert_dir(ld,argp,(int)argl);
diff --git a/src/lib/libssl/src/crypto/x509/x509_err.c b/src/lib/libssl/src/crypto/x509/x509_err.c
index d44d046027..5bbf4acf76 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 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
@@ -64,81 +64,77 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_X509,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_X509,0,reason)
70
71static ERR_STRING_DATA X509_str_functs[]= 67static ERR_STRING_DATA X509_str_functs[]=
72 { 68 {
73{ERR_FUNC(X509_F_ADD_CERT_DIR), "ADD_CERT_DIR"}, 69{ERR_PACK(0,X509_F_ADD_CERT_DIR,0), "ADD_CERT_DIR"},
74{ERR_FUNC(X509_F_BY_FILE_CTRL), "BY_FILE_CTRL"}, 70{ERR_PACK(0,X509_F_BY_FILE_CTRL,0), "BY_FILE_CTRL"},
75{ERR_FUNC(X509_F_DIR_CTRL), "DIR_CTRL"}, 71{ERR_PACK(0,X509_F_DIR_CTRL,0), "DIR_CTRL"},
76{ERR_FUNC(X509_F_GET_CERT_BY_SUBJECT), "GET_CERT_BY_SUBJECT"}, 72{ERR_PACK(0,X509_F_GET_CERT_BY_SUBJECT,0), "GET_CERT_BY_SUBJECT"},
77{ERR_FUNC(X509_F_NETSCAPE_SPKI_B64_DECODE), "NETSCAPE_SPKI_b64_decode"}, 73{ERR_PACK(0,X509_F_NETSCAPE_SPKI_B64_DECODE,0), "NETSCAPE_SPKI_b64_decode"},
78{ERR_FUNC(X509_F_NETSCAPE_SPKI_B64_ENCODE), "NETSCAPE_SPKI_b64_encode"}, 74{ERR_PACK(0,X509_F_NETSCAPE_SPKI_B64_ENCODE,0), "NETSCAPE_SPKI_b64_encode"},
79{ERR_FUNC(X509_F_X509V3_ADD_EXT), "X509v3_add_ext"}, 75{ERR_PACK(0,X509_F_X509V3_ADD_EXT,0), "X509v3_add_ext"},
80{ERR_FUNC(X509_F_X509_ADD_ATTR), "X509_ADD_ATTR"}, 76{ERR_PACK(0,X509_F_X509_ADD_ATTR,0), "X509_ADD_ATTR"},
81{ERR_FUNC(X509_F_X509_ATTRIBUTE_CREATE_BY_NID), "X509_ATTRIBUTE_create_by_NID"}, 77{ERR_PACK(0,X509_F_X509_ATTRIBUTE_CREATE_BY_NID,0), "X509_ATTRIBUTE_create_by_NID"},
82{ERR_FUNC(X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ), "X509_ATTRIBUTE_create_by_OBJ"}, 78{ERR_PACK(0,X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ,0), "X509_ATTRIBUTE_create_by_OBJ"},
83{ERR_FUNC(X509_F_X509_ATTRIBUTE_CREATE_BY_TXT), "X509_ATTRIBUTE_create_by_txt"}, 79{ERR_PACK(0,X509_F_X509_ATTRIBUTE_CREATE_BY_TXT,0), "X509_ATTRIBUTE_create_by_txt"},
84{ERR_FUNC(X509_F_X509_ATTRIBUTE_GET0_DATA), "X509_ATTRIBUTE_get0_data"}, 80{ERR_PACK(0,X509_F_X509_ATTRIBUTE_GET0_DATA,0), "X509_ATTRIBUTE_get0_data"},
85{ERR_FUNC(X509_F_X509_ATTRIBUTE_SET1_DATA), "X509_ATTRIBUTE_set1_data"}, 81{ERR_PACK(0,X509_F_X509_ATTRIBUTE_SET1_DATA,0), "X509_ATTRIBUTE_set1_data"},
86{ERR_FUNC(X509_F_X509_CHECK_PRIVATE_KEY), "X509_check_private_key"}, 82{ERR_PACK(0,X509_F_X509_CHECK_PRIVATE_KEY,0), "X509_check_private_key"},
87{ERR_FUNC(X509_F_X509_EXTENSION_CREATE_BY_NID), "X509_EXTENSION_create_by_NID"}, 83{ERR_PACK(0,X509_F_X509_EXTENSION_CREATE_BY_NID,0), "X509_EXTENSION_create_by_NID"},
88{ERR_FUNC(X509_F_X509_EXTENSION_CREATE_BY_OBJ), "X509_EXTENSION_create_by_OBJ"}, 84{ERR_PACK(0,X509_F_X509_EXTENSION_CREATE_BY_OBJ,0), "X509_EXTENSION_create_by_OBJ"},
89{ERR_FUNC(X509_F_X509_GET_PUBKEY_PARAMETERS), "X509_get_pubkey_parameters"}, 85{ERR_PACK(0,X509_F_X509_GET_PUBKEY_PARAMETERS,0), "X509_get_pubkey_parameters"},
90{ERR_FUNC(X509_F_X509_LOAD_CERT_CRL_FILE), "X509_load_cert_crl_file"}, 86{ERR_PACK(0,X509_F_X509_LOAD_CERT_CRL_FILE,0), "X509_load_cert_crl_file"},
91{ERR_FUNC(X509_F_X509_LOAD_CERT_FILE), "X509_load_cert_file"}, 87{ERR_PACK(0,X509_F_X509_LOAD_CERT_FILE,0), "X509_load_cert_file"},
92{ERR_FUNC(X509_F_X509_LOAD_CRL_FILE), "X509_load_crl_file"}, 88{ERR_PACK(0,X509_F_X509_LOAD_CRL_FILE,0), "X509_load_crl_file"},
93{ERR_FUNC(X509_F_X509_NAME_ADD_ENTRY), "X509_NAME_add_entry"}, 89{ERR_PACK(0,X509_F_X509_NAME_ADD_ENTRY,0), "X509_NAME_add_entry"},
94{ERR_FUNC(X509_F_X509_NAME_ENTRY_CREATE_BY_NID), "X509_NAME_ENTRY_create_by_NID"}, 90{ERR_PACK(0,X509_F_X509_NAME_ENTRY_CREATE_BY_NID,0), "X509_NAME_ENTRY_create_by_NID"},
95{ERR_FUNC(X509_F_X509_NAME_ENTRY_CREATE_BY_TXT), "X509_NAME_ENTRY_create_by_txt"}, 91{ERR_PACK(0,X509_F_X509_NAME_ENTRY_CREATE_BY_TXT,0), "X509_NAME_ENTRY_create_by_txt"},
96{ERR_FUNC(X509_F_X509_NAME_ENTRY_SET_OBJECT), "X509_NAME_ENTRY_set_object"}, 92{ERR_PACK(0,X509_F_X509_NAME_ENTRY_SET_OBJECT,0), "X509_NAME_ENTRY_set_object"},
97{ERR_FUNC(X509_F_X509_NAME_ONELINE), "X509_NAME_oneline"}, 93{ERR_PACK(0,X509_F_X509_NAME_ONELINE,0), "X509_NAME_oneline"},
98{ERR_FUNC(X509_F_X509_NAME_PRINT), "X509_NAME_print"}, 94{ERR_PACK(0,X509_F_X509_NAME_PRINT,0), "X509_NAME_print"},
99{ERR_FUNC(X509_F_X509_PRINT_FP), "X509_print_fp"}, 95{ERR_PACK(0,X509_F_X509_PRINT_FP,0), "X509_print_fp"},
100{ERR_FUNC(X509_F_X509_PUBKEY_GET), "X509_PUBKEY_get"}, 96{ERR_PACK(0,X509_F_X509_PUBKEY_GET,0), "X509_PUBKEY_get"},
101{ERR_FUNC(X509_F_X509_PUBKEY_SET), "X509_PUBKEY_set"}, 97{ERR_PACK(0,X509_F_X509_PUBKEY_SET,0), "X509_PUBKEY_set"},
102{ERR_FUNC(X509_F_X509_REQ_PRINT), "X509_REQ_print"}, 98{ERR_PACK(0,X509_F_X509_REQ_PRINT,0), "X509_REQ_print"},
103{ERR_FUNC(X509_F_X509_REQ_PRINT_FP), "X509_REQ_print_fp"}, 99{ERR_PACK(0,X509_F_X509_REQ_PRINT_FP,0), "X509_REQ_print_fp"},
104{ERR_FUNC(X509_F_X509_REQ_TO_X509), "X509_REQ_to_X509"}, 100{ERR_PACK(0,X509_F_X509_REQ_TO_X509,0), "X509_REQ_to_X509"},
105{ERR_FUNC(X509_F_X509_STORE_ADD_CERT), "X509_STORE_add_cert"}, 101{ERR_PACK(0,X509_F_X509_STORE_ADD_CERT,0), "X509_STORE_add_cert"},
106{ERR_FUNC(X509_F_X509_STORE_ADD_CRL), "X509_STORE_add_crl"}, 102{ERR_PACK(0,X509_F_X509_STORE_ADD_CRL,0), "X509_STORE_add_crl"},
107{ERR_FUNC(X509_F_X509_STORE_CTX_INIT), "X509_STORE_CTX_init"}, 103{ERR_PACK(0,X509_F_X509_STORE_CTX_INIT,0), "X509_STORE_CTX_init"},
108{ERR_FUNC(X509_F_X509_STORE_CTX_NEW), "X509_STORE_CTX_new"}, 104{ERR_PACK(0,X509_F_X509_STORE_CTX_NEW,0), "X509_STORE_CTX_new"},
109{ERR_FUNC(X509_F_X509_STORE_CTX_PURPOSE_INHERIT), "X509_STORE_CTX_purpose_inherit"}, 105{ERR_PACK(0,X509_F_X509_STORE_CTX_PURPOSE_INHERIT,0), "X509_STORE_CTX_purpose_inherit"},
110{ERR_FUNC(X509_F_X509_TO_X509_REQ), "X509_to_X509_REQ"}, 106{ERR_PACK(0,X509_F_X509_TO_X509_REQ,0), "X509_to_X509_REQ"},
111{ERR_FUNC(X509_F_X509_TRUST_ADD), "X509_TRUST_add"}, 107{ERR_PACK(0,X509_F_X509_TRUST_ADD,0), "X509_TRUST_add"},
112{ERR_FUNC(X509_F_X509_TRUST_SET), "X509_TRUST_set"}, 108{ERR_PACK(0,X509_F_X509_TRUST_SET,0), "X509_TRUST_set"},
113{ERR_FUNC(X509_F_X509_VERIFY_CERT), "X509_verify_cert"}, 109{ERR_PACK(0,X509_F_X509_VERIFY_CERT,0), "X509_verify_cert"},
114{0,NULL} 110{0,NULL}
115 }; 111 };
116 112
117static ERR_STRING_DATA X509_str_reasons[]= 113static ERR_STRING_DATA X509_str_reasons[]=
118 { 114 {
119{ERR_REASON(X509_R_BAD_X509_FILETYPE) ,"bad x509 filetype"}, 115{X509_R_BAD_X509_FILETYPE ,"bad x509 filetype"},
120{ERR_REASON(X509_R_BASE64_DECODE_ERROR) ,"base64 decode error"}, 116{X509_R_BASE64_DECODE_ERROR ,"base64 decode error"},
121{ERR_REASON(X509_R_CANT_CHECK_DH_KEY) ,"cant check dh key"}, 117{X509_R_CANT_CHECK_DH_KEY ,"cant check dh key"},
122{ERR_REASON(X509_R_CERT_ALREADY_IN_HASH_TABLE),"cert already in hash table"}, 118{X509_R_CERT_ALREADY_IN_HASH_TABLE ,"cert already in hash table"},
123{ERR_REASON(X509_R_ERR_ASN1_LIB) ,"err asn1 lib"}, 119{X509_R_ERR_ASN1_LIB ,"err asn1 lib"},
124{ERR_REASON(X509_R_INVALID_DIRECTORY) ,"invalid directory"}, 120{X509_R_INVALID_DIRECTORY ,"invalid directory"},
125{ERR_REASON(X509_R_INVALID_FIELD_NAME) ,"invalid field name"}, 121{X509_R_INVALID_FIELD_NAME ,"invalid field name"},
126{ERR_REASON(X509_R_INVALID_TRUST) ,"invalid trust"}, 122{X509_R_INVALID_TRUST ,"invalid trust"},
127{ERR_REASON(X509_R_KEY_TYPE_MISMATCH) ,"key type mismatch"}, 123{X509_R_KEY_TYPE_MISMATCH ,"key type mismatch"},
128{ERR_REASON(X509_R_KEY_VALUES_MISMATCH) ,"key values mismatch"}, 124{X509_R_KEY_VALUES_MISMATCH ,"key values mismatch"},
129{ERR_REASON(X509_R_LOADING_CERT_DIR) ,"loading cert dir"}, 125{X509_R_LOADING_CERT_DIR ,"loading cert dir"},
130{ERR_REASON(X509_R_LOADING_DEFAULTS) ,"loading defaults"}, 126{X509_R_LOADING_DEFAULTS ,"loading defaults"},
131{ERR_REASON(X509_R_NO_CERT_SET_FOR_US_TO_VERIFY),"no cert set for us to verify"}, 127{X509_R_NO_CERT_SET_FOR_US_TO_VERIFY ,"no cert set for us to verify"},
132{ERR_REASON(X509_R_SHOULD_RETRY) ,"should retry"}, 128{X509_R_SHOULD_RETRY ,"should retry"},
133{ERR_REASON(X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN),"unable to find parameters in chain"}, 129{X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN,"unable to find parameters in chain"},
134{ERR_REASON(X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY),"unable to get certs public key"}, 130{X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY ,"unable to get certs public key"},
135{ERR_REASON(X509_R_UNKNOWN_KEY_TYPE) ,"unknown key type"}, 131{X509_R_UNKNOWN_KEY_TYPE ,"unknown key type"},
136{ERR_REASON(X509_R_UNKNOWN_NID) ,"unknown nid"}, 132{X509_R_UNKNOWN_NID ,"unknown nid"},
137{ERR_REASON(X509_R_UNKNOWN_PURPOSE_ID) ,"unknown purpose id"}, 133{X509_R_UNKNOWN_PURPOSE_ID ,"unknown purpose id"},
138{ERR_REASON(X509_R_UNKNOWN_TRUST_ID) ,"unknown trust id"}, 134{X509_R_UNKNOWN_TRUST_ID ,"unknown trust id"},
139{ERR_REASON(X509_R_UNSUPPORTED_ALGORITHM),"unsupported algorithm"}, 135{X509_R_UNSUPPORTED_ALGORITHM ,"unsupported algorithm"},
140{ERR_REASON(X509_R_WRONG_LOOKUP_TYPE) ,"wrong lookup type"}, 136{X509_R_WRONG_LOOKUP_TYPE ,"wrong lookup type"},
141{ERR_REASON(X509_R_WRONG_TYPE) ,"wrong type"}, 137{X509_R_WRONG_TYPE ,"wrong type"},
142{0,NULL} 138{0,NULL}
143 }; 139 };
144 140
@@ -152,8 +148,8 @@ void ERR_load_X509_strings(void)
152 { 148 {
153 init=0; 149 init=0;
154#ifndef OPENSSL_NO_ERR 150#ifndef OPENSSL_NO_ERR
155 ERR_load_strings(0,X509_str_functs); 151 ERR_load_strings(ERR_LIB_X509,X509_str_functs);
156 ERR_load_strings(0,X509_str_reasons); 152 ERR_load_strings(ERR_LIB_X509,X509_str_reasons);
157#endif 153#endif
158 154
159 } 155 }
diff --git a/src/lib/libssl/src/crypto/x509/x509_vfy.c b/src/lib/libssl/src/crypto/x509/x509_vfy.c
index 383e082aba..e43c861ee7 100644
--- a/src/lib/libssl/src/crypto/x509/x509_vfy.c
+++ b/src/lib/libssl/src/crypto/x509/x509_vfy.c
@@ -944,7 +944,7 @@ int X509_cmp_time(ASN1_TIME *ctm, time_t *cmp_time)
944 offset=0; 944 offset=0;
945 else 945 else
946 { 946 {
947 if ((*str != '+') && (*str != '-')) 947 if ((*str != '+') && (str[5] != '-'))
948 return 0; 948 return 0;
949 offset=((str[1]-'0')*10+(str[2]-'0'))*60; 949 offset=((str[1]-'0')*10+(str[2]-'0'))*60;
950 offset+=(str[3]-'0')*10+(str[4]-'0'); 950 offset+=(str[3]-'0')*10+(str[4]-'0');
diff --git a/src/lib/libssl/src/crypto/x509v3/Makefile.ssl b/src/lib/libssl/src/crypto/x509v3/Makefile.ssl
new file mode 100644
index 0000000000..66df90c346
--- /dev/null
+++ b/src/lib/libssl/src/crypto/x509v3/Makefile.ssl
@@ -0,0 +1,603 @@
1#
2# SSLeay/crypto/x509v3/Makefile
3#
4
5DIR= x509v3
6TOP= ../..
7CC= cc
8INCLUDES= -I.. -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18
19CFLAGS= $(INCLUDES) $(CFLAG)
20
21GENERAL=Makefile README
22TEST=
23APPS=
24
25LIB=$(TOP)/libcrypto.a
26LIBSRC= v3_bcons.c v3_bitst.c v3_conf.c v3_extku.c v3_ia5.c v3_lib.c \
27v3_prn.c v3_utl.c v3err.c v3_genn.c v3_alt.c v3_skey.c v3_akey.c v3_pku.c \
28v3_int.c v3_enum.c v3_sxnet.c v3_cpols.c v3_crld.c v3_purp.c v3_info.c \
29v3_ocsp.c v3_akeya.c
30LIBOBJ= v3_bcons.o v3_bitst.o v3_conf.o v3_extku.o v3_ia5.o v3_lib.o \
31v3_prn.o v3_utl.o v3err.o v3_genn.o v3_alt.o v3_skey.o v3_akey.o v3_pku.o \
32v3_int.o v3_enum.o v3_sxnet.o v3_cpols.o v3_crld.o v3_purp.o v3_info.o \
33v3_ocsp.o v3_akeya.o
34
35SRC= $(LIBSRC)
36
37EXHEADER= x509v3.h
38HEADER= $(EXHEADER)
39
40ALL= $(GENERAL) $(SRC) $(HEADER)
41
42top:
43 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
44
45all: lib
46
47lib: $(LIBOBJ)
48 $(AR) $(LIB) $(LIBOBJ)
49 $(RANLIB) $(LIB) || echo Never mind.
50 @touch lib
51
52files:
53 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
54
55links:
56 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
57 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
58 @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST)
59 @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS)
60
61install:
62 @for i in $(EXHEADER) ; \
63 do \
64 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
65 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
66 done;
67
68tags:
69 ctags $(SRC)
70
71tests:
72
73lint:
74 lint -DLINT $(INCLUDES) $(SRC)>fluff
75
76depend:
77 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
78
79dclean:
80 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
81 mv -f Makefile.new $(MAKEFILE)
82
83clean:
84 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
85
86# DO NOT DELETE THIS LINE -- make depend depends on it.
87
88v3_akey.o: ../../e_os.h ../../include/openssl/aes.h
89v3_akey.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
90v3_akey.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
91v3_akey.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
92v3_akey.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
93v3_akey.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
94v3_akey.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
95v3_akey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
96v3_akey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
97v3_akey.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
98v3_akey.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
99v3_akey.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
100v3_akey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
101v3_akey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
102v3_akey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
103v3_akey.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
104v3_akey.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
105v3_akey.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
106v3_akey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
107v3_akey.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
108v3_akey.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
109v3_akey.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
110v3_akey.o: ../cryptlib.h v3_akey.c
111v3_akeya.o: ../../e_os.h ../../include/openssl/aes.h
112v3_akeya.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
113v3_akeya.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
114v3_akeya.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
115v3_akeya.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
116v3_akeya.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
117v3_akeya.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
118v3_akeya.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
119v3_akeya.o: ../../include/openssl/err.h ../../include/openssl/evp.h
120v3_akeya.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
121v3_akeya.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
122v3_akeya.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
123v3_akeya.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
124v3_akeya.o: ../../include/openssl/opensslconf.h
125v3_akeya.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
126v3_akeya.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
127v3_akeya.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
128v3_akeya.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
129v3_akeya.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
130v3_akeya.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
131v3_akeya.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
132v3_akeya.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
133v3_akeya.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_akeya.c
134v3_alt.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
135v3_alt.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
136v3_alt.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
137v3_alt.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
138v3_alt.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
139v3_alt.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
140v3_alt.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
141v3_alt.o: ../../include/openssl/err.h ../../include/openssl/evp.h
142v3_alt.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
143v3_alt.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
144v3_alt.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
145v3_alt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
146v3_alt.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
147v3_alt.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
148v3_alt.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
149v3_alt.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
150v3_alt.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
151v3_alt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
152v3_alt.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
153v3_alt.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
154v3_alt.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
155v3_alt.o: ../cryptlib.h v3_alt.c
156v3_bcons.o: ../../e_os.h ../../include/openssl/aes.h
157v3_bcons.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
158v3_bcons.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
159v3_bcons.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
160v3_bcons.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
161v3_bcons.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
162v3_bcons.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
163v3_bcons.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
164v3_bcons.o: ../../include/openssl/err.h ../../include/openssl/evp.h
165v3_bcons.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
166v3_bcons.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
167v3_bcons.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
168v3_bcons.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
169v3_bcons.o: ../../include/openssl/opensslconf.h
170v3_bcons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
171v3_bcons.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
172v3_bcons.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
173v3_bcons.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
174v3_bcons.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
175v3_bcons.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
176v3_bcons.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
177v3_bcons.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
178v3_bcons.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_bcons.c
179v3_bitst.o: ../../e_os.h ../../include/openssl/aes.h
180v3_bitst.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
181v3_bitst.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
182v3_bitst.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
183v3_bitst.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
184v3_bitst.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
185v3_bitst.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
186v3_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
187v3_bitst.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
188v3_bitst.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
189v3_bitst.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
190v3_bitst.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
191v3_bitst.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
192v3_bitst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
193v3_bitst.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
194v3_bitst.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
195v3_bitst.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
196v3_bitst.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
197v3_bitst.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
198v3_bitst.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
199v3_bitst.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
200v3_bitst.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_bitst.c
201v3_conf.o: ../../e_os.h ../../include/openssl/aes.h
202v3_conf.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
203v3_conf.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
204v3_conf.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
205v3_conf.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
206v3_conf.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
207v3_conf.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
208v3_conf.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
209v3_conf.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
210v3_conf.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
211v3_conf.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
212v3_conf.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
213v3_conf.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
214v3_conf.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
215v3_conf.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
216v3_conf.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
217v3_conf.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
218v3_conf.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
219v3_conf.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
220v3_conf.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
221v3_conf.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
222v3_conf.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_conf.c
223v3_cpols.o: ../../e_os.h ../../include/openssl/aes.h
224v3_cpols.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
225v3_cpols.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
226v3_cpols.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
227v3_cpols.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
228v3_cpols.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
229v3_cpols.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
230v3_cpols.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
231v3_cpols.o: ../../include/openssl/err.h ../../include/openssl/evp.h
232v3_cpols.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
233v3_cpols.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
234v3_cpols.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
235v3_cpols.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
236v3_cpols.o: ../../include/openssl/opensslconf.h
237v3_cpols.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
238v3_cpols.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
239v3_cpols.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
240v3_cpols.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
241v3_cpols.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
242v3_cpols.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
243v3_cpols.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
244v3_cpols.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
245v3_cpols.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_cpols.c
246v3_crld.o: ../../e_os.h ../../include/openssl/aes.h
247v3_crld.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
248v3_crld.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
249v3_crld.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
250v3_crld.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
251v3_crld.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
252v3_crld.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
253v3_crld.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
254v3_crld.o: ../../include/openssl/err.h ../../include/openssl/evp.h
255v3_crld.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
256v3_crld.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
257v3_crld.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
258v3_crld.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
259v3_crld.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
260v3_crld.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
261v3_crld.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
262v3_crld.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
263v3_crld.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
264v3_crld.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
265v3_crld.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
266v3_crld.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
267v3_crld.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
268v3_crld.o: ../cryptlib.h v3_crld.c
269v3_enum.o: ../../e_os.h ../../include/openssl/aes.h
270v3_enum.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
271v3_enum.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
272v3_enum.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
273v3_enum.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
274v3_enum.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
275v3_enum.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
276v3_enum.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
277v3_enum.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
278v3_enum.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
279v3_enum.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
280v3_enum.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
281v3_enum.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
282v3_enum.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
283v3_enum.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
284v3_enum.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
285v3_enum.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
286v3_enum.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
287v3_enum.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
288v3_enum.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
289v3_enum.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
290v3_enum.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_enum.c
291v3_extku.o: ../../e_os.h ../../include/openssl/aes.h
292v3_extku.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
293v3_extku.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
294v3_extku.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
295v3_extku.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
296v3_extku.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
297v3_extku.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
298v3_extku.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
299v3_extku.o: ../../include/openssl/err.h ../../include/openssl/evp.h
300v3_extku.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
301v3_extku.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
302v3_extku.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
303v3_extku.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
304v3_extku.o: ../../include/openssl/opensslconf.h
305v3_extku.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
306v3_extku.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
307v3_extku.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
308v3_extku.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
309v3_extku.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
310v3_extku.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
311v3_extku.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
312v3_extku.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
313v3_extku.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_extku.c
314v3_genn.o: ../../e_os.h ../../include/openssl/aes.h
315v3_genn.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
316v3_genn.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
317v3_genn.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
318v3_genn.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
319v3_genn.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
320v3_genn.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
321v3_genn.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
322v3_genn.o: ../../include/openssl/err.h ../../include/openssl/evp.h
323v3_genn.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
324v3_genn.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
325v3_genn.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
326v3_genn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
327v3_genn.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
328v3_genn.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
329v3_genn.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
330v3_genn.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
331v3_genn.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
332v3_genn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
333v3_genn.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
334v3_genn.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
335v3_genn.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
336v3_genn.o: ../cryptlib.h v3_genn.c
337v3_ia5.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
338v3_ia5.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
339v3_ia5.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
340v3_ia5.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
341v3_ia5.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
342v3_ia5.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
343v3_ia5.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
344v3_ia5.o: ../../include/openssl/err.h ../../include/openssl/evp.h
345v3_ia5.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
346v3_ia5.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
347v3_ia5.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
348v3_ia5.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
349v3_ia5.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
350v3_ia5.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
351v3_ia5.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
352v3_ia5.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
353v3_ia5.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
354v3_ia5.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
355v3_ia5.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
356v3_ia5.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
357v3_ia5.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
358v3_ia5.o: ../cryptlib.h v3_ia5.c
359v3_info.o: ../../e_os.h ../../include/openssl/aes.h
360v3_info.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
361v3_info.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
362v3_info.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
363v3_info.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
364v3_info.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
365v3_info.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
366v3_info.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
367v3_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h
368v3_info.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
369v3_info.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
370v3_info.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
371v3_info.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
372v3_info.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
373v3_info.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
374v3_info.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
375v3_info.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
376v3_info.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
377v3_info.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
378v3_info.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
379v3_info.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
380v3_info.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
381v3_info.o: ../cryptlib.h v3_info.c
382v3_int.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
383v3_int.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
384v3_int.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
385v3_int.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
386v3_int.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
387v3_int.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
388v3_int.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
389v3_int.o: ../../include/openssl/err.h ../../include/openssl/evp.h
390v3_int.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
391v3_int.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
392v3_int.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
393v3_int.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
394v3_int.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
395v3_int.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
396v3_int.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
397v3_int.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
398v3_int.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
399v3_int.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
400v3_int.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
401v3_int.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
402v3_int.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
403v3_int.o: ../cryptlib.h v3_int.c
404v3_lib.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
405v3_lib.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
406v3_lib.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
407v3_lib.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
408v3_lib.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
409v3_lib.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
410v3_lib.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
411v3_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
412v3_lib.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
413v3_lib.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
414v3_lib.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
415v3_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
416v3_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
417v3_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
418v3_lib.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
419v3_lib.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
420v3_lib.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
421v3_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
422v3_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
423v3_lib.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
424v3_lib.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
425v3_lib.o: ../cryptlib.h ext_dat.h v3_lib.c
426v3_ocsp.o: ../../e_os.h ../../include/openssl/aes.h
427v3_ocsp.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
428v3_ocsp.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
429v3_ocsp.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
430v3_ocsp.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
431v3_ocsp.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
432v3_ocsp.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
433v3_ocsp.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
434v3_ocsp.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
435v3_ocsp.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
436v3_ocsp.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
437v3_ocsp.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
438v3_ocsp.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h
439v3_ocsp.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
440v3_ocsp.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
441v3_ocsp.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
442v3_ocsp.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
443v3_ocsp.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
444v3_ocsp.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
445v3_ocsp.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
446v3_ocsp.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
447v3_ocsp.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
448v3_ocsp.o: ../cryptlib.h v3_ocsp.c
449v3_pku.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
450v3_pku.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
451v3_pku.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
452v3_pku.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
453v3_pku.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
454v3_pku.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
455v3_pku.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
456v3_pku.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
457v3_pku.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
458v3_pku.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
459v3_pku.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
460v3_pku.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
461v3_pku.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
462v3_pku.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
463v3_pku.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
464v3_pku.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
465v3_pku.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
466v3_pku.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
467v3_pku.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
468v3_pku.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
469v3_pku.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
470v3_pku.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_pku.c
471v3_prn.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
472v3_prn.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
473v3_prn.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
474v3_prn.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
475v3_prn.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
476v3_prn.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
477v3_prn.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
478v3_prn.o: ../../include/openssl/err.h ../../include/openssl/evp.h
479v3_prn.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
480v3_prn.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
481v3_prn.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
482v3_prn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
483v3_prn.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
484v3_prn.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
485v3_prn.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
486v3_prn.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
487v3_prn.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
488v3_prn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
489v3_prn.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
490v3_prn.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
491v3_prn.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
492v3_prn.o: ../cryptlib.h v3_prn.c
493v3_purp.o: ../../e_os.h ../../include/openssl/aes.h
494v3_purp.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
495v3_purp.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
496v3_purp.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
497v3_purp.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
498v3_purp.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
499v3_purp.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
500v3_purp.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
501v3_purp.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
502v3_purp.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
503v3_purp.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
504v3_purp.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
505v3_purp.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
506v3_purp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
507v3_purp.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
508v3_purp.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
509v3_purp.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
510v3_purp.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
511v3_purp.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
512v3_purp.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
513v3_purp.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
514v3_purp.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_purp.c
515v3_skey.o: ../../e_os.h ../../include/openssl/aes.h
516v3_skey.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
517v3_skey.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h
518v3_skey.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
519v3_skey.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
520v3_skey.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
521v3_skey.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
522v3_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
523v3_skey.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
524v3_skey.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h
525v3_skey.o: ../../include/openssl/md4.h ../../include/openssl/md5.h
526v3_skey.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h
527v3_skey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
528v3_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
529v3_skey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
530v3_skey.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
531v3_skey.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
532v3_skey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
533v3_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
534v3_skey.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
535v3_skey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
536v3_skey.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_skey.c
537v3_sxnet.o: ../../e_os.h ../../include/openssl/aes.h
538v3_sxnet.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
539v3_sxnet.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
540v3_sxnet.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
541v3_sxnet.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
542v3_sxnet.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
543v3_sxnet.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
544v3_sxnet.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
545v3_sxnet.o: ../../include/openssl/err.h ../../include/openssl/evp.h
546v3_sxnet.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
547v3_sxnet.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
548v3_sxnet.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
549v3_sxnet.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
550v3_sxnet.o: ../../include/openssl/opensslconf.h
551v3_sxnet.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
552v3_sxnet.o: ../../include/openssl/pkcs7.h ../../include/openssl/rc2.h
553v3_sxnet.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h
554v3_sxnet.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h
555v3_sxnet.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
556v3_sxnet.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
557v3_sxnet.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
558v3_sxnet.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
559v3_sxnet.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_sxnet.c
560v3_utl.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/asn1.h
561v3_utl.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
562v3_utl.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
563v3_utl.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
564v3_utl.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
565v3_utl.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
566v3_utl.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
567v3_utl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
568v3_utl.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
569v3_utl.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
570v3_utl.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
571v3_utl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
572v3_utl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
573v3_utl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
574v3_utl.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
575v3_utl.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
576v3_utl.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
577v3_utl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
578v3_utl.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
579v3_utl.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
580v3_utl.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
581v3_utl.o: ../cryptlib.h v3_utl.c
582v3err.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
583v3err.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h
584v3err.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
585v3err.o: ../../include/openssl/cast.h ../../include/openssl/conf.h
586v3err.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
587v3err.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h
588v3err.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
589v3err.o: ../../include/openssl/err.h ../../include/openssl/evp.h
590v3err.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h
591v3err.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
592v3err.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h
593v3err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
594v3err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
595v3err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
596v3err.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
597v3err.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h
598v3err.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
599v3err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
600v3err.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
601v3err.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
602v3err.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
603v3err.o: v3err.c
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_cpols.c b/src/lib/libssl/src/crypto/x509v3/v3_cpols.c
index 867525f336..0d554f3a2c 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_cpols.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_cpols.c
@@ -137,15 +137,7 @@ static STACK_OF(POLICYINFO) *r2i_certpol(X509V3_EXT_METHOD *method,
137 CONF_VALUE *cnf; 137 CONF_VALUE *cnf;
138 int i, ia5org; 138 int i, ia5org;
139 pols = sk_POLICYINFO_new_null(); 139 pols = sk_POLICYINFO_new_null();
140 if (pols == NULL) {
141 X509V3err(X509V3_F_R2I_CERTPOL, ERR_R_MALLOC_FAILURE);
142 return NULL;
143 }
144 vals = X509V3_parse_list(value); 140 vals = X509V3_parse_list(value);
145 if (vals == NULL) {
146 X509V3err(X509V3_F_R2I_CERTPOL, ERR_R_X509V3_LIB);
147 goto err;
148 }
149 ia5org = 0; 141 ia5org = 0;
150 for(i = 0; i < sk_CONF_VALUE_num(vals); i++) { 142 for(i = 0; i < sk_CONF_VALUE_num(vals); i++) {
151 cnf = sk_CONF_VALUE_value(vals, i); 143 cnf = sk_CONF_VALUE_value(vals, i);
@@ -184,7 +176,6 @@ static STACK_OF(POLICYINFO) *r2i_certpol(X509V3_EXT_METHOD *method,
184 sk_CONF_VALUE_pop_free(vals, X509V3_conf_free); 176 sk_CONF_VALUE_pop_free(vals, X509V3_conf_free);
185 return pols; 177 return pols;
186 err: 178 err:
187 sk_CONF_VALUE_pop_free(vals, X509V3_conf_free);
188 sk_POLICYINFO_pop_free(pols, POLICYINFO_free); 179 sk_POLICYINFO_pop_free(pols, POLICYINFO_free);
189 return NULL; 180 return NULL;
190} 181}
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_utl.c b/src/lib/libssl/src/crypto/x509v3/v3_utl.c
index 34ac2998de..466c91d0e8 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_utl.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_utl.c
@@ -78,7 +78,7 @@ int X509V3_add_value(const char *name, const char *value,
78 CONF_VALUE *vtmp = NULL; 78 CONF_VALUE *vtmp = NULL;
79 char *tname = NULL, *tvalue = NULL; 79 char *tname = NULL, *tvalue = NULL;
80 if(name && !(tname = BUF_strdup(name))) goto err; 80 if(name && !(tname = BUF_strdup(name))) goto err;
81 if(value && !(tvalue = BUF_strdup(value))) goto err;; 81 if(value && !(tvalue = BUF_strdup(value))) goto err;
82 if(!(vtmp = (CONF_VALUE *)OPENSSL_malloc(sizeof(CONF_VALUE)))) goto err; 82 if(!(vtmp = (CONF_VALUE *)OPENSSL_malloc(sizeof(CONF_VALUE)))) goto err;
83 if(!*extlist && !(*extlist = sk_CONF_VALUE_new_null())) goto err; 83 if(!*extlist && !(*extlist = sk_CONF_VALUE_new_null())) goto err;
84 vtmp->section = NULL; 84 vtmp->section = NULL;
diff --git a/src/lib/libssl/src/crypto/x509v3/v3err.c b/src/lib/libssl/src/crypto/x509v3/v3err.c
index e1edaf5248..2df0c3ef01 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3err.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3err.c
@@ -64,118 +64,114 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_X509V3,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_X509V3,0,reason)
70
71static ERR_STRING_DATA X509V3_str_functs[]= 67static ERR_STRING_DATA X509V3_str_functs[]=
72 { 68 {
73{ERR_FUNC(X509V3_F_COPY_EMAIL), "COPY_EMAIL"}, 69{ERR_PACK(0,X509V3_F_COPY_EMAIL,0), "COPY_EMAIL"},
74{ERR_FUNC(X509V3_F_COPY_ISSUER), "COPY_ISSUER"}, 70{ERR_PACK(0,X509V3_F_COPY_ISSUER,0), "COPY_ISSUER"},
75{ERR_FUNC(X509V3_F_DO_EXT_CONF), "DO_EXT_CONF"}, 71{ERR_PACK(0,X509V3_F_DO_EXT_CONF,0), "DO_EXT_CONF"},
76{ERR_FUNC(X509V3_F_DO_EXT_I2D), "DO_EXT_I2D"}, 72{ERR_PACK(0,X509V3_F_DO_EXT_I2D,0), "DO_EXT_I2D"},
77{ERR_FUNC(X509V3_F_HEX_TO_STRING), "hex_to_string"}, 73{ERR_PACK(0,X509V3_F_HEX_TO_STRING,0), "hex_to_string"},
78{ERR_FUNC(X509V3_F_I2S_ASN1_ENUMERATED), "i2s_ASN1_ENUMERATED"}, 74{ERR_PACK(0,X509V3_F_I2S_ASN1_ENUMERATED,0), "i2s_ASN1_ENUMERATED"},
79{ERR_FUNC(X509V3_F_I2S_ASN1_IA5STRING), "I2S_ASN1_IA5STRING"}, 75{ERR_PACK(0,X509V3_F_I2S_ASN1_IA5STRING,0), "I2S_ASN1_IA5STRING"},
80{ERR_FUNC(X509V3_F_I2S_ASN1_INTEGER), "i2s_ASN1_INTEGER"}, 76{ERR_PACK(0,X509V3_F_I2S_ASN1_INTEGER,0), "i2s_ASN1_INTEGER"},
81{ERR_FUNC(X509V3_F_I2V_AUTHORITY_INFO_ACCESS), "I2V_AUTHORITY_INFO_ACCESS"}, 77{ERR_PACK(0,X509V3_F_I2V_AUTHORITY_INFO_ACCESS,0), "I2V_AUTHORITY_INFO_ACCESS"},
82{ERR_FUNC(X509V3_F_NOTICE_SECTION), "NOTICE_SECTION"}, 78{ERR_PACK(0,X509V3_F_NOTICE_SECTION,0), "NOTICE_SECTION"},
83{ERR_FUNC(X509V3_F_NREF_NOS), "NREF_NOS"}, 79{ERR_PACK(0,X509V3_F_NREF_NOS,0), "NREF_NOS"},
84{ERR_FUNC(X509V3_F_POLICY_SECTION), "POLICY_SECTION"}, 80{ERR_PACK(0,X509V3_F_POLICY_SECTION,0), "POLICY_SECTION"},
85{ERR_FUNC(X509V3_F_R2I_CERTPOL), "R2I_CERTPOL"}, 81{ERR_PACK(0,X509V3_F_R2I_CERTPOL,0), "R2I_CERTPOL"},
86{ERR_FUNC(X509V3_F_R2I_PCI), "R2I_PCI"}, 82{ERR_PACK(0,X509V3_F_R2I_PCI,0), "R2I_PCI"},
87{ERR_FUNC(X509V3_F_S2I_ASN1_IA5STRING), "S2I_ASN1_IA5STRING"}, 83{ERR_PACK(0,X509V3_F_S2I_ASN1_IA5STRING,0), "S2I_ASN1_IA5STRING"},
88{ERR_FUNC(X509V3_F_S2I_ASN1_INTEGER), "s2i_ASN1_INTEGER"}, 84{ERR_PACK(0,X509V3_F_S2I_ASN1_INTEGER,0), "s2i_ASN1_INTEGER"},
89{ERR_FUNC(X509V3_F_S2I_ASN1_OCTET_STRING), "s2i_ASN1_OCTET_STRING"}, 85{ERR_PACK(0,X509V3_F_S2I_ASN1_OCTET_STRING,0), "s2i_ASN1_OCTET_STRING"},
90{ERR_FUNC(X509V3_F_S2I_ASN1_SKEY_ID), "S2I_ASN1_SKEY_ID"}, 86{ERR_PACK(0,X509V3_F_S2I_ASN1_SKEY_ID,0), "S2I_ASN1_SKEY_ID"},
91{ERR_FUNC(X509V3_F_S2I_S2I_SKEY_ID), "S2I_S2I_SKEY_ID"}, 87{ERR_PACK(0,X509V3_F_S2I_S2I_SKEY_ID,0), "S2I_S2I_SKEY_ID"},
92{ERR_FUNC(X509V3_F_STRING_TO_HEX), "string_to_hex"}, 88{ERR_PACK(0,X509V3_F_STRING_TO_HEX,0), "string_to_hex"},
93{ERR_FUNC(X509V3_F_SXNET_ADD_ASC), "SXNET_ADD_ASC"}, 89{ERR_PACK(0,X509V3_F_SXNET_ADD_ASC,0), "SXNET_ADD_ASC"},
94{ERR_FUNC(X509V3_F_SXNET_ADD_ID_INTEGER), "SXNET_add_id_INTEGER"}, 90{ERR_PACK(0,X509V3_F_SXNET_ADD_ID_INTEGER,0), "SXNET_add_id_INTEGER"},
95{ERR_FUNC(X509V3_F_SXNET_ADD_ID_ULONG), "SXNET_add_id_ulong"}, 91{ERR_PACK(0,X509V3_F_SXNET_ADD_ID_ULONG,0), "SXNET_add_id_ulong"},
96{ERR_FUNC(X509V3_F_SXNET_GET_ID_ASC), "SXNET_get_id_asc"}, 92{ERR_PACK(0,X509V3_F_SXNET_GET_ID_ASC,0), "SXNET_get_id_asc"},
97{ERR_FUNC(X509V3_F_SXNET_GET_ID_ULONG), "SXNET_get_id_ulong"}, 93{ERR_PACK(0,X509V3_F_SXNET_GET_ID_ULONG,0), "SXNET_get_id_ulong"},
98{ERR_FUNC(X509V3_F_V2I_ACCESS_DESCRIPTION), "V2I_ACCESS_DESCRIPTION"}, 94{ERR_PACK(0,X509V3_F_V2I_ACCESS_DESCRIPTION,0), "V2I_ACCESS_DESCRIPTION"},
99{ERR_FUNC(X509V3_F_V2I_ASN1_BIT_STRING), "V2I_ASN1_BIT_STRING"}, 95{ERR_PACK(0,X509V3_F_V2I_ASN1_BIT_STRING,0), "V2I_ASN1_BIT_STRING"},
100{ERR_FUNC(X509V3_F_V2I_AUTHORITY_KEYID), "V2I_AUTHORITY_KEYID"}, 96{ERR_PACK(0,X509V3_F_V2I_AUTHORITY_KEYID,0), "V2I_AUTHORITY_KEYID"},
101{ERR_FUNC(X509V3_F_V2I_BASIC_CONSTRAINTS), "V2I_BASIC_CONSTRAINTS"}, 97{ERR_PACK(0,X509V3_F_V2I_BASIC_CONSTRAINTS,0), "V2I_BASIC_CONSTRAINTS"},
102{ERR_FUNC(X509V3_F_V2I_CRLD), "V2I_CRLD"}, 98{ERR_PACK(0,X509V3_F_V2I_CRLD,0), "V2I_CRLD"},
103{ERR_FUNC(X509V3_F_V2I_EXT_KU), "V2I_EXT_KU"}, 99{ERR_PACK(0,X509V3_F_V2I_EXT_KU,0), "V2I_EXT_KU"},
104{ERR_FUNC(X509V3_F_V2I_GENERAL_NAME), "v2i_GENERAL_NAME"}, 100{ERR_PACK(0,X509V3_F_V2I_GENERAL_NAME,0), "v2i_GENERAL_NAME"},
105{ERR_FUNC(X509V3_F_V2I_GENERAL_NAMES), "v2i_GENERAL_NAMES"}, 101{ERR_PACK(0,X509V3_F_V2I_GENERAL_NAMES,0), "v2i_GENERAL_NAMES"},
106{ERR_FUNC(X509V3_F_V3_GENERIC_EXTENSION), "V3_GENERIC_EXTENSION"}, 102{ERR_PACK(0,X509V3_F_V3_GENERIC_EXTENSION,0), "V3_GENERIC_EXTENSION"},
107{ERR_FUNC(X509V3_F_X509V3_ADD_I2D), "X509V3_ADD_I2D"}, 103{ERR_PACK(0,X509V3_F_X509V3_ADD_I2D,0), "X509V3_ADD_I2D"},
108{ERR_FUNC(X509V3_F_X509V3_ADD_VALUE), "X509V3_add_value"}, 104{ERR_PACK(0,X509V3_F_X509V3_ADD_VALUE,0), "X509V3_add_value"},
109{ERR_FUNC(X509V3_F_X509V3_EXT_ADD), "X509V3_EXT_add"}, 105{ERR_PACK(0,X509V3_F_X509V3_EXT_ADD,0), "X509V3_EXT_add"},
110{ERR_FUNC(X509V3_F_X509V3_EXT_ADD_ALIAS), "X509V3_EXT_add_alias"}, 106{ERR_PACK(0,X509V3_F_X509V3_EXT_ADD_ALIAS,0), "X509V3_EXT_add_alias"},
111{ERR_FUNC(X509V3_F_X509V3_EXT_CONF), "X509V3_EXT_conf"}, 107{ERR_PACK(0,X509V3_F_X509V3_EXT_CONF,0), "X509V3_EXT_conf"},
112{ERR_FUNC(X509V3_F_X509V3_EXT_I2D), "X509V3_EXT_i2d"}, 108{ERR_PACK(0,X509V3_F_X509V3_EXT_I2D,0), "X509V3_EXT_i2d"},
113{ERR_FUNC(X509V3_F_X509V3_GET_VALUE_BOOL), "X509V3_get_value_bool"}, 109{ERR_PACK(0,X509V3_F_X509V3_GET_VALUE_BOOL,0), "X509V3_get_value_bool"},
114{ERR_FUNC(X509V3_F_X509V3_PARSE_LIST), "X509V3_parse_list"}, 110{ERR_PACK(0,X509V3_F_X509V3_PARSE_LIST,0), "X509V3_parse_list"},
115{ERR_FUNC(X509V3_F_X509_PURPOSE_ADD), "X509_PURPOSE_add"}, 111{ERR_PACK(0,X509V3_F_X509_PURPOSE_ADD,0), "X509_PURPOSE_add"},
116{ERR_FUNC(X509V3_F_X509_PURPOSE_SET), "X509_PURPOSE_set"}, 112{ERR_PACK(0,X509V3_F_X509_PURPOSE_SET,0), "X509_PURPOSE_set"},
117{0,NULL} 113{0,NULL}
118 }; 114 };
119 115
120static ERR_STRING_DATA X509V3_str_reasons[]= 116static ERR_STRING_DATA X509V3_str_reasons[]=
121 { 117 {
122{ERR_REASON(X509V3_R_BAD_IP_ADDRESS) ,"bad ip address"}, 118{X509V3_R_BAD_IP_ADDRESS ,"bad ip address"},
123{ERR_REASON(X509V3_R_BAD_OBJECT) ,"bad object"}, 119{X509V3_R_BAD_OBJECT ,"bad object"},
124{ERR_REASON(X509V3_R_BN_DEC2BN_ERROR) ,"bn dec2bn error"}, 120{X509V3_R_BN_DEC2BN_ERROR ,"bn dec2bn error"},
125{ERR_REASON(X509V3_R_BN_TO_ASN1_INTEGER_ERROR),"bn to asn1 integer error"}, 121{X509V3_R_BN_TO_ASN1_INTEGER_ERROR ,"bn to asn1 integer error"},
126{ERR_REASON(X509V3_R_DUPLICATE_ZONE_ID) ,"duplicate zone id"}, 122{X509V3_R_DUPLICATE_ZONE_ID ,"duplicate zone id"},
127{ERR_REASON(X509V3_R_ERROR_CONVERTING_ZONE),"error converting zone"}, 123{X509V3_R_ERROR_CONVERTING_ZONE ,"error converting zone"},
128{ERR_REASON(X509V3_R_ERROR_CREATING_EXTENSION),"error creating extension"}, 124{X509V3_R_ERROR_CREATING_EXTENSION ,"error creating extension"},
129{ERR_REASON(X509V3_R_ERROR_IN_EXTENSION) ,"error in extension"}, 125{X509V3_R_ERROR_IN_EXTENSION ,"error in extension"},
130{ERR_REASON(X509V3_R_EXPECTED_A_SECTION_NAME),"expected a section name"}, 126{X509V3_R_EXPECTED_A_SECTION_NAME ,"expected a section name"},
131{ERR_REASON(X509V3_R_EXTENSION_EXISTS) ,"extension exists"}, 127{X509V3_R_EXTENSION_EXISTS ,"extension exists"},
132{ERR_REASON(X509V3_R_EXTENSION_NAME_ERROR),"extension name error"}, 128{X509V3_R_EXTENSION_NAME_ERROR ,"extension name error"},
133{ERR_REASON(X509V3_R_EXTENSION_NOT_FOUND),"extension not found"}, 129{X509V3_R_EXTENSION_NOT_FOUND ,"extension not found"},
134{ERR_REASON(X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED),"extension setting not supported"}, 130{X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED,"extension setting not supported"},
135{ERR_REASON(X509V3_R_EXTENSION_VALUE_ERROR),"extension value error"}, 131{X509V3_R_EXTENSION_VALUE_ERROR ,"extension value error"},
136{ERR_REASON(X509V3_R_ILLEGAL_HEX_DIGIT) ,"illegal hex digit"}, 132{X509V3_R_ILLEGAL_HEX_DIGIT ,"illegal hex digit"},
137{ERR_REASON(X509V3_R_INCORRECT_POLICY_SYNTAX_TAG),"incorrect policy syntax tag"}, 133{X509V3_R_INCORRECT_POLICY_SYNTAX_TAG ,"incorrect policy syntax tag"},
138{ERR_REASON(X509V3_R_INVALID_BOOLEAN_STRING),"invalid boolean string"}, 134{X509V3_R_INVALID_BOOLEAN_STRING ,"invalid boolean string"},
139{ERR_REASON(X509V3_R_INVALID_EXTENSION_STRING),"invalid extension string"}, 135{X509V3_R_INVALID_EXTENSION_STRING ,"invalid extension string"},
140{ERR_REASON(X509V3_R_INVALID_NAME) ,"invalid name"}, 136{X509V3_R_INVALID_NAME ,"invalid name"},
141{ERR_REASON(X509V3_R_INVALID_NULL_ARGUMENT),"invalid null argument"}, 137{X509V3_R_INVALID_NULL_ARGUMENT ,"invalid null argument"},
142{ERR_REASON(X509V3_R_INVALID_NULL_NAME) ,"invalid null name"}, 138{X509V3_R_INVALID_NULL_NAME ,"invalid null name"},
143{ERR_REASON(X509V3_R_INVALID_NULL_VALUE) ,"invalid null value"}, 139{X509V3_R_INVALID_NULL_VALUE ,"invalid null value"},
144{ERR_REASON(X509V3_R_INVALID_NUMBER) ,"invalid number"}, 140{X509V3_R_INVALID_NUMBER ,"invalid number"},
145{ERR_REASON(X509V3_R_INVALID_NUMBERS) ,"invalid numbers"}, 141{X509V3_R_INVALID_NUMBERS ,"invalid numbers"},
146{ERR_REASON(X509V3_R_INVALID_OBJECT_IDENTIFIER),"invalid object identifier"}, 142{X509V3_R_INVALID_OBJECT_IDENTIFIER ,"invalid object identifier"},
147{ERR_REASON(X509V3_R_INVALID_OPTION) ,"invalid option"}, 143{X509V3_R_INVALID_OPTION ,"invalid option"},
148{ERR_REASON(X509V3_R_INVALID_POLICY_IDENTIFIER),"invalid policy identifier"}, 144{X509V3_R_INVALID_POLICY_IDENTIFIER ,"invalid policy identifier"},
149{ERR_REASON(X509V3_R_INVALID_PROXY_POLICY_IDENTIFIER),"invalid proxy policy identifier"}, 145{X509V3_R_INVALID_PROXY_POLICY_IDENTIFIER,"invalid proxy policy identifier"},
150{ERR_REASON(X509V3_R_INVALID_PROXY_POLICY_SETTING),"invalid proxy policy setting"}, 146{X509V3_R_INVALID_PROXY_POLICY_SETTING ,"invalid proxy policy setting"},
151{ERR_REASON(X509V3_R_INVALID_PURPOSE) ,"invalid purpose"}, 147{X509V3_R_INVALID_PURPOSE ,"invalid purpose"},
152{ERR_REASON(X509V3_R_INVALID_SECTION) ,"invalid section"}, 148{X509V3_R_INVALID_SECTION ,"invalid section"},
153{ERR_REASON(X509V3_R_INVALID_SYNTAX) ,"invalid syntax"}, 149{X509V3_R_INVALID_SYNTAX ,"invalid syntax"},
154{ERR_REASON(X509V3_R_ISSUER_DECODE_ERROR),"issuer decode error"}, 150{X509V3_R_ISSUER_DECODE_ERROR ,"issuer decode error"},
155{ERR_REASON(X509V3_R_MISSING_VALUE) ,"missing value"}, 151{X509V3_R_MISSING_VALUE ,"missing value"},
156{ERR_REASON(X509V3_R_NEED_ORGANIZATION_AND_NUMBERS),"need organization and numbers"}, 152{X509V3_R_NEED_ORGANIZATION_AND_NUMBERS ,"need organization and numbers"},
157{ERR_REASON(X509V3_R_NO_CONFIG_DATABASE) ,"no config database"}, 153{X509V3_R_NO_CONFIG_DATABASE ,"no config database"},
158{ERR_REASON(X509V3_R_NO_ISSUER_CERTIFICATE),"no issuer certificate"}, 154{X509V3_R_NO_ISSUER_CERTIFICATE ,"no issuer certificate"},
159{ERR_REASON(X509V3_R_NO_ISSUER_DETAILS) ,"no issuer details"}, 155{X509V3_R_NO_ISSUER_DETAILS ,"no issuer details"},
160{ERR_REASON(X509V3_R_NO_POLICY_IDENTIFIER),"no policy identifier"}, 156{X509V3_R_NO_POLICY_IDENTIFIER ,"no policy identifier"},
161{ERR_REASON(X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED),"no proxy cert policy language defined"}, 157{X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED,"no proxy cert policy language defined"},
162{ERR_REASON(X509V3_R_NO_PUBLIC_KEY) ,"no public key"}, 158{X509V3_R_NO_PUBLIC_KEY ,"no public key"},
163{ERR_REASON(X509V3_R_NO_SUBJECT_DETAILS) ,"no subject details"}, 159{X509V3_R_NO_SUBJECT_DETAILS ,"no subject details"},
164{ERR_REASON(X509V3_R_ODD_NUMBER_OF_DIGITS),"odd number of digits"}, 160{X509V3_R_ODD_NUMBER_OF_DIGITS ,"odd number of digits"},
165{ERR_REASON(X509V3_R_POLICY_LANGUAGE_ALREADTY_DEFINED),"policy language alreadty defined"}, 161{X509V3_R_POLICY_LANGUAGE_ALREADTY_DEFINED,"policy language alreadty defined"},
166{ERR_REASON(X509V3_R_POLICY_PATH_LENGTH) ,"policy path length"}, 162{X509V3_R_POLICY_PATH_LENGTH ,"policy path length"},
167{ERR_REASON(X509V3_R_POLICY_PATH_LENGTH_ALREADTY_DEFINED),"policy path length alreadty defined"}, 163{X509V3_R_POLICY_PATH_LENGTH_ALREADTY_DEFINED,"policy path length alreadty defined"},
168{ERR_REASON(X509V3_R_POLICY_SYNTAX_NOT) ,"policy syntax not"}, 164{X509V3_R_POLICY_SYNTAX_NOT ,"policy syntax not"},
169{ERR_REASON(X509V3_R_POLICY_SYNTAX_NOT_CURRENTLY_SUPPORTED),"policy syntax not currently supported"}, 165{X509V3_R_POLICY_SYNTAX_NOT_CURRENTLY_SUPPORTED,"policy syntax not currently supported"},
170{ERR_REASON(X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY),"policy when proxy language requires no policy"}, 166{X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY,"policy when proxy language requires no policy"},
171{ERR_REASON(X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS),"unable to get issuer details"}, 167{X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS ,"unable to get issuer details"},
172{ERR_REASON(X509V3_R_UNABLE_TO_GET_ISSUER_KEYID),"unable to get issuer keyid"}, 168{X509V3_R_UNABLE_TO_GET_ISSUER_KEYID ,"unable to get issuer keyid"},
173{ERR_REASON(X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT),"unknown bit string argument"}, 169{X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT ,"unknown bit string argument"},
174{ERR_REASON(X509V3_R_UNKNOWN_EXTENSION) ,"unknown extension"}, 170{X509V3_R_UNKNOWN_EXTENSION ,"unknown extension"},
175{ERR_REASON(X509V3_R_UNKNOWN_EXTENSION_NAME),"unknown extension name"}, 171{X509V3_R_UNKNOWN_EXTENSION_NAME ,"unknown extension name"},
176{ERR_REASON(X509V3_R_UNKNOWN_OPTION) ,"unknown option"}, 172{X509V3_R_UNKNOWN_OPTION ,"unknown option"},
177{ERR_REASON(X509V3_R_UNSUPPORTED_OPTION) ,"unsupported option"}, 173{X509V3_R_UNSUPPORTED_OPTION ,"unsupported option"},
178{ERR_REASON(X509V3_R_USER_TOO_LONG) ,"user too long"}, 174{X509V3_R_USER_TOO_LONG ,"user too long"},
179{0,NULL} 175{0,NULL}
180 }; 176 };
181 177
@@ -189,8 +185,8 @@ void ERR_load_X509V3_strings(void)
189 { 185 {
190 init=0; 186 init=0;
191#ifndef OPENSSL_NO_ERR 187#ifndef OPENSSL_NO_ERR
192 ERR_load_strings(0,X509V3_str_functs); 188 ERR_load_strings(ERR_LIB_X509V3,X509V3_str_functs);
193 ERR_load_strings(0,X509V3_str_reasons); 189 ERR_load_strings(ERR_LIB_X509V3,X509V3_str_reasons);
194#endif 190#endif
195 191
196 } 192 }
diff --git a/src/lib/libssl/src/demos/easy_tls/Makefile b/src/lib/libssl/src/demos/easy_tls/Makefile
index 31a54eaf27..bec7e7265e 100644
--- a/src/lib/libssl/src/demos/easy_tls/Makefile
+++ b/src/lib/libssl/src/demos/easy_tls/Makefile
@@ -1,5 +1,5 @@
1# Makefile for easy-tls example application (rudimentary client and server) 1# Makefile for easy-tls example application (rudimentary client and server)
2# $Id: Makefile,v 1.1.1.1 2002/09/05 12:51:06 markus Exp $ 2# $Id: Makefile,v 1.3 2002/09/10 16:31:56 markus Exp $
3 3
4SOLARIS_CFLAGS=-Wall -pedantic -g -O2 4SOLARIS_CFLAGS=-Wall -pedantic -g -O2
5SOLARIS_LIBS=-lxnet 5SOLARIS_LIBS=-lxnet
diff --git a/src/lib/libssl/src/demos/easy_tls/cacerts.pem b/src/lib/libssl/src/demos/easy_tls/cacerts.pem
index 18ab66b57c..b6db7cf2bb 100644
--- a/src/lib/libssl/src/demos/easy_tls/cacerts.pem
+++ b/src/lib/libssl/src/demos/easy_tls/cacerts.pem
@@ -1,4 +1,4 @@
1$Id: cacerts.pem,v 1.1.1.1 2002/09/05 12:51:05 markus Exp $ 1$Id: cacerts.pem,v 1.3 2002/09/10 16:31:56 markus Exp $
2 2
3issuer= /C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Test PCA (1024 bit) 3issuer= /C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Test PCA (1024 bit)
4subject=/C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Test CA (1024 bit) 4subject=/C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Test CA (1024 bit)
diff --git a/src/lib/libssl/src/demos/easy_tls/cert.pem b/src/lib/libssl/src/demos/easy_tls/cert.pem
index c984d023b7..3fcf302e2b 100644
--- a/src/lib/libssl/src/demos/easy_tls/cert.pem
+++ b/src/lib/libssl/src/demos/easy_tls/cert.pem
@@ -1,4 +1,4 @@
1$Id: cert.pem,v 1.1.1.1 2002/09/05 12:51:05 markus Exp $ 1$Id: cert.pem,v 1.3 2002/09/10 16:31:56 markus Exp $
2 2
3Example certificate and key. 3Example certificate and key.
4 4
diff --git a/src/lib/libssl/src/demos/easy_tls/easy-tls.c b/src/lib/libssl/src/demos/easy_tls/easy-tls.c
index 66fac1f1e6..c958f4b609 100644
--- a/src/lib/libssl/src/demos/easy_tls/easy-tls.c
+++ b/src/lib/libssl/src/demos/easy_tls/easy-tls.c
@@ -1,7 +1,7 @@
1/* -*- Mode: C; c-file-style: "bsd" -*- */ 1/* -*- Mode: C; c-file-style: "bsd" -*- */
2/* 2/*
3 * easy-tls.c -- generic TLS proxy. 3 * easy-tls.c -- generic TLS proxy.
4 * $Id: easy-tls.c,v 1.1.1.1 2002/09/05 12:51:06 markus Exp $ 4 * $Id: easy-tls.c,v 1.3 2002/09/10 16:31:56 markus Exp $
5 */ 5 */
6/* 6/*
7 (c) Copyright 1999 Bodo Moeller. All rights reserved. 7 (c) Copyright 1999 Bodo Moeller. All rights reserved.
@@ -73,7 +73,7 @@
73 */ 73 */
74 74
75static char const rcsid[] = 75static char const rcsid[] =
76"$Id: easy-tls.c,v 1.1.1.1 2002/09/05 12:51:06 markus Exp $"; 76"$Id: easy-tls.c,v 1.3 2002/09/10 16:31:56 markus Exp $";
77 77
78#include <assert.h> 78#include <assert.h>
79#include <errno.h> 79#include <errno.h>
diff --git a/src/lib/libssl/src/demos/easy_tls/easy-tls.h b/src/lib/libssl/src/demos/easy_tls/easy-tls.h
index c1a6448116..7ea26203c1 100644
--- a/src/lib/libssl/src/demos/easy_tls/easy-tls.h
+++ b/src/lib/libssl/src/demos/easy_tls/easy-tls.h
@@ -1,7 +1,7 @@
1/* -*- Mode: C; c-file-style: "bsd" -*- */ 1/* -*- Mode: C; c-file-style: "bsd" -*- */
2/* 2/*
3 * easy-tls.h -- generic TLS proxy. 3 * easy-tls.h -- generic TLS proxy.
4 * $Id: easy-tls.h,v 1.1.1.1 2002/09/05 12:51:06 markus Exp $ 4 * $Id: easy-tls.h,v 1.3 2002/09/10 16:31:56 markus Exp $
5 */ 5 */
6/* 6/*
7 * (c) Copyright 1999 Bodo Moeller. All rights reserved. 7 * (c) Copyright 1999 Bodo Moeller. All rights reserved.
diff --git a/src/lib/libssl/src/demos/easy_tls/test.c b/src/lib/libssl/src/demos/easy_tls/test.c
index e7ccd26d30..9b478c3fd8 100644
--- a/src/lib/libssl/src/demos/easy_tls/test.c
+++ b/src/lib/libssl/src/demos/easy_tls/test.c
@@ -1,5 +1,5 @@
1/* test.c */ 1/* test.c */
2/* $Id: test.c,v 1.1.1.1 2002/09/05 12:51:06 markus Exp $ */ 2/* $Id: test.c,v 1.3 2002/09/10 16:31:56 markus Exp $ */
3 3
4#define L_PORT 9999 4#define L_PORT 9999
5#define C_PORT 443 5#define C_PORT 443
diff --git a/src/lib/libssl/src/demos/easy_tls/test.h b/src/lib/libssl/src/demos/easy_tls/test.h
index 1af31dc456..b5792a0a81 100644
--- a/src/lib/libssl/src/demos/easy_tls/test.h
+++ b/src/lib/libssl/src/demos/easy_tls/test.h
@@ -1,5 +1,5 @@
1/* test.h */ 1/* test.h */
2/* $Id: test.h,v 1.1.1.1 2002/09/05 12:51:06 markus Exp $ */ 2/* $Id: test.h,v 1.3 2002/09/10 16:31:56 markus Exp $ */
3 3
4 4
5void test_process_init(int fd, int client_p, void *apparg); 5void test_process_init(int fd, int client_p, void *apparg);
diff --git a/src/lib/libssl/src/doc/apps/CA.pl.pod b/src/lib/libssl/src/doc/apps/CA.pl.pod
index ed69952f37..58e0f52001 100644
--- a/src/lib/libssl/src/doc/apps/CA.pl.pod
+++ b/src/lib/libssl/src/doc/apps/CA.pl.pod
@@ -47,7 +47,7 @@ written to the file "newreq.pem".
47creates a new certificate request. The private key and request are 47creates a new certificate request. The private key and request are
48written to the file "newreq.pem". 48written to the file "newreq.pem".
49 49
50=item B<-newreq-nodes> 50=item B<-newreq-nowdes>
51 51
52is like B<-newreq> except that the private key will not be encrypted. 52is like B<-newreq> except that the private key will not be encrypted.
53 53
diff --git a/src/lib/libssl/src/doc/apps/ca.pod b/src/lib/libssl/src/doc/apps/ca.pod
index f15df49d4f..74f45ca2f9 100644
--- a/src/lib/libssl/src/doc/apps/ca.pod
+++ b/src/lib/libssl/src/doc/apps/ca.pod
@@ -391,7 +391,7 @@ the same as B<-msie_hack>
391the same as B<-policy>. Mandatory. See the B<POLICY FORMAT> section 391the same as B<-policy>. Mandatory. See the B<POLICY FORMAT> section
392for more information. 392for more information.
393 393
394=item B<name_opt>, B<cert_opt> 394=item B<nameopt>, B<certopt>
395 395
396these options allow the format used to display the certificate details 396these options allow the format used to display the certificate details
397when asking the user to confirm signing. All the options supported by 397when asking the user to confirm signing. All the options supported by
@@ -513,8 +513,8 @@ A sample configuration file with the relevant sections for B<ca>:
513 policy = policy_any # default policy 513 policy = policy_any # default policy
514 email_in_dn = no # Don't add the email into cert DN 514 email_in_dn = no # Don't add the email into cert DN
515 515
516 name_opt = ca_default # Subject name display option 516 nameopt = ca_default # Subject name display option
517 cert_opt = ca_default # Certificate display option 517 certopt = ca_default # Certificate display option
518 copy_extensions = none # Don't copy extensions from request 518 copy_extensions = none # Don't copy extensions from request
519 519
520 [ policy_any ] 520 [ policy_any ]
diff --git a/src/lib/libssl/src/doc/apps/enc.pod b/src/lib/libssl/src/doc/apps/enc.pod
index c43da5b3f1..18fe7c81c7 100644
--- a/src/lib/libssl/src/doc/apps/enc.pod
+++ b/src/lib/libssl/src/doc/apps/enc.pod
@@ -191,12 +191,12 @@ Blowfish and RC5 algorithms use a 128 bit key.
191 des-ecb DES in ECB mode 191 des-ecb DES in ECB mode
192 192
193 des-ede-cbc Two key triple DES EDE in CBC mode 193 des-ede-cbc Two key triple DES EDE in CBC mode
194 des-ede Two key triple DES EDE in ECB mode 194 des-ede Alias for des-ede
195 des-ede-cfb Two key triple DES EDE in CFB mode 195 des-ede-cfb Two key triple DES EDE in CFB mode
196 des-ede-ofb Two key triple DES EDE in OFB mode 196 des-ede-ofb Two key triple DES EDE in OFB mode
197 197
198 des-ede3-cbc Three key triple DES EDE in CBC mode 198 des-ede3-cbc Three key triple DES EDE in CBC mode
199 des-ede3 Three key triple DES EDE in ECB mode 199 des-ede3 Alias for des-ede3-cbc
200 des3 Alias for des-ede3-cbc 200 des3 Alias for des-ede3-cbc
201 des-ede3-cfb Three key triple DES EDE CFB mode 201 des-ede3-cfb Three key triple DES EDE CFB mode
202 des-ede3-ofb Three key triple DES EDE in OFB mode 202 des-ede3-ofb Three key triple DES EDE in OFB mode
@@ -211,9 +211,9 @@ Blowfish and RC5 algorithms use a 128 bit key.
211 211
212 rc2-cbc 128 bit RC2 in CBC mode 212 rc2-cbc 128 bit RC2 in CBC mode
213 rc2 Alias for rc2-cbc 213 rc2 Alias for rc2-cbc
214 rc2-cfb 128 bit RC2 in CFB mode 214 rc2-cfb 128 bit RC2 in CBC mode
215 rc2-ecb 128 bit RC2 in ECB mode 215 rc2-ecb 128 bit RC2 in CBC mode
216 rc2-ofb 128 bit RC2 in OFB mode 216 rc2-ofb 128 bit RC2 in CBC mode
217 rc2-64-cbc 64 bit RC2 in CBC mode 217 rc2-64-cbc 64 bit RC2 in CBC mode
218 rc2-40-cbc 40 bit RC2 in CBC mode 218 rc2-40-cbc 40 bit RC2 in CBC mode
219 219
@@ -223,9 +223,9 @@ Blowfish and RC5 algorithms use a 128 bit key.
223 223
224 rc5-cbc RC5 cipher in CBC mode 224 rc5-cbc RC5 cipher in CBC mode
225 rc5 Alias for rc5-cbc 225 rc5 Alias for rc5-cbc
226 rc5-cfb RC5 cipher in CFB mode 226 rc5-cfb RC5 cipher in CBC mode
227 rc5-ecb RC5 cipher in ECB mode 227 rc5-ecb RC5 cipher in CBC mode
228 rc5-ofb RC5 cipher in OFB mode 228 rc5-ofb RC5 cipher in CBC mode
229 229
230=head1 EXAMPLES 230=head1 EXAMPLES
231 231
diff --git a/src/lib/libssl/src/doc/crypto/EVP_DigestInit.pod b/src/lib/libssl/src/doc/crypto/EVP_DigestInit.pod
index 1cb315e739..faa992286b 100644
--- a/src/lib/libssl/src/doc/crypto/EVP_DigestInit.pod
+++ b/src/lib/libssl/src/doc/crypto/EVP_DigestInit.pod
@@ -236,9 +236,9 @@ even though they are identical digests.
236 236
237=head1 SEE ALSO 237=head1 SEE ALSO
238 238
239L<evp(3)|evp(3)>, L<hmac(3)|hmac(3)>, L<md2(3)|md2(3)>, 239L<evp(3)|evp(3)>, L<HMAC(3)|HMAC(3)>, L<MD2(3)|MD2(3)>,
240L<md5(3)|md5(3)>, L<mdc2(3)|mdc2(3)>, L<ripemd(3)|ripemd(3)>, 240L<MD5(3)|MD5(3)>, L<MDC2(3)|MDC2(3)>, L<RIPEMD160(3)|RIPEMD160(3)>,
241L<sha(3)|sha(3)>, L<dgst(1)|dgst(1)> 241L<SHA1(3)|SHA1(3)>
242 242
243=head1 HISTORY 243=head1 HISTORY
244 244
diff --git a/src/lib/libssl/src/doc/crypto/EVP_EncryptInit.pod b/src/lib/libssl/src/doc/crypto/EVP_EncryptInit.pod
index 8271d3dfc4..40e525dd56 100644
--- a/src/lib/libssl/src/doc/crypto/EVP_EncryptInit.pod
+++ b/src/lib/libssl/src/doc/crypto/EVP_EncryptInit.pod
@@ -22,7 +22,7 @@ EVP_CIPHER_CTX_set_padding - EVP cipher routines
22 22
23 #include <openssl/evp.h> 23 #include <openssl/evp.h>
24 24
25 void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a); 25 int EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a);
26 26
27 int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, 27 int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type,
28 ENGINE *impl, unsigned char *key, unsigned char *iv); 28 ENGINE *impl, unsigned char *key, unsigned char *iv);
@@ -236,8 +236,8 @@ RC5 can be set.
236 236
237=head1 RETURN VALUES 237=head1 RETURN VALUES
238 238
239EVP_EncryptInit_ex(), EVP_EncryptUpdate() and EVP_EncryptFinal_ex() 239EVP_CIPHER_CTX_init, EVP_EncryptInit_ex(), EVP_EncryptUpdate() and
240return 1 for success and 0 for failure. 240EVP_EncryptFinal_ex() return 1 for success and 0 for failure.
241 241
242EVP_DecryptInit_ex() and EVP_DecryptUpdate() return 1 for success and 0 for failure. 242EVP_DecryptInit_ex() and EVP_DecryptUpdate() return 1 for success and 0 for failure.
243EVP_DecryptFinal_ex() returns 0 if the decrypt failed or 1 for success. 243EVP_DecryptFinal_ex() returns 0 if the decrypt failed or 1 for success.
diff --git a/src/lib/libssl/src/doc/crypto/EVP_SignInit.pod b/src/lib/libssl/src/doc/crypto/EVP_SignInit.pod
index b6e62ce7f6..0bace24938 100644
--- a/src/lib/libssl/src/doc/crypto/EVP_SignInit.pod
+++ b/src/lib/libssl/src/doc/crypto/EVP_SignInit.pod
@@ -80,10 +80,10 @@ EVP_SignUpdate() could not be made after calling EVP_SignFinal().
80=head1 SEE ALSO 80=head1 SEE ALSO
81 81
82L<EVP_VerifyInit(3)|EVP_VerifyInit(3)>, 82L<EVP_VerifyInit(3)|EVP_VerifyInit(3)>,
83L<EVP_DigestInit(3)|EVP_DigestInit(3)>, L<err(3)|err(3)>, 83L<EVP_DigestInit(3)|EVP_DigestInit(3)>, L<ERR_get_error(3)|ERR_get_error(3)>,
84L<evp(3)|evp(3)>, L<hmac(3)|hmac(3)>, L<md2(3)|md2(3)>, 84L<evp(3)|evp(3)>, L<HMAC(3)|HMAC(3)>, L<MD2(3)|MD2(3)>,
85L<md5(3)|md5(3)>, L<mdc2(3)|mdc2(3)>, L<ripemd(3)|ripemd(3)>, 85L<MD5(3)|MD5(3)>, L<MDC2(3)|MDC2(3)>, L<RIPEMD(3)|RIPEMD(3)>,
86L<sha(3)|sha(3)>, L<dgst(1)|dgst(1)> 86L<SHA1(3)|SHA1(3)>, L<digest(1)|digest(1)>
87 87
88=head1 HISTORY 88=head1 HISTORY
89 89
diff --git a/src/lib/libssl/src/doc/crypto/acss.pod b/src/lib/libssl/src/doc/crypto/acss.pod
new file mode 100644
index 0000000000..022a803be5
--- /dev/null
+++ b/src/lib/libssl/src/doc/crypto/acss.pod
@@ -0,0 +1,66 @@
1=pod
2
3=head1 NAME
4
5acss, acss_setkey - ACSS encryption
6
7=head1 SYNOPSIS
8
9 #include <openssl/acss.h>
10
11 void acss_setkey(ACSS_KEY *key, const unsigned char *data, int enc,
12 int mode);
13
14 void acss(ACSS_KEY *key, unsigned long len, const unsigned char *in,
15 unsigned char *out);
16
17=head1 DESCRIPTION
18
19This library implements the Alleged Content Scrambling System. It is believed
20to be interoperable with CSS of the DVD Copy Control Association.
21
22ACSS is a stream cipher with a fixed key length of 40 bit (5 byte).
23
24ACSS consists of a key setup phase and the actual encryption or decryption
25phase.
26
27acss_setkey() sets up the B<ACSS_KEY> B<key> using the 40 bit key at B<data>.
28If the flag B<enc> is set to B<1> B<key> will be used for encryption,
29otherwise for decryption. The integer B<mode> denotes the mode to use.
30Acceptible values are B<0> to B<3>. For any other value mode B<0> is used.
31
32acss() encrypts or decrypts the B<len> bytes of B<in> using B<key> and places
33the result at B<out>.
34
35Applications should use the higher level functions
36L<EVP_EncryptInit(3)|EVP_EncryptInit(3)> etc. instead of calling the acss
37functions directly.
38
39=head1 RETURN VALUES
40
41None of the functions presented here return any value.
42
43=head1 NOTE
44
45ACSS is considered as an insecure cipher. Therefore, use of ACSS is
46discouraged.
47
48=head1 SEE ALSO
49
50RC4(3), arc4random(3)
51
52=head1 History
53
54A proprietary algorithm called CSS can be licensed from the DVD Copy Control
55Association (DVD CCA). CSS is considered a trade secret and is not patented.
56In October 1999 source code for CSS was posted anonymously to the LiViD
57mailing list. Since then, several implementations and mathematical
58descriptions of CSS are available and CSS has been subject to cryptanalysis.
59The DVD CCA has repeatedly failed to sue individuals for publishing such
60information about CSS.
61
62ACSS is a stream cipher written from scratch and believed to be interoperable
63with CSS.
64
65=cut
66
diff --git a/src/lib/libssl/src/doc/crypto/des_modes.pod b/src/lib/libssl/src/doc/crypto/des_modes.pod
index da75e8007d..0cc22150e7 100644
--- a/src/lib/libssl/src/doc/crypto/des_modes.pod
+++ b/src/lib/libssl/src/doc/crypto/des_modes.pod
@@ -2,7 +2,7 @@
2 2
3=head1 NAME 3=head1 NAME
4 4
5Modes of DES - the variants of DES and other crypto algorithms of OpenSSL 5des_modes - the variants of DES and other crypto algorithms of OpenSSL
6 6
7=head1 DESCRIPTION 7=head1 DESCRIPTION
8 8
@@ -246,8 +246,7 @@ it to:
246 246
247=head1 SEE ALSO 247=head1 SEE ALSO
248 248
249L<blowfish(3)|blowfish(3)>, L<des(3)|des(3)>, L<idea(3)|idea(3)>, 249L<blowfish(3)|blowfish(3)>
250L<rc2(3)|rc2(3)>
251 250
252=cut 251=cut
253 252
diff --git a/src/lib/libssl/src/doc/crypto/dsa.pod b/src/lib/libssl/src/doc/crypto/dsa.pod
index da07d2b930..ae2e5d81f9 100644
--- a/src/lib/libssl/src/doc/crypto/dsa.pod
+++ b/src/lib/libssl/src/doc/crypto/dsa.pod
@@ -101,8 +101,7 @@ Standard, DSS), ANSI X9.30
101=head1 SEE ALSO 101=head1 SEE ALSO
102 102
103L<bn(3)|bn(3)>, L<dh(3)|dh(3)>, L<err(3)|err(3)>, L<rand(3)|rand(3)>, 103L<bn(3)|bn(3)>, L<dh(3)|dh(3)>, L<err(3)|err(3)>, L<rand(3)|rand(3)>,
104L<rsa(3)|rsa(3)>, L<sha(3)|sha(3)>, L<engine(3)|engine(3)>, 104L<rsa(3)|rsa(3)>, L<SHA1(3)|SHA1(3)>, L<DSA_new(3)|DSA_new(3)>,
105L<DSA_new(3)|DSA_new(3)>,
106L<DSA_size(3)|DSA_size(3)>, 105L<DSA_size(3)|DSA_size(3)>,
107L<DSA_generate_parameters(3)|DSA_generate_parameters(3)>, 106L<DSA_generate_parameters(3)|DSA_generate_parameters(3)>,
108L<DSA_dup_DH(3)|DSA_dup_DH(3)>, 107L<DSA_dup_DH(3)|DSA_dup_DH(3)>,
diff --git a/src/lib/libssl/src/doc/crypto/hmac.pod b/src/lib/libssl/src/doc/crypto/hmac.pod
index 0bd79a6d3a..b1f5f368ed 100644
--- a/src/lib/libssl/src/doc/crypto/hmac.pod
+++ b/src/lib/libssl/src/doc/crypto/hmac.pod
@@ -18,7 +18,7 @@ authentication code
18 void HMAC_Init(HMAC_CTX *ctx, const void *key, int key_len, 18 void 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 void HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int key_len,
21 const EVP_MD *md, ENGINE *impl); 21 const EVP_MD *md);
22 void HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, int len); 22 void 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 void HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len);
24 24
@@ -89,7 +89,7 @@ RFC 2104
89 89
90=head1 SEE ALSO 90=head1 SEE ALSO
91 91
92L<sha(3)|sha(3)>, L<evp(3)|evp(3)> 92L<SHA1(3)|SHA1(3)>, L<EVP_DigestInit(3)|EVP_DigestInit(3)>
93 93
94=head1 HISTORY 94=head1 HISTORY
95 95
diff --git a/src/lib/libssl/src/doc/crypto/mdc2.pod b/src/lib/libssl/src/doc/crypto/mdc2.pod
index 11dc303e04..538f474e30 100644
--- a/src/lib/libssl/src/doc/crypto/mdc2.pod
+++ b/src/lib/libssl/src/doc/crypto/mdc2.pod
@@ -54,7 +54,7 @@ ISO/IEC 10118-2, with DES
54 54
55=head1 SEE ALSO 55=head1 SEE ALSO
56 56
57L<sha(3)|sha(3)>, L<EVP_DigestInit(3)|EVP_DigestInit(3)> 57L<SHA1(3)|SHA1(3)>, L<EVP_DigestInit(3)|EVP_DigestInit(3)>
58 58
59=head1 HISTORY 59=head1 HISTORY
60 60
diff --git a/src/lib/libssl/src/doc/crypto/ripemd.pod b/src/lib/libssl/src/doc/crypto/ripemd.pod
index 31054b6a8c..9a634ca866 100644
--- a/src/lib/libssl/src/doc/crypto/ripemd.pod
+++ b/src/lib/libssl/src/doc/crypto/ripemd.pod
@@ -56,7 +56,7 @@ ISO/IEC 10118-3 (draft) (??)
56 56
57=head1 SEE ALSO 57=head1 SEE ALSO
58 58
59L<sha(3)|sha(3)>, L<hmac(3)|hmac(3)>, L<EVP_DigestInit(3)|EVP_DigestInit(3)> 59L<SHA1(3)|SHA1(3)>, L<HMAC(3)|HMAC(3)>, L<EVP_DigestInit(3)|EVP_DigestInit(3)>
60 60
61=head1 HISTORY 61=head1 HISTORY
62 62
diff --git a/src/lib/libssl/src/doc/crypto/sha.pod b/src/lib/libssl/src/doc/crypto/sha.pod
index 0ba315d6d7..158457270f 100644
--- a/src/lib/libssl/src/doc/crypto/sha.pod
+++ b/src/lib/libssl/src/doc/crypto/sha.pod
@@ -60,7 +60,7 @@ ANSI X9.30
60 60
61=head1 SEE ALSO 61=head1 SEE ALSO
62 62
63L<ripemd(3)|ripemd(3)>, L<hmac(3)|hmac(3)>, L<EVP_DigestInit(3)|EVP_DigestInit(3)> 63L<RIPEMD160(3)|RIPEMD160(3)>, L<HMAC(3)|HMAC(3)>, L<EVP_DigestInit(3)|EVP_DigestInit(3)>
64 64
65=head1 HISTORY 65=head1 HISTORY
66 66
diff --git a/src/lib/libssl/src/doc/crypto/threads.pod b/src/lib/libssl/src/doc/crypto/threads.pod
index 3df4ecd776..afa45cd76c 100644
--- a/src/lib/libssl/src/doc/crypto/threads.pod
+++ b/src/lib/libssl/src/doc/crypto/threads.pod
@@ -65,10 +65,9 @@ B<CRYPTO_LOCK>, and releases it otherwise.
65B<file> and B<line> are the file number of the function setting the 65B<file> and B<line> are the file number of the function setting the
66lock. They can be useful for debugging. 66lock. They can be useful for debugging.
67 67
68id_function(void) is a function that returns a thread ID, for example 68id_function(void) is a function that returns a thread ID. It is not
69pthread_self() if it returns an integer (see NOTES below). It isn't
70needed on Windows nor on platforms where getpid() returns a different 69needed on Windows nor on platforms where getpid() returns a different
71ID for each thread (see NOTES below). 70ID for each thread (most notably Linux).
72 71
73Additionally, OpenSSL supports dynamic locks, and sometimes, some parts 72Additionally, OpenSSL supports dynamic locks, and sometimes, some parts
74of OpenSSL need it for better performance. To enable this, the following 73of OpenSSL need it for better performance. To enable this, the following
@@ -125,13 +124,13 @@ CRYPTO_get_new_dynlockid() returns the index to the newly created lock.
125 124
126The other functions return no values. 125The other functions return no values.
127 126
128=head1 NOTES 127=head1 NOTE
129 128
130You can find out if OpenSSL was configured with thread support: 129You can find out if OpenSSL was configured with thread support:
131 130
132 #define OPENSSL_THREAD_DEFINES 131 #define OPENSSL_THREAD_DEFINES
133 #include <openssl/opensslconf.h> 132 #include <openssl/opensslconf.h>
134 #if defined(OPENSSL_THREADS) 133 #if defined(THREADS)
135 // thread support enabled 134 // thread support enabled
136 #else 135 #else
137 // no thread support 136 // no thread support
@@ -140,22 +139,6 @@ You can find out if OpenSSL was configured with thread support:
140Also, dynamic locks are currently not used internally by OpenSSL, but 139Also, dynamic locks are currently not used internally by OpenSSL, but
141may do so in the future. 140may do so in the future.
142 141
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 142=head1 EXAMPLES
160 143
161B<crypto/threads/mttest.c> shows examples of the callback functions on 144B<crypto/threads/mttest.c> shows examples of the callback functions on
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 f81f692df5..f62a869a9b 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
@@ -28,7 +28,7 @@ SSL_CIPHER_get_version() returns the protocol version for B<cipher>, currently
28 28
29SSL_CIPHER_description() returns a textual description of the cipher used 29SSL_CIPHER_description() returns a textual description of the cipher used
30into the buffer B<buf> of length B<len> provided. B<len> must be at least 30into the buffer B<buf> of length B<len> provided. B<len> must be at least
31128 bytes, otherwise a pointer to the the string "Buffer too small" is 31128 bytes, otherwise a pointer to the string "Buffer too small" is
32returned. If B<buf> is NULL, a buffer of 128 bytes is allocated using 32returned. If B<buf> is NULL, a buffer of 128 bytes is allocated using
33OPENSSL_malloc(). If the allocation fails, a pointer to the string 33OPENSSL_malloc(). If the allocation fails, a pointer to the string
34"OPENSSL_malloc Error" is returned. 34"OPENSSL_malloc Error" is returned.
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 fa63263601..5ab1b32f93 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
@@ -86,7 +86,7 @@ doing a re-connect, always takes the first cipher in the cipher list.
86 86
87=item SSL_OP_MSIE_SSLV2_RSA_PADDING 87=item SSL_OP_MSIE_SSLV2_RSA_PADDING
88 88
89As of OpenSSL 0.9.7h and 0.9.8a, this option has no effect. 89...
90 90
91=item SSL_OP_SSLEAY_080_CLIENT_DH_BUG 91=item SSL_OP_SSLEAY_080_CLIENT_DH_BUG
92 92
diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_verify.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_verify.pod
index ca8d81b82c..81566839d3 100644
--- a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_verify.pod
+++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_verify.pod
@@ -28,7 +28,7 @@ specifies the B<verify_callback> function to be used. If no callback function
28shall be specified, the NULL pointer can be used for B<verify_callback>. In 28shall be specified, the NULL pointer can be used for B<verify_callback>. In
29this case last B<verify_callback> set specifically for this B<ssl> remains. If 29this case last B<verify_callback> set specifically for this B<ssl> remains. If
30no special B<callback> was set before, the default callback for the underlying 30no special B<callback> was set before, the default callback for the underlying
31B<ctx> is used, that was valid at the the time B<ssl> was created with 31B<ctx> is used, that was valid at the time B<ssl> was created with
32L<SSL_new(3)|SSL_new(3)>. 32L<SSL_new(3)|SSL_new(3)>.
33 33
34SSL_CTX_set_verify_depth() sets the maximum B<depth> for the certificate chain 34SSL_CTX_set_verify_depth() sets the maximum B<depth> for the certificate chain
diff --git a/src/lib/libssl/src/doc/ssl/SSL_SESSION_free.pod b/src/lib/libssl/src/doc/ssl/SSL_SESSION_free.pod
index 558de01df9..110ec73ab6 100644
--- a/src/lib/libssl/src/doc/ssl/SSL_SESSION_free.pod
+++ b/src/lib/libssl/src/doc/ssl/SSL_SESSION_free.pod
@@ -14,7 +14,7 @@ SSL_SESSION_free - free an allocated SSL_SESSION structure
14 14
15SSL_SESSION_free() decrements the reference count of B<session> and removes 15SSL_SESSION_free() decrements the reference count of B<session> and removes
16the B<SSL_SESSION> structure pointed to by B<session> and frees up the allocated 16the B<SSL_SESSION> structure pointed to by B<session> and frees up the allocated
17memory, if the the reference count has reached 0. 17memory, if the reference count has reached 0.
18 18
19=head1 NOTES 19=head1 NOTES
20 20
diff --git a/src/lib/libssl/src/doc/ssl/SSL_free.pod b/src/lib/libssl/src/doc/ssl/SSL_free.pod
index 2d4f8b6168..13c1abd9ec 100644
--- a/src/lib/libssl/src/doc/ssl/SSL_free.pod
+++ b/src/lib/libssl/src/doc/ssl/SSL_free.pod
@@ -14,7 +14,7 @@ SSL_free - free an allocated SSL structure
14 14
15SSL_free() decrements the reference count of B<ssl>, and removes the SSL 15SSL_free() decrements the reference count of B<ssl>, and removes the SSL
16structure pointed to by B<ssl> and frees up the allocated memory if the 16structure pointed to by B<ssl> and frees up the allocated memory if the
17the reference count has reached 0. 17reference count has reached 0.
18 18
19=head1 NOTES 19=head1 NOTES
20 20
diff --git a/src/lib/libssl/src/doc/ssl/ssl.pod b/src/lib/libssl/src/doc/ssl/ssl.pod
index 266697d221..b41f3e3645 100644
--- a/src/lib/libssl/src/doc/ssl/ssl.pod
+++ b/src/lib/libssl/src/doc/ssl/ssl.pod
@@ -3,7 +3,7 @@
3 3
4=head1 NAME 4=head1 NAME
5 5
6SSL - OpenSSL SSL/TLS library 6ssl - OpenSSL SSL/TLS library
7 7
8=head1 SYNOPSIS 8=head1 SYNOPSIS
9 9
diff --git a/src/lib/libssl/src/doc/ssleay.txt b/src/lib/libssl/src/doc/ssleay.txt
index d44d2f04a0..666de94e50 100644
--- a/src/lib/libssl/src/doc/ssleay.txt
+++ b/src/lib/libssl/src/doc/ssleay.txt
@@ -3800,9 +3800,9 @@ made public on sci.crypt in Sep 1994 (RC4) and Feb 1996 (RC2). I have
3800copies of the origional postings if people are interested. RSA I believe 3800copies of the origional postings if people are interested. RSA I believe
3801claim that they were 'trade-secrets' and that some-one broke an NDA in 3801claim that they were 'trade-secrets' and that some-one broke an NDA in
3802revealing them. Other claim they reverse engineered the algorithms from 3802revealing them. Other claim they reverse engineered the algorithms from
3803compiled binaries. If the algorithms were reverse engineered, I belive 3803compiled binaries. If the algorithms were reverse engineered, I believe
3804RSA had no legal leg to stand on. If an NDA was broken, I don't know. 3804RSA had no legal leg to stand on. If an NDA was broken, I don't know.
3805Regardless, RSA, I belive, is willing to go to court over the issue so 3805Regardless, RSA, I believe, is willing to go to court over the issue so
3806licencing is probably the best idea, or at least talk to them. 3806licencing is probably the best idea, or at least talk to them.
3807If there are people who actually know more about this, pease let me know, I 3807If there are people who actually know more about this, pease let me know, I
3808don't want to vilify or spread miss-information if I can help it. 3808don't want to vilify or spread miss-information if I can help it.
diff --git a/src/lib/libssl/src/e_os.h b/src/lib/libssl/src/e_os.h
index e2b6561066..5a328b7fa8 100644
--- a/src/lib/libssl/src/e_os.h
+++ b/src/lib/libssl/src/e_os.h
@@ -214,8 +214,6 @@ extern "C" {
214# define _setmode setmode 214# define _setmode setmode
215# define _O_TEXT O_TEXT 215# define _O_TEXT O_TEXT
216# define _O_BINARY O_BINARY 216# define _O_BINARY O_BINARY
217# undef DEVRANDOM
218# define DEVRANDOM "/dev/urandom\x24"
219# endif /* __DJGPP__ */ 217# endif /* __DJGPP__ */
220 218
221# ifndef S_IFDIR 219# ifndef S_IFDIR
diff --git a/src/lib/libssl/src/e_os2.h b/src/lib/libssl/src/e_os2.h
index d8de8beead..4ca79a4d65 100644
--- a/src/lib/libssl/src/e_os2.h
+++ b/src/lib/libssl/src/e_os2.h
@@ -237,8 +237,8 @@ extern "C" {
237# define OPENSSL_IMPORT globalref 237# define OPENSSL_IMPORT globalref
238# define OPENSSL_GLOBAL globaldef 238# define OPENSSL_GLOBAL globaldef
239#elif defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL) 239#elif defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL)
240# define OPENSSL_EXPORT extern __declspec(dllexport) 240# define OPENSSL_EXPORT extern _declspec(dllexport)
241# define OPENSSL_IMPORT extern __declspec(dllimport) 241# define OPENSSL_IMPORT extern _declspec(dllimport)
242# define OPENSSL_GLOBAL 242# define OPENSSL_GLOBAL
243#else 243#else
244# define OPENSSL_EXPORT extern 244# define OPENSSL_EXPORT extern
diff --git a/src/lib/libssl/src/fips/aes/fingerprint.sha1 b/src/lib/libssl/src/fips/aes/fingerprint.sha1
new file mode 100644
index 0000000000..33eafc7820
--- /dev/null
+++ b/src/lib/libssl/src/fips/aes/fingerprint.sha1
@@ -0,0 +1,3 @@
1HMAC-SHA1(fips_aes_core.c)= b70bbbd675efe0613da0d57055310926a0104d55
2HMAC-SHA1(fips_aes_selftest.c)= 98b01502221e7fe529fd981222f2cbb52eb4cbe0
3HMAC-SHA1(fips_aes_locl.h)= a98eb0aa449f1d95b8064e261b2ac2b1f328685e
diff --git a/src/lib/libssl/src/fips/aes/fips_aes_core.c b/src/lib/libssl/src/fips/aes/fips_aes_core.c
new file mode 100644
index 0000000000..82199c92e6
--- /dev/null
+++ b/src/lib/libssl/src/fips/aes/fips_aes_core.c
@@ -0,0 +1,1263 @@
1/* crypto/aes/aes_core.c -*- mode:C; c-file-style: "eay" -*- */
2/**
3 * rijndael-alg-fst.c
4 *
5 * @version 3.0 (December 2000)
6 *
7 * Optimised ANSI C code for the Rijndael cipher (now AES)
8 *
9 * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be>
10 * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be>
11 * @author Paulo Barreto <paulo.barreto@terra.com.br>
12 *
13 * This code is hereby placed in the public domain.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS
16 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
22 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
24 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
25 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28/* Note: rewritten a little bit to provide error control and an OpenSSL-
29 compatible API */
30
31#ifndef AES_DEBUG
32# ifndef NDEBUG
33# define NDEBUG
34# endif
35#endif
36#include <assert.h>
37
38#include <stdlib.h>
39#include <openssl/aes.h>
40#include "fips_aes_locl.h"
41#include <openssl/fips.h>
42
43#ifdef OPENSSL_FIPS
44
45/*
46Te0[x] = S [x].[02, 01, 01, 03];
47Te1[x] = S [x].[03, 02, 01, 01];
48Te2[x] = S [x].[01, 03, 02, 01];
49Te3[x] = S [x].[01, 01, 03, 02];
50Te4[x] = S [x].[01, 01, 01, 01];
51
52Td0[x] = Si[x].[0e, 09, 0d, 0b];
53Td1[x] = Si[x].[0b, 0e, 09, 0d];
54Td2[x] = Si[x].[0d, 0b, 0e, 09];
55Td3[x] = Si[x].[09, 0d, 0b, 0e];
56Td4[x] = Si[x].[01, 01, 01, 01];
57*/
58
59static const u32 Te0[256] = {
60 0xc66363a5U, 0xf87c7c84U, 0xee777799U, 0xf67b7b8dU,
61 0xfff2f20dU, 0xd66b6bbdU, 0xde6f6fb1U, 0x91c5c554U,
62 0x60303050U, 0x02010103U, 0xce6767a9U, 0x562b2b7dU,
63 0xe7fefe19U, 0xb5d7d762U, 0x4dababe6U, 0xec76769aU,
64 0x8fcaca45U, 0x1f82829dU, 0x89c9c940U, 0xfa7d7d87U,
65 0xeffafa15U, 0xb25959ebU, 0x8e4747c9U, 0xfbf0f00bU,
66 0x41adadecU, 0xb3d4d467U, 0x5fa2a2fdU, 0x45afafeaU,
67 0x239c9cbfU, 0x53a4a4f7U, 0xe4727296U, 0x9bc0c05bU,
68 0x75b7b7c2U, 0xe1fdfd1cU, 0x3d9393aeU, 0x4c26266aU,
69 0x6c36365aU, 0x7e3f3f41U, 0xf5f7f702U, 0x83cccc4fU,
70 0x6834345cU, 0x51a5a5f4U, 0xd1e5e534U, 0xf9f1f108U,
71 0xe2717193U, 0xabd8d873U, 0x62313153U, 0x2a15153fU,
72 0x0804040cU, 0x95c7c752U, 0x46232365U, 0x9dc3c35eU,
73 0x30181828U, 0x379696a1U, 0x0a05050fU, 0x2f9a9ab5U,
74 0x0e070709U, 0x24121236U, 0x1b80809bU, 0xdfe2e23dU,
75 0xcdebeb26U, 0x4e272769U, 0x7fb2b2cdU, 0xea75759fU,
76 0x1209091bU, 0x1d83839eU, 0x582c2c74U, 0x341a1a2eU,
77 0x361b1b2dU, 0xdc6e6eb2U, 0xb45a5aeeU, 0x5ba0a0fbU,
78 0xa45252f6U, 0x763b3b4dU, 0xb7d6d661U, 0x7db3b3ceU,
79 0x5229297bU, 0xdde3e33eU, 0x5e2f2f71U, 0x13848497U,
80 0xa65353f5U, 0xb9d1d168U, 0x00000000U, 0xc1eded2cU,
81 0x40202060U, 0xe3fcfc1fU, 0x79b1b1c8U, 0xb65b5bedU,
82 0xd46a6abeU, 0x8dcbcb46U, 0x67bebed9U, 0x7239394bU,
83 0x944a4adeU, 0x984c4cd4U, 0xb05858e8U, 0x85cfcf4aU,
84 0xbbd0d06bU, 0xc5efef2aU, 0x4faaaae5U, 0xedfbfb16U,
85 0x864343c5U, 0x9a4d4dd7U, 0x66333355U, 0x11858594U,
86 0x8a4545cfU, 0xe9f9f910U, 0x04020206U, 0xfe7f7f81U,
87 0xa05050f0U, 0x783c3c44U, 0x259f9fbaU, 0x4ba8a8e3U,
88 0xa25151f3U, 0x5da3a3feU, 0x804040c0U, 0x058f8f8aU,
89 0x3f9292adU, 0x219d9dbcU, 0x70383848U, 0xf1f5f504U,
90 0x63bcbcdfU, 0x77b6b6c1U, 0xafdada75U, 0x42212163U,
91 0x20101030U, 0xe5ffff1aU, 0xfdf3f30eU, 0xbfd2d26dU,
92 0x81cdcd4cU, 0x180c0c14U, 0x26131335U, 0xc3ecec2fU,
93 0xbe5f5fe1U, 0x359797a2U, 0x884444ccU, 0x2e171739U,
94 0x93c4c457U, 0x55a7a7f2U, 0xfc7e7e82U, 0x7a3d3d47U,
95 0xc86464acU, 0xba5d5de7U, 0x3219192bU, 0xe6737395U,
96 0xc06060a0U, 0x19818198U, 0x9e4f4fd1U, 0xa3dcdc7fU,
97 0x44222266U, 0x542a2a7eU, 0x3b9090abU, 0x0b888883U,
98 0x8c4646caU, 0xc7eeee29U, 0x6bb8b8d3U, 0x2814143cU,
99 0xa7dede79U, 0xbc5e5ee2U, 0x160b0b1dU, 0xaddbdb76U,
100 0xdbe0e03bU, 0x64323256U, 0x743a3a4eU, 0x140a0a1eU,
101 0x924949dbU, 0x0c06060aU, 0x4824246cU, 0xb85c5ce4U,
102 0x9fc2c25dU, 0xbdd3d36eU, 0x43acacefU, 0xc46262a6U,
103 0x399191a8U, 0x319595a4U, 0xd3e4e437U, 0xf279798bU,
104 0xd5e7e732U, 0x8bc8c843U, 0x6e373759U, 0xda6d6db7U,
105 0x018d8d8cU, 0xb1d5d564U, 0x9c4e4ed2U, 0x49a9a9e0U,
106 0xd86c6cb4U, 0xac5656faU, 0xf3f4f407U, 0xcfeaea25U,
107 0xca6565afU, 0xf47a7a8eU, 0x47aeaee9U, 0x10080818U,
108 0x6fbabad5U, 0xf0787888U, 0x4a25256fU, 0x5c2e2e72U,
109 0x381c1c24U, 0x57a6a6f1U, 0x73b4b4c7U, 0x97c6c651U,
110 0xcbe8e823U, 0xa1dddd7cU, 0xe874749cU, 0x3e1f1f21U,
111 0x964b4bddU, 0x61bdbddcU, 0x0d8b8b86U, 0x0f8a8a85U,
112 0xe0707090U, 0x7c3e3e42U, 0x71b5b5c4U, 0xcc6666aaU,
113 0x904848d8U, 0x06030305U, 0xf7f6f601U, 0x1c0e0e12U,
114 0xc26161a3U, 0x6a35355fU, 0xae5757f9U, 0x69b9b9d0U,
115 0x17868691U, 0x99c1c158U, 0x3a1d1d27U, 0x279e9eb9U,
116 0xd9e1e138U, 0xebf8f813U, 0x2b9898b3U, 0x22111133U,
117 0xd26969bbU, 0xa9d9d970U, 0x078e8e89U, 0x339494a7U,
118 0x2d9b9bb6U, 0x3c1e1e22U, 0x15878792U, 0xc9e9e920U,
119 0x87cece49U, 0xaa5555ffU, 0x50282878U, 0xa5dfdf7aU,
120 0x038c8c8fU, 0x59a1a1f8U, 0x09898980U, 0x1a0d0d17U,
121 0x65bfbfdaU, 0xd7e6e631U, 0x844242c6U, 0xd06868b8U,
122 0x824141c3U, 0x299999b0U, 0x5a2d2d77U, 0x1e0f0f11U,
123 0x7bb0b0cbU, 0xa85454fcU, 0x6dbbbbd6U, 0x2c16163aU,
124};
125static const u32 Te1[256] = {
126 0xa5c66363U, 0x84f87c7cU, 0x99ee7777U, 0x8df67b7bU,
127 0x0dfff2f2U, 0xbdd66b6bU, 0xb1de6f6fU, 0x5491c5c5U,
128 0x50603030U, 0x03020101U, 0xa9ce6767U, 0x7d562b2bU,
129 0x19e7fefeU, 0x62b5d7d7U, 0xe64dababU, 0x9aec7676U,
130 0x458fcacaU, 0x9d1f8282U, 0x4089c9c9U, 0x87fa7d7dU,
131 0x15effafaU, 0xebb25959U, 0xc98e4747U, 0x0bfbf0f0U,
132 0xec41adadU, 0x67b3d4d4U, 0xfd5fa2a2U, 0xea45afafU,
133 0xbf239c9cU, 0xf753a4a4U, 0x96e47272U, 0x5b9bc0c0U,
134 0xc275b7b7U, 0x1ce1fdfdU, 0xae3d9393U, 0x6a4c2626U,
135 0x5a6c3636U, 0x417e3f3fU, 0x02f5f7f7U, 0x4f83ccccU,
136 0x5c683434U, 0xf451a5a5U, 0x34d1e5e5U, 0x08f9f1f1U,
137 0x93e27171U, 0x73abd8d8U, 0x53623131U, 0x3f2a1515U,
138 0x0c080404U, 0x5295c7c7U, 0x65462323U, 0x5e9dc3c3U,
139 0x28301818U, 0xa1379696U, 0x0f0a0505U, 0xb52f9a9aU,
140 0x090e0707U, 0x36241212U, 0x9b1b8080U, 0x3ddfe2e2U,
141 0x26cdebebU, 0x694e2727U, 0xcd7fb2b2U, 0x9fea7575U,
142 0x1b120909U, 0x9e1d8383U, 0x74582c2cU, 0x2e341a1aU,
143 0x2d361b1bU, 0xb2dc6e6eU, 0xeeb45a5aU, 0xfb5ba0a0U,
144 0xf6a45252U, 0x4d763b3bU, 0x61b7d6d6U, 0xce7db3b3U,
145 0x7b522929U, 0x3edde3e3U, 0x715e2f2fU, 0x97138484U,
146 0xf5a65353U, 0x68b9d1d1U, 0x00000000U, 0x2cc1ededU,
147 0x60402020U, 0x1fe3fcfcU, 0xc879b1b1U, 0xedb65b5bU,
148 0xbed46a6aU, 0x468dcbcbU, 0xd967bebeU, 0x4b723939U,
149 0xde944a4aU, 0xd4984c4cU, 0xe8b05858U, 0x4a85cfcfU,
150 0x6bbbd0d0U, 0x2ac5efefU, 0xe54faaaaU, 0x16edfbfbU,
151 0xc5864343U, 0xd79a4d4dU, 0x55663333U, 0x94118585U,
152 0xcf8a4545U, 0x10e9f9f9U, 0x06040202U, 0x81fe7f7fU,
153 0xf0a05050U, 0x44783c3cU, 0xba259f9fU, 0xe34ba8a8U,
154 0xf3a25151U, 0xfe5da3a3U, 0xc0804040U, 0x8a058f8fU,
155 0xad3f9292U, 0xbc219d9dU, 0x48703838U, 0x04f1f5f5U,
156 0xdf63bcbcU, 0xc177b6b6U, 0x75afdadaU, 0x63422121U,
157 0x30201010U, 0x1ae5ffffU, 0x0efdf3f3U, 0x6dbfd2d2U,
158 0x4c81cdcdU, 0x14180c0cU, 0x35261313U, 0x2fc3ececU,
159 0xe1be5f5fU, 0xa2359797U, 0xcc884444U, 0x392e1717U,
160 0x5793c4c4U, 0xf255a7a7U, 0x82fc7e7eU, 0x477a3d3dU,
161 0xacc86464U, 0xe7ba5d5dU, 0x2b321919U, 0x95e67373U,
162 0xa0c06060U, 0x98198181U, 0xd19e4f4fU, 0x7fa3dcdcU,
163 0x66442222U, 0x7e542a2aU, 0xab3b9090U, 0x830b8888U,
164 0xca8c4646U, 0x29c7eeeeU, 0xd36bb8b8U, 0x3c281414U,
165 0x79a7dedeU, 0xe2bc5e5eU, 0x1d160b0bU, 0x76addbdbU,
166 0x3bdbe0e0U, 0x56643232U, 0x4e743a3aU, 0x1e140a0aU,
167 0xdb924949U, 0x0a0c0606U, 0x6c482424U, 0xe4b85c5cU,
168 0x5d9fc2c2U, 0x6ebdd3d3U, 0xef43acacU, 0xa6c46262U,
169 0xa8399191U, 0xa4319595U, 0x37d3e4e4U, 0x8bf27979U,
170 0x32d5e7e7U, 0x438bc8c8U, 0x596e3737U, 0xb7da6d6dU,
171 0x8c018d8dU, 0x64b1d5d5U, 0xd29c4e4eU, 0xe049a9a9U,
172 0xb4d86c6cU, 0xfaac5656U, 0x07f3f4f4U, 0x25cfeaeaU,
173 0xafca6565U, 0x8ef47a7aU, 0xe947aeaeU, 0x18100808U,
174 0xd56fbabaU, 0x88f07878U, 0x6f4a2525U, 0x725c2e2eU,
175 0x24381c1cU, 0xf157a6a6U, 0xc773b4b4U, 0x5197c6c6U,
176 0x23cbe8e8U, 0x7ca1ddddU, 0x9ce87474U, 0x213e1f1fU,
177 0xdd964b4bU, 0xdc61bdbdU, 0x860d8b8bU, 0x850f8a8aU,
178 0x90e07070U, 0x427c3e3eU, 0xc471b5b5U, 0xaacc6666U,
179 0xd8904848U, 0x05060303U, 0x01f7f6f6U, 0x121c0e0eU,
180 0xa3c26161U, 0x5f6a3535U, 0xf9ae5757U, 0xd069b9b9U,
181 0x91178686U, 0x5899c1c1U, 0x273a1d1dU, 0xb9279e9eU,
182 0x38d9e1e1U, 0x13ebf8f8U, 0xb32b9898U, 0x33221111U,
183 0xbbd26969U, 0x70a9d9d9U, 0x89078e8eU, 0xa7339494U,
184 0xb62d9b9bU, 0x223c1e1eU, 0x92158787U, 0x20c9e9e9U,
185 0x4987ceceU, 0xffaa5555U, 0x78502828U, 0x7aa5dfdfU,
186 0x8f038c8cU, 0xf859a1a1U, 0x80098989U, 0x171a0d0dU,
187 0xda65bfbfU, 0x31d7e6e6U, 0xc6844242U, 0xb8d06868U,
188 0xc3824141U, 0xb0299999U, 0x775a2d2dU, 0x111e0f0fU,
189 0xcb7bb0b0U, 0xfca85454U, 0xd66dbbbbU, 0x3a2c1616U,
190};
191static const u32 Te2[256] = {
192 0x63a5c663U, 0x7c84f87cU, 0x7799ee77U, 0x7b8df67bU,
193 0xf20dfff2U, 0x6bbdd66bU, 0x6fb1de6fU, 0xc55491c5U,
194 0x30506030U, 0x01030201U, 0x67a9ce67U, 0x2b7d562bU,
195 0xfe19e7feU, 0xd762b5d7U, 0xabe64dabU, 0x769aec76U,
196 0xca458fcaU, 0x829d1f82U, 0xc94089c9U, 0x7d87fa7dU,
197 0xfa15effaU, 0x59ebb259U, 0x47c98e47U, 0xf00bfbf0U,
198 0xadec41adU, 0xd467b3d4U, 0xa2fd5fa2U, 0xafea45afU,
199 0x9cbf239cU, 0xa4f753a4U, 0x7296e472U, 0xc05b9bc0U,
200 0xb7c275b7U, 0xfd1ce1fdU, 0x93ae3d93U, 0x266a4c26U,
201 0x365a6c36U, 0x3f417e3fU, 0xf702f5f7U, 0xcc4f83ccU,
202 0x345c6834U, 0xa5f451a5U, 0xe534d1e5U, 0xf108f9f1U,
203 0x7193e271U, 0xd873abd8U, 0x31536231U, 0x153f2a15U,
204 0x040c0804U, 0xc75295c7U, 0x23654623U, 0xc35e9dc3U,
205 0x18283018U, 0x96a13796U, 0x050f0a05U, 0x9ab52f9aU,
206 0x07090e07U, 0x12362412U, 0x809b1b80U, 0xe23ddfe2U,
207 0xeb26cdebU, 0x27694e27U, 0xb2cd7fb2U, 0x759fea75U,
208 0x091b1209U, 0x839e1d83U, 0x2c74582cU, 0x1a2e341aU,
209 0x1b2d361bU, 0x6eb2dc6eU, 0x5aeeb45aU, 0xa0fb5ba0U,
210 0x52f6a452U, 0x3b4d763bU, 0xd661b7d6U, 0xb3ce7db3U,
211 0x297b5229U, 0xe33edde3U, 0x2f715e2fU, 0x84971384U,
212 0x53f5a653U, 0xd168b9d1U, 0x00000000U, 0xed2cc1edU,
213 0x20604020U, 0xfc1fe3fcU, 0xb1c879b1U, 0x5bedb65bU,
214 0x6abed46aU, 0xcb468dcbU, 0xbed967beU, 0x394b7239U,
215 0x4ade944aU, 0x4cd4984cU, 0x58e8b058U, 0xcf4a85cfU,
216 0xd06bbbd0U, 0xef2ac5efU, 0xaae54faaU, 0xfb16edfbU,
217 0x43c58643U, 0x4dd79a4dU, 0x33556633U, 0x85941185U,
218 0x45cf8a45U, 0xf910e9f9U, 0x02060402U, 0x7f81fe7fU,
219 0x50f0a050U, 0x3c44783cU, 0x9fba259fU, 0xa8e34ba8U,
220 0x51f3a251U, 0xa3fe5da3U, 0x40c08040U, 0x8f8a058fU,
221 0x92ad3f92U, 0x9dbc219dU, 0x38487038U, 0xf504f1f5U,
222 0xbcdf63bcU, 0xb6c177b6U, 0xda75afdaU, 0x21634221U,
223 0x10302010U, 0xff1ae5ffU, 0xf30efdf3U, 0xd26dbfd2U,
224 0xcd4c81cdU, 0x0c14180cU, 0x13352613U, 0xec2fc3ecU,
225 0x5fe1be5fU, 0x97a23597U, 0x44cc8844U, 0x17392e17U,
226 0xc45793c4U, 0xa7f255a7U, 0x7e82fc7eU, 0x3d477a3dU,
227 0x64acc864U, 0x5de7ba5dU, 0x192b3219U, 0x7395e673U,
228 0x60a0c060U, 0x81981981U, 0x4fd19e4fU, 0xdc7fa3dcU,
229 0x22664422U, 0x2a7e542aU, 0x90ab3b90U, 0x88830b88U,
230 0x46ca8c46U, 0xee29c7eeU, 0xb8d36bb8U, 0x143c2814U,
231 0xde79a7deU, 0x5ee2bc5eU, 0x0b1d160bU, 0xdb76addbU,
232 0xe03bdbe0U, 0x32566432U, 0x3a4e743aU, 0x0a1e140aU,
233 0x49db9249U, 0x060a0c06U, 0x246c4824U, 0x5ce4b85cU,
234 0xc25d9fc2U, 0xd36ebdd3U, 0xacef43acU, 0x62a6c462U,
235 0x91a83991U, 0x95a43195U, 0xe437d3e4U, 0x798bf279U,
236 0xe732d5e7U, 0xc8438bc8U, 0x37596e37U, 0x6db7da6dU,
237 0x8d8c018dU, 0xd564b1d5U, 0x4ed29c4eU, 0xa9e049a9U,
238 0x6cb4d86cU, 0x56faac56U, 0xf407f3f4U, 0xea25cfeaU,
239 0x65afca65U, 0x7a8ef47aU, 0xaee947aeU, 0x08181008U,
240 0xbad56fbaU, 0x7888f078U, 0x256f4a25U, 0x2e725c2eU,
241 0x1c24381cU, 0xa6f157a6U, 0xb4c773b4U, 0xc65197c6U,
242 0xe823cbe8U, 0xdd7ca1ddU, 0x749ce874U, 0x1f213e1fU,
243 0x4bdd964bU, 0xbddc61bdU, 0x8b860d8bU, 0x8a850f8aU,
244 0x7090e070U, 0x3e427c3eU, 0xb5c471b5U, 0x66aacc66U,
245 0x48d89048U, 0x03050603U, 0xf601f7f6U, 0x0e121c0eU,
246 0x61a3c261U, 0x355f6a35U, 0x57f9ae57U, 0xb9d069b9U,
247 0x86911786U, 0xc15899c1U, 0x1d273a1dU, 0x9eb9279eU,
248 0xe138d9e1U, 0xf813ebf8U, 0x98b32b98U, 0x11332211U,
249 0x69bbd269U, 0xd970a9d9U, 0x8e89078eU, 0x94a73394U,
250 0x9bb62d9bU, 0x1e223c1eU, 0x87921587U, 0xe920c9e9U,
251 0xce4987ceU, 0x55ffaa55U, 0x28785028U, 0xdf7aa5dfU,
252 0x8c8f038cU, 0xa1f859a1U, 0x89800989U, 0x0d171a0dU,
253 0xbfda65bfU, 0xe631d7e6U, 0x42c68442U, 0x68b8d068U,
254 0x41c38241U, 0x99b02999U, 0x2d775a2dU, 0x0f111e0fU,
255 0xb0cb7bb0U, 0x54fca854U, 0xbbd66dbbU, 0x163a2c16U,
256};
257static const u32 Te3[256] = {
258
259 0x6363a5c6U, 0x7c7c84f8U, 0x777799eeU, 0x7b7b8df6U,
260 0xf2f20dffU, 0x6b6bbdd6U, 0x6f6fb1deU, 0xc5c55491U,
261 0x30305060U, 0x01010302U, 0x6767a9ceU, 0x2b2b7d56U,
262 0xfefe19e7U, 0xd7d762b5U, 0xababe64dU, 0x76769aecU,
263 0xcaca458fU, 0x82829d1fU, 0xc9c94089U, 0x7d7d87faU,
264 0xfafa15efU, 0x5959ebb2U, 0x4747c98eU, 0xf0f00bfbU,
265 0xadadec41U, 0xd4d467b3U, 0xa2a2fd5fU, 0xafafea45U,
266 0x9c9cbf23U, 0xa4a4f753U, 0x727296e4U, 0xc0c05b9bU,
267 0xb7b7c275U, 0xfdfd1ce1U, 0x9393ae3dU, 0x26266a4cU,
268 0x36365a6cU, 0x3f3f417eU, 0xf7f702f5U, 0xcccc4f83U,
269 0x34345c68U, 0xa5a5f451U, 0xe5e534d1U, 0xf1f108f9U,
270 0x717193e2U, 0xd8d873abU, 0x31315362U, 0x15153f2aU,
271 0x04040c08U, 0xc7c75295U, 0x23236546U, 0xc3c35e9dU,
272 0x18182830U, 0x9696a137U, 0x05050f0aU, 0x9a9ab52fU,
273 0x0707090eU, 0x12123624U, 0x80809b1bU, 0xe2e23ddfU,
274 0xebeb26cdU, 0x2727694eU, 0xb2b2cd7fU, 0x75759feaU,
275 0x09091b12U, 0x83839e1dU, 0x2c2c7458U, 0x1a1a2e34U,
276 0x1b1b2d36U, 0x6e6eb2dcU, 0x5a5aeeb4U, 0xa0a0fb5bU,
277 0x5252f6a4U, 0x3b3b4d76U, 0xd6d661b7U, 0xb3b3ce7dU,
278 0x29297b52U, 0xe3e33eddU, 0x2f2f715eU, 0x84849713U,
279 0x5353f5a6U, 0xd1d168b9U, 0x00000000U, 0xeded2cc1U,
280 0x20206040U, 0xfcfc1fe3U, 0xb1b1c879U, 0x5b5bedb6U,
281 0x6a6abed4U, 0xcbcb468dU, 0xbebed967U, 0x39394b72U,
282 0x4a4ade94U, 0x4c4cd498U, 0x5858e8b0U, 0xcfcf4a85U,
283 0xd0d06bbbU, 0xefef2ac5U, 0xaaaae54fU, 0xfbfb16edU,
284 0x4343c586U, 0x4d4dd79aU, 0x33335566U, 0x85859411U,
285 0x4545cf8aU, 0xf9f910e9U, 0x02020604U, 0x7f7f81feU,
286 0x5050f0a0U, 0x3c3c4478U, 0x9f9fba25U, 0xa8a8e34bU,
287 0x5151f3a2U, 0xa3a3fe5dU, 0x4040c080U, 0x8f8f8a05U,
288 0x9292ad3fU, 0x9d9dbc21U, 0x38384870U, 0xf5f504f1U,
289 0xbcbcdf63U, 0xb6b6c177U, 0xdada75afU, 0x21216342U,
290 0x10103020U, 0xffff1ae5U, 0xf3f30efdU, 0xd2d26dbfU,
291 0xcdcd4c81U, 0x0c0c1418U, 0x13133526U, 0xecec2fc3U,
292 0x5f5fe1beU, 0x9797a235U, 0x4444cc88U, 0x1717392eU,
293 0xc4c45793U, 0xa7a7f255U, 0x7e7e82fcU, 0x3d3d477aU,
294 0x6464acc8U, 0x5d5de7baU, 0x19192b32U, 0x737395e6U,
295 0x6060a0c0U, 0x81819819U, 0x4f4fd19eU, 0xdcdc7fa3U,
296 0x22226644U, 0x2a2a7e54U, 0x9090ab3bU, 0x8888830bU,
297 0x4646ca8cU, 0xeeee29c7U, 0xb8b8d36bU, 0x14143c28U,
298 0xdede79a7U, 0x5e5ee2bcU, 0x0b0b1d16U, 0xdbdb76adU,
299 0xe0e03bdbU, 0x32325664U, 0x3a3a4e74U, 0x0a0a1e14U,
300 0x4949db92U, 0x06060a0cU, 0x24246c48U, 0x5c5ce4b8U,
301 0xc2c25d9fU, 0xd3d36ebdU, 0xacacef43U, 0x6262a6c4U,
302 0x9191a839U, 0x9595a431U, 0xe4e437d3U, 0x79798bf2U,
303 0xe7e732d5U, 0xc8c8438bU, 0x3737596eU, 0x6d6db7daU,
304 0x8d8d8c01U, 0xd5d564b1U, 0x4e4ed29cU, 0xa9a9e049U,
305 0x6c6cb4d8U, 0x5656faacU, 0xf4f407f3U, 0xeaea25cfU,
306 0x6565afcaU, 0x7a7a8ef4U, 0xaeaee947U, 0x08081810U,
307 0xbabad56fU, 0x787888f0U, 0x25256f4aU, 0x2e2e725cU,
308 0x1c1c2438U, 0xa6a6f157U, 0xb4b4c773U, 0xc6c65197U,
309 0xe8e823cbU, 0xdddd7ca1U, 0x74749ce8U, 0x1f1f213eU,
310 0x4b4bdd96U, 0xbdbddc61U, 0x8b8b860dU, 0x8a8a850fU,
311 0x707090e0U, 0x3e3e427cU, 0xb5b5c471U, 0x6666aaccU,
312 0x4848d890U, 0x03030506U, 0xf6f601f7U, 0x0e0e121cU,
313 0x6161a3c2U, 0x35355f6aU, 0x5757f9aeU, 0xb9b9d069U,
314 0x86869117U, 0xc1c15899U, 0x1d1d273aU, 0x9e9eb927U,
315 0xe1e138d9U, 0xf8f813ebU, 0x9898b32bU, 0x11113322U,
316 0x6969bbd2U, 0xd9d970a9U, 0x8e8e8907U, 0x9494a733U,
317 0x9b9bb62dU, 0x1e1e223cU, 0x87879215U, 0xe9e920c9U,
318 0xcece4987U, 0x5555ffaaU, 0x28287850U, 0xdfdf7aa5U,
319 0x8c8c8f03U, 0xa1a1f859U, 0x89898009U, 0x0d0d171aU,
320 0xbfbfda65U, 0xe6e631d7U, 0x4242c684U, 0x6868b8d0U,
321 0x4141c382U, 0x9999b029U, 0x2d2d775aU, 0x0f0f111eU,
322 0xb0b0cb7bU, 0x5454fca8U, 0xbbbbd66dU, 0x16163a2cU,
323};
324static const u32 Te4[256] = {
325 0x63636363U, 0x7c7c7c7cU, 0x77777777U, 0x7b7b7b7bU,
326 0xf2f2f2f2U, 0x6b6b6b6bU, 0x6f6f6f6fU, 0xc5c5c5c5U,
327 0x30303030U, 0x01010101U, 0x67676767U, 0x2b2b2b2bU,
328 0xfefefefeU, 0xd7d7d7d7U, 0xababababU, 0x76767676U,
329 0xcacacacaU, 0x82828282U, 0xc9c9c9c9U, 0x7d7d7d7dU,
330 0xfafafafaU, 0x59595959U, 0x47474747U, 0xf0f0f0f0U,
331 0xadadadadU, 0xd4d4d4d4U, 0xa2a2a2a2U, 0xafafafafU,
332 0x9c9c9c9cU, 0xa4a4a4a4U, 0x72727272U, 0xc0c0c0c0U,
333 0xb7b7b7b7U, 0xfdfdfdfdU, 0x93939393U, 0x26262626U,
334 0x36363636U, 0x3f3f3f3fU, 0xf7f7f7f7U, 0xccccccccU,
335 0x34343434U, 0xa5a5a5a5U, 0xe5e5e5e5U, 0xf1f1f1f1U,
336 0x71717171U, 0xd8d8d8d8U, 0x31313131U, 0x15151515U,
337 0x04040404U, 0xc7c7c7c7U, 0x23232323U, 0xc3c3c3c3U,
338 0x18181818U, 0x96969696U, 0x05050505U, 0x9a9a9a9aU,
339 0x07070707U, 0x12121212U, 0x80808080U, 0xe2e2e2e2U,
340 0xebebebebU, 0x27272727U, 0xb2b2b2b2U, 0x75757575U,
341 0x09090909U, 0x83838383U, 0x2c2c2c2cU, 0x1a1a1a1aU,
342 0x1b1b1b1bU, 0x6e6e6e6eU, 0x5a5a5a5aU, 0xa0a0a0a0U,
343 0x52525252U, 0x3b3b3b3bU, 0xd6d6d6d6U, 0xb3b3b3b3U,
344 0x29292929U, 0xe3e3e3e3U, 0x2f2f2f2fU, 0x84848484U,
345 0x53535353U, 0xd1d1d1d1U, 0x00000000U, 0xededededU,
346 0x20202020U, 0xfcfcfcfcU, 0xb1b1b1b1U, 0x5b5b5b5bU,
347 0x6a6a6a6aU, 0xcbcbcbcbU, 0xbebebebeU, 0x39393939U,
348 0x4a4a4a4aU, 0x4c4c4c4cU, 0x58585858U, 0xcfcfcfcfU,
349 0xd0d0d0d0U, 0xefefefefU, 0xaaaaaaaaU, 0xfbfbfbfbU,
350 0x43434343U, 0x4d4d4d4dU, 0x33333333U, 0x85858585U,
351 0x45454545U, 0xf9f9f9f9U, 0x02020202U, 0x7f7f7f7fU,
352 0x50505050U, 0x3c3c3c3cU, 0x9f9f9f9fU, 0xa8a8a8a8U,
353 0x51515151U, 0xa3a3a3a3U, 0x40404040U, 0x8f8f8f8fU,
354 0x92929292U, 0x9d9d9d9dU, 0x38383838U, 0xf5f5f5f5U,
355 0xbcbcbcbcU, 0xb6b6b6b6U, 0xdadadadaU, 0x21212121U,
356 0x10101010U, 0xffffffffU, 0xf3f3f3f3U, 0xd2d2d2d2U,
357 0xcdcdcdcdU, 0x0c0c0c0cU, 0x13131313U, 0xececececU,
358 0x5f5f5f5fU, 0x97979797U, 0x44444444U, 0x17171717U,
359 0xc4c4c4c4U, 0xa7a7a7a7U, 0x7e7e7e7eU, 0x3d3d3d3dU,
360 0x64646464U, 0x5d5d5d5dU, 0x19191919U, 0x73737373U,
361 0x60606060U, 0x81818181U, 0x4f4f4f4fU, 0xdcdcdcdcU,
362 0x22222222U, 0x2a2a2a2aU, 0x90909090U, 0x88888888U,
363 0x46464646U, 0xeeeeeeeeU, 0xb8b8b8b8U, 0x14141414U,
364 0xdedededeU, 0x5e5e5e5eU, 0x0b0b0b0bU, 0xdbdbdbdbU,
365 0xe0e0e0e0U, 0x32323232U, 0x3a3a3a3aU, 0x0a0a0a0aU,
366 0x49494949U, 0x06060606U, 0x24242424U, 0x5c5c5c5cU,
367 0xc2c2c2c2U, 0xd3d3d3d3U, 0xacacacacU, 0x62626262U,
368 0x91919191U, 0x95959595U, 0xe4e4e4e4U, 0x79797979U,
369 0xe7e7e7e7U, 0xc8c8c8c8U, 0x37373737U, 0x6d6d6d6dU,
370 0x8d8d8d8dU, 0xd5d5d5d5U, 0x4e4e4e4eU, 0xa9a9a9a9U,
371 0x6c6c6c6cU, 0x56565656U, 0xf4f4f4f4U, 0xeaeaeaeaU,
372 0x65656565U, 0x7a7a7a7aU, 0xaeaeaeaeU, 0x08080808U,
373 0xbabababaU, 0x78787878U, 0x25252525U, 0x2e2e2e2eU,
374 0x1c1c1c1cU, 0xa6a6a6a6U, 0xb4b4b4b4U, 0xc6c6c6c6U,
375 0xe8e8e8e8U, 0xddddddddU, 0x74747474U, 0x1f1f1f1fU,
376 0x4b4b4b4bU, 0xbdbdbdbdU, 0x8b8b8b8bU, 0x8a8a8a8aU,
377 0x70707070U, 0x3e3e3e3eU, 0xb5b5b5b5U, 0x66666666U,
378 0x48484848U, 0x03030303U, 0xf6f6f6f6U, 0x0e0e0e0eU,
379 0x61616161U, 0x35353535U, 0x57575757U, 0xb9b9b9b9U,
380 0x86868686U, 0xc1c1c1c1U, 0x1d1d1d1dU, 0x9e9e9e9eU,
381 0xe1e1e1e1U, 0xf8f8f8f8U, 0x98989898U, 0x11111111U,
382 0x69696969U, 0xd9d9d9d9U, 0x8e8e8e8eU, 0x94949494U,
383 0x9b9b9b9bU, 0x1e1e1e1eU, 0x87878787U, 0xe9e9e9e9U,
384 0xcecececeU, 0x55555555U, 0x28282828U, 0xdfdfdfdfU,
385 0x8c8c8c8cU, 0xa1a1a1a1U, 0x89898989U, 0x0d0d0d0dU,
386 0xbfbfbfbfU, 0xe6e6e6e6U, 0x42424242U, 0x68686868U,
387 0x41414141U, 0x99999999U, 0x2d2d2d2dU, 0x0f0f0f0fU,
388 0xb0b0b0b0U, 0x54545454U, 0xbbbbbbbbU, 0x16161616U,
389};
390static const u32 Td0[256] = {
391 0x51f4a750U, 0x7e416553U, 0x1a17a4c3U, 0x3a275e96U,
392 0x3bab6bcbU, 0x1f9d45f1U, 0xacfa58abU, 0x4be30393U,
393 0x2030fa55U, 0xad766df6U, 0x88cc7691U, 0xf5024c25U,
394 0x4fe5d7fcU, 0xc52acbd7U, 0x26354480U, 0xb562a38fU,
395 0xdeb15a49U, 0x25ba1b67U, 0x45ea0e98U, 0x5dfec0e1U,
396 0xc32f7502U, 0x814cf012U, 0x8d4697a3U, 0x6bd3f9c6U,
397 0x038f5fe7U, 0x15929c95U, 0xbf6d7aebU, 0x955259daU,
398 0xd4be832dU, 0x587421d3U, 0x49e06929U, 0x8ec9c844U,
399 0x75c2896aU, 0xf48e7978U, 0x99583e6bU, 0x27b971ddU,
400 0xbee14fb6U, 0xf088ad17U, 0xc920ac66U, 0x7dce3ab4U,
401 0x63df4a18U, 0xe51a3182U, 0x97513360U, 0x62537f45U,
402 0xb16477e0U, 0xbb6bae84U, 0xfe81a01cU, 0xf9082b94U,
403 0x70486858U, 0x8f45fd19U, 0x94de6c87U, 0x527bf8b7U,
404 0xab73d323U, 0x724b02e2U, 0xe31f8f57U, 0x6655ab2aU,
405 0xb2eb2807U, 0x2fb5c203U, 0x86c57b9aU, 0xd33708a5U,
406 0x302887f2U, 0x23bfa5b2U, 0x02036abaU, 0xed16825cU,
407 0x8acf1c2bU, 0xa779b492U, 0xf307f2f0U, 0x4e69e2a1U,
408 0x65daf4cdU, 0x0605bed5U, 0xd134621fU, 0xc4a6fe8aU,
409 0x342e539dU, 0xa2f355a0U, 0x058ae132U, 0xa4f6eb75U,
410 0x0b83ec39U, 0x4060efaaU, 0x5e719f06U, 0xbd6e1051U,
411 0x3e218af9U, 0x96dd063dU, 0xdd3e05aeU, 0x4de6bd46U,
412 0x91548db5U, 0x71c45d05U, 0x0406d46fU, 0x605015ffU,
413 0x1998fb24U, 0xd6bde997U, 0x894043ccU, 0x67d99e77U,
414 0xb0e842bdU, 0x07898b88U, 0xe7195b38U, 0x79c8eedbU,
415 0xa17c0a47U, 0x7c420fe9U, 0xf8841ec9U, 0x00000000U,
416 0x09808683U, 0x322bed48U, 0x1e1170acU, 0x6c5a724eU,
417 0xfd0efffbU, 0x0f853856U, 0x3daed51eU, 0x362d3927U,
418 0x0a0fd964U, 0x685ca621U, 0x9b5b54d1U, 0x24362e3aU,
419 0x0c0a67b1U, 0x9357e70fU, 0xb4ee96d2U, 0x1b9b919eU,
420 0x80c0c54fU, 0x61dc20a2U, 0x5a774b69U, 0x1c121a16U,
421 0xe293ba0aU, 0xc0a02ae5U, 0x3c22e043U, 0x121b171dU,
422 0x0e090d0bU, 0xf28bc7adU, 0x2db6a8b9U, 0x141ea9c8U,
423 0x57f11985U, 0xaf75074cU, 0xee99ddbbU, 0xa37f60fdU,
424 0xf701269fU, 0x5c72f5bcU, 0x44663bc5U, 0x5bfb7e34U,
425 0x8b432976U, 0xcb23c6dcU, 0xb6edfc68U, 0xb8e4f163U,
426 0xd731dccaU, 0x42638510U, 0x13972240U, 0x84c61120U,
427 0x854a247dU, 0xd2bb3df8U, 0xaef93211U, 0xc729a16dU,
428 0x1d9e2f4bU, 0xdcb230f3U, 0x0d8652ecU, 0x77c1e3d0U,
429 0x2bb3166cU, 0xa970b999U, 0x119448faU, 0x47e96422U,
430 0xa8fc8cc4U, 0xa0f03f1aU, 0x567d2cd8U, 0x223390efU,
431 0x87494ec7U, 0xd938d1c1U, 0x8ccaa2feU, 0x98d40b36U,
432 0xa6f581cfU, 0xa57ade28U, 0xdab78e26U, 0x3fadbfa4U,
433 0x2c3a9de4U, 0x5078920dU, 0x6a5fcc9bU, 0x547e4662U,
434 0xf68d13c2U, 0x90d8b8e8U, 0x2e39f75eU, 0x82c3aff5U,
435 0x9f5d80beU, 0x69d0937cU, 0x6fd52da9U, 0xcf2512b3U,
436 0xc8ac993bU, 0x10187da7U, 0xe89c636eU, 0xdb3bbb7bU,
437 0xcd267809U, 0x6e5918f4U, 0xec9ab701U, 0x834f9aa8U,
438 0xe6956e65U, 0xaaffe67eU, 0x21bccf08U, 0xef15e8e6U,
439 0xbae79bd9U, 0x4a6f36ceU, 0xea9f09d4U, 0x29b07cd6U,
440 0x31a4b2afU, 0x2a3f2331U, 0xc6a59430U, 0x35a266c0U,
441 0x744ebc37U, 0xfc82caa6U, 0xe090d0b0U, 0x33a7d815U,
442 0xf104984aU, 0x41ecdaf7U, 0x7fcd500eU, 0x1791f62fU,
443 0x764dd68dU, 0x43efb04dU, 0xccaa4d54U, 0xe49604dfU,
444 0x9ed1b5e3U, 0x4c6a881bU, 0xc12c1fb8U, 0x4665517fU,
445 0x9d5eea04U, 0x018c355dU, 0xfa877473U, 0xfb0b412eU,
446 0xb3671d5aU, 0x92dbd252U, 0xe9105633U, 0x6dd64713U,
447 0x9ad7618cU, 0x37a10c7aU, 0x59f8148eU, 0xeb133c89U,
448 0xcea927eeU, 0xb761c935U, 0xe11ce5edU, 0x7a47b13cU,
449 0x9cd2df59U, 0x55f2733fU, 0x1814ce79U, 0x73c737bfU,
450 0x53f7cdeaU, 0x5ffdaa5bU, 0xdf3d6f14U, 0x7844db86U,
451 0xcaaff381U, 0xb968c43eU, 0x3824342cU, 0xc2a3405fU,
452 0x161dc372U, 0xbce2250cU, 0x283c498bU, 0xff0d9541U,
453 0x39a80171U, 0x080cb3deU, 0xd8b4e49cU, 0x6456c190U,
454 0x7bcb8461U, 0xd532b670U, 0x486c5c74U, 0xd0b85742U,
455};
456static const u32 Td1[256] = {
457 0x5051f4a7U, 0x537e4165U, 0xc31a17a4U, 0x963a275eU,
458 0xcb3bab6bU, 0xf11f9d45U, 0xabacfa58U, 0x934be303U,
459 0x552030faU, 0xf6ad766dU, 0x9188cc76U, 0x25f5024cU,
460 0xfc4fe5d7U, 0xd7c52acbU, 0x80263544U, 0x8fb562a3U,
461 0x49deb15aU, 0x6725ba1bU, 0x9845ea0eU, 0xe15dfec0U,
462 0x02c32f75U, 0x12814cf0U, 0xa38d4697U, 0xc66bd3f9U,
463 0xe7038f5fU, 0x9515929cU, 0xebbf6d7aU, 0xda955259U,
464 0x2dd4be83U, 0xd3587421U, 0x2949e069U, 0x448ec9c8U,
465 0x6a75c289U, 0x78f48e79U, 0x6b99583eU, 0xdd27b971U,
466 0xb6bee14fU, 0x17f088adU, 0x66c920acU, 0xb47dce3aU,
467 0x1863df4aU, 0x82e51a31U, 0x60975133U, 0x4562537fU,
468 0xe0b16477U, 0x84bb6baeU, 0x1cfe81a0U, 0x94f9082bU,
469 0x58704868U, 0x198f45fdU, 0x8794de6cU, 0xb7527bf8U,
470 0x23ab73d3U, 0xe2724b02U, 0x57e31f8fU, 0x2a6655abU,
471 0x07b2eb28U, 0x032fb5c2U, 0x9a86c57bU, 0xa5d33708U,
472 0xf2302887U, 0xb223bfa5U, 0xba02036aU, 0x5ced1682U,
473 0x2b8acf1cU, 0x92a779b4U, 0xf0f307f2U, 0xa14e69e2U,
474 0xcd65daf4U, 0xd50605beU, 0x1fd13462U, 0x8ac4a6feU,
475 0x9d342e53U, 0xa0a2f355U, 0x32058ae1U, 0x75a4f6ebU,
476 0x390b83ecU, 0xaa4060efU, 0x065e719fU, 0x51bd6e10U,
477 0xf93e218aU, 0x3d96dd06U, 0xaedd3e05U, 0x464de6bdU,
478 0xb591548dU, 0x0571c45dU, 0x6f0406d4U, 0xff605015U,
479 0x241998fbU, 0x97d6bde9U, 0xcc894043U, 0x7767d99eU,
480 0xbdb0e842U, 0x8807898bU, 0x38e7195bU, 0xdb79c8eeU,
481 0x47a17c0aU, 0xe97c420fU, 0xc9f8841eU, 0x00000000U,
482 0x83098086U, 0x48322bedU, 0xac1e1170U, 0x4e6c5a72U,
483 0xfbfd0effU, 0x560f8538U, 0x1e3daed5U, 0x27362d39U,
484 0x640a0fd9U, 0x21685ca6U, 0xd19b5b54U, 0x3a24362eU,
485 0xb10c0a67U, 0x0f9357e7U, 0xd2b4ee96U, 0x9e1b9b91U,
486 0x4f80c0c5U, 0xa261dc20U, 0x695a774bU, 0x161c121aU,
487 0x0ae293baU, 0xe5c0a02aU, 0x433c22e0U, 0x1d121b17U,
488 0x0b0e090dU, 0xadf28bc7U, 0xb92db6a8U, 0xc8141ea9U,
489 0x8557f119U, 0x4caf7507U, 0xbbee99ddU, 0xfda37f60U,
490 0x9ff70126U, 0xbc5c72f5U, 0xc544663bU, 0x345bfb7eU,
491 0x768b4329U, 0xdccb23c6U, 0x68b6edfcU, 0x63b8e4f1U,
492 0xcad731dcU, 0x10426385U, 0x40139722U, 0x2084c611U,
493 0x7d854a24U, 0xf8d2bb3dU, 0x11aef932U, 0x6dc729a1U,
494 0x4b1d9e2fU, 0xf3dcb230U, 0xec0d8652U, 0xd077c1e3U,
495 0x6c2bb316U, 0x99a970b9U, 0xfa119448U, 0x2247e964U,
496 0xc4a8fc8cU, 0x1aa0f03fU, 0xd8567d2cU, 0xef223390U,
497 0xc787494eU, 0xc1d938d1U, 0xfe8ccaa2U, 0x3698d40bU,
498 0xcfa6f581U, 0x28a57adeU, 0x26dab78eU, 0xa43fadbfU,
499 0xe42c3a9dU, 0x0d507892U, 0x9b6a5fccU, 0x62547e46U,
500 0xc2f68d13U, 0xe890d8b8U, 0x5e2e39f7U, 0xf582c3afU,
501 0xbe9f5d80U, 0x7c69d093U, 0xa96fd52dU, 0xb3cf2512U,
502 0x3bc8ac99U, 0xa710187dU, 0x6ee89c63U, 0x7bdb3bbbU,
503 0x09cd2678U, 0xf46e5918U, 0x01ec9ab7U, 0xa8834f9aU,
504 0x65e6956eU, 0x7eaaffe6U, 0x0821bccfU, 0xe6ef15e8U,
505 0xd9bae79bU, 0xce4a6f36U, 0xd4ea9f09U, 0xd629b07cU,
506 0xaf31a4b2U, 0x312a3f23U, 0x30c6a594U, 0xc035a266U,
507 0x37744ebcU, 0xa6fc82caU, 0xb0e090d0U, 0x1533a7d8U,
508 0x4af10498U, 0xf741ecdaU, 0x0e7fcd50U, 0x2f1791f6U,
509 0x8d764dd6U, 0x4d43efb0U, 0x54ccaa4dU, 0xdfe49604U,
510 0xe39ed1b5U, 0x1b4c6a88U, 0xb8c12c1fU, 0x7f466551U,
511 0x049d5eeaU, 0x5d018c35U, 0x73fa8774U, 0x2efb0b41U,
512 0x5ab3671dU, 0x5292dbd2U, 0x33e91056U, 0x136dd647U,
513 0x8c9ad761U, 0x7a37a10cU, 0x8e59f814U, 0x89eb133cU,
514 0xeecea927U, 0x35b761c9U, 0xede11ce5U, 0x3c7a47b1U,
515 0x599cd2dfU, 0x3f55f273U, 0x791814ceU, 0xbf73c737U,
516 0xea53f7cdU, 0x5b5ffdaaU, 0x14df3d6fU, 0x867844dbU,
517 0x81caaff3U, 0x3eb968c4U, 0x2c382434U, 0x5fc2a340U,
518 0x72161dc3U, 0x0cbce225U, 0x8b283c49U, 0x41ff0d95U,
519 0x7139a801U, 0xde080cb3U, 0x9cd8b4e4U, 0x906456c1U,
520 0x617bcb84U, 0x70d532b6U, 0x74486c5cU, 0x42d0b857U,
521};
522static const u32 Td2[256] = {
523 0xa75051f4U, 0x65537e41U, 0xa4c31a17U, 0x5e963a27U,
524 0x6bcb3babU, 0x45f11f9dU, 0x58abacfaU, 0x03934be3U,
525 0xfa552030U, 0x6df6ad76U, 0x769188ccU, 0x4c25f502U,
526 0xd7fc4fe5U, 0xcbd7c52aU, 0x44802635U, 0xa38fb562U,
527 0x5a49deb1U, 0x1b6725baU, 0x0e9845eaU, 0xc0e15dfeU,
528 0x7502c32fU, 0xf012814cU, 0x97a38d46U, 0xf9c66bd3U,
529 0x5fe7038fU, 0x9c951592U, 0x7aebbf6dU, 0x59da9552U,
530 0x832dd4beU, 0x21d35874U, 0x692949e0U, 0xc8448ec9U,
531 0x896a75c2U, 0x7978f48eU, 0x3e6b9958U, 0x71dd27b9U,
532 0x4fb6bee1U, 0xad17f088U, 0xac66c920U, 0x3ab47dceU,
533 0x4a1863dfU, 0x3182e51aU, 0x33609751U, 0x7f456253U,
534 0x77e0b164U, 0xae84bb6bU, 0xa01cfe81U, 0x2b94f908U,
535 0x68587048U, 0xfd198f45U, 0x6c8794deU, 0xf8b7527bU,
536 0xd323ab73U, 0x02e2724bU, 0x8f57e31fU, 0xab2a6655U,
537 0x2807b2ebU, 0xc2032fb5U, 0x7b9a86c5U, 0x08a5d337U,
538 0x87f23028U, 0xa5b223bfU, 0x6aba0203U, 0x825ced16U,
539 0x1c2b8acfU, 0xb492a779U, 0xf2f0f307U, 0xe2a14e69U,
540 0xf4cd65daU, 0xbed50605U, 0x621fd134U, 0xfe8ac4a6U,
541 0x539d342eU, 0x55a0a2f3U, 0xe132058aU, 0xeb75a4f6U,
542 0xec390b83U, 0xefaa4060U, 0x9f065e71U, 0x1051bd6eU,
543
544 0x8af93e21U, 0x063d96ddU, 0x05aedd3eU, 0xbd464de6U,
545 0x8db59154U, 0x5d0571c4U, 0xd46f0406U, 0x15ff6050U,
546 0xfb241998U, 0xe997d6bdU, 0x43cc8940U, 0x9e7767d9U,
547 0x42bdb0e8U, 0x8b880789U, 0x5b38e719U, 0xeedb79c8U,
548 0x0a47a17cU, 0x0fe97c42U, 0x1ec9f884U, 0x00000000U,
549 0x86830980U, 0xed48322bU, 0x70ac1e11U, 0x724e6c5aU,
550 0xfffbfd0eU, 0x38560f85U, 0xd51e3daeU, 0x3927362dU,
551 0xd9640a0fU, 0xa621685cU, 0x54d19b5bU, 0x2e3a2436U,
552 0x67b10c0aU, 0xe70f9357U, 0x96d2b4eeU, 0x919e1b9bU,
553 0xc54f80c0U, 0x20a261dcU, 0x4b695a77U, 0x1a161c12U,
554 0xba0ae293U, 0x2ae5c0a0U, 0xe0433c22U, 0x171d121bU,
555 0x0d0b0e09U, 0xc7adf28bU, 0xa8b92db6U, 0xa9c8141eU,
556 0x198557f1U, 0x074caf75U, 0xddbbee99U, 0x60fda37fU,
557 0x269ff701U, 0xf5bc5c72U, 0x3bc54466U, 0x7e345bfbU,
558 0x29768b43U, 0xc6dccb23U, 0xfc68b6edU, 0xf163b8e4U,
559 0xdccad731U, 0x85104263U, 0x22401397U, 0x112084c6U,
560 0x247d854aU, 0x3df8d2bbU, 0x3211aef9U, 0xa16dc729U,
561 0x2f4b1d9eU, 0x30f3dcb2U, 0x52ec0d86U, 0xe3d077c1U,
562 0x166c2bb3U, 0xb999a970U, 0x48fa1194U, 0x642247e9U,
563 0x8cc4a8fcU, 0x3f1aa0f0U, 0x2cd8567dU, 0x90ef2233U,
564 0x4ec78749U, 0xd1c1d938U, 0xa2fe8ccaU, 0x0b3698d4U,
565 0x81cfa6f5U, 0xde28a57aU, 0x8e26dab7U, 0xbfa43fadU,
566 0x9de42c3aU, 0x920d5078U, 0xcc9b6a5fU, 0x4662547eU,
567 0x13c2f68dU, 0xb8e890d8U, 0xf75e2e39U, 0xaff582c3U,
568 0x80be9f5dU, 0x937c69d0U, 0x2da96fd5U, 0x12b3cf25U,
569 0x993bc8acU, 0x7da71018U, 0x636ee89cU, 0xbb7bdb3bU,
570 0x7809cd26U, 0x18f46e59U, 0xb701ec9aU, 0x9aa8834fU,
571 0x6e65e695U, 0xe67eaaffU, 0xcf0821bcU, 0xe8e6ef15U,
572 0x9bd9bae7U, 0x36ce4a6fU, 0x09d4ea9fU, 0x7cd629b0U,
573 0xb2af31a4U, 0x23312a3fU, 0x9430c6a5U, 0x66c035a2U,
574 0xbc37744eU, 0xcaa6fc82U, 0xd0b0e090U, 0xd81533a7U,
575 0x984af104U, 0xdaf741ecU, 0x500e7fcdU, 0xf62f1791U,
576 0xd68d764dU, 0xb04d43efU, 0x4d54ccaaU, 0x04dfe496U,
577 0xb5e39ed1U, 0x881b4c6aU, 0x1fb8c12cU, 0x517f4665U,
578 0xea049d5eU, 0x355d018cU, 0x7473fa87U, 0x412efb0bU,
579 0x1d5ab367U, 0xd25292dbU, 0x5633e910U, 0x47136dd6U,
580 0x618c9ad7U, 0x0c7a37a1U, 0x148e59f8U, 0x3c89eb13U,
581 0x27eecea9U, 0xc935b761U, 0xe5ede11cU, 0xb13c7a47U,
582 0xdf599cd2U, 0x733f55f2U, 0xce791814U, 0x37bf73c7U,
583 0xcdea53f7U, 0xaa5b5ffdU, 0x6f14df3dU, 0xdb867844U,
584 0xf381caafU, 0xc43eb968U, 0x342c3824U, 0x405fc2a3U,
585 0xc372161dU, 0x250cbce2U, 0x498b283cU, 0x9541ff0dU,
586 0x017139a8U, 0xb3de080cU, 0xe49cd8b4U, 0xc1906456U,
587 0x84617bcbU, 0xb670d532U, 0x5c74486cU, 0x5742d0b8U,
588};
589static const u32 Td3[256] = {
590 0xf4a75051U, 0x4165537eU, 0x17a4c31aU, 0x275e963aU,
591 0xab6bcb3bU, 0x9d45f11fU, 0xfa58abacU, 0xe303934bU,
592 0x30fa5520U, 0x766df6adU, 0xcc769188U, 0x024c25f5U,
593 0xe5d7fc4fU, 0x2acbd7c5U, 0x35448026U, 0x62a38fb5U,
594 0xb15a49deU, 0xba1b6725U, 0xea0e9845U, 0xfec0e15dU,
595 0x2f7502c3U, 0x4cf01281U, 0x4697a38dU, 0xd3f9c66bU,
596 0x8f5fe703U, 0x929c9515U, 0x6d7aebbfU, 0x5259da95U,
597 0xbe832dd4U, 0x7421d358U, 0xe0692949U, 0xc9c8448eU,
598 0xc2896a75U, 0x8e7978f4U, 0x583e6b99U, 0xb971dd27U,
599 0xe14fb6beU, 0x88ad17f0U, 0x20ac66c9U, 0xce3ab47dU,
600 0xdf4a1863U, 0x1a3182e5U, 0x51336097U, 0x537f4562U,
601 0x6477e0b1U, 0x6bae84bbU, 0x81a01cfeU, 0x082b94f9U,
602 0x48685870U, 0x45fd198fU, 0xde6c8794U, 0x7bf8b752U,
603 0x73d323abU, 0x4b02e272U, 0x1f8f57e3U, 0x55ab2a66U,
604 0xeb2807b2U, 0xb5c2032fU, 0xc57b9a86U, 0x3708a5d3U,
605 0x2887f230U, 0xbfa5b223U, 0x036aba02U, 0x16825cedU,
606 0xcf1c2b8aU, 0x79b492a7U, 0x07f2f0f3U, 0x69e2a14eU,
607 0xdaf4cd65U, 0x05bed506U, 0x34621fd1U, 0xa6fe8ac4U,
608 0x2e539d34U, 0xf355a0a2U, 0x8ae13205U, 0xf6eb75a4U,
609 0x83ec390bU, 0x60efaa40U, 0x719f065eU, 0x6e1051bdU,
610 0x218af93eU, 0xdd063d96U, 0x3e05aeddU, 0xe6bd464dU,
611 0x548db591U, 0xc45d0571U, 0x06d46f04U, 0x5015ff60U,
612 0x98fb2419U, 0xbde997d6U, 0x4043cc89U, 0xd99e7767U,
613 0xe842bdb0U, 0x898b8807U, 0x195b38e7U, 0xc8eedb79U,
614 0x7c0a47a1U, 0x420fe97cU, 0x841ec9f8U, 0x00000000U,
615 0x80868309U, 0x2bed4832U, 0x1170ac1eU, 0x5a724e6cU,
616 0x0efffbfdU, 0x8538560fU, 0xaed51e3dU, 0x2d392736U,
617 0x0fd9640aU, 0x5ca62168U, 0x5b54d19bU, 0x362e3a24U,
618 0x0a67b10cU, 0x57e70f93U, 0xee96d2b4U, 0x9b919e1bU,
619 0xc0c54f80U, 0xdc20a261U, 0x774b695aU, 0x121a161cU,
620 0x93ba0ae2U, 0xa02ae5c0U, 0x22e0433cU, 0x1b171d12U,
621 0x090d0b0eU, 0x8bc7adf2U, 0xb6a8b92dU, 0x1ea9c814U,
622 0xf1198557U, 0x75074cafU, 0x99ddbbeeU, 0x7f60fda3U,
623 0x01269ff7U, 0x72f5bc5cU, 0x663bc544U, 0xfb7e345bU,
624 0x4329768bU, 0x23c6dccbU, 0xedfc68b6U, 0xe4f163b8U,
625 0x31dccad7U, 0x63851042U, 0x97224013U, 0xc6112084U,
626 0x4a247d85U, 0xbb3df8d2U, 0xf93211aeU, 0x29a16dc7U,
627 0x9e2f4b1dU, 0xb230f3dcU, 0x8652ec0dU, 0xc1e3d077U,
628 0xb3166c2bU, 0x70b999a9U, 0x9448fa11U, 0xe9642247U,
629 0xfc8cc4a8U, 0xf03f1aa0U, 0x7d2cd856U, 0x3390ef22U,
630 0x494ec787U, 0x38d1c1d9U, 0xcaa2fe8cU, 0xd40b3698U,
631 0xf581cfa6U, 0x7ade28a5U, 0xb78e26daU, 0xadbfa43fU,
632 0x3a9de42cU, 0x78920d50U, 0x5fcc9b6aU, 0x7e466254U,
633 0x8d13c2f6U, 0xd8b8e890U, 0x39f75e2eU, 0xc3aff582U,
634 0x5d80be9fU, 0xd0937c69U, 0xd52da96fU, 0x2512b3cfU,
635 0xac993bc8U, 0x187da710U, 0x9c636ee8U, 0x3bbb7bdbU,
636 0x267809cdU, 0x5918f46eU, 0x9ab701ecU, 0x4f9aa883U,
637 0x956e65e6U, 0xffe67eaaU, 0xbccf0821U, 0x15e8e6efU,
638 0xe79bd9baU, 0x6f36ce4aU, 0x9f09d4eaU, 0xb07cd629U,
639 0xa4b2af31U, 0x3f23312aU, 0xa59430c6U, 0xa266c035U,
640 0x4ebc3774U, 0x82caa6fcU, 0x90d0b0e0U, 0xa7d81533U,
641 0x04984af1U, 0xecdaf741U, 0xcd500e7fU, 0x91f62f17U,
642 0x4dd68d76U, 0xefb04d43U, 0xaa4d54ccU, 0x9604dfe4U,
643 0xd1b5e39eU, 0x6a881b4cU, 0x2c1fb8c1U, 0x65517f46U,
644 0x5eea049dU, 0x8c355d01U, 0x877473faU, 0x0b412efbU,
645 0x671d5ab3U, 0xdbd25292U, 0x105633e9U, 0xd647136dU,
646 0xd7618c9aU, 0xa10c7a37U, 0xf8148e59U, 0x133c89ebU,
647 0xa927eeceU, 0x61c935b7U, 0x1ce5ede1U, 0x47b13c7aU,
648 0xd2df599cU, 0xf2733f55U, 0x14ce7918U, 0xc737bf73U,
649 0xf7cdea53U, 0xfdaa5b5fU, 0x3d6f14dfU, 0x44db8678U,
650 0xaff381caU, 0x68c43eb9U, 0x24342c38U, 0xa3405fc2U,
651 0x1dc37216U, 0xe2250cbcU, 0x3c498b28U, 0x0d9541ffU,
652 0xa8017139U, 0x0cb3de08U, 0xb4e49cd8U, 0x56c19064U,
653 0xcb84617bU, 0x32b670d5U, 0x6c5c7448U, 0xb85742d0U,
654};
655static const u32 Td4[256] = {
656 0x52525252U, 0x09090909U, 0x6a6a6a6aU, 0xd5d5d5d5U,
657 0x30303030U, 0x36363636U, 0xa5a5a5a5U, 0x38383838U,
658 0xbfbfbfbfU, 0x40404040U, 0xa3a3a3a3U, 0x9e9e9e9eU,
659 0x81818181U, 0xf3f3f3f3U, 0xd7d7d7d7U, 0xfbfbfbfbU,
660 0x7c7c7c7cU, 0xe3e3e3e3U, 0x39393939U, 0x82828282U,
661 0x9b9b9b9bU, 0x2f2f2f2fU, 0xffffffffU, 0x87878787U,
662 0x34343434U, 0x8e8e8e8eU, 0x43434343U, 0x44444444U,
663 0xc4c4c4c4U, 0xdedededeU, 0xe9e9e9e9U, 0xcbcbcbcbU,
664 0x54545454U, 0x7b7b7b7bU, 0x94949494U, 0x32323232U,
665 0xa6a6a6a6U, 0xc2c2c2c2U, 0x23232323U, 0x3d3d3d3dU,
666 0xeeeeeeeeU, 0x4c4c4c4cU, 0x95959595U, 0x0b0b0b0bU,
667 0x42424242U, 0xfafafafaU, 0xc3c3c3c3U, 0x4e4e4e4eU,
668 0x08080808U, 0x2e2e2e2eU, 0xa1a1a1a1U, 0x66666666U,
669 0x28282828U, 0xd9d9d9d9U, 0x24242424U, 0xb2b2b2b2U,
670 0x76767676U, 0x5b5b5b5bU, 0xa2a2a2a2U, 0x49494949U,
671 0x6d6d6d6dU, 0x8b8b8b8bU, 0xd1d1d1d1U, 0x25252525U,
672 0x72727272U, 0xf8f8f8f8U, 0xf6f6f6f6U, 0x64646464U,
673 0x86868686U, 0x68686868U, 0x98989898U, 0x16161616U,
674 0xd4d4d4d4U, 0xa4a4a4a4U, 0x5c5c5c5cU, 0xccccccccU,
675 0x5d5d5d5dU, 0x65656565U, 0xb6b6b6b6U, 0x92929292U,
676 0x6c6c6c6cU, 0x70707070U, 0x48484848U, 0x50505050U,
677 0xfdfdfdfdU, 0xededededU, 0xb9b9b9b9U, 0xdadadadaU,
678 0x5e5e5e5eU, 0x15151515U, 0x46464646U, 0x57575757U,
679 0xa7a7a7a7U, 0x8d8d8d8dU, 0x9d9d9d9dU, 0x84848484U,
680 0x90909090U, 0xd8d8d8d8U, 0xababababU, 0x00000000U,
681 0x8c8c8c8cU, 0xbcbcbcbcU, 0xd3d3d3d3U, 0x0a0a0a0aU,
682 0xf7f7f7f7U, 0xe4e4e4e4U, 0x58585858U, 0x05050505U,
683 0xb8b8b8b8U, 0xb3b3b3b3U, 0x45454545U, 0x06060606U,
684 0xd0d0d0d0U, 0x2c2c2c2cU, 0x1e1e1e1eU, 0x8f8f8f8fU,
685 0xcacacacaU, 0x3f3f3f3fU, 0x0f0f0f0fU, 0x02020202U,
686 0xc1c1c1c1U, 0xafafafafU, 0xbdbdbdbdU, 0x03030303U,
687 0x01010101U, 0x13131313U, 0x8a8a8a8aU, 0x6b6b6b6bU,
688 0x3a3a3a3aU, 0x91919191U, 0x11111111U, 0x41414141U,
689 0x4f4f4f4fU, 0x67676767U, 0xdcdcdcdcU, 0xeaeaeaeaU,
690 0x97979797U, 0xf2f2f2f2U, 0xcfcfcfcfU, 0xcecececeU,
691 0xf0f0f0f0U, 0xb4b4b4b4U, 0xe6e6e6e6U, 0x73737373U,
692 0x96969696U, 0xacacacacU, 0x74747474U, 0x22222222U,
693 0xe7e7e7e7U, 0xadadadadU, 0x35353535U, 0x85858585U,
694 0xe2e2e2e2U, 0xf9f9f9f9U, 0x37373737U, 0xe8e8e8e8U,
695 0x1c1c1c1cU, 0x75757575U, 0xdfdfdfdfU, 0x6e6e6e6eU,
696 0x47474747U, 0xf1f1f1f1U, 0x1a1a1a1aU, 0x71717171U,
697 0x1d1d1d1dU, 0x29292929U, 0xc5c5c5c5U, 0x89898989U,
698 0x6f6f6f6fU, 0xb7b7b7b7U, 0x62626262U, 0x0e0e0e0eU,
699 0xaaaaaaaaU, 0x18181818U, 0xbebebebeU, 0x1b1b1b1bU,
700 0xfcfcfcfcU, 0x56565656U, 0x3e3e3e3eU, 0x4b4b4b4bU,
701 0xc6c6c6c6U, 0xd2d2d2d2U, 0x79797979U, 0x20202020U,
702 0x9a9a9a9aU, 0xdbdbdbdbU, 0xc0c0c0c0U, 0xfefefefeU,
703 0x78787878U, 0xcdcdcdcdU, 0x5a5a5a5aU, 0xf4f4f4f4U,
704 0x1f1f1f1fU, 0xddddddddU, 0xa8a8a8a8U, 0x33333333U,
705 0x88888888U, 0x07070707U, 0xc7c7c7c7U, 0x31313131U,
706 0xb1b1b1b1U, 0x12121212U, 0x10101010U, 0x59595959U,
707 0x27272727U, 0x80808080U, 0xececececU, 0x5f5f5f5fU,
708 0x60606060U, 0x51515151U, 0x7f7f7f7fU, 0xa9a9a9a9U,
709 0x19191919U, 0xb5b5b5b5U, 0x4a4a4a4aU, 0x0d0d0d0dU,
710 0x2d2d2d2dU, 0xe5e5e5e5U, 0x7a7a7a7aU, 0x9f9f9f9fU,
711 0x93939393U, 0xc9c9c9c9U, 0x9c9c9c9cU, 0xefefefefU,
712 0xa0a0a0a0U, 0xe0e0e0e0U, 0x3b3b3b3bU, 0x4d4d4d4dU,
713 0xaeaeaeaeU, 0x2a2a2a2aU, 0xf5f5f5f5U, 0xb0b0b0b0U,
714 0xc8c8c8c8U, 0xebebebebU, 0xbbbbbbbbU, 0x3c3c3c3cU,
715 0x83838383U, 0x53535353U, 0x99999999U, 0x61616161U,
716 0x17171717U, 0x2b2b2b2bU, 0x04040404U, 0x7e7e7e7eU,
717 0xbabababaU, 0x77777777U, 0xd6d6d6d6U, 0x26262626U,
718 0xe1e1e1e1U, 0x69696969U, 0x14141414U, 0x63636363U,
719 0x55555555U, 0x21212121U, 0x0c0c0c0cU, 0x7d7d7d7dU,
720};
721static const u32 rcon[] = {
722 0x01000000, 0x02000000, 0x04000000, 0x08000000,
723 0x10000000, 0x20000000, 0x40000000, 0x80000000,
724 0x1B000000, 0x36000000, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */
725};
726
727/**
728 * Expand the cipher key into the encryption key schedule.
729 */
730int AES_set_encrypt_key(const unsigned char *userKey,
731 const FIPS_AES_SIZE_T bits, AES_KEY *key) {
732
733 u32 *rk;
734 int i = 0;
735 u32 temp;
736
737 if (!userKey || !key)
738 return -1;
739 if (bits != 128 && bits != 192 && bits != 256)
740 return -2;
741 if(FIPS_selftest_failed())
742 return -3;
743
744 rk = key->rd_key;
745
746 if (bits==128)
747 key->rounds = 10;
748 else if (bits==192)
749 key->rounds = 12;
750 else
751 key->rounds = 14;
752
753 rk[0] = GETU32(userKey );
754 rk[1] = GETU32(userKey + 4);
755 rk[2] = GETU32(userKey + 8);
756 rk[3] = GETU32(userKey + 12);
757 if (bits == 128) {
758 while (1) {
759 temp = rk[3];
760 rk[4] = rk[0] ^
761 (Te4[(temp >> 16) & 0xff] & 0xff000000) ^
762 (Te4[(temp >> 8) & 0xff] & 0x00ff0000) ^
763 (Te4[(temp ) & 0xff] & 0x0000ff00) ^
764 (Te4[(temp >> 24) ] & 0x000000ff) ^
765 rcon[i];
766 rk[5] = rk[1] ^ rk[4];
767 rk[6] = rk[2] ^ rk[5];
768 rk[7] = rk[3] ^ rk[6];
769 if (++i == 10) {
770 return 0;
771 }
772 rk += 4;
773 }
774 }
775 rk[4] = GETU32(userKey + 16);
776 rk[5] = GETU32(userKey + 20);
777 if (bits == 192) {
778 while (1) {
779 temp = rk[ 5];
780 rk[ 6] = rk[ 0] ^
781 (Te4[(temp >> 16) & 0xff] & 0xff000000) ^
782 (Te4[(temp >> 8) & 0xff] & 0x00ff0000) ^
783 (Te4[(temp ) & 0xff] & 0x0000ff00) ^
784 (Te4[(temp >> 24) ] & 0x000000ff) ^
785 rcon[i];
786 rk[ 7] = rk[ 1] ^ rk[ 6];
787 rk[ 8] = rk[ 2] ^ rk[ 7];
788 rk[ 9] = rk[ 3] ^ rk[ 8];
789 if (++i == 8) {
790 return 0;
791 }
792 rk[10] = rk[ 4] ^ rk[ 9];
793 rk[11] = rk[ 5] ^ rk[10];
794 rk += 6;
795 }
796 }
797 rk[6] = GETU32(userKey + 24);
798 rk[7] = GETU32(userKey + 28);
799 if (bits == 256) {
800 while (1) {
801 temp = rk[ 7];
802 rk[ 8] = rk[ 0] ^
803 (Te4[(temp >> 16) & 0xff] & 0xff000000) ^
804 (Te4[(temp >> 8) & 0xff] & 0x00ff0000) ^
805 (Te4[(temp ) & 0xff] & 0x0000ff00) ^
806 (Te4[(temp >> 24) ] & 0x000000ff) ^
807 rcon[i];
808 rk[ 9] = rk[ 1] ^ rk[ 8];
809 rk[10] = rk[ 2] ^ rk[ 9];
810 rk[11] = rk[ 3] ^ rk[10];
811 if (++i == 7) {
812 return 0;
813 }
814 temp = rk[11];
815 rk[12] = rk[ 4] ^
816 (Te4[(temp >> 24) ] & 0xff000000) ^
817 (Te4[(temp >> 16) & 0xff] & 0x00ff0000) ^
818 (Te4[(temp >> 8) & 0xff] & 0x0000ff00) ^
819 (Te4[(temp ) & 0xff] & 0x000000ff);
820 rk[13] = rk[ 5] ^ rk[12];
821 rk[14] = rk[ 6] ^ rk[13];
822 rk[15] = rk[ 7] ^ rk[14];
823
824 rk += 8;
825 }
826 }
827 return 0;
828}
829
830/**
831 * Expand the cipher key into the decryption key schedule.
832 */
833int AES_set_decrypt_key(const unsigned char *userKey,
834 const FIPS_AES_SIZE_T bits, AES_KEY *key) {
835
836 u32 *rk;
837 int i, j, status;
838 u32 temp;
839
840 /* first, start with an encryption schedule */
841 status = AES_set_encrypt_key(userKey, bits, key);
842 if (status < 0)
843 return status;
844
845 rk = key->rd_key;
846
847 /* invert the order of the round keys: */
848 for (i = 0, j = 4*(key->rounds); i < j; i += 4, j -= 4) {
849 temp = rk[i ]; rk[i ] = rk[j ]; rk[j ] = temp;
850 temp = rk[i + 1]; rk[i + 1] = rk[j + 1]; rk[j + 1] = temp;
851 temp = rk[i + 2]; rk[i + 2] = rk[j + 2]; rk[j + 2] = temp;
852 temp = rk[i + 3]; rk[i + 3] = rk[j + 3]; rk[j + 3] = temp;
853 }
854 /* apply the inverse MixColumn transform to all round keys but the first and the last: */
855 for (i = 1; i < (key->rounds); i++) {
856 rk += 4;
857 rk[0] =
858 Td0[Te4[(rk[0] >> 24) ] & 0xff] ^
859 Td1[Te4[(rk[0] >> 16) & 0xff] & 0xff] ^
860 Td2[Te4[(rk[0] >> 8) & 0xff] & 0xff] ^
861 Td3[Te4[(rk[0] ) & 0xff] & 0xff];
862 rk[1] =
863 Td0[Te4[(rk[1] >> 24) ] & 0xff] ^
864 Td1[Te4[(rk[1] >> 16) & 0xff] & 0xff] ^
865 Td2[Te4[(rk[1] >> 8) & 0xff] & 0xff] ^
866 Td3[Te4[(rk[1] ) & 0xff] & 0xff];
867 rk[2] =
868 Td0[Te4[(rk[2] >> 24) ] & 0xff] ^
869 Td1[Te4[(rk[2] >> 16) & 0xff] & 0xff] ^
870 Td2[Te4[(rk[2] >> 8) & 0xff] & 0xff] ^
871 Td3[Te4[(rk[2] ) & 0xff] & 0xff];
872 rk[3] =
873 Td0[Te4[(rk[3] >> 24) ] & 0xff] ^
874 Td1[Te4[(rk[3] >> 16) & 0xff] & 0xff] ^
875 Td2[Te4[(rk[3] >> 8) & 0xff] & 0xff] ^
876 Td3[Te4[(rk[3] ) & 0xff] & 0xff];
877 }
878 return 0;
879}
880
881/*
882 * Encrypt a single block
883 * in and out can overlap
884 */
885void AES_encrypt(const unsigned char *in, unsigned char *out,
886 const AES_KEY *key) {
887
888 const u32 *rk;
889 u32 s0, s1, s2, s3, t0, t1, t2, t3;
890#ifndef FULL_UNROLL
891 int r;
892#endif /* ?FULL_UNROLL */
893
894 assert(in && out && key);
895 rk = key->rd_key;
896
897 /*
898 * map byte array block to cipher state
899 * and add initial round key:
900 */
901 s0 = GETU32(in ) ^ rk[0];
902 s1 = GETU32(in + 4) ^ rk[1];
903 s2 = GETU32(in + 8) ^ rk[2];
904 s3 = GETU32(in + 12) ^ rk[3];
905#ifdef FULL_UNROLL
906 /* round 1: */
907 t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[ 4];
908 t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[ 5];
909 t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[ 6];
910 t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[ 7];
911 /* round 2: */
912 s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[ 8];
913 s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[ 9];
914 s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[10];
915 s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[11];
916 /* round 3: */
917 t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[12];
918 t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[13];
919 t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[14];
920 t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[15];
921 /* round 4: */
922 s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[16];
923 s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[17];
924 s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[18];
925 s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[19];
926 /* round 5: */
927 t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[20];
928 t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[21];
929 t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[22];
930 t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[23];
931 /* round 6: */
932 s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[24];
933 s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[25];
934 s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[26];
935 s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[27];
936 /* round 7: */
937 t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[28];
938 t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[29];
939 t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[30];
940 t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[31];
941 /* round 8: */
942 s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[32];
943 s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[33];
944 s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[34];
945 s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[35];
946 /* round 9: */
947 t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[36];
948 t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[37];
949 t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[38];
950 t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[39];
951 if (key->rounds > 10) {
952 /* round 10: */
953 s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[40];
954 s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[41];
955 s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[42];
956 s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[43];
957 /* round 11: */
958 t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[44];
959 t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[45];
960 t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[46];
961 t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[47];
962 if (key->rounds > 12) {
963 /* round 12: */
964 s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[48];
965 s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[49];
966 s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[50];
967 s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[51];
968 /* round 13: */
969 t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[52];
970 t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[53];
971 t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[54];
972 t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[55];
973 }
974 }
975 rk += key->rounds << 2;
976#else /* !FULL_UNROLL */
977 /*
978 * Nr - 1 full rounds:
979 */
980 r = key->rounds >> 1;
981 for (;;) {
982 t0 =
983 Te0[(s0 >> 24) ] ^
984 Te1[(s1 >> 16) & 0xff] ^
985 Te2[(s2 >> 8) & 0xff] ^
986 Te3[(s3 ) & 0xff] ^
987 rk[4];
988 t1 =
989 Te0[(s1 >> 24) ] ^
990 Te1[(s2 >> 16) & 0xff] ^
991 Te2[(s3 >> 8) & 0xff] ^
992 Te3[(s0 ) & 0xff] ^
993 rk[5];
994 t2 =
995 Te0[(s2 >> 24) ] ^
996 Te1[(s3 >> 16) & 0xff] ^
997 Te2[(s0 >> 8) & 0xff] ^
998 Te3[(s1 ) & 0xff] ^
999 rk[6];
1000 t3 =
1001 Te0[(s3 >> 24) ] ^
1002 Te1[(s0 >> 16) & 0xff] ^
1003 Te2[(s1 >> 8) & 0xff] ^
1004 Te3[(s2 ) & 0xff] ^
1005 rk[7];
1006
1007 rk += 8;
1008 if (--r == 0) {
1009 break;
1010 }
1011
1012 s0 =
1013 Te0[(t0 >> 24) ] ^
1014 Te1[(t1 >> 16) & 0xff] ^
1015 Te2[(t2 >> 8) & 0xff] ^
1016 Te3[(t3 ) & 0xff] ^
1017 rk[0];
1018 s1 =
1019 Te0[(t1 >> 24) ] ^
1020 Te1[(t2 >> 16) & 0xff] ^
1021 Te2[(t3 >> 8) & 0xff] ^
1022 Te3[(t0 ) & 0xff] ^
1023 rk[1];
1024 s2 =
1025 Te0[(t2 >> 24) ] ^
1026 Te1[(t3 >> 16) & 0xff] ^
1027 Te2[(t0 >> 8) & 0xff] ^
1028 Te3[(t1 ) & 0xff] ^
1029 rk[2];
1030 s3 =
1031 Te0[(t3 >> 24) ] ^
1032 Te1[(t0 >> 16) & 0xff] ^
1033 Te2[(t1 >> 8) & 0xff] ^
1034 Te3[(t2 ) & 0xff] ^
1035 rk[3];
1036 }
1037#endif /* ?FULL_UNROLL */
1038 /*
1039 * apply last round and
1040 * map cipher state to byte array block:
1041 */
1042 s0 =
1043 (Te4[(t0 >> 24) ] & 0xff000000) ^
1044 (Te4[(t1 >> 16) & 0xff] & 0x00ff0000) ^
1045 (Te4[(t2 >> 8) & 0xff] & 0x0000ff00) ^
1046 (Te4[(t3 ) & 0xff] & 0x000000ff) ^
1047 rk[0];
1048 PUTU32(out , s0);
1049 s1 =
1050 (Te4[(t1 >> 24) ] & 0xff000000) ^
1051 (Te4[(t2 >> 16) & 0xff] & 0x00ff0000) ^
1052 (Te4[(t3 >> 8) & 0xff] & 0x0000ff00) ^
1053 (Te4[(t0 ) & 0xff] & 0x000000ff) ^
1054 rk[1];
1055 PUTU32(out + 4, s1);
1056 s2 =
1057 (Te4[(t2 >> 24) ] & 0xff000000) ^
1058 (Te4[(t3 >> 16) & 0xff] & 0x00ff0000) ^
1059 (Te4[(t0 >> 8) & 0xff] & 0x0000ff00) ^
1060 (Te4[(t1 ) & 0xff] & 0x000000ff) ^
1061 rk[2];
1062 PUTU32(out + 8, s2);
1063 s3 =
1064 (Te4[(t3 >> 24) ] & 0xff000000) ^
1065 (Te4[(t0 >> 16) & 0xff] & 0x00ff0000) ^
1066 (Te4[(t1 >> 8) & 0xff] & 0x0000ff00) ^
1067 (Te4[(t2 ) & 0xff] & 0x000000ff) ^
1068 rk[3];
1069 PUTU32(out + 12, s3);
1070}
1071
1072/*
1073 * Decrypt a single block
1074 * in and out can overlap
1075 */
1076void AES_decrypt(const unsigned char *in, unsigned char *out,
1077 const AES_KEY *key) {
1078
1079 const u32 *rk;
1080 u32 s0, s1, s2, s3, t0, t1, t2, t3;
1081#ifndef FULL_UNROLL
1082 int r;
1083#endif /* ?FULL_UNROLL */
1084
1085 assert(in && out && key);
1086 rk = key->rd_key;
1087
1088 /*
1089 * map byte array block to cipher state
1090 * and add initial round key:
1091 */
1092 s0 = GETU32(in ) ^ rk[0];
1093 s1 = GETU32(in + 4) ^ rk[1];
1094 s2 = GETU32(in + 8) ^ rk[2];
1095 s3 = GETU32(in + 12) ^ rk[3];
1096#ifdef FULL_UNROLL
1097 /* round 1: */
1098 t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[ 4];
1099 t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[ 5];
1100 t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[ 6];
1101 t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[ 7];
1102 /* round 2: */
1103 s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[ 8];
1104 s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[ 9];
1105 s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[10];
1106 s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[11];
1107 /* round 3: */
1108 t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[12];
1109 t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[13];
1110 t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[14];
1111 t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[15];
1112 /* round 4: */
1113 s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[16];
1114 s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[17];
1115 s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[18];
1116 s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[19];
1117 /* round 5: */
1118 t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[20];
1119 t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[21];
1120 t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[22];
1121 t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[23];
1122 /* round 6: */
1123 s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[24];
1124 s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[25];
1125 s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[26];
1126 s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[27];
1127 /* round 7: */
1128 t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[28];
1129 t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[29];
1130 t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[30];
1131 t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[31];
1132 /* round 8: */
1133 s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[32];
1134 s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[33];
1135 s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[34];
1136 s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[35];
1137 /* round 9: */
1138 t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[36];
1139 t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[37];
1140 t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[38];
1141 t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[39];
1142 if (key->rounds > 10) {
1143 /* round 10: */
1144 s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[40];
1145 s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[41];
1146 s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[42];
1147 s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[43];
1148 /* round 11: */
1149 t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[44];
1150 t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[45];
1151 t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[46];
1152 t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[47];
1153 if (key->rounds > 12) {
1154 /* round 12: */
1155 s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[48];
1156 s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[49];
1157 s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[50];
1158 s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[51];
1159 /* round 13: */
1160 t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[52];
1161 t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[53];
1162 t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[54];
1163 t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[55];
1164 }
1165 }
1166 rk += key->rounds << 2;
1167#else /* !FULL_UNROLL */
1168 /*
1169 * Nr - 1 full rounds:
1170 */
1171 r = key->rounds >> 1;
1172 for (;;) {
1173 t0 =
1174 Td0[(s0 >> 24) ] ^
1175 Td1[(s3 >> 16) & 0xff] ^
1176 Td2[(s2 >> 8) & 0xff] ^
1177 Td3[(s1 ) & 0xff] ^
1178 rk[4];
1179 t1 =
1180 Td0[(s1 >> 24) ] ^
1181 Td1[(s0 >> 16) & 0xff] ^
1182 Td2[(s3 >> 8) & 0xff] ^
1183 Td3[(s2 ) & 0xff] ^
1184 rk[5];
1185 t2 =
1186 Td0[(s2 >> 24) ] ^
1187 Td1[(s1 >> 16) & 0xff] ^
1188 Td2[(s0 >> 8) & 0xff] ^
1189 Td3[(s3 ) & 0xff] ^
1190 rk[6];
1191 t3 =
1192 Td0[(s3 >> 24) ] ^
1193 Td1[(s2 >> 16) & 0xff] ^
1194 Td2[(s1 >> 8) & 0xff] ^
1195 Td3[(s0 ) & 0xff] ^
1196 rk[7];
1197
1198 rk += 8;
1199 if (--r == 0) {
1200 break;
1201 }
1202
1203 s0 =
1204 Td0[(t0 >> 24) ] ^
1205 Td1[(t3 >> 16) & 0xff] ^
1206 Td2[(t2 >> 8) & 0xff] ^
1207 Td3[(t1 ) & 0xff] ^
1208 rk[0];
1209 s1 =
1210 Td0[(t1 >> 24) ] ^
1211 Td1[(t0 >> 16) & 0xff] ^
1212 Td2[(t3 >> 8) & 0xff] ^
1213 Td3[(t2 ) & 0xff] ^
1214 rk[1];
1215 s2 =
1216 Td0[(t2 >> 24) ] ^
1217 Td1[(t1 >> 16) & 0xff] ^
1218 Td2[(t0 >> 8) & 0xff] ^
1219 Td3[(t3 ) & 0xff] ^
1220 rk[2];
1221 s3 =
1222 Td0[(t3 >> 24) ] ^
1223 Td1[(t2 >> 16) & 0xff] ^
1224 Td2[(t1 >> 8) & 0xff] ^
1225 Td3[(t0 ) & 0xff] ^
1226 rk[3];
1227 }
1228#endif /* ?FULL_UNROLL */
1229 /*
1230 * apply last round and
1231 * map cipher state to byte array block:
1232 */
1233 s0 =
1234 (Td4[(t0 >> 24) ] & 0xff000000) ^
1235 (Td4[(t3 >> 16) & 0xff] & 0x00ff0000) ^
1236 (Td4[(t2 >> 8) & 0xff] & 0x0000ff00) ^
1237 (Td4[(t1 ) & 0xff] & 0x000000ff) ^
1238 rk[0];
1239 PUTU32(out , s0);
1240 s1 =
1241 (Td4[(t1 >> 24) ] & 0xff000000) ^
1242 (Td4[(t0 >> 16) & 0xff] & 0x00ff0000) ^
1243 (Td4[(t3 >> 8) & 0xff] & 0x0000ff00) ^
1244 (Td4[(t2 ) & 0xff] & 0x000000ff) ^
1245 rk[1];
1246 PUTU32(out + 4, s1);
1247 s2 =
1248 (Td4[(t2 >> 24) ] & 0xff000000) ^
1249 (Td4[(t1 >> 16) & 0xff] & 0x00ff0000) ^
1250 (Td4[(t0 >> 8) & 0xff] & 0x0000ff00) ^
1251 (Td4[(t3 ) & 0xff] & 0x000000ff) ^
1252 rk[2];
1253 PUTU32(out + 8, s2);
1254 s3 =
1255 (Td4[(t3 >> 24) ] & 0xff000000) ^
1256 (Td4[(t2 >> 16) & 0xff] & 0x00ff0000) ^
1257 (Td4[(t1 >> 8) & 0xff] & 0x0000ff00) ^
1258 (Td4[(t0 ) & 0xff] & 0x000000ff) ^
1259 rk[3];
1260 PUTU32(out + 12, s3);
1261}
1262
1263#endif /* def OPENSSL_FIPS */
diff --git a/src/lib/libssl/src/fips/aes/fips_aes_locl.h b/src/lib/libssl/src/fips/aes/fips_aes_locl.h
new file mode 100644
index 0000000000..4184729e34
--- /dev/null
+++ b/src/lib/libssl/src/fips/aes/fips_aes_locl.h
@@ -0,0 +1,85 @@
1/* crypto/aes/aes.h -*- mode:C; c-file-style: "eay" -*- */
2/* ====================================================================
3 * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in
14 * the documentation and/or other materials provided with the
15 * distribution.
16 *
17 * 3. All advertising materials mentioning features or use of this
18 * software must display the following acknowledgment:
19 * "This product includes software developed by the OpenSSL Project
20 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
21 *
22 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
23 * endorse or promote products derived from this software without
24 * prior written permission. For written permission, please contact
25 * openssl-core@openssl.org.
26 *
27 * 5. Products derived from this software may not be called "OpenSSL"
28 * nor may "OpenSSL" appear in their names without prior written
29 * permission of the OpenSSL Project.
30 *
31 * 6. Redistributions of any form whatsoever must retain the following
32 * acknowledgment:
33 * "This product includes software developed by the OpenSSL Project
34 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
35 *
36 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
37 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
38 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
39 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
40 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
42 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
43 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
44 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
45 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
46 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
47 * OF THE POSSIBILITY OF SUCH DAMAGE.
48 * ====================================================================
49 *
50 */
51
52#ifndef HEADER_AES_LOCL_H
53#define HEADER_AES_LOCL_H
54
55#include <openssl/e_os2.h>
56
57#ifdef OPENSSL_NO_AES
58#error AES is disabled.
59#endif
60
61#include <stdio.h>
62#include <stdlib.h>
63#include <string.h>
64
65#if defined(_MSC_VER) && !defined(_M_IA64) && !defined(OPENSSL_SYS_WINCE)
66# define SWAP(x) (_lrotl(x, 8) & 0x00ff00ff | _lrotr(x, 8) & 0xff00ff00)
67# define GETU32(p) SWAP(*((u32 *)(p)))
68# define PUTU32(ct, st) { *((u32 *)(ct)) = SWAP((st)); }
69#else
70# define GETU32(pt) (((u32)(pt)[0] << 24) ^ ((u32)(pt)[1] << 16) ^ ((u32)(pt)[2] << 8) ^ ((u32)(pt)[3]))
71# define PUTU32(ct, st) { (ct)[0] = (u8)((st) >> 24); (ct)[1] = (u8)((st) >> 16); (ct)[2] = (u8)((st) >> 8); (ct)[3] = (u8)(st); }
72#endif
73
74typedef unsigned long u32;
75typedef unsigned short u16;
76typedef unsigned char u8;
77
78#define MAXKC (256/32)
79#define MAXKB (256/8)
80#define MAXNR 14
81
82/* This controls loop-unrolling in aes_core.c */
83#undef FULL_UNROLL
84
85#endif /* !HEADER_AES_LOCL_H */
diff --git a/src/lib/libssl/src/fips/des/asm/fips-dx86-elf.s b/src/lib/libssl/src/fips/des/asm/fips-dx86-elf.s
new file mode 100644
index 0000000000..c9939221e4
--- /dev/null
+++ b/src/lib/libssl/src/fips/des/asm/fips-dx86-elf.s
@@ -0,0 +1,2697 @@
1
2
3
4
5
6
7 .file "des-586.s"
8 .version "01.01"
9gcc2_compiled.:
10.text
11 .align 16
12.globl DES_encrypt1
13 .type DES_encrypt1,@function
14DES_encrypt1:
15 pushl %esi
16 pushl %edi
17
18
19 movl 12(%esp), %esi
20 xorl %ecx, %ecx
21 pushl %ebx
22 pushl %ebp
23 movl (%esi), %eax
24 movl 28(%esp), %ebx
25 movl 4(%esi), %edi
26
27
28 roll $4, %eax
29 movl %eax, %esi
30 xorl %edi, %eax
31 andl $0xf0f0f0f0, %eax
32 xorl %eax, %esi
33 xorl %eax, %edi
34
35 roll $20, %edi
36 movl %edi, %eax
37 xorl %esi, %edi
38 andl $0xfff0000f, %edi
39 xorl %edi, %eax
40 xorl %edi, %esi
41
42 roll $14, %eax
43 movl %eax, %edi
44 xorl %esi, %eax
45 andl $0x33333333, %eax
46 xorl %eax, %edi
47 xorl %eax, %esi
48
49 roll $22, %esi
50 movl %esi, %eax
51 xorl %edi, %esi
52 andl $0x03fc03fc, %esi
53 xorl %esi, %eax
54 xorl %esi, %edi
55
56 roll $9, %eax
57 movl %eax, %esi
58 xorl %edi, %eax
59 andl $0xaaaaaaaa, %eax
60 xorl %eax, %esi
61 xorl %eax, %edi
62
63.byte 209
64.byte 199
65 leal DES_SPtrans, %ebp
66 movl 24(%esp), %ecx
67 cmpl $0, %ebx
68 je .L000start_decrypt
69
70
71 movl (%ecx), %eax
72 xorl %ebx, %ebx
73 movl 4(%ecx), %edx
74 xorl %esi, %eax
75 xorl %ecx, %ecx
76 xorl %esi, %edx
77 andl $0xfcfcfcfc, %eax
78 andl $0xcfcfcfcf, %edx
79 movb %al, %bl
80 movb %ah, %cl
81 rorl $4, %edx
82 xorl (%ebp,%ebx),%edi
83 movb %dl, %bl
84 xorl 0x200(%ebp,%ecx),%edi
85 movb %dh, %cl
86 shrl $16, %eax
87 xorl 0x100(%ebp,%ebx),%edi
88 movb %ah, %bl
89 shrl $16, %edx
90 xorl 0x300(%ebp,%ecx),%edi
91 movb %dh, %cl
92 andl $0xff, %eax
93 andl $0xff, %edx
94 xorl 0x600(%ebp,%ebx),%edi
95 xorl 0x700(%ebp,%ecx),%edi
96 movl 24(%esp), %ecx
97 xorl 0x400(%ebp,%eax),%edi
98 xorl 0x500(%ebp,%edx),%edi
99
100
101 movl 8(%ecx), %eax
102 xorl %ebx, %ebx
103 movl 12(%ecx), %edx
104 xorl %edi, %eax
105 xorl %ecx, %ecx
106 xorl %edi, %edx
107 andl $0xfcfcfcfc, %eax
108 andl $0xcfcfcfcf, %edx
109 movb %al, %bl
110 movb %ah, %cl
111 rorl $4, %edx
112 xorl (%ebp,%ebx),%esi
113 movb %dl, %bl
114 xorl 0x200(%ebp,%ecx),%esi
115 movb %dh, %cl
116 shrl $16, %eax
117 xorl 0x100(%ebp,%ebx),%esi
118 movb %ah, %bl
119 shrl $16, %edx
120 xorl 0x300(%ebp,%ecx),%esi
121 movb %dh, %cl
122 andl $0xff, %eax
123 andl $0xff, %edx
124 xorl 0x600(%ebp,%ebx),%esi
125 xorl 0x700(%ebp,%ecx),%esi
126 movl 24(%esp), %ecx
127 xorl 0x400(%ebp,%eax),%esi
128 xorl 0x500(%ebp,%edx),%esi
129
130
131 movl 16(%ecx), %eax
132 xorl %ebx, %ebx
133 movl 20(%ecx), %edx
134 xorl %esi, %eax
135 xorl %ecx, %ecx
136 xorl %esi, %edx
137 andl $0xfcfcfcfc, %eax
138 andl $0xcfcfcfcf, %edx
139 movb %al, %bl
140 movb %ah, %cl
141 rorl $4, %edx
142 xorl (%ebp,%ebx),%edi
143 movb %dl, %bl
144 xorl 0x200(%ebp,%ecx),%edi
145 movb %dh, %cl
146 shrl $16, %eax
147 xorl 0x100(%ebp,%ebx),%edi
148 movb %ah, %bl
149 shrl $16, %edx
150 xorl 0x300(%ebp,%ecx),%edi
151 movb %dh, %cl
152 andl $0xff, %eax
153 andl $0xff, %edx
154 xorl 0x600(%ebp,%ebx),%edi
155 xorl 0x700(%ebp,%ecx),%edi
156 movl 24(%esp), %ecx
157 xorl 0x400(%ebp,%eax),%edi
158 xorl 0x500(%ebp,%edx),%edi
159
160
161 movl 24(%ecx), %eax
162 xorl %ebx, %ebx
163 movl 28(%ecx), %edx
164 xorl %edi, %eax
165 xorl %ecx, %ecx
166 xorl %edi, %edx
167 andl $0xfcfcfcfc, %eax
168 andl $0xcfcfcfcf, %edx
169 movb %al, %bl
170 movb %ah, %cl
171 rorl $4, %edx
172 xorl (%ebp,%ebx),%esi
173 movb %dl, %bl
174 xorl 0x200(%ebp,%ecx),%esi
175 movb %dh, %cl
176 shrl $16, %eax
177 xorl 0x100(%ebp,%ebx),%esi
178 movb %ah, %bl
179 shrl $16, %edx
180 xorl 0x300(%ebp,%ecx),%esi
181 movb %dh, %cl
182 andl $0xff, %eax
183 andl $0xff, %edx
184 xorl 0x600(%ebp,%ebx),%esi
185 xorl 0x700(%ebp,%ecx),%esi
186 movl 24(%esp), %ecx
187 xorl 0x400(%ebp,%eax),%esi
188 xorl 0x500(%ebp,%edx),%esi
189
190
191 movl 32(%ecx), %eax
192 xorl %ebx, %ebx
193 movl 36(%ecx), %edx
194 xorl %esi, %eax
195 xorl %ecx, %ecx
196 xorl %esi, %edx
197 andl $0xfcfcfcfc, %eax
198 andl $0xcfcfcfcf, %edx
199 movb %al, %bl
200 movb %ah, %cl
201 rorl $4, %edx
202 xorl (%ebp,%ebx),%edi
203 movb %dl, %bl
204 xorl 0x200(%ebp,%ecx),%edi
205 movb %dh, %cl
206 shrl $16, %eax
207 xorl 0x100(%ebp,%ebx),%edi
208 movb %ah, %bl
209 shrl $16, %edx
210 xorl 0x300(%ebp,%ecx),%edi
211 movb %dh, %cl
212 andl $0xff, %eax
213 andl $0xff, %edx
214 xorl 0x600(%ebp,%ebx),%edi
215 xorl 0x700(%ebp,%ecx),%edi
216 movl 24(%esp), %ecx
217 xorl 0x400(%ebp,%eax),%edi
218 xorl 0x500(%ebp,%edx),%edi
219
220
221 movl 40(%ecx), %eax
222 xorl %ebx, %ebx
223 movl 44(%ecx), %edx
224 xorl %edi, %eax
225 xorl %ecx, %ecx
226 xorl %edi, %edx
227 andl $0xfcfcfcfc, %eax
228 andl $0xcfcfcfcf, %edx
229 movb %al, %bl
230 movb %ah, %cl
231 rorl $4, %edx
232 xorl (%ebp,%ebx),%esi
233 movb %dl, %bl
234 xorl 0x200(%ebp,%ecx),%esi
235 movb %dh, %cl
236 shrl $16, %eax
237 xorl 0x100(%ebp,%ebx),%esi
238 movb %ah, %bl
239 shrl $16, %edx
240 xorl 0x300(%ebp,%ecx),%esi
241 movb %dh, %cl
242 andl $0xff, %eax
243 andl $0xff, %edx
244 xorl 0x600(%ebp,%ebx),%esi
245 xorl 0x700(%ebp,%ecx),%esi
246 movl 24(%esp), %ecx
247 xorl 0x400(%ebp,%eax),%esi
248 xorl 0x500(%ebp,%edx),%esi
249
250
251 movl 48(%ecx), %eax
252 xorl %ebx, %ebx
253 movl 52(%ecx), %edx
254 xorl %esi, %eax
255 xorl %ecx, %ecx
256 xorl %esi, %edx
257 andl $0xfcfcfcfc, %eax
258 andl $0xcfcfcfcf, %edx
259 movb %al, %bl
260 movb %ah, %cl
261 rorl $4, %edx
262 xorl (%ebp,%ebx),%edi
263 movb %dl, %bl
264 xorl 0x200(%ebp,%ecx),%edi
265 movb %dh, %cl
266 shrl $16, %eax
267 xorl 0x100(%ebp,%ebx),%edi
268 movb %ah, %bl
269 shrl $16, %edx
270 xorl 0x300(%ebp,%ecx),%edi
271 movb %dh, %cl
272 andl $0xff, %eax
273 andl $0xff, %edx
274 xorl 0x600(%ebp,%ebx),%edi
275 xorl 0x700(%ebp,%ecx),%edi
276 movl 24(%esp), %ecx
277 xorl 0x400(%ebp,%eax),%edi
278 xorl 0x500(%ebp,%edx),%edi
279
280
281 movl 56(%ecx), %eax
282 xorl %ebx, %ebx
283 movl 60(%ecx), %edx
284 xorl %edi, %eax
285 xorl %ecx, %ecx
286 xorl %edi, %edx
287 andl $0xfcfcfcfc, %eax
288 andl $0xcfcfcfcf, %edx
289 movb %al, %bl
290 movb %ah, %cl
291 rorl $4, %edx
292 xorl (%ebp,%ebx),%esi
293 movb %dl, %bl
294 xorl 0x200(%ebp,%ecx),%esi
295 movb %dh, %cl
296 shrl $16, %eax
297 xorl 0x100(%ebp,%ebx),%esi
298 movb %ah, %bl
299 shrl $16, %edx
300 xorl 0x300(%ebp,%ecx),%esi
301 movb %dh, %cl
302 andl $0xff, %eax
303 andl $0xff, %edx
304 xorl 0x600(%ebp,%ebx),%esi
305 xorl 0x700(%ebp,%ecx),%esi
306 movl 24(%esp), %ecx
307 xorl 0x400(%ebp,%eax),%esi
308 xorl 0x500(%ebp,%edx),%esi
309
310
311 movl 64(%ecx), %eax
312 xorl %ebx, %ebx
313 movl 68(%ecx), %edx
314 xorl %esi, %eax
315 xorl %ecx, %ecx
316 xorl %esi, %edx
317 andl $0xfcfcfcfc, %eax
318 andl $0xcfcfcfcf, %edx
319 movb %al, %bl
320 movb %ah, %cl
321 rorl $4, %edx
322 xorl (%ebp,%ebx),%edi
323 movb %dl, %bl
324 xorl 0x200(%ebp,%ecx),%edi
325 movb %dh, %cl
326 shrl $16, %eax
327 xorl 0x100(%ebp,%ebx),%edi
328 movb %ah, %bl
329 shrl $16, %edx
330 xorl 0x300(%ebp,%ecx),%edi
331 movb %dh, %cl
332 andl $0xff, %eax
333 andl $0xff, %edx
334 xorl 0x600(%ebp,%ebx),%edi
335 xorl 0x700(%ebp,%ecx),%edi
336 movl 24(%esp), %ecx
337 xorl 0x400(%ebp,%eax),%edi
338 xorl 0x500(%ebp,%edx),%edi
339
340
341 movl 72(%ecx), %eax
342 xorl %ebx, %ebx
343 movl 76(%ecx), %edx
344 xorl %edi, %eax
345 xorl %ecx, %ecx
346 xorl %edi, %edx
347 andl $0xfcfcfcfc, %eax
348 andl $0xcfcfcfcf, %edx
349 movb %al, %bl
350 movb %ah, %cl
351 rorl $4, %edx
352 xorl (%ebp,%ebx),%esi
353 movb %dl, %bl
354 xorl 0x200(%ebp,%ecx),%esi
355 movb %dh, %cl
356 shrl $16, %eax
357 xorl 0x100(%ebp,%ebx),%esi
358 movb %ah, %bl
359 shrl $16, %edx
360 xorl 0x300(%ebp,%ecx),%esi
361 movb %dh, %cl
362 andl $0xff, %eax
363 andl $0xff, %edx
364 xorl 0x600(%ebp,%ebx),%esi
365 xorl 0x700(%ebp,%ecx),%esi
366 movl 24(%esp), %ecx
367 xorl 0x400(%ebp,%eax),%esi
368 xorl 0x500(%ebp,%edx),%esi
369
370
371 movl 80(%ecx), %eax
372 xorl %ebx, %ebx
373 movl 84(%ecx), %edx
374 xorl %esi, %eax
375 xorl %ecx, %ecx
376 xorl %esi, %edx
377 andl $0xfcfcfcfc, %eax
378 andl $0xcfcfcfcf, %edx
379 movb %al, %bl
380 movb %ah, %cl
381 rorl $4, %edx
382 xorl (%ebp,%ebx),%edi
383 movb %dl, %bl
384 xorl 0x200(%ebp,%ecx),%edi
385 movb %dh, %cl
386 shrl $16, %eax
387 xorl 0x100(%ebp,%ebx),%edi
388 movb %ah, %bl
389 shrl $16, %edx
390 xorl 0x300(%ebp,%ecx),%edi
391 movb %dh, %cl
392 andl $0xff, %eax
393 andl $0xff, %edx
394 xorl 0x600(%ebp,%ebx),%edi
395 xorl 0x700(%ebp,%ecx),%edi
396 movl 24(%esp), %ecx
397 xorl 0x400(%ebp,%eax),%edi
398 xorl 0x500(%ebp,%edx),%edi
399
400
401 movl 88(%ecx), %eax
402 xorl %ebx, %ebx
403 movl 92(%ecx), %edx
404 xorl %edi, %eax
405 xorl %ecx, %ecx
406 xorl %edi, %edx
407 andl $0xfcfcfcfc, %eax
408 andl $0xcfcfcfcf, %edx
409 movb %al, %bl
410 movb %ah, %cl
411 rorl $4, %edx
412 xorl (%ebp,%ebx),%esi
413 movb %dl, %bl
414 xorl 0x200(%ebp,%ecx),%esi
415 movb %dh, %cl
416 shrl $16, %eax
417 xorl 0x100(%ebp,%ebx),%esi
418 movb %ah, %bl
419 shrl $16, %edx
420 xorl 0x300(%ebp,%ecx),%esi
421 movb %dh, %cl
422 andl $0xff, %eax
423 andl $0xff, %edx
424 xorl 0x600(%ebp,%ebx),%esi
425 xorl 0x700(%ebp,%ecx),%esi
426 movl 24(%esp), %ecx
427 xorl 0x400(%ebp,%eax),%esi
428 xorl 0x500(%ebp,%edx),%esi
429
430
431 movl 96(%ecx), %eax
432 xorl %ebx, %ebx
433 movl 100(%ecx), %edx
434 xorl %esi, %eax
435 xorl %ecx, %ecx
436 xorl %esi, %edx
437 andl $0xfcfcfcfc, %eax
438 andl $0xcfcfcfcf, %edx
439 movb %al, %bl
440 movb %ah, %cl
441 rorl $4, %edx
442 xorl (%ebp,%ebx),%edi
443 movb %dl, %bl
444 xorl 0x200(%ebp,%ecx),%edi
445 movb %dh, %cl
446 shrl $16, %eax
447 xorl 0x100(%ebp,%ebx),%edi
448 movb %ah, %bl
449 shrl $16, %edx
450 xorl 0x300(%ebp,%ecx),%edi
451 movb %dh, %cl
452 andl $0xff, %eax
453 andl $0xff, %edx
454 xorl 0x600(%ebp,%ebx),%edi
455 xorl 0x700(%ebp,%ecx),%edi
456 movl 24(%esp), %ecx
457 xorl 0x400(%ebp,%eax),%edi
458 xorl 0x500(%ebp,%edx),%edi
459
460
461 movl 104(%ecx), %eax
462 xorl %ebx, %ebx
463 movl 108(%ecx), %edx
464 xorl %edi, %eax
465 xorl %ecx, %ecx
466 xorl %edi, %edx
467 andl $0xfcfcfcfc, %eax
468 andl $0xcfcfcfcf, %edx
469 movb %al, %bl
470 movb %ah, %cl
471 rorl $4, %edx
472 xorl (%ebp,%ebx),%esi
473 movb %dl, %bl
474 xorl 0x200(%ebp,%ecx),%esi
475 movb %dh, %cl
476 shrl $16, %eax
477 xorl 0x100(%ebp,%ebx),%esi
478 movb %ah, %bl
479 shrl $16, %edx
480 xorl 0x300(%ebp,%ecx),%esi
481 movb %dh, %cl
482 andl $0xff, %eax
483 andl $0xff, %edx
484 xorl 0x600(%ebp,%ebx),%esi
485 xorl 0x700(%ebp,%ecx),%esi
486 movl 24(%esp), %ecx
487 xorl 0x400(%ebp,%eax),%esi
488 xorl 0x500(%ebp,%edx),%esi
489
490
491 movl 112(%ecx), %eax
492 xorl %ebx, %ebx
493 movl 116(%ecx), %edx
494 xorl %esi, %eax
495 xorl %ecx, %ecx
496 xorl %esi, %edx
497 andl $0xfcfcfcfc, %eax
498 andl $0xcfcfcfcf, %edx
499 movb %al, %bl
500 movb %ah, %cl
501 rorl $4, %edx
502 xorl (%ebp,%ebx),%edi
503 movb %dl, %bl
504 xorl 0x200(%ebp,%ecx),%edi
505 movb %dh, %cl
506 shrl $16, %eax
507 xorl 0x100(%ebp,%ebx),%edi
508 movb %ah, %bl
509 shrl $16, %edx
510 xorl 0x300(%ebp,%ecx),%edi
511 movb %dh, %cl
512 andl $0xff, %eax
513 andl $0xff, %edx
514 xorl 0x600(%ebp,%ebx),%edi
515 xorl 0x700(%ebp,%ecx),%edi
516 movl 24(%esp), %ecx
517 xorl 0x400(%ebp,%eax),%edi
518 xorl 0x500(%ebp,%edx),%edi
519
520
521 movl 120(%ecx), %eax
522 xorl %ebx, %ebx
523 movl 124(%ecx), %edx
524 xorl %edi, %eax
525 xorl %ecx, %ecx
526 xorl %edi, %edx
527 andl $0xfcfcfcfc, %eax
528 andl $0xcfcfcfcf, %edx
529 movb %al, %bl
530 movb %ah, %cl
531 rorl $4, %edx
532 xorl (%ebp,%ebx),%esi
533 movb %dl, %bl
534 xorl 0x200(%ebp,%ecx),%esi
535 movb %dh, %cl
536 shrl $16, %eax
537 xorl 0x100(%ebp,%ebx),%esi
538 movb %ah, %bl
539 shrl $16, %edx
540 xorl 0x300(%ebp,%ecx),%esi
541 movb %dh, %cl
542 andl $0xff, %eax
543 andl $0xff, %edx
544 xorl 0x600(%ebp,%ebx),%esi
545 xorl 0x700(%ebp,%ecx),%esi
546 movl 24(%esp), %ecx
547 xorl 0x400(%ebp,%eax),%esi
548 xorl 0x500(%ebp,%edx),%esi
549 jmp .L001end
550.L000start_decrypt:
551
552
553 movl 120(%ecx), %eax
554 xorl %ebx, %ebx
555 movl 124(%ecx), %edx
556 xorl %esi, %eax
557 xorl %ecx, %ecx
558 xorl %esi, %edx
559 andl $0xfcfcfcfc, %eax
560 andl $0xcfcfcfcf, %edx
561 movb %al, %bl
562 movb %ah, %cl
563 rorl $4, %edx
564 xorl (%ebp,%ebx),%edi
565 movb %dl, %bl
566 xorl 0x200(%ebp,%ecx),%edi
567 movb %dh, %cl
568 shrl $16, %eax
569 xorl 0x100(%ebp,%ebx),%edi
570 movb %ah, %bl
571 shrl $16, %edx
572 xorl 0x300(%ebp,%ecx),%edi
573 movb %dh, %cl
574 andl $0xff, %eax
575 andl $0xff, %edx
576 xorl 0x600(%ebp,%ebx),%edi
577 xorl 0x700(%ebp,%ecx),%edi
578 movl 24(%esp), %ecx
579 xorl 0x400(%ebp,%eax),%edi
580 xorl 0x500(%ebp,%edx),%edi
581
582
583 movl 112(%ecx), %eax
584 xorl %ebx, %ebx
585 movl 116(%ecx), %edx
586 xorl %edi, %eax
587 xorl %ecx, %ecx
588 xorl %edi, %edx
589 andl $0xfcfcfcfc, %eax
590 andl $0xcfcfcfcf, %edx
591 movb %al, %bl
592 movb %ah, %cl
593 rorl $4, %edx
594 xorl (%ebp,%ebx),%esi
595 movb %dl, %bl
596 xorl 0x200(%ebp,%ecx),%esi
597 movb %dh, %cl
598 shrl $16, %eax
599 xorl 0x100(%ebp,%ebx),%esi
600 movb %ah, %bl
601 shrl $16, %edx
602 xorl 0x300(%ebp,%ecx),%esi
603 movb %dh, %cl
604 andl $0xff, %eax
605 andl $0xff, %edx
606 xorl 0x600(%ebp,%ebx),%esi
607 xorl 0x700(%ebp,%ecx),%esi
608 movl 24(%esp), %ecx
609 xorl 0x400(%ebp,%eax),%esi
610 xorl 0x500(%ebp,%edx),%esi
611
612
613 movl 104(%ecx), %eax
614 xorl %ebx, %ebx
615 movl 108(%ecx), %edx
616 xorl %esi, %eax
617 xorl %ecx, %ecx
618 xorl %esi, %edx
619 andl $0xfcfcfcfc, %eax
620 andl $0xcfcfcfcf, %edx
621 movb %al, %bl
622 movb %ah, %cl
623 rorl $4, %edx
624 xorl (%ebp,%ebx),%edi
625 movb %dl, %bl
626 xorl 0x200(%ebp,%ecx),%edi
627 movb %dh, %cl
628 shrl $16, %eax
629 xorl 0x100(%ebp,%ebx),%edi
630 movb %ah, %bl
631 shrl $16, %edx
632 xorl 0x300(%ebp,%ecx),%edi
633 movb %dh, %cl
634 andl $0xff, %eax
635 andl $0xff, %edx
636 xorl 0x600(%ebp,%ebx),%edi
637 xorl 0x700(%ebp,%ecx),%edi
638 movl 24(%esp), %ecx
639 xorl 0x400(%ebp,%eax),%edi
640 xorl 0x500(%ebp,%edx),%edi
641
642
643 movl 96(%ecx), %eax
644 xorl %ebx, %ebx
645 movl 100(%ecx), %edx
646 xorl %edi, %eax
647 xorl %ecx, %ecx
648 xorl %edi, %edx
649 andl $0xfcfcfcfc, %eax
650 andl $0xcfcfcfcf, %edx
651 movb %al, %bl
652 movb %ah, %cl
653 rorl $4, %edx
654 xorl (%ebp,%ebx),%esi
655 movb %dl, %bl
656 xorl 0x200(%ebp,%ecx),%esi
657 movb %dh, %cl
658 shrl $16, %eax
659 xorl 0x100(%ebp,%ebx),%esi
660 movb %ah, %bl
661 shrl $16, %edx
662 xorl 0x300(%ebp,%ecx),%esi
663 movb %dh, %cl
664 andl $0xff, %eax
665 andl $0xff, %edx
666 xorl 0x600(%ebp,%ebx),%esi
667 xorl 0x700(%ebp,%ecx),%esi
668 movl 24(%esp), %ecx
669 xorl 0x400(%ebp,%eax),%esi
670 xorl 0x500(%ebp,%edx),%esi
671
672
673 movl 88(%ecx), %eax
674 xorl %ebx, %ebx
675 movl 92(%ecx), %edx
676 xorl %esi, %eax
677 xorl %ecx, %ecx
678 xorl %esi, %edx
679 andl $0xfcfcfcfc, %eax
680 andl $0xcfcfcfcf, %edx
681 movb %al, %bl
682 movb %ah, %cl
683 rorl $4, %edx
684 xorl (%ebp,%ebx),%edi
685 movb %dl, %bl
686 xorl 0x200(%ebp,%ecx),%edi
687 movb %dh, %cl
688 shrl $16, %eax
689 xorl 0x100(%ebp,%ebx),%edi
690 movb %ah, %bl
691 shrl $16, %edx
692 xorl 0x300(%ebp,%ecx),%edi
693 movb %dh, %cl
694 andl $0xff, %eax
695 andl $0xff, %edx
696 xorl 0x600(%ebp,%ebx),%edi
697 xorl 0x700(%ebp,%ecx),%edi
698 movl 24(%esp), %ecx
699 xorl 0x400(%ebp,%eax),%edi
700 xorl 0x500(%ebp,%edx),%edi
701
702
703 movl 80(%ecx), %eax
704 xorl %ebx, %ebx
705 movl 84(%ecx), %edx
706 xorl %edi, %eax
707 xorl %ecx, %ecx
708 xorl %edi, %edx
709 andl $0xfcfcfcfc, %eax
710 andl $0xcfcfcfcf, %edx
711 movb %al, %bl
712 movb %ah, %cl
713 rorl $4, %edx
714 xorl (%ebp,%ebx),%esi
715 movb %dl, %bl
716 xorl 0x200(%ebp,%ecx),%esi
717 movb %dh, %cl
718 shrl $16, %eax
719 xorl 0x100(%ebp,%ebx),%esi
720 movb %ah, %bl
721 shrl $16, %edx
722 xorl 0x300(%ebp,%ecx),%esi
723 movb %dh, %cl
724 andl $0xff, %eax
725 andl $0xff, %edx
726 xorl 0x600(%ebp,%ebx),%esi
727 xorl 0x700(%ebp,%ecx),%esi
728 movl 24(%esp), %ecx
729 xorl 0x400(%ebp,%eax),%esi
730 xorl 0x500(%ebp,%edx),%esi
731
732
733 movl 72(%ecx), %eax
734 xorl %ebx, %ebx
735 movl 76(%ecx), %edx
736 xorl %esi, %eax
737 xorl %ecx, %ecx
738 xorl %esi, %edx
739 andl $0xfcfcfcfc, %eax
740 andl $0xcfcfcfcf, %edx
741 movb %al, %bl
742 movb %ah, %cl
743 rorl $4, %edx
744 xorl (%ebp,%ebx),%edi
745 movb %dl, %bl
746 xorl 0x200(%ebp,%ecx),%edi
747 movb %dh, %cl
748 shrl $16, %eax
749 xorl 0x100(%ebp,%ebx),%edi
750 movb %ah, %bl
751 shrl $16, %edx
752 xorl 0x300(%ebp,%ecx),%edi
753 movb %dh, %cl
754 andl $0xff, %eax
755 andl $0xff, %edx
756 xorl 0x600(%ebp,%ebx),%edi
757 xorl 0x700(%ebp,%ecx),%edi
758 movl 24(%esp), %ecx
759 xorl 0x400(%ebp,%eax),%edi
760 xorl 0x500(%ebp,%edx),%edi
761
762
763 movl 64(%ecx), %eax
764 xorl %ebx, %ebx
765 movl 68(%ecx), %edx
766 xorl %edi, %eax
767 xorl %ecx, %ecx
768 xorl %edi, %edx
769 andl $0xfcfcfcfc, %eax
770 andl $0xcfcfcfcf, %edx
771 movb %al, %bl
772 movb %ah, %cl
773 rorl $4, %edx
774 xorl (%ebp,%ebx),%esi
775 movb %dl, %bl
776 xorl 0x200(%ebp,%ecx),%esi
777 movb %dh, %cl
778 shrl $16, %eax
779 xorl 0x100(%ebp,%ebx),%esi
780 movb %ah, %bl
781 shrl $16, %edx
782 xorl 0x300(%ebp,%ecx),%esi
783 movb %dh, %cl
784 andl $0xff, %eax
785 andl $0xff, %edx
786 xorl 0x600(%ebp,%ebx),%esi
787 xorl 0x700(%ebp,%ecx),%esi
788 movl 24(%esp), %ecx
789 xorl 0x400(%ebp,%eax),%esi
790 xorl 0x500(%ebp,%edx),%esi
791
792
793 movl 56(%ecx), %eax
794 xorl %ebx, %ebx
795 movl 60(%ecx), %edx
796 xorl %esi, %eax
797 xorl %ecx, %ecx
798 xorl %esi, %edx
799 andl $0xfcfcfcfc, %eax
800 andl $0xcfcfcfcf, %edx
801 movb %al, %bl
802 movb %ah, %cl
803 rorl $4, %edx
804 xorl (%ebp,%ebx),%edi
805 movb %dl, %bl
806 xorl 0x200(%ebp,%ecx),%edi
807 movb %dh, %cl
808 shrl $16, %eax
809 xorl 0x100(%ebp,%ebx),%edi
810 movb %ah, %bl
811 shrl $16, %edx
812 xorl 0x300(%ebp,%ecx),%edi
813 movb %dh, %cl
814 andl $0xff, %eax
815 andl $0xff, %edx
816 xorl 0x600(%ebp,%ebx),%edi
817 xorl 0x700(%ebp,%ecx),%edi
818 movl 24(%esp), %ecx
819 xorl 0x400(%ebp,%eax),%edi
820 xorl 0x500(%ebp,%edx),%edi
821
822
823 movl 48(%ecx), %eax
824 xorl %ebx, %ebx
825 movl 52(%ecx), %edx
826 xorl %edi, %eax
827 xorl %ecx, %ecx
828 xorl %edi, %edx
829 andl $0xfcfcfcfc, %eax
830 andl $0xcfcfcfcf, %edx
831 movb %al, %bl
832 movb %ah, %cl
833 rorl $4, %edx
834 xorl (%ebp,%ebx),%esi
835 movb %dl, %bl
836 xorl 0x200(%ebp,%ecx),%esi
837 movb %dh, %cl
838 shrl $16, %eax
839 xorl 0x100(%ebp,%ebx),%esi
840 movb %ah, %bl
841 shrl $16, %edx
842 xorl 0x300(%ebp,%ecx),%esi
843 movb %dh, %cl
844 andl $0xff, %eax
845 andl $0xff, %edx
846 xorl 0x600(%ebp,%ebx),%esi
847 xorl 0x700(%ebp,%ecx),%esi
848 movl 24(%esp), %ecx
849 xorl 0x400(%ebp,%eax),%esi
850 xorl 0x500(%ebp,%edx),%esi
851
852
853 movl 40(%ecx), %eax
854 xorl %ebx, %ebx
855 movl 44(%ecx), %edx
856 xorl %esi, %eax
857 xorl %ecx, %ecx
858 xorl %esi, %edx
859 andl $0xfcfcfcfc, %eax
860 andl $0xcfcfcfcf, %edx
861 movb %al, %bl
862 movb %ah, %cl
863 rorl $4, %edx
864 xorl (%ebp,%ebx),%edi
865 movb %dl, %bl
866 xorl 0x200(%ebp,%ecx),%edi
867 movb %dh, %cl
868 shrl $16, %eax
869 xorl 0x100(%ebp,%ebx),%edi
870 movb %ah, %bl
871 shrl $16, %edx
872 xorl 0x300(%ebp,%ecx),%edi
873 movb %dh, %cl
874 andl $0xff, %eax
875 andl $0xff, %edx
876 xorl 0x600(%ebp,%ebx),%edi
877 xorl 0x700(%ebp,%ecx),%edi
878 movl 24(%esp), %ecx
879 xorl 0x400(%ebp,%eax),%edi
880 xorl 0x500(%ebp,%edx),%edi
881
882
883 movl 32(%ecx), %eax
884 xorl %ebx, %ebx
885 movl 36(%ecx), %edx
886 xorl %edi, %eax
887 xorl %ecx, %ecx
888 xorl %edi, %edx
889 andl $0xfcfcfcfc, %eax
890 andl $0xcfcfcfcf, %edx
891 movb %al, %bl
892 movb %ah, %cl
893 rorl $4, %edx
894 xorl (%ebp,%ebx),%esi
895 movb %dl, %bl
896 xorl 0x200(%ebp,%ecx),%esi
897 movb %dh, %cl
898 shrl $16, %eax
899 xorl 0x100(%ebp,%ebx),%esi
900 movb %ah, %bl
901 shrl $16, %edx
902 xorl 0x300(%ebp,%ecx),%esi
903 movb %dh, %cl
904 andl $0xff, %eax
905 andl $0xff, %edx
906 xorl 0x600(%ebp,%ebx),%esi
907 xorl 0x700(%ebp,%ecx),%esi
908 movl 24(%esp), %ecx
909 xorl 0x400(%ebp,%eax),%esi
910 xorl 0x500(%ebp,%edx),%esi
911
912
913 movl 24(%ecx), %eax
914 xorl %ebx, %ebx
915 movl 28(%ecx), %edx
916 xorl %esi, %eax
917 xorl %ecx, %ecx
918 xorl %esi, %edx
919 andl $0xfcfcfcfc, %eax
920 andl $0xcfcfcfcf, %edx
921 movb %al, %bl
922 movb %ah, %cl
923 rorl $4, %edx
924 xorl (%ebp,%ebx),%edi
925 movb %dl, %bl
926 xorl 0x200(%ebp,%ecx),%edi
927 movb %dh, %cl
928 shrl $16, %eax
929 xorl 0x100(%ebp,%ebx),%edi
930 movb %ah, %bl
931 shrl $16, %edx
932 xorl 0x300(%ebp,%ecx),%edi
933 movb %dh, %cl
934 andl $0xff, %eax
935 andl $0xff, %edx
936 xorl 0x600(%ebp,%ebx),%edi
937 xorl 0x700(%ebp,%ecx),%edi
938 movl 24(%esp), %ecx
939 xorl 0x400(%ebp,%eax),%edi
940 xorl 0x500(%ebp,%edx),%edi
941
942
943 movl 16(%ecx), %eax
944 xorl %ebx, %ebx
945 movl 20(%ecx), %edx
946 xorl %edi, %eax
947 xorl %ecx, %ecx
948 xorl %edi, %edx
949 andl $0xfcfcfcfc, %eax
950 andl $0xcfcfcfcf, %edx
951 movb %al, %bl
952 movb %ah, %cl
953 rorl $4, %edx
954 xorl (%ebp,%ebx),%esi
955 movb %dl, %bl
956 xorl 0x200(%ebp,%ecx),%esi
957 movb %dh, %cl
958 shrl $16, %eax
959 xorl 0x100(%ebp,%ebx),%esi
960 movb %ah, %bl
961 shrl $16, %edx
962 xorl 0x300(%ebp,%ecx),%esi
963 movb %dh, %cl
964 andl $0xff, %eax
965 andl $0xff, %edx
966 xorl 0x600(%ebp,%ebx),%esi
967 xorl 0x700(%ebp,%ecx),%esi
968 movl 24(%esp), %ecx
969 xorl 0x400(%ebp,%eax),%esi
970 xorl 0x500(%ebp,%edx),%esi
971
972
973 movl 8(%ecx), %eax
974 xorl %ebx, %ebx
975 movl 12(%ecx), %edx
976 xorl %esi, %eax
977 xorl %ecx, %ecx
978 xorl %esi, %edx
979 andl $0xfcfcfcfc, %eax
980 andl $0xcfcfcfcf, %edx
981 movb %al, %bl
982 movb %ah, %cl
983 rorl $4, %edx
984 xorl (%ebp,%ebx),%edi
985 movb %dl, %bl
986 xorl 0x200(%ebp,%ecx),%edi
987 movb %dh, %cl
988 shrl $16, %eax
989 xorl 0x100(%ebp,%ebx),%edi
990 movb %ah, %bl
991 shrl $16, %edx
992 xorl 0x300(%ebp,%ecx),%edi
993 movb %dh, %cl
994 andl $0xff, %eax
995 andl $0xff, %edx
996 xorl 0x600(%ebp,%ebx),%edi
997 xorl 0x700(%ebp,%ecx),%edi
998 movl 24(%esp), %ecx
999 xorl 0x400(%ebp,%eax),%edi
1000 xorl 0x500(%ebp,%edx),%edi
1001
1002
1003 movl (%ecx), %eax
1004 xorl %ebx, %ebx
1005 movl 4(%ecx), %edx
1006 xorl %edi, %eax
1007 xorl %ecx, %ecx
1008 xorl %edi, %edx
1009 andl $0xfcfcfcfc, %eax
1010 andl $0xcfcfcfcf, %edx
1011 movb %al, %bl
1012 movb %ah, %cl
1013 rorl $4, %edx
1014 xorl (%ebp,%ebx),%esi
1015 movb %dl, %bl
1016 xorl 0x200(%ebp,%ecx),%esi
1017 movb %dh, %cl
1018 shrl $16, %eax
1019 xorl 0x100(%ebp,%ebx),%esi
1020 movb %ah, %bl
1021 shrl $16, %edx
1022 xorl 0x300(%ebp,%ecx),%esi
1023 movb %dh, %cl
1024 andl $0xff, %eax
1025 andl $0xff, %edx
1026 xorl 0x600(%ebp,%ebx),%esi
1027 xorl 0x700(%ebp,%ecx),%esi
1028 movl 24(%esp), %ecx
1029 xorl 0x400(%ebp,%eax),%esi
1030 xorl 0x500(%ebp,%edx),%esi
1031.L001end:
1032
1033
1034 movl 20(%esp), %edx
1035.byte 209
1036.byte 206
1037 movl %edi, %eax
1038 xorl %esi, %edi
1039 andl $0xaaaaaaaa, %edi
1040 xorl %edi, %eax
1041 xorl %edi, %esi
1042
1043 roll $23, %eax
1044 movl %eax, %edi
1045 xorl %esi, %eax
1046 andl $0x03fc03fc, %eax
1047 xorl %eax, %edi
1048 xorl %eax, %esi
1049
1050 roll $10, %edi
1051 movl %edi, %eax
1052 xorl %esi, %edi
1053 andl $0x33333333, %edi
1054 xorl %edi, %eax
1055 xorl %edi, %esi
1056
1057 roll $18, %esi
1058 movl %esi, %edi
1059 xorl %eax, %esi
1060 andl $0xfff0000f, %esi
1061 xorl %esi, %edi
1062 xorl %esi, %eax
1063
1064 roll $12, %edi
1065 movl %edi, %esi
1066 xorl %eax, %edi
1067 andl $0xf0f0f0f0, %edi
1068 xorl %edi, %esi
1069 xorl %edi, %eax
1070
1071 rorl $4, %eax
1072 movl %eax, (%edx)
1073 movl %esi, 4(%edx)
1074 popl %ebp
1075 popl %ebx
1076 popl %edi
1077 popl %esi
1078 ret
1079.L_DES_encrypt1_end:
1080 .size DES_encrypt1,.L_DES_encrypt1_end-DES_encrypt1
1081.ident "desasm.pl"
1082.text
1083 .align 16
1084.globl DES_encrypt2
1085 .type DES_encrypt2,@function
1086DES_encrypt2:
1087 pushl %esi
1088 pushl %edi
1089
1090
1091 movl 12(%esp), %eax
1092 xorl %ecx, %ecx
1093 pushl %ebx
1094 pushl %ebp
1095 movl (%eax), %esi
1096 movl 28(%esp), %ebx
1097 roll $3, %esi
1098 movl 4(%eax), %edi
1099 roll $3, %edi
1100 leal DES_SPtrans, %ebp
1101 movl 24(%esp), %ecx
1102 cmpl $0, %ebx
1103 je .L002start_decrypt
1104
1105
1106 movl (%ecx), %eax
1107 xorl %ebx, %ebx
1108 movl 4(%ecx), %edx
1109 xorl %esi, %eax
1110 xorl %ecx, %ecx
1111 xorl %esi, %edx
1112 andl $0xfcfcfcfc, %eax
1113 andl $0xcfcfcfcf, %edx
1114 movb %al, %bl
1115 movb %ah, %cl
1116 rorl $4, %edx
1117 xorl (%ebp,%ebx),%edi
1118 movb %dl, %bl
1119 xorl 0x200(%ebp,%ecx),%edi
1120 movb %dh, %cl
1121 shrl $16, %eax
1122 xorl 0x100(%ebp,%ebx),%edi
1123 movb %ah, %bl
1124 shrl $16, %edx
1125 xorl 0x300(%ebp,%ecx),%edi
1126 movb %dh, %cl
1127 andl $0xff, %eax
1128 andl $0xff, %edx
1129 xorl 0x600(%ebp,%ebx),%edi
1130 xorl 0x700(%ebp,%ecx),%edi
1131 movl 24(%esp), %ecx
1132 xorl 0x400(%ebp,%eax),%edi
1133 xorl 0x500(%ebp,%edx),%edi
1134
1135
1136 movl 8(%ecx), %eax
1137 xorl %ebx, %ebx
1138 movl 12(%ecx), %edx
1139 xorl %edi, %eax
1140 xorl %ecx, %ecx
1141 xorl %edi, %edx
1142 andl $0xfcfcfcfc, %eax
1143 andl $0xcfcfcfcf, %edx
1144 movb %al, %bl
1145 movb %ah, %cl
1146 rorl $4, %edx
1147 xorl (%ebp,%ebx),%esi
1148 movb %dl, %bl
1149 xorl 0x200(%ebp,%ecx),%esi
1150 movb %dh, %cl
1151 shrl $16, %eax
1152 xorl 0x100(%ebp,%ebx),%esi
1153 movb %ah, %bl
1154 shrl $16, %edx
1155 xorl 0x300(%ebp,%ecx),%esi
1156 movb %dh, %cl
1157 andl $0xff, %eax
1158 andl $0xff, %edx
1159 xorl 0x600(%ebp,%ebx),%esi
1160 xorl 0x700(%ebp,%ecx),%esi
1161 movl 24(%esp), %ecx
1162 xorl 0x400(%ebp,%eax),%esi
1163 xorl 0x500(%ebp,%edx),%esi
1164
1165
1166 movl 16(%ecx), %eax
1167 xorl %ebx, %ebx
1168 movl 20(%ecx), %edx
1169 xorl %esi, %eax
1170 xorl %ecx, %ecx
1171 xorl %esi, %edx
1172 andl $0xfcfcfcfc, %eax
1173 andl $0xcfcfcfcf, %edx
1174 movb %al, %bl
1175 movb %ah, %cl
1176 rorl $4, %edx
1177 xorl (%ebp,%ebx),%edi
1178 movb %dl, %bl
1179 xorl 0x200(%ebp,%ecx),%edi
1180 movb %dh, %cl
1181 shrl $16, %eax
1182 xorl 0x100(%ebp,%ebx),%edi
1183 movb %ah, %bl
1184 shrl $16, %edx
1185 xorl 0x300(%ebp,%ecx),%edi
1186 movb %dh, %cl
1187 andl $0xff, %eax
1188 andl $0xff, %edx
1189 xorl 0x600(%ebp,%ebx),%edi
1190 xorl 0x700(%ebp,%ecx),%edi
1191 movl 24(%esp), %ecx
1192 xorl 0x400(%ebp,%eax),%edi
1193 xorl 0x500(%ebp,%edx),%edi
1194
1195
1196 movl 24(%ecx), %eax
1197 xorl %ebx, %ebx
1198 movl 28(%ecx), %edx
1199 xorl %edi, %eax
1200 xorl %ecx, %ecx
1201 xorl %edi, %edx
1202 andl $0xfcfcfcfc, %eax
1203 andl $0xcfcfcfcf, %edx
1204 movb %al, %bl
1205 movb %ah, %cl
1206 rorl $4, %edx
1207 xorl (%ebp,%ebx),%esi
1208 movb %dl, %bl
1209 xorl 0x200(%ebp,%ecx),%esi
1210 movb %dh, %cl
1211 shrl $16, %eax
1212 xorl 0x100(%ebp,%ebx),%esi
1213 movb %ah, %bl
1214 shrl $16, %edx
1215 xorl 0x300(%ebp,%ecx),%esi
1216 movb %dh, %cl
1217 andl $0xff, %eax
1218 andl $0xff, %edx
1219 xorl 0x600(%ebp,%ebx),%esi
1220 xorl 0x700(%ebp,%ecx),%esi
1221 movl 24(%esp), %ecx
1222 xorl 0x400(%ebp,%eax),%esi
1223 xorl 0x500(%ebp,%edx),%esi
1224
1225
1226 movl 32(%ecx), %eax
1227 xorl %ebx, %ebx
1228 movl 36(%ecx), %edx
1229 xorl %esi, %eax
1230 xorl %ecx, %ecx
1231 xorl %esi, %edx
1232 andl $0xfcfcfcfc, %eax
1233 andl $0xcfcfcfcf, %edx
1234 movb %al, %bl
1235 movb %ah, %cl
1236 rorl $4, %edx
1237 xorl (%ebp,%ebx),%edi
1238 movb %dl, %bl
1239 xorl 0x200(%ebp,%ecx),%edi
1240 movb %dh, %cl
1241 shrl $16, %eax
1242 xorl 0x100(%ebp,%ebx),%edi
1243 movb %ah, %bl
1244 shrl $16, %edx
1245 xorl 0x300(%ebp,%ecx),%edi
1246 movb %dh, %cl
1247 andl $0xff, %eax
1248 andl $0xff, %edx
1249 xorl 0x600(%ebp,%ebx),%edi
1250 xorl 0x700(%ebp,%ecx),%edi
1251 movl 24(%esp), %ecx
1252 xorl 0x400(%ebp,%eax),%edi
1253 xorl 0x500(%ebp,%edx),%edi
1254
1255
1256 movl 40(%ecx), %eax
1257 xorl %ebx, %ebx
1258 movl 44(%ecx), %edx
1259 xorl %edi, %eax
1260 xorl %ecx, %ecx
1261 xorl %edi, %edx
1262 andl $0xfcfcfcfc, %eax
1263 andl $0xcfcfcfcf, %edx
1264 movb %al, %bl
1265 movb %ah, %cl
1266 rorl $4, %edx
1267 xorl (%ebp,%ebx),%esi
1268 movb %dl, %bl
1269 xorl 0x200(%ebp,%ecx),%esi
1270 movb %dh, %cl
1271 shrl $16, %eax
1272 xorl 0x100(%ebp,%ebx),%esi
1273 movb %ah, %bl
1274 shrl $16, %edx
1275 xorl 0x300(%ebp,%ecx),%esi
1276 movb %dh, %cl
1277 andl $0xff, %eax
1278 andl $0xff, %edx
1279 xorl 0x600(%ebp,%ebx),%esi
1280 xorl 0x700(%ebp,%ecx),%esi
1281 movl 24(%esp), %ecx
1282 xorl 0x400(%ebp,%eax),%esi
1283 xorl 0x500(%ebp,%edx),%esi
1284
1285
1286 movl 48(%ecx), %eax
1287 xorl %ebx, %ebx
1288 movl 52(%ecx), %edx
1289 xorl %esi, %eax
1290 xorl %ecx, %ecx
1291 xorl %esi, %edx
1292 andl $0xfcfcfcfc, %eax
1293 andl $0xcfcfcfcf, %edx
1294 movb %al, %bl
1295 movb %ah, %cl
1296 rorl $4, %edx
1297 xorl (%ebp,%ebx),%edi
1298 movb %dl, %bl
1299 xorl 0x200(%ebp,%ecx),%edi
1300 movb %dh, %cl
1301 shrl $16, %eax
1302 xorl 0x100(%ebp,%ebx),%edi
1303 movb %ah, %bl
1304 shrl $16, %edx
1305 xorl 0x300(%ebp,%ecx),%edi
1306 movb %dh, %cl
1307 andl $0xff, %eax
1308 andl $0xff, %edx
1309 xorl 0x600(%ebp,%ebx),%edi
1310 xorl 0x700(%ebp,%ecx),%edi
1311 movl 24(%esp), %ecx
1312 xorl 0x400(%ebp,%eax),%edi
1313 xorl 0x500(%ebp,%edx),%edi
1314
1315
1316 movl 56(%ecx), %eax
1317 xorl %ebx, %ebx
1318 movl 60(%ecx), %edx
1319 xorl %edi, %eax
1320 xorl %ecx, %ecx
1321 xorl %edi, %edx
1322 andl $0xfcfcfcfc, %eax
1323 andl $0xcfcfcfcf, %edx
1324 movb %al, %bl
1325 movb %ah, %cl
1326 rorl $4, %edx
1327 xorl (%ebp,%ebx),%esi
1328 movb %dl, %bl
1329 xorl 0x200(%ebp,%ecx),%esi
1330 movb %dh, %cl
1331 shrl $16, %eax
1332 xorl 0x100(%ebp,%ebx),%esi
1333 movb %ah, %bl
1334 shrl $16, %edx
1335 xorl 0x300(%ebp,%ecx),%esi
1336 movb %dh, %cl
1337 andl $0xff, %eax
1338 andl $0xff, %edx
1339 xorl 0x600(%ebp,%ebx),%esi
1340 xorl 0x700(%ebp,%ecx),%esi
1341 movl 24(%esp), %ecx
1342 xorl 0x400(%ebp,%eax),%esi
1343 xorl 0x500(%ebp,%edx),%esi
1344
1345
1346 movl 64(%ecx), %eax
1347 xorl %ebx, %ebx
1348 movl 68(%ecx), %edx
1349 xorl %esi, %eax
1350 xorl %ecx, %ecx
1351 xorl %esi, %edx
1352 andl $0xfcfcfcfc, %eax
1353 andl $0xcfcfcfcf, %edx
1354 movb %al, %bl
1355 movb %ah, %cl
1356 rorl $4, %edx
1357 xorl (%ebp,%ebx),%edi
1358 movb %dl, %bl
1359 xorl 0x200(%ebp,%ecx),%edi
1360 movb %dh, %cl
1361 shrl $16, %eax
1362 xorl 0x100(%ebp,%ebx),%edi
1363 movb %ah, %bl
1364 shrl $16, %edx
1365 xorl 0x300(%ebp,%ecx),%edi
1366 movb %dh, %cl
1367 andl $0xff, %eax
1368 andl $0xff, %edx
1369 xorl 0x600(%ebp,%ebx),%edi
1370 xorl 0x700(%ebp,%ecx),%edi
1371 movl 24(%esp), %ecx
1372 xorl 0x400(%ebp,%eax),%edi
1373 xorl 0x500(%ebp,%edx),%edi
1374
1375
1376 movl 72(%ecx), %eax
1377 xorl %ebx, %ebx
1378 movl 76(%ecx), %edx
1379 xorl %edi, %eax
1380 xorl %ecx, %ecx
1381 xorl %edi, %edx
1382 andl $0xfcfcfcfc, %eax
1383 andl $0xcfcfcfcf, %edx
1384 movb %al, %bl
1385 movb %ah, %cl
1386 rorl $4, %edx
1387 xorl (%ebp,%ebx),%esi
1388 movb %dl, %bl
1389 xorl 0x200(%ebp,%ecx),%esi
1390 movb %dh, %cl
1391 shrl $16, %eax
1392 xorl 0x100(%ebp,%ebx),%esi
1393 movb %ah, %bl
1394 shrl $16, %edx
1395 xorl 0x300(%ebp,%ecx),%esi
1396 movb %dh, %cl
1397 andl $0xff, %eax
1398 andl $0xff, %edx
1399 xorl 0x600(%ebp,%ebx),%esi
1400 xorl 0x700(%ebp,%ecx),%esi
1401 movl 24(%esp), %ecx
1402 xorl 0x400(%ebp,%eax),%esi
1403 xorl 0x500(%ebp,%edx),%esi
1404
1405
1406 movl 80(%ecx), %eax
1407 xorl %ebx, %ebx
1408 movl 84(%ecx), %edx
1409 xorl %esi, %eax
1410 xorl %ecx, %ecx
1411 xorl %esi, %edx
1412 andl $0xfcfcfcfc, %eax
1413 andl $0xcfcfcfcf, %edx
1414 movb %al, %bl
1415 movb %ah, %cl
1416 rorl $4, %edx
1417 xorl (%ebp,%ebx),%edi
1418 movb %dl, %bl
1419 xorl 0x200(%ebp,%ecx),%edi
1420 movb %dh, %cl
1421 shrl $16, %eax
1422 xorl 0x100(%ebp,%ebx),%edi
1423 movb %ah, %bl
1424 shrl $16, %edx
1425 xorl 0x300(%ebp,%ecx),%edi
1426 movb %dh, %cl
1427 andl $0xff, %eax
1428 andl $0xff, %edx
1429 xorl 0x600(%ebp,%ebx),%edi
1430 xorl 0x700(%ebp,%ecx),%edi
1431 movl 24(%esp), %ecx
1432 xorl 0x400(%ebp,%eax),%edi
1433 xorl 0x500(%ebp,%edx),%edi
1434
1435
1436 movl 88(%ecx), %eax
1437 xorl %ebx, %ebx
1438 movl 92(%ecx), %edx
1439 xorl %edi, %eax
1440 xorl %ecx, %ecx
1441 xorl %edi, %edx
1442 andl $0xfcfcfcfc, %eax
1443 andl $0xcfcfcfcf, %edx
1444 movb %al, %bl
1445 movb %ah, %cl
1446 rorl $4, %edx
1447 xorl (%ebp,%ebx),%esi
1448 movb %dl, %bl
1449 xorl 0x200(%ebp,%ecx),%esi
1450 movb %dh, %cl
1451 shrl $16, %eax
1452 xorl 0x100(%ebp,%ebx),%esi
1453 movb %ah, %bl
1454 shrl $16, %edx
1455 xorl 0x300(%ebp,%ecx),%esi
1456 movb %dh, %cl
1457 andl $0xff, %eax
1458 andl $0xff, %edx
1459 xorl 0x600(%ebp,%ebx),%esi
1460 xorl 0x700(%ebp,%ecx),%esi
1461 movl 24(%esp), %ecx
1462 xorl 0x400(%ebp,%eax),%esi
1463 xorl 0x500(%ebp,%edx),%esi
1464
1465
1466 movl 96(%ecx), %eax
1467 xorl %ebx, %ebx
1468 movl 100(%ecx), %edx
1469 xorl %esi, %eax
1470 xorl %ecx, %ecx
1471 xorl %esi, %edx
1472 andl $0xfcfcfcfc, %eax
1473 andl $0xcfcfcfcf, %edx
1474 movb %al, %bl
1475 movb %ah, %cl
1476 rorl $4, %edx
1477 xorl (%ebp,%ebx),%edi
1478 movb %dl, %bl
1479 xorl 0x200(%ebp,%ecx),%edi
1480 movb %dh, %cl
1481 shrl $16, %eax
1482 xorl 0x100(%ebp,%ebx),%edi
1483 movb %ah, %bl
1484 shrl $16, %edx
1485 xorl 0x300(%ebp,%ecx),%edi
1486 movb %dh, %cl
1487 andl $0xff, %eax
1488 andl $0xff, %edx
1489 xorl 0x600(%ebp,%ebx),%edi
1490 xorl 0x700(%ebp,%ecx),%edi
1491 movl 24(%esp), %ecx
1492 xorl 0x400(%ebp,%eax),%edi
1493 xorl 0x500(%ebp,%edx),%edi
1494
1495
1496 movl 104(%ecx), %eax
1497 xorl %ebx, %ebx
1498 movl 108(%ecx), %edx
1499 xorl %edi, %eax
1500 xorl %ecx, %ecx
1501 xorl %edi, %edx
1502 andl $0xfcfcfcfc, %eax
1503 andl $0xcfcfcfcf, %edx
1504 movb %al, %bl
1505 movb %ah, %cl
1506 rorl $4, %edx
1507 xorl (%ebp,%ebx),%esi
1508 movb %dl, %bl
1509 xorl 0x200(%ebp,%ecx),%esi
1510 movb %dh, %cl
1511 shrl $16, %eax
1512 xorl 0x100(%ebp,%ebx),%esi
1513 movb %ah, %bl
1514 shrl $16, %edx
1515 xorl 0x300(%ebp,%ecx),%esi
1516 movb %dh, %cl
1517 andl $0xff, %eax
1518 andl $0xff, %edx
1519 xorl 0x600(%ebp,%ebx),%esi
1520 xorl 0x700(%ebp,%ecx),%esi
1521 movl 24(%esp), %ecx
1522 xorl 0x400(%ebp,%eax),%esi
1523 xorl 0x500(%ebp,%edx),%esi
1524
1525
1526 movl 112(%ecx), %eax
1527 xorl %ebx, %ebx
1528 movl 116(%ecx), %edx
1529 xorl %esi, %eax
1530 xorl %ecx, %ecx
1531 xorl %esi, %edx
1532 andl $0xfcfcfcfc, %eax
1533 andl $0xcfcfcfcf, %edx
1534 movb %al, %bl
1535 movb %ah, %cl
1536 rorl $4, %edx
1537 xorl (%ebp,%ebx),%edi
1538 movb %dl, %bl
1539 xorl 0x200(%ebp,%ecx),%edi
1540 movb %dh, %cl
1541 shrl $16, %eax
1542 xorl 0x100(%ebp,%ebx),%edi
1543 movb %ah, %bl
1544 shrl $16, %edx
1545 xorl 0x300(%ebp,%ecx),%edi
1546 movb %dh, %cl
1547 andl $0xff, %eax
1548 andl $0xff, %edx
1549 xorl 0x600(%ebp,%ebx),%edi
1550 xorl 0x700(%ebp,%ecx),%edi
1551 movl 24(%esp), %ecx
1552 xorl 0x400(%ebp,%eax),%edi
1553 xorl 0x500(%ebp,%edx),%edi
1554
1555
1556 movl 120(%ecx), %eax
1557 xorl %ebx, %ebx
1558 movl 124(%ecx), %edx
1559 xorl %edi, %eax
1560 xorl %ecx, %ecx
1561 xorl %edi, %edx
1562 andl $0xfcfcfcfc, %eax
1563 andl $0xcfcfcfcf, %edx
1564 movb %al, %bl
1565 movb %ah, %cl
1566 rorl $4, %edx
1567 xorl (%ebp,%ebx),%esi
1568 movb %dl, %bl
1569 xorl 0x200(%ebp,%ecx),%esi
1570 movb %dh, %cl
1571 shrl $16, %eax
1572 xorl 0x100(%ebp,%ebx),%esi
1573 movb %ah, %bl
1574 shrl $16, %edx
1575 xorl 0x300(%ebp,%ecx),%esi
1576 movb %dh, %cl
1577 andl $0xff, %eax
1578 andl $0xff, %edx
1579 xorl 0x600(%ebp,%ebx),%esi
1580 xorl 0x700(%ebp,%ecx),%esi
1581 movl 24(%esp), %ecx
1582 xorl 0x400(%ebp,%eax),%esi
1583 xorl 0x500(%ebp,%edx),%esi
1584 jmp .L003end
1585.L002start_decrypt:
1586
1587
1588 movl 120(%ecx), %eax
1589 xorl %ebx, %ebx
1590 movl 124(%ecx), %edx
1591 xorl %esi, %eax
1592 xorl %ecx, %ecx
1593 xorl %esi, %edx
1594 andl $0xfcfcfcfc, %eax
1595 andl $0xcfcfcfcf, %edx
1596 movb %al, %bl
1597 movb %ah, %cl
1598 rorl $4, %edx
1599 xorl (%ebp,%ebx),%edi
1600 movb %dl, %bl
1601 xorl 0x200(%ebp,%ecx),%edi
1602 movb %dh, %cl
1603 shrl $16, %eax
1604 xorl 0x100(%ebp,%ebx),%edi
1605 movb %ah, %bl
1606 shrl $16, %edx
1607 xorl 0x300(%ebp,%ecx),%edi
1608 movb %dh, %cl
1609 andl $0xff, %eax
1610 andl $0xff, %edx
1611 xorl 0x600(%ebp,%ebx),%edi
1612 xorl 0x700(%ebp,%ecx),%edi
1613 movl 24(%esp), %ecx
1614 xorl 0x400(%ebp,%eax),%edi
1615 xorl 0x500(%ebp,%edx),%edi
1616
1617
1618 movl 112(%ecx), %eax
1619 xorl %ebx, %ebx
1620 movl 116(%ecx), %edx
1621 xorl %edi, %eax
1622 xorl %ecx, %ecx
1623 xorl %edi, %edx
1624 andl $0xfcfcfcfc, %eax
1625 andl $0xcfcfcfcf, %edx
1626 movb %al, %bl
1627 movb %ah, %cl
1628 rorl $4, %edx
1629 xorl (%ebp,%ebx),%esi
1630 movb %dl, %bl
1631 xorl 0x200(%ebp,%ecx),%esi
1632 movb %dh, %cl
1633 shrl $16, %eax
1634 xorl 0x100(%ebp,%ebx),%esi
1635 movb %ah, %bl
1636 shrl $16, %edx
1637 xorl 0x300(%ebp,%ecx),%esi
1638 movb %dh, %cl
1639 andl $0xff, %eax
1640 andl $0xff, %edx
1641 xorl 0x600(%ebp,%ebx),%esi
1642 xorl 0x700(%ebp,%ecx),%esi
1643 movl 24(%esp), %ecx
1644 xorl 0x400(%ebp,%eax),%esi
1645 xorl 0x500(%ebp,%edx),%esi
1646
1647
1648 movl 104(%ecx), %eax
1649 xorl %ebx, %ebx
1650 movl 108(%ecx), %edx
1651 xorl %esi, %eax
1652 xorl %ecx, %ecx
1653 xorl %esi, %edx
1654 andl $0xfcfcfcfc, %eax
1655 andl $0xcfcfcfcf, %edx
1656 movb %al, %bl
1657 movb %ah, %cl
1658 rorl $4, %edx
1659 xorl (%ebp,%ebx),%edi
1660 movb %dl, %bl
1661 xorl 0x200(%ebp,%ecx),%edi
1662 movb %dh, %cl
1663 shrl $16, %eax
1664 xorl 0x100(%ebp,%ebx),%edi
1665 movb %ah, %bl
1666 shrl $16, %edx
1667 xorl 0x300(%ebp,%ecx),%edi
1668 movb %dh, %cl
1669 andl $0xff, %eax
1670 andl $0xff, %edx
1671 xorl 0x600(%ebp,%ebx),%edi
1672 xorl 0x700(%ebp,%ecx),%edi
1673 movl 24(%esp), %ecx
1674 xorl 0x400(%ebp,%eax),%edi
1675 xorl 0x500(%ebp,%edx),%edi
1676
1677
1678 movl 96(%ecx), %eax
1679 xorl %ebx, %ebx
1680 movl 100(%ecx), %edx
1681 xorl %edi, %eax
1682 xorl %ecx, %ecx
1683 xorl %edi, %edx
1684 andl $0xfcfcfcfc, %eax
1685 andl $0xcfcfcfcf, %edx
1686 movb %al, %bl
1687 movb %ah, %cl
1688 rorl $4, %edx
1689 xorl (%ebp,%ebx),%esi
1690 movb %dl, %bl
1691 xorl 0x200(%ebp,%ecx),%esi
1692 movb %dh, %cl
1693 shrl $16, %eax
1694 xorl 0x100(%ebp,%ebx),%esi
1695 movb %ah, %bl
1696 shrl $16, %edx
1697 xorl 0x300(%ebp,%ecx),%esi
1698 movb %dh, %cl
1699 andl $0xff, %eax
1700 andl $0xff, %edx
1701 xorl 0x600(%ebp,%ebx),%esi
1702 xorl 0x700(%ebp,%ecx),%esi
1703 movl 24(%esp), %ecx
1704 xorl 0x400(%ebp,%eax),%esi
1705 xorl 0x500(%ebp,%edx),%esi
1706
1707
1708 movl 88(%ecx), %eax
1709 xorl %ebx, %ebx
1710 movl 92(%ecx), %edx
1711 xorl %esi, %eax
1712 xorl %ecx, %ecx
1713 xorl %esi, %edx
1714 andl $0xfcfcfcfc, %eax
1715 andl $0xcfcfcfcf, %edx
1716 movb %al, %bl
1717 movb %ah, %cl
1718 rorl $4, %edx
1719 xorl (%ebp,%ebx),%edi
1720 movb %dl, %bl
1721 xorl 0x200(%ebp,%ecx),%edi
1722 movb %dh, %cl
1723 shrl $16, %eax
1724 xorl 0x100(%ebp,%ebx),%edi
1725 movb %ah, %bl
1726 shrl $16, %edx
1727 xorl 0x300(%ebp,%ecx),%edi
1728 movb %dh, %cl
1729 andl $0xff, %eax
1730 andl $0xff, %edx
1731 xorl 0x600(%ebp,%ebx),%edi
1732 xorl 0x700(%ebp,%ecx),%edi
1733 movl 24(%esp), %ecx
1734 xorl 0x400(%ebp,%eax),%edi
1735 xorl 0x500(%ebp,%edx),%edi
1736
1737
1738 movl 80(%ecx), %eax
1739 xorl %ebx, %ebx
1740 movl 84(%ecx), %edx
1741 xorl %edi, %eax
1742 xorl %ecx, %ecx
1743 xorl %edi, %edx
1744 andl $0xfcfcfcfc, %eax
1745 andl $0xcfcfcfcf, %edx
1746 movb %al, %bl
1747 movb %ah, %cl
1748 rorl $4, %edx
1749 xorl (%ebp,%ebx),%esi
1750 movb %dl, %bl
1751 xorl 0x200(%ebp,%ecx),%esi
1752 movb %dh, %cl
1753 shrl $16, %eax
1754 xorl 0x100(%ebp,%ebx),%esi
1755 movb %ah, %bl
1756 shrl $16, %edx
1757 xorl 0x300(%ebp,%ecx),%esi
1758 movb %dh, %cl
1759 andl $0xff, %eax
1760 andl $0xff, %edx
1761 xorl 0x600(%ebp,%ebx),%esi
1762 xorl 0x700(%ebp,%ecx),%esi
1763 movl 24(%esp), %ecx
1764 xorl 0x400(%ebp,%eax),%esi
1765 xorl 0x500(%ebp,%edx),%esi
1766
1767
1768 movl 72(%ecx), %eax
1769 xorl %ebx, %ebx
1770 movl 76(%ecx), %edx
1771 xorl %esi, %eax
1772 xorl %ecx, %ecx
1773 xorl %esi, %edx
1774 andl $0xfcfcfcfc, %eax
1775 andl $0xcfcfcfcf, %edx
1776 movb %al, %bl
1777 movb %ah, %cl
1778 rorl $4, %edx
1779 xorl (%ebp,%ebx),%edi
1780 movb %dl, %bl
1781 xorl 0x200(%ebp,%ecx),%edi
1782 movb %dh, %cl
1783 shrl $16, %eax
1784 xorl 0x100(%ebp,%ebx),%edi
1785 movb %ah, %bl
1786 shrl $16, %edx
1787 xorl 0x300(%ebp,%ecx),%edi
1788 movb %dh, %cl
1789 andl $0xff, %eax
1790 andl $0xff, %edx
1791 xorl 0x600(%ebp,%ebx),%edi
1792 xorl 0x700(%ebp,%ecx),%edi
1793 movl 24(%esp), %ecx
1794 xorl 0x400(%ebp,%eax),%edi
1795 xorl 0x500(%ebp,%edx),%edi
1796
1797
1798 movl 64(%ecx), %eax
1799 xorl %ebx, %ebx
1800 movl 68(%ecx), %edx
1801 xorl %edi, %eax
1802 xorl %ecx, %ecx
1803 xorl %edi, %edx
1804 andl $0xfcfcfcfc, %eax
1805 andl $0xcfcfcfcf, %edx
1806 movb %al, %bl
1807 movb %ah, %cl
1808 rorl $4, %edx
1809 xorl (%ebp,%ebx),%esi
1810 movb %dl, %bl
1811 xorl 0x200(%ebp,%ecx),%esi
1812 movb %dh, %cl
1813 shrl $16, %eax
1814 xorl 0x100(%ebp,%ebx),%esi
1815 movb %ah, %bl
1816 shrl $16, %edx
1817 xorl 0x300(%ebp,%ecx),%esi
1818 movb %dh, %cl
1819 andl $0xff, %eax
1820 andl $0xff, %edx
1821 xorl 0x600(%ebp,%ebx),%esi
1822 xorl 0x700(%ebp,%ecx),%esi
1823 movl 24(%esp), %ecx
1824 xorl 0x400(%ebp,%eax),%esi
1825 xorl 0x500(%ebp,%edx),%esi
1826
1827
1828 movl 56(%ecx), %eax
1829 xorl %ebx, %ebx
1830 movl 60(%ecx), %edx
1831 xorl %esi, %eax
1832 xorl %ecx, %ecx
1833 xorl %esi, %edx
1834 andl $0xfcfcfcfc, %eax
1835 andl $0xcfcfcfcf, %edx
1836 movb %al, %bl
1837 movb %ah, %cl
1838 rorl $4, %edx
1839 xorl (%ebp,%ebx),%edi
1840 movb %dl, %bl
1841 xorl 0x200(%ebp,%ecx),%edi
1842 movb %dh, %cl
1843 shrl $16, %eax
1844 xorl 0x100(%ebp,%ebx),%edi
1845 movb %ah, %bl
1846 shrl $16, %edx
1847 xorl 0x300(%ebp,%ecx),%edi
1848 movb %dh, %cl
1849 andl $0xff, %eax
1850 andl $0xff, %edx
1851 xorl 0x600(%ebp,%ebx),%edi
1852 xorl 0x700(%ebp,%ecx),%edi
1853 movl 24(%esp), %ecx
1854 xorl 0x400(%ebp,%eax),%edi
1855 xorl 0x500(%ebp,%edx),%edi
1856
1857
1858 movl 48(%ecx), %eax
1859 xorl %ebx, %ebx
1860 movl 52(%ecx), %edx
1861 xorl %edi, %eax
1862 xorl %ecx, %ecx
1863 xorl %edi, %edx
1864 andl $0xfcfcfcfc, %eax
1865 andl $0xcfcfcfcf, %edx
1866 movb %al, %bl
1867 movb %ah, %cl
1868 rorl $4, %edx
1869 xorl (%ebp,%ebx),%esi
1870 movb %dl, %bl
1871 xorl 0x200(%ebp,%ecx),%esi
1872 movb %dh, %cl
1873 shrl $16, %eax
1874 xorl 0x100(%ebp,%ebx),%esi
1875 movb %ah, %bl
1876 shrl $16, %edx
1877 xorl 0x300(%ebp,%ecx),%esi
1878 movb %dh, %cl
1879 andl $0xff, %eax
1880 andl $0xff, %edx
1881 xorl 0x600(%ebp,%ebx),%esi
1882 xorl 0x700(%ebp,%ecx),%esi
1883 movl 24(%esp), %ecx
1884 xorl 0x400(%ebp,%eax),%esi
1885 xorl 0x500(%ebp,%edx),%esi
1886
1887
1888 movl 40(%ecx), %eax
1889 xorl %ebx, %ebx
1890 movl 44(%ecx), %edx
1891 xorl %esi, %eax
1892 xorl %ecx, %ecx
1893 xorl %esi, %edx
1894 andl $0xfcfcfcfc, %eax
1895 andl $0xcfcfcfcf, %edx
1896 movb %al, %bl
1897 movb %ah, %cl
1898 rorl $4, %edx
1899 xorl (%ebp,%ebx),%edi
1900 movb %dl, %bl
1901 xorl 0x200(%ebp,%ecx),%edi
1902 movb %dh, %cl
1903 shrl $16, %eax
1904 xorl 0x100(%ebp,%ebx),%edi
1905 movb %ah, %bl
1906 shrl $16, %edx
1907 xorl 0x300(%ebp,%ecx),%edi
1908 movb %dh, %cl
1909 andl $0xff, %eax
1910 andl $0xff, %edx
1911 xorl 0x600(%ebp,%ebx),%edi
1912 xorl 0x700(%ebp,%ecx),%edi
1913 movl 24(%esp), %ecx
1914 xorl 0x400(%ebp,%eax),%edi
1915 xorl 0x500(%ebp,%edx),%edi
1916
1917
1918 movl 32(%ecx), %eax
1919 xorl %ebx, %ebx
1920 movl 36(%ecx), %edx
1921 xorl %edi, %eax
1922 xorl %ecx, %ecx
1923 xorl %edi, %edx
1924 andl $0xfcfcfcfc, %eax
1925 andl $0xcfcfcfcf, %edx
1926 movb %al, %bl
1927 movb %ah, %cl
1928 rorl $4, %edx
1929 xorl (%ebp,%ebx),%esi
1930 movb %dl, %bl
1931 xorl 0x200(%ebp,%ecx),%esi
1932 movb %dh, %cl
1933 shrl $16, %eax
1934 xorl 0x100(%ebp,%ebx),%esi
1935 movb %ah, %bl
1936 shrl $16, %edx
1937 xorl 0x300(%ebp,%ecx),%esi
1938 movb %dh, %cl
1939 andl $0xff, %eax
1940 andl $0xff, %edx
1941 xorl 0x600(%ebp,%ebx),%esi
1942 xorl 0x700(%ebp,%ecx),%esi
1943 movl 24(%esp), %ecx
1944 xorl 0x400(%ebp,%eax),%esi
1945 xorl 0x500(%ebp,%edx),%esi
1946
1947
1948 movl 24(%ecx), %eax
1949 xorl %ebx, %ebx
1950 movl 28(%ecx), %edx
1951 xorl %esi, %eax
1952 xorl %ecx, %ecx
1953 xorl %esi, %edx
1954 andl $0xfcfcfcfc, %eax
1955 andl $0xcfcfcfcf, %edx
1956 movb %al, %bl
1957 movb %ah, %cl
1958 rorl $4, %edx
1959 xorl (%ebp,%ebx),%edi
1960 movb %dl, %bl
1961 xorl 0x200(%ebp,%ecx),%edi
1962 movb %dh, %cl
1963 shrl $16, %eax
1964 xorl 0x100(%ebp,%ebx),%edi
1965 movb %ah, %bl
1966 shrl $16, %edx
1967 xorl 0x300(%ebp,%ecx),%edi
1968 movb %dh, %cl
1969 andl $0xff, %eax
1970 andl $0xff, %edx
1971 xorl 0x600(%ebp,%ebx),%edi
1972 xorl 0x700(%ebp,%ecx),%edi
1973 movl 24(%esp), %ecx
1974 xorl 0x400(%ebp,%eax),%edi
1975 xorl 0x500(%ebp,%edx),%edi
1976
1977
1978 movl 16(%ecx), %eax
1979 xorl %ebx, %ebx
1980 movl 20(%ecx), %edx
1981 xorl %edi, %eax
1982 xorl %ecx, %ecx
1983 xorl %edi, %edx
1984 andl $0xfcfcfcfc, %eax
1985 andl $0xcfcfcfcf, %edx
1986 movb %al, %bl
1987 movb %ah, %cl
1988 rorl $4, %edx
1989 xorl (%ebp,%ebx),%esi
1990 movb %dl, %bl
1991 xorl 0x200(%ebp,%ecx),%esi
1992 movb %dh, %cl
1993 shrl $16, %eax
1994 xorl 0x100(%ebp,%ebx),%esi
1995 movb %ah, %bl
1996 shrl $16, %edx
1997 xorl 0x300(%ebp,%ecx),%esi
1998 movb %dh, %cl
1999 andl $0xff, %eax
2000 andl $0xff, %edx
2001 xorl 0x600(%ebp,%ebx),%esi
2002 xorl 0x700(%ebp,%ecx),%esi
2003 movl 24(%esp), %ecx
2004 xorl 0x400(%ebp,%eax),%esi
2005 xorl 0x500(%ebp,%edx),%esi
2006
2007
2008 movl 8(%ecx), %eax
2009 xorl %ebx, %ebx
2010 movl 12(%ecx), %edx
2011 xorl %esi, %eax
2012 xorl %ecx, %ecx
2013 xorl %esi, %edx
2014 andl $0xfcfcfcfc, %eax
2015 andl $0xcfcfcfcf, %edx
2016 movb %al, %bl
2017 movb %ah, %cl
2018 rorl $4, %edx
2019 xorl (%ebp,%ebx),%edi
2020 movb %dl, %bl
2021 xorl 0x200(%ebp,%ecx),%edi
2022 movb %dh, %cl
2023 shrl $16, %eax
2024 xorl 0x100(%ebp,%ebx),%edi
2025 movb %ah, %bl
2026 shrl $16, %edx
2027 xorl 0x300(%ebp,%ecx),%edi
2028 movb %dh, %cl
2029 andl $0xff, %eax
2030 andl $0xff, %edx
2031 xorl 0x600(%ebp,%ebx),%edi
2032 xorl 0x700(%ebp,%ecx),%edi
2033 movl 24(%esp), %ecx
2034 xorl 0x400(%ebp,%eax),%edi
2035 xorl 0x500(%ebp,%edx),%edi
2036
2037
2038 movl (%ecx), %eax
2039 xorl %ebx, %ebx
2040 movl 4(%ecx), %edx
2041 xorl %edi, %eax
2042 xorl %ecx, %ecx
2043 xorl %edi, %edx
2044 andl $0xfcfcfcfc, %eax
2045 andl $0xcfcfcfcf, %edx
2046 movb %al, %bl
2047 movb %ah, %cl
2048 rorl $4, %edx
2049 xorl (%ebp,%ebx),%esi
2050 movb %dl, %bl
2051 xorl 0x200(%ebp,%ecx),%esi
2052 movb %dh, %cl
2053 shrl $16, %eax
2054 xorl 0x100(%ebp,%ebx),%esi
2055 movb %ah, %bl
2056 shrl $16, %edx
2057 xorl 0x300(%ebp,%ecx),%esi
2058 movb %dh, %cl
2059 andl $0xff, %eax
2060 andl $0xff, %edx
2061 xorl 0x600(%ebp,%ebx),%esi
2062 xorl 0x700(%ebp,%ecx),%esi
2063 movl 24(%esp), %ecx
2064 xorl 0x400(%ebp,%eax),%esi
2065 xorl 0x500(%ebp,%edx),%esi
2066.L003end:
2067
2068
2069 rorl $3, %edi
2070 movl 20(%esp), %eax
2071 rorl $3, %esi
2072 movl %edi, (%eax)
2073 movl %esi, 4(%eax)
2074 popl %ebp
2075 popl %ebx
2076 popl %edi
2077 popl %esi
2078 ret
2079.L_DES_encrypt2_end:
2080 .size DES_encrypt2,.L_DES_encrypt2_end-DES_encrypt2
2081.ident "desasm.pl"
2082.text
2083 .align 16
2084.globl DES_encrypt3
2085 .type DES_encrypt3,@function
2086DES_encrypt3:
2087 pushl %ebx
2088 movl 8(%esp), %ebx
2089 pushl %ebp
2090 pushl %esi
2091 pushl %edi
2092
2093
2094 movl (%ebx), %edi
2095 movl 4(%ebx), %esi
2096 subl $12, %esp
2097
2098
2099 roll $4, %edi
2100 movl %edi, %edx
2101 xorl %esi, %edi
2102 andl $0xf0f0f0f0, %edi
2103 xorl %edi, %edx
2104 xorl %edi, %esi
2105
2106 roll $20, %esi
2107 movl %esi, %edi
2108 xorl %edx, %esi
2109 andl $0xfff0000f, %esi
2110 xorl %esi, %edi
2111 xorl %esi, %edx
2112
2113 roll $14, %edi
2114 movl %edi, %esi
2115 xorl %edx, %edi
2116 andl $0x33333333, %edi
2117 xorl %edi, %esi
2118 xorl %edi, %edx
2119
2120 roll $22, %edx
2121 movl %edx, %edi
2122 xorl %esi, %edx
2123 andl $0x03fc03fc, %edx
2124 xorl %edx, %edi
2125 xorl %edx, %esi
2126
2127 roll $9, %edi
2128 movl %edi, %edx
2129 xorl %esi, %edi
2130 andl $0xaaaaaaaa, %edi
2131 xorl %edi, %edx
2132 xorl %edi, %esi
2133
2134 rorl $3, %edx
2135 rorl $2, %esi
2136 movl %esi, 4(%ebx)
2137 movl 36(%esp), %eax
2138 movl %edx, (%ebx)
2139 movl 40(%esp), %edi
2140 movl 44(%esp), %esi
2141 movl $1, 8(%esp)
2142 movl %eax, 4(%esp)
2143 movl %ebx, (%esp)
2144 call DES_encrypt2
2145 movl $0, 8(%esp)
2146 movl %edi, 4(%esp)
2147 movl %ebx, (%esp)
2148 call DES_encrypt2
2149 movl $1, 8(%esp)
2150 movl %esi, 4(%esp)
2151 movl %ebx, (%esp)
2152 call DES_encrypt2
2153 addl $12, %esp
2154 movl (%ebx), %edi
2155 movl 4(%ebx), %esi
2156
2157
2158 roll $2, %esi
2159 roll $3, %edi
2160 movl %edi, %eax
2161 xorl %esi, %edi
2162 andl $0xaaaaaaaa, %edi
2163 xorl %edi, %eax
2164 xorl %edi, %esi
2165
2166 roll $23, %eax
2167 movl %eax, %edi
2168 xorl %esi, %eax
2169 andl $0x03fc03fc, %eax
2170 xorl %eax, %edi
2171 xorl %eax, %esi
2172
2173 roll $10, %edi
2174 movl %edi, %eax
2175 xorl %esi, %edi
2176 andl $0x33333333, %edi
2177 xorl %edi, %eax
2178 xorl %edi, %esi
2179
2180 roll $18, %esi
2181 movl %esi, %edi
2182 xorl %eax, %esi
2183 andl $0xfff0000f, %esi
2184 xorl %esi, %edi
2185 xorl %esi, %eax
2186
2187 roll $12, %edi
2188 movl %edi, %esi
2189 xorl %eax, %edi
2190 andl $0xf0f0f0f0, %edi
2191 xorl %edi, %esi
2192 xorl %edi, %eax
2193
2194 rorl $4, %eax
2195 movl %eax, (%ebx)
2196 movl %esi, 4(%ebx)
2197 popl %edi
2198 popl %esi
2199 popl %ebp
2200 popl %ebx
2201 ret
2202.L_DES_encrypt3_end:
2203 .size DES_encrypt3,.L_DES_encrypt3_end-DES_encrypt3
2204.ident "desasm.pl"
2205.text
2206 .align 16
2207.globl DES_decrypt3
2208 .type DES_decrypt3,@function
2209DES_decrypt3:
2210 pushl %ebx
2211 movl 8(%esp), %ebx
2212 pushl %ebp
2213 pushl %esi
2214 pushl %edi
2215
2216
2217 movl (%ebx), %edi
2218 movl 4(%ebx), %esi
2219 subl $12, %esp
2220
2221
2222 roll $4, %edi
2223 movl %edi, %edx
2224 xorl %esi, %edi
2225 andl $0xf0f0f0f0, %edi
2226 xorl %edi, %edx
2227 xorl %edi, %esi
2228
2229 roll $20, %esi
2230 movl %esi, %edi
2231 xorl %edx, %esi
2232 andl $0xfff0000f, %esi
2233 xorl %esi, %edi
2234 xorl %esi, %edx
2235
2236 roll $14, %edi
2237 movl %edi, %esi
2238 xorl %edx, %edi
2239 andl $0x33333333, %edi
2240 xorl %edi, %esi
2241 xorl %edi, %edx
2242
2243 roll $22, %edx
2244 movl %edx, %edi
2245 xorl %esi, %edx
2246 andl $0x03fc03fc, %edx
2247 xorl %edx, %edi
2248 xorl %edx, %esi
2249
2250 roll $9, %edi
2251 movl %edi, %edx
2252 xorl %esi, %edi
2253 andl $0xaaaaaaaa, %edi
2254 xorl %edi, %edx
2255 xorl %edi, %esi
2256
2257 rorl $3, %edx
2258 rorl $2, %esi
2259 movl %esi, 4(%ebx)
2260 movl 36(%esp), %esi
2261 movl %edx, (%ebx)
2262 movl 40(%esp), %edi
2263 movl 44(%esp), %eax
2264 movl $0, 8(%esp)
2265 movl %eax, 4(%esp)
2266 movl %ebx, (%esp)
2267 call DES_encrypt2
2268 movl $1, 8(%esp)
2269 movl %edi, 4(%esp)
2270 movl %ebx, (%esp)
2271 call DES_encrypt2
2272 movl $0, 8(%esp)
2273 movl %esi, 4(%esp)
2274 movl %ebx, (%esp)
2275 call DES_encrypt2
2276 addl $12, %esp
2277 movl (%ebx), %edi
2278 movl 4(%ebx), %esi
2279
2280
2281 roll $2, %esi
2282 roll $3, %edi
2283 movl %edi, %eax
2284 xorl %esi, %edi
2285 andl $0xaaaaaaaa, %edi
2286 xorl %edi, %eax
2287 xorl %edi, %esi
2288
2289 roll $23, %eax
2290 movl %eax, %edi
2291 xorl %esi, %eax
2292 andl $0x03fc03fc, %eax
2293 xorl %eax, %edi
2294 xorl %eax, %esi
2295
2296 roll $10, %edi
2297 movl %edi, %eax
2298 xorl %esi, %edi
2299 andl $0x33333333, %edi
2300 xorl %edi, %eax
2301 xorl %edi, %esi
2302
2303 roll $18, %esi
2304 movl %esi, %edi
2305 xorl %eax, %esi
2306 andl $0xfff0000f, %esi
2307 xorl %esi, %edi
2308 xorl %esi, %eax
2309
2310 roll $12, %edi
2311 movl %edi, %esi
2312 xorl %eax, %edi
2313 andl $0xf0f0f0f0, %edi
2314 xorl %edi, %esi
2315 xorl %edi, %eax
2316
2317 rorl $4, %eax
2318 movl %eax, (%ebx)
2319 movl %esi, 4(%ebx)
2320 popl %edi
2321 popl %esi
2322 popl %ebp
2323 popl %ebx
2324 ret
2325.L_DES_decrypt3_end:
2326 .size DES_decrypt3,.L_DES_decrypt3_end-DES_decrypt3
2327.ident "desasm.pl"
2328.text
2329 .align 16
2330.globl DES_ncbc_encrypt
2331 .type DES_ncbc_encrypt,@function
2332DES_ncbc_encrypt:
2333
2334 pushl %ebp
2335 pushl %ebx
2336 pushl %esi
2337 pushl %edi
2338 movl 28(%esp), %ebp
2339
2340 movl 36(%esp), %ebx
2341 movl (%ebx), %esi
2342 movl 4(%ebx), %edi
2343 pushl %edi
2344 pushl %esi
2345 pushl %edi
2346 pushl %esi
2347 movl %esp, %ebx
2348 movl 36(%esp), %esi
2349 movl 40(%esp), %edi
2350
2351 movl 56(%esp), %ecx
2352
2353 pushl %ecx
2354
2355 movl 52(%esp), %eax
2356 pushl %eax
2357 pushl %ebx
2358 cmpl $0, %ecx
2359 jz .L004decrypt
2360 andl $4294967288, %ebp
2361 movl 12(%esp), %eax
2362 movl 16(%esp), %ebx
2363 jz .L005encrypt_finish
2364.L006encrypt_loop:
2365 movl (%esi), %ecx
2366 movl 4(%esi), %edx
2367 xorl %ecx, %eax
2368 xorl %edx, %ebx
2369 movl %eax, 12(%esp)
2370 movl %ebx, 16(%esp)
2371 call DES_encrypt1
2372 movl 12(%esp), %eax
2373 movl 16(%esp), %ebx
2374 movl %eax, (%edi)
2375 movl %ebx, 4(%edi)
2376 addl $8, %esi
2377 addl $8, %edi
2378 subl $8, %ebp
2379 jnz .L006encrypt_loop
2380.L005encrypt_finish:
2381 movl 56(%esp), %ebp
2382 andl $7, %ebp
2383 jz .L007finish
2384 call .L008PIC_point
2385.L008PIC_point:
2386 popl %edx
2387 leal .L009cbc_enc_jmp_table-.L008PIC_point(%edx),%ecx
2388 movl (%ecx,%ebp,4), %ebp
2389 addl %edx, %ebp
2390 xorl %ecx, %ecx
2391 xorl %edx, %edx
2392 jmp *%ebp
2393.L010ej7:
2394 movb 6(%esi), %dh
2395 sall $8, %edx
2396.L011ej6:
2397 movb 5(%esi), %dh
2398.L012ej5:
2399 movb 4(%esi), %dl
2400.L013ej4:
2401 movl (%esi), %ecx
2402 jmp .L014ejend
2403.L015ej3:
2404 movb 2(%esi), %ch
2405 sall $8, %ecx
2406.L016ej2:
2407 movb 1(%esi), %ch
2408.L017ej1:
2409 movb (%esi), %cl
2410.L014ejend:
2411 xorl %ecx, %eax
2412 xorl %edx, %ebx
2413 movl %eax, 12(%esp)
2414 movl %ebx, 16(%esp)
2415 call DES_encrypt1
2416 movl 12(%esp), %eax
2417 movl 16(%esp), %ebx
2418 movl %eax, (%edi)
2419 movl %ebx, 4(%edi)
2420 jmp .L007finish
2421.align 16
2422.L004decrypt:
2423 andl $4294967288, %ebp
2424 movl 20(%esp), %eax
2425 movl 24(%esp), %ebx
2426 jz .L018decrypt_finish
2427.L019decrypt_loop:
2428 movl (%esi), %eax
2429 movl 4(%esi), %ebx
2430 movl %eax, 12(%esp)
2431 movl %ebx, 16(%esp)
2432 call DES_encrypt1
2433 movl 12(%esp), %eax
2434 movl 16(%esp), %ebx
2435 movl 20(%esp), %ecx
2436 movl 24(%esp), %edx
2437 xorl %eax, %ecx
2438 xorl %ebx, %edx
2439 movl (%esi), %eax
2440 movl 4(%esi), %ebx
2441 movl %ecx, (%edi)
2442 movl %edx, 4(%edi)
2443 movl %eax, 20(%esp)
2444 movl %ebx, 24(%esp)
2445 addl $8, %esi
2446 addl $8, %edi
2447 subl $8, %ebp
2448 jnz .L019decrypt_loop
2449.L018decrypt_finish:
2450 movl 56(%esp), %ebp
2451 andl $7, %ebp
2452 jz .L007finish
2453 movl (%esi), %eax
2454 movl 4(%esi), %ebx
2455 movl %eax, 12(%esp)
2456 movl %ebx, 16(%esp)
2457 call DES_encrypt1
2458 movl 12(%esp), %eax
2459 movl 16(%esp), %ebx
2460 movl 20(%esp), %ecx
2461 movl 24(%esp), %edx
2462 xorl %eax, %ecx
2463 xorl %ebx, %edx
2464 movl (%esi), %eax
2465 movl 4(%esi), %ebx
2466.L020dj7:
2467 rorl $16, %edx
2468 movb %dl, 6(%edi)
2469 shrl $16, %edx
2470.L021dj6:
2471 movb %dh, 5(%edi)
2472.L022dj5:
2473 movb %dl, 4(%edi)
2474.L023dj4:
2475 movl %ecx, (%edi)
2476 jmp .L024djend
2477.L025dj3:
2478 rorl $16, %ecx
2479 movb %cl, 2(%edi)
2480 sall $16, %ecx
2481.L026dj2:
2482 movb %ch, 1(%esi)
2483.L027dj1:
2484 movb %cl, (%esi)
2485.L024djend:
2486 jmp .L007finish
2487.align 16
2488.L007finish:
2489 movl 64(%esp), %ecx
2490 addl $28, %esp
2491 movl %eax, (%ecx)
2492 movl %ebx, 4(%ecx)
2493 popl %edi
2494 popl %esi
2495 popl %ebx
2496 popl %ebp
2497 ret
2498.align 16
2499.L009cbc_enc_jmp_table:
2500 .long 0
2501 .long .L017ej1-.L008PIC_point
2502 .long .L016ej2-.L008PIC_point
2503 .long .L015ej3-.L008PIC_point
2504 .long .L013ej4-.L008PIC_point
2505 .long .L012ej5-.L008PIC_point
2506 .long .L011ej6-.L008PIC_point
2507 .long .L010ej7-.L008PIC_point
2508.L_DES_ncbc_encrypt_end:
2509 .size DES_ncbc_encrypt,.L_DES_ncbc_encrypt_end-DES_ncbc_encrypt
2510.ident "desasm.pl"
2511.text
2512 .align 16
2513.globl DES_ede3_cbc_encrypt
2514 .type DES_ede3_cbc_encrypt,@function
2515DES_ede3_cbc_encrypt:
2516
2517 pushl %ebp
2518 pushl %ebx
2519 pushl %esi
2520 pushl %edi
2521 movl 28(%esp), %ebp
2522
2523 movl 44(%esp), %ebx
2524 movl (%ebx), %esi
2525 movl 4(%ebx), %edi
2526 pushl %edi
2527 pushl %esi
2528 pushl %edi
2529 pushl %esi
2530 movl %esp, %ebx
2531 movl 36(%esp), %esi
2532 movl 40(%esp), %edi
2533
2534 movl 64(%esp), %ecx
2535
2536 movl 56(%esp), %eax
2537 pushl %eax
2538
2539 movl 56(%esp), %eax
2540 pushl %eax
2541
2542 movl 56(%esp), %eax
2543 pushl %eax
2544 pushl %ebx
2545 cmpl $0, %ecx
2546 jz .L028decrypt
2547 andl $4294967288, %ebp
2548 movl 16(%esp), %eax
2549 movl 20(%esp), %ebx
2550 jz .L029encrypt_finish
2551.L030encrypt_loop:
2552 movl (%esi), %ecx
2553 movl 4(%esi), %edx
2554 xorl %ecx, %eax
2555 xorl %edx, %ebx
2556 movl %eax, 16(%esp)
2557 movl %ebx, 20(%esp)
2558 call DES_encrypt3
2559 movl 16(%esp), %eax
2560 movl 20(%esp), %ebx
2561 movl %eax, (%edi)
2562 movl %ebx, 4(%edi)
2563 addl $8, %esi
2564 addl $8, %edi
2565 subl $8, %ebp
2566 jnz .L030encrypt_loop
2567.L029encrypt_finish:
2568 movl 60(%esp), %ebp
2569 andl $7, %ebp
2570 jz .L031finish
2571 call .L032PIC_point
2572.L032PIC_point:
2573 popl %edx
2574 leal .L033cbc_enc_jmp_table-.L032PIC_point(%edx),%ecx
2575 movl (%ecx,%ebp,4), %ebp
2576 addl %edx, %ebp
2577 xorl %ecx, %ecx
2578 xorl %edx, %edx
2579 jmp *%ebp
2580.L034ej7:
2581 movb 6(%esi), %dh
2582 sall $8, %edx
2583.L035ej6:
2584 movb 5(%esi), %dh
2585.L036ej5:
2586 movb 4(%esi), %dl
2587.L037ej4:
2588 movl (%esi), %ecx
2589 jmp .L038ejend
2590.L039ej3:
2591 movb 2(%esi), %ch
2592 sall $8, %ecx
2593.L040ej2:
2594 movb 1(%esi), %ch
2595.L041ej1:
2596 movb (%esi), %cl
2597.L038ejend:
2598 xorl %ecx, %eax
2599 xorl %edx, %ebx
2600 movl %eax, 16(%esp)
2601 movl %ebx, 20(%esp)
2602 call DES_encrypt3
2603 movl 16(%esp), %eax
2604 movl 20(%esp), %ebx
2605 movl %eax, (%edi)
2606 movl %ebx, 4(%edi)
2607 jmp .L031finish
2608.align 16
2609.L028decrypt:
2610 andl $4294967288, %ebp
2611 movl 24(%esp), %eax
2612 movl 28(%esp), %ebx
2613 jz .L042decrypt_finish
2614.L043decrypt_loop:
2615 movl (%esi), %eax
2616 movl 4(%esi), %ebx
2617 movl %eax, 16(%esp)
2618 movl %ebx, 20(%esp)
2619 call DES_decrypt3
2620 movl 16(%esp), %eax
2621 movl 20(%esp), %ebx
2622 movl 24(%esp), %ecx
2623 movl 28(%esp), %edx
2624 xorl %eax, %ecx
2625 xorl %ebx, %edx
2626 movl (%esi), %eax
2627 movl 4(%esi), %ebx
2628 movl %ecx, (%edi)
2629 movl %edx, 4(%edi)
2630 movl %eax, 24(%esp)
2631 movl %ebx, 28(%esp)
2632 addl $8, %esi
2633 addl $8, %edi
2634 subl $8, %ebp
2635 jnz .L043decrypt_loop
2636.L042decrypt_finish:
2637 movl 60(%esp), %ebp
2638 andl $7, %ebp
2639 jz .L031finish
2640 movl (%esi), %eax
2641 movl 4(%esi), %ebx
2642 movl %eax, 16(%esp)
2643 movl %ebx, 20(%esp)
2644 call DES_decrypt3
2645 movl 16(%esp), %eax
2646 movl 20(%esp), %ebx
2647 movl 24(%esp), %ecx
2648 movl 28(%esp), %edx
2649 xorl %eax, %ecx
2650 xorl %ebx, %edx
2651 movl (%esi), %eax
2652 movl 4(%esi), %ebx
2653.L044dj7:
2654 rorl $16, %edx
2655 movb %dl, 6(%edi)
2656 shrl $16, %edx
2657.L045dj6:
2658 movb %dh, 5(%edi)
2659.L046dj5:
2660 movb %dl, 4(%edi)
2661.L047dj4:
2662 movl %ecx, (%edi)
2663 jmp .L048djend
2664.L049dj3:
2665 rorl $16, %ecx
2666 movb %cl, 2(%edi)
2667 sall $16, %ecx
2668.L050dj2:
2669 movb %ch, 1(%esi)
2670.L051dj1:
2671 movb %cl, (%esi)
2672.L048djend:
2673 jmp .L031finish
2674.align 16
2675.L031finish:
2676 movl 76(%esp), %ecx
2677 addl $32, %esp
2678 movl %eax, (%ecx)
2679 movl %ebx, 4(%ecx)
2680 popl %edi
2681 popl %esi
2682 popl %ebx
2683 popl %ebp
2684 ret
2685.align 16
2686.L033cbc_enc_jmp_table:
2687 .long 0
2688 .long .L041ej1-.L032PIC_point
2689 .long .L040ej2-.L032PIC_point
2690 .long .L039ej3-.L032PIC_point
2691 .long .L037ej4-.L032PIC_point
2692 .long .L036ej5-.L032PIC_point
2693 .long .L035ej6-.L032PIC_point
2694 .long .L034ej7-.L032PIC_point
2695.L_DES_ede3_cbc_encrypt_end:
2696 .size DES_ede3_cbc_encrypt,.L_DES_ede3_cbc_encrypt_end-DES_ede3_cbc_encrypt
2697.ident "desasm.pl"
diff --git a/src/lib/libssl/src/fips/des/fingerprint.sha1 b/src/lib/libssl/src/fips/des/fingerprint.sha1
new file mode 100644
index 0000000000..83833d83d1
--- /dev/null
+++ b/src/lib/libssl/src/fips/des/fingerprint.sha1
@@ -0,0 +1,5 @@
1HMAC-SHA1(fips_des_enc.c)= 9527f8ea81602358f1aa11348237fdb1e9eeff32
2HMAC-SHA1(asm/fips-dx86-elf.s)= 2f85e8e86806c92ee4c12cf5354e19eccf6ed47d
3HMAC-SHA1(fips_des_selftest.c)= 3bc574e51647c5f5ab45d1007b2cf461d67764a9
4HMAC-SHA1(fips_set_key.c)= 2858450d3d9c8d4ab8edea683baa54fa34f3a605
5HMAC-SHA1(fips_des_locl.h)= 7053848e884df47f06de9f2248380b92e58ef4e5
diff --git a/src/lib/libssl/src/fips/des/fips_des_enc.c b/src/lib/libssl/src/fips/des/fips_des_enc.c
new file mode 100644
index 0000000000..40e25efa58
--- /dev/null
+++ b/src/lib/libssl/src/fips/des/fips_des_enc.c
@@ -0,0 +1,310 @@
1/* crypto/des/des_enc.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include "fips_des_locl.h"
60#include <openssl/fips.h>
61
62#ifdef OPENSSL_FIPS
63
64void DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc)
65 {
66 register DES_LONG l,r,t,u;
67#ifdef DES_PTR
68 register const unsigned char *des_SP=(const unsigned char *)DES_SPtrans;
69#endif
70#ifndef DES_UNROLL
71 register int i;
72#endif
73 register DES_LONG *s;
74
75 if(FIPS_selftest_failed())
76 {
77 data[0]=data[1]=0;
78 return;
79 }
80
81 r=data[0];
82 l=data[1];
83
84 IP(r,l);
85 /* Things have been modified so that the initial rotate is
86 * done outside the loop. This required the
87 * DES_SPtrans values in sp.h to be rotated 1 bit to the right.
88 * One perl script later and things have a 5% speed up on a sparc2.
89 * Thanks to Richard Outerbridge <71755.204@CompuServe.COM>
90 * for pointing this out. */
91 /* clear the top bits on machines with 8byte longs */
92 /* shift left by 2 */
93 r=ROTATE(r,29)&0xffffffffL;
94 l=ROTATE(l,29)&0xffffffffL;
95
96 s=ks->ks->deslong;
97 /* I don't know if it is worth the effort of loop unrolling the
98 * inner loop */
99 if (enc)
100 {
101#ifdef DES_UNROLL
102 D_ENCRYPT(l,r, 0); /* 1 */
103 D_ENCRYPT(r,l, 2); /* 2 */
104 D_ENCRYPT(l,r, 4); /* 3 */
105 D_ENCRYPT(r,l, 6); /* 4 */
106 D_ENCRYPT(l,r, 8); /* 5 */
107 D_ENCRYPT(r,l,10); /* 6 */
108 D_ENCRYPT(l,r,12); /* 7 */
109 D_ENCRYPT(r,l,14); /* 8 */
110 D_ENCRYPT(l,r,16); /* 9 */
111 D_ENCRYPT(r,l,18); /* 10 */
112 D_ENCRYPT(l,r,20); /* 11 */
113 D_ENCRYPT(r,l,22); /* 12 */
114 D_ENCRYPT(l,r,24); /* 13 */
115 D_ENCRYPT(r,l,26); /* 14 */
116 D_ENCRYPT(l,r,28); /* 15 */
117 D_ENCRYPT(r,l,30); /* 16 */
118#else
119 for (i=0; i<32; i+=8)
120 {
121 D_ENCRYPT(l,r,i+0); /* 1 */
122 D_ENCRYPT(r,l,i+2); /* 2 */
123 D_ENCRYPT(l,r,i+4); /* 3 */
124 D_ENCRYPT(r,l,i+6); /* 4 */
125 }
126#endif
127 }
128 else
129 {
130#ifdef DES_UNROLL
131 D_ENCRYPT(l,r,30); /* 16 */
132 D_ENCRYPT(r,l,28); /* 15 */
133 D_ENCRYPT(l,r,26); /* 14 */
134 D_ENCRYPT(r,l,24); /* 13 */
135 D_ENCRYPT(l,r,22); /* 12 */
136 D_ENCRYPT(r,l,20); /* 11 */
137 D_ENCRYPT(l,r,18); /* 10 */
138 D_ENCRYPT(r,l,16); /* 9 */
139 D_ENCRYPT(l,r,14); /* 8 */
140 D_ENCRYPT(r,l,12); /* 7 */
141 D_ENCRYPT(l,r,10); /* 6 */
142 D_ENCRYPT(r,l, 8); /* 5 */
143 D_ENCRYPT(l,r, 6); /* 4 */
144 D_ENCRYPT(r,l, 4); /* 3 */
145 D_ENCRYPT(l,r, 2); /* 2 */
146 D_ENCRYPT(r,l, 0); /* 1 */
147#else
148 for (i=30; i>0; i-=8)
149 {
150 D_ENCRYPT(l,r,i-0); /* 16 */
151 D_ENCRYPT(r,l,i-2); /* 15 */
152 D_ENCRYPT(l,r,i-4); /* 14 */
153 D_ENCRYPT(r,l,i-6); /* 13 */
154 }
155#endif
156 }
157
158 /* rotate and clear the top bits on machines with 8byte longs */
159 l=ROTATE(l,3)&0xffffffffL;
160 r=ROTATE(r,3)&0xffffffffL;
161
162 FP(r,l);
163 data[0]=l;
164 data[1]=r;
165 l=r=t=u=0;
166 }
167
168void DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc)
169 {
170 register DES_LONG l,r,t,u;
171#ifdef DES_PTR
172 register const unsigned char *des_SP=(const unsigned char *)DES_SPtrans;
173#endif
174#ifndef DES_UNROLL
175 register int i;
176#endif
177 register DES_LONG *s;
178
179 if(FIPS_selftest_failed())
180 {
181 data[0]=data[1]=0;
182 return;
183 }
184
185 r=data[0];
186 l=data[1];
187
188 /* Things have been modified so that the initial rotate is
189 * done outside the loop. This required the
190 * DES_SPtrans values in sp.h to be rotated 1 bit to the right.
191 * One perl script later and things have a 5% speed up on a sparc2.
192 * Thanks to Richard Outerbridge <71755.204@CompuServe.COM>
193 * for pointing this out. */
194 /* clear the top bits on machines with 8byte longs */
195 r=ROTATE(r,29)&0xffffffffL;
196 l=ROTATE(l,29)&0xffffffffL;
197
198 s=ks->ks->deslong;
199 /* I don't know if it is worth the effort of loop unrolling the
200 * inner loop */
201 if (enc)
202 {
203#ifdef DES_UNROLL
204 D_ENCRYPT(l,r, 0); /* 1 */
205 D_ENCRYPT(r,l, 2); /* 2 */
206 D_ENCRYPT(l,r, 4); /* 3 */
207 D_ENCRYPT(r,l, 6); /* 4 */
208 D_ENCRYPT(l,r, 8); /* 5 */
209 D_ENCRYPT(r,l,10); /* 6 */
210 D_ENCRYPT(l,r,12); /* 7 */
211 D_ENCRYPT(r,l,14); /* 8 */
212 D_ENCRYPT(l,r,16); /* 9 */
213 D_ENCRYPT(r,l,18); /* 10 */
214 D_ENCRYPT(l,r,20); /* 11 */
215 D_ENCRYPT(r,l,22); /* 12 */
216 D_ENCRYPT(l,r,24); /* 13 */
217 D_ENCRYPT(r,l,26); /* 14 */
218 D_ENCRYPT(l,r,28); /* 15 */
219 D_ENCRYPT(r,l,30); /* 16 */
220#else
221 for (i=0; i<32; i+=8)
222 {
223 D_ENCRYPT(l,r,i+0); /* 1 */
224 D_ENCRYPT(r,l,i+2); /* 2 */
225 D_ENCRYPT(l,r,i+4); /* 3 */
226 D_ENCRYPT(r,l,i+6); /* 4 */
227 }
228#endif
229 }
230 else
231 {
232#ifdef DES_UNROLL
233 D_ENCRYPT(l,r,30); /* 16 */
234 D_ENCRYPT(r,l,28); /* 15 */
235 D_ENCRYPT(l,r,26); /* 14 */
236 D_ENCRYPT(r,l,24); /* 13 */
237 D_ENCRYPT(l,r,22); /* 12 */
238 D_ENCRYPT(r,l,20); /* 11 */
239 D_ENCRYPT(l,r,18); /* 10 */
240 D_ENCRYPT(r,l,16); /* 9 */
241 D_ENCRYPT(l,r,14); /* 8 */
242 D_ENCRYPT(r,l,12); /* 7 */
243 D_ENCRYPT(l,r,10); /* 6 */
244 D_ENCRYPT(r,l, 8); /* 5 */
245 D_ENCRYPT(l,r, 6); /* 4 */
246 D_ENCRYPT(r,l, 4); /* 3 */
247 D_ENCRYPT(l,r, 2); /* 2 */
248 D_ENCRYPT(r,l, 0); /* 1 */
249#else
250 for (i=30; i>0; i-=8)
251 {
252 D_ENCRYPT(l,r,i-0); /* 16 */
253 D_ENCRYPT(r,l,i-2); /* 15 */
254 D_ENCRYPT(l,r,i-4); /* 14 */
255 D_ENCRYPT(r,l,i-6); /* 13 */
256 }
257#endif
258 }
259 /* rotate and clear the top bits on machines with 8byte longs */
260 data[0]=ROTATE(l,3)&0xffffffffL;
261 data[1]=ROTATE(r,3)&0xffffffffL;
262 l=r=t=u=0;
263 }
264
265void DES_encrypt3(DES_LONG *data, DES_key_schedule *ks1,
266 DES_key_schedule *ks2, DES_key_schedule *ks3)
267 {
268 register DES_LONG l,r;
269
270 l=data[0];
271 r=data[1];
272 IP(l,r);
273 data[0]=l;
274 data[1]=r;
275 DES_encrypt2((DES_LONG *)data,ks1,DES_ENCRYPT);
276 DES_encrypt2((DES_LONG *)data,ks2,DES_DECRYPT);
277 DES_encrypt2((DES_LONG *)data,ks3,DES_ENCRYPT);
278 l=data[0];
279 r=data[1];
280 FP(r,l);
281 data[0]=l;
282 data[1]=r;
283 }
284
285void DES_decrypt3(DES_LONG *data, DES_key_schedule *ks1,
286 DES_key_schedule *ks2, DES_key_schedule *ks3)
287 {
288 register DES_LONG l,r;
289
290 l=data[0];
291 r=data[1];
292 IP(l,r);
293 data[0]=l;
294 data[1]=r;
295 DES_encrypt2((DES_LONG *)data,ks3,DES_DECRYPT);
296 DES_encrypt2((DES_LONG *)data,ks2,DES_ENCRYPT);
297 DES_encrypt2((DES_LONG *)data,ks1,DES_DECRYPT);
298 l=data[0];
299 r=data[1];
300 FP(r,l);
301 data[0]=l;
302 data[1]=r;
303 }
304
305#else /* ndef OPENSSL_FIPS */
306
307static void *dummy=&dummy;
308
309#endif /* ndef OPENSSL_FIPS */
310
diff --git a/src/lib/libssl/src/fips/des/fips_des_locl.h b/src/lib/libssl/src/fips/des/fips_des_locl.h
new file mode 100644
index 0000000000..ef9323a6d6
--- /dev/null
+++ b/src/lib/libssl/src/fips/des/fips_des_locl.h
@@ -0,0 +1,428 @@
1/* crypto/des/des_locl.h */
2/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#ifndef HEADER_DES_LOCL_H
60#define HEADER_DES_LOCL_H
61
62#include "e_os.h"
63
64#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN16)
65#ifndef OPENSSL_SYS_MSDOS
66#define OPENSSL_SYS_MSDOS
67#endif
68#endif
69
70#include <stdio.h>
71#include <stdlib.h>
72
73#ifndef OPENSSL_SYS_MSDOS
74#if !defined(OPENSSL_SYS_VMS) || defined(__DECC)
75#ifdef OPENSSL_UNISTD
76# include OPENSSL_UNISTD
77#else
78# include <unistd.h>
79#endif
80#include <math.h>
81#endif
82#endif
83#include <openssl/des.h>
84
85#ifdef OPENSSL_SYS_MSDOS /* Visual C++ 2.1 (Windows NT/95) */
86#include <stdlib.h>
87#include <errno.h>
88#include <time.h>
89#include <io.h>
90#endif
91
92#if defined(__STDC__) || defined(OPENSSL_SYS_VMS) || defined(M_XENIX) || defined(OPENSSL_SYS_MSDOS)
93#include <string.h>
94#endif
95
96#ifdef OPENSSL_BUILD_SHLIBCRYPTO
97# undef OPENSSL_EXTERN
98# define OPENSSL_EXTERN OPENSSL_EXPORT
99#endif
100
101#define ITERATIONS 16
102#define HALF_ITERATIONS 8
103
104/* used in des_read and des_write */
105#define MAXWRITE (1024*16)
106#define BSIZE (MAXWRITE+4)
107
108#define c2l(c,l) (l =((DES_LONG)(*((c)++))) , \
109 l|=((DES_LONG)(*((c)++)))<< 8L, \
110 l|=((DES_LONG)(*((c)++)))<<16L, \
111 l|=((DES_LONG)(*((c)++)))<<24L)
112
113/* NOTE - c is not incremented as per c2l */
114#define c2ln(c,l1,l2,n) { \
115 c+=n; \
116 l1=l2=0; \
117 switch (n) { \
118 case 8: l2 =((DES_LONG)(*(--(c))))<<24L; \
119 case 7: l2|=((DES_LONG)(*(--(c))))<<16L; \
120 case 6: l2|=((DES_LONG)(*(--(c))))<< 8L; \
121 case 5: l2|=((DES_LONG)(*(--(c)))); \
122 case 4: l1 =((DES_LONG)(*(--(c))))<<24L; \
123 case 3: l1|=((DES_LONG)(*(--(c))))<<16L; \
124 case 2: l1|=((DES_LONG)(*(--(c))))<< 8L; \
125 case 1: l1|=((DES_LONG)(*(--(c)))); \
126 } \
127 }
128
129#define l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \
130 *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
131 *((c)++)=(unsigned char)(((l)>>16L)&0xff), \
132 *((c)++)=(unsigned char)(((l)>>24L)&0xff))
133
134/* replacements for htonl and ntohl since I have no idea what to do
135 * when faced with machines with 8 byte longs. */
136#define HDRSIZE 4
137
138#define n2l(c,l) (l =((DES_LONG)(*((c)++)))<<24L, \
139 l|=((DES_LONG)(*((c)++)))<<16L, \
140 l|=((DES_LONG)(*((c)++)))<< 8L, \
141 l|=((DES_LONG)(*((c)++))))
142
143#define l2n(l,c) (*((c)++)=(unsigned char)(((l)>>24L)&0xff), \
144 *((c)++)=(unsigned char)(((l)>>16L)&0xff), \
145 *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
146 *((c)++)=(unsigned char)(((l) )&0xff))
147
148/* NOTE - c is not incremented as per l2c */
149#define l2cn(l1,l2,c,n) { \
150 c+=n; \
151 switch (n) { \
152 case 8: *(--(c))=(unsigned char)(((l2)>>24L)&0xff); \
153 case 7: *(--(c))=(unsigned char)(((l2)>>16L)&0xff); \
154 case 6: *(--(c))=(unsigned char)(((l2)>> 8L)&0xff); \
155 case 5: *(--(c))=(unsigned char)(((l2) )&0xff); \
156 case 4: *(--(c))=(unsigned char)(((l1)>>24L)&0xff); \
157 case 3: *(--(c))=(unsigned char)(((l1)>>16L)&0xff); \
158 case 2: *(--(c))=(unsigned char)(((l1)>> 8L)&0xff); \
159 case 1: *(--(c))=(unsigned char)(((l1) )&0xff); \
160 } \
161 }
162
163#if defined(OPENSSL_SYS_WIN32) && defined(_MSC_VER)
164#define ROTATE(a,n) (_lrotr(a,n))
165#elif defined(__GNUC__) && __GNUC__>=2 && !defined(__STRICT_ANSI__) && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM) && !defined(PEDANTIC)
166# if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
167# define ROTATE(a,n) ({ register unsigned int ret; \
168 asm ("rorl %1,%0" \
169 : "=r"(ret) \
170 : "I"(n),"0"(a) \
171 : "cc"); \
172 ret; \
173 })
174# endif
175#endif
176#ifndef ROTATE
177#define ROTATE(a,n) (((a)>>(n))+((a)<<(32-(n))))
178#endif
179
180/* Don't worry about the LOAD_DATA() stuff, that is used by
181 * fcrypt() to add it's little bit to the front */
182
183#ifdef DES_FCRYPT
184
185#define LOAD_DATA_tmp(R,S,u,t,E0,E1) \
186 { DES_LONG tmp; LOAD_DATA(R,S,u,t,E0,E1,tmp); }
187
188#define LOAD_DATA(R,S,u,t,E0,E1,tmp) \
189 t=R^(R>>16L); \
190 u=t&E0; t&=E1; \
191 tmp=(u<<16); u^=R^s[S ]; u^=tmp; \
192 tmp=(t<<16); t^=R^s[S+1]; t^=tmp
193#else
194#define LOAD_DATA_tmp(a,b,c,d,e,f) LOAD_DATA(a,b,c,d,e,f,g)
195#define LOAD_DATA(R,S,u,t,E0,E1,tmp) \
196 u=R^s[S ]; \
197 t=R^s[S+1]
198#endif
199
200/* The changes to this macro may help or hinder, depending on the
201 * compiler and the architecture. gcc2 always seems to do well :-).
202 * Inspired by Dana How <how@isl.stanford.edu>
203 * DO NOT use the alternative version on machines with 8 byte longs.
204 * It does not seem to work on the Alpha, even when DES_LONG is 4
205 * bytes, probably an issue of accessing non-word aligned objects :-( */
206#ifdef DES_PTR
207
208/* It recently occurred to me that 0^0^0^0^0^0^0 == 0, so there
209 * is no reason to not xor all the sub items together. This potentially
210 * saves a register since things can be xored directly into L */
211
212#if defined(DES_RISC1) || defined(DES_RISC2)
213#ifdef DES_RISC1
214#define D_ENCRYPT(LL,R,S) { \
215 unsigned int u1,u2,u3; \
216 LOAD_DATA(R,S,u,t,E0,E1,u1); \
217 u2=(int)u>>8L; \
218 u1=(int)u&0xfc; \
219 u2&=0xfc; \
220 t=ROTATE(t,4); \
221 u>>=16L; \
222 LL^= *(const DES_LONG *)(des_SP +u1); \
223 LL^= *(const DES_LONG *)(des_SP+0x200+u2); \
224 u3=(int)(u>>8L); \
225 u1=(int)u&0xfc; \
226 u3&=0xfc; \
227 LL^= *(const DES_LONG *)(des_SP+0x400+u1); \
228 LL^= *(const DES_LONG *)(des_SP+0x600+u3); \
229 u2=(int)t>>8L; \
230 u1=(int)t&0xfc; \
231 u2&=0xfc; \
232 t>>=16L; \
233 LL^= *(const DES_LONG *)(des_SP+0x100+u1); \
234 LL^= *(const DES_LONG *)(des_SP+0x300+u2); \
235 u3=(int)t>>8L; \
236 u1=(int)t&0xfc; \
237 u3&=0xfc; \
238 LL^= *(const DES_LONG *)(des_SP+0x500+u1); \
239 LL^= *(const DES_LONG *)(des_SP+0x700+u3); }
240#endif
241#ifdef DES_RISC2
242#define D_ENCRYPT(LL,R,S) { \
243 unsigned int u1,u2,s1,s2; \
244 LOAD_DATA(R,S,u,t,E0,E1,u1); \
245 u2=(int)u>>8L; \
246 u1=(int)u&0xfc; \
247 u2&=0xfc; \
248 t=ROTATE(t,4); \
249 LL^= *(const DES_LONG *)(des_SP +u1); \
250 LL^= *(const DES_LONG *)(des_SP+0x200+u2); \
251 s1=(int)(u>>16L); \
252 s2=(int)(u>>24L); \
253 s1&=0xfc; \
254 s2&=0xfc; \
255 LL^= *(const DES_LONG *)(des_SP+0x400+s1); \
256 LL^= *(const DES_LONG *)(des_SP+0x600+s2); \
257 u2=(int)t>>8L; \
258 u1=(int)t&0xfc; \
259 u2&=0xfc; \
260 LL^= *(const DES_LONG *)(des_SP+0x100+u1); \
261 LL^= *(const DES_LONG *)(des_SP+0x300+u2); \
262 s1=(int)(t>>16L); \
263 s2=(int)(t>>24L); \
264 s1&=0xfc; \
265 s2&=0xfc; \
266 LL^= *(const DES_LONG *)(des_SP+0x500+s1); \
267 LL^= *(const DES_LONG *)(des_SP+0x700+s2); }
268#endif
269#else
270#define D_ENCRYPT(LL,R,S) { \
271 LOAD_DATA_tmp(R,S,u,t,E0,E1); \
272 t=ROTATE(t,4); \
273 LL^= \
274 *(const DES_LONG *)(des_SP +((u )&0xfc))^ \
275 *(const DES_LONG *)(des_SP+0x200+((u>> 8L)&0xfc))^ \
276 *(const DES_LONG *)(des_SP+0x400+((u>>16L)&0xfc))^ \
277 *(const DES_LONG *)(des_SP+0x600+((u>>24L)&0xfc))^ \
278 *(const DES_LONG *)(des_SP+0x100+((t )&0xfc))^ \
279 *(const DES_LONG *)(des_SP+0x300+((t>> 8L)&0xfc))^ \
280 *(const DES_LONG *)(des_SP+0x500+((t>>16L)&0xfc))^ \
281 *(const DES_LONG *)(des_SP+0x700+((t>>24L)&0xfc)); }
282#endif
283
284#else /* original version */
285
286#if defined(DES_RISC1) || defined(DES_RISC2)
287#ifdef DES_RISC1
288#define D_ENCRYPT(LL,R,S) {\
289 unsigned int u1,u2,u3; \
290 LOAD_DATA(R,S,u,t,E0,E1,u1); \
291 u>>=2L; \
292 t=ROTATE(t,6); \
293 u2=(int)u>>8L; \
294 u1=(int)u&0x3f; \
295 u2&=0x3f; \
296 u>>=16L; \
297 LL^=DES_SPtrans[0][u1]; \
298 LL^=DES_SPtrans[2][u2]; \
299 u3=(int)u>>8L; \
300 u1=(int)u&0x3f; \
301 u3&=0x3f; \
302 LL^=DES_SPtrans[4][u1]; \
303 LL^=DES_SPtrans[6][u3]; \
304 u2=(int)t>>8L; \
305 u1=(int)t&0x3f; \
306 u2&=0x3f; \
307 t>>=16L; \
308 LL^=DES_SPtrans[1][u1]; \
309 LL^=DES_SPtrans[3][u2]; \
310 u3=(int)t>>8L; \
311 u1=(int)t&0x3f; \
312 u3&=0x3f; \
313 LL^=DES_SPtrans[5][u1]; \
314 LL^=DES_SPtrans[7][u3]; }
315#endif
316#ifdef DES_RISC2
317#define D_ENCRYPT(LL,R,S) {\
318 unsigned int u1,u2,s1,s2; \
319 LOAD_DATA(R,S,u,t,E0,E1,u1); \
320 u>>=2L; \
321 t=ROTATE(t,6); \
322 u2=(int)u>>8L; \
323 u1=(int)u&0x3f; \
324 u2&=0x3f; \
325 LL^=DES_SPtrans[0][u1]; \
326 LL^=DES_SPtrans[2][u2]; \
327 s1=(int)u>>16L; \
328 s2=(int)u>>24L; \
329 s1&=0x3f; \
330 s2&=0x3f; \
331 LL^=DES_SPtrans[4][s1]; \
332 LL^=DES_SPtrans[6][s2]; \
333 u2=(int)t>>8L; \
334 u1=(int)t&0x3f; \
335 u2&=0x3f; \
336 LL^=DES_SPtrans[1][u1]; \
337 LL^=DES_SPtrans[3][u2]; \
338 s1=(int)t>>16; \
339 s2=(int)t>>24L; \
340 s1&=0x3f; \
341 s2&=0x3f; \
342 LL^=DES_SPtrans[5][s1]; \
343 LL^=DES_SPtrans[7][s2]; }
344#endif
345
346#else
347
348#define D_ENCRYPT(LL,R,S) {\
349 LOAD_DATA_tmp(R,S,u,t,E0,E1); \
350 t=ROTATE(t,4); \
351 LL^=\
352 DES_SPtrans[0][(u>> 2L)&0x3f]^ \
353 DES_SPtrans[2][(u>>10L)&0x3f]^ \
354 DES_SPtrans[4][(u>>18L)&0x3f]^ \
355 DES_SPtrans[6][(u>>26L)&0x3f]^ \
356 DES_SPtrans[1][(t>> 2L)&0x3f]^ \
357 DES_SPtrans[3][(t>>10L)&0x3f]^ \
358 DES_SPtrans[5][(t>>18L)&0x3f]^ \
359 DES_SPtrans[7][(t>>26L)&0x3f]; }
360#endif
361#endif
362
363 /* IP and FP
364 * The problem is more of a geometric problem that random bit fiddling.
365 0 1 2 3 4 5 6 7 62 54 46 38 30 22 14 6
366 8 9 10 11 12 13 14 15 60 52 44 36 28 20 12 4
367 16 17 18 19 20 21 22 23 58 50 42 34 26 18 10 2
368 24 25 26 27 28 29 30 31 to 56 48 40 32 24 16 8 0
369
370 32 33 34 35 36 37 38 39 63 55 47 39 31 23 15 7
371 40 41 42 43 44 45 46 47 61 53 45 37 29 21 13 5
372 48 49 50 51 52 53 54 55 59 51 43 35 27 19 11 3
373 56 57 58 59 60 61 62 63 57 49 41 33 25 17 9 1
374
375 The output has been subject to swaps of the form
376 0 1 -> 3 1 but the odd and even bits have been put into
377 2 3 2 0
378 different words. The main trick is to remember that
379 t=((l>>size)^r)&(mask);
380 r^=t;
381 l^=(t<<size);
382 can be used to swap and move bits between words.
383
384 So l = 0 1 2 3 r = 16 17 18 19
385 4 5 6 7 20 21 22 23
386 8 9 10 11 24 25 26 27
387 12 13 14 15 28 29 30 31
388 becomes (for size == 2 and mask == 0x3333)
389 t = 2^16 3^17 -- -- l = 0 1 16 17 r = 2 3 18 19
390 6^20 7^21 -- -- 4 5 20 21 6 7 22 23
391 10^24 11^25 -- -- 8 9 24 25 10 11 24 25
392 14^28 15^29 -- -- 12 13 28 29 14 15 28 29
393
394 Thanks for hints from Richard Outerbridge - he told me IP&FP
395 could be done in 15 xor, 10 shifts and 5 ands.
396 When I finally started to think of the problem in 2D
397 I first got ~42 operations without xors. When I remembered
398 how to use xors :-) I got it to its final state.
399 */
400#define PERM_OP(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)),\
401 (b)^=(t),\
402 (a)^=((t)<<(n)))
403
404#define IP(l,r) \
405 { \
406 register DES_LONG tt; \
407 PERM_OP(r,l,tt, 4,0x0f0f0f0fL); \
408 PERM_OP(l,r,tt,16,0x0000ffffL); \
409 PERM_OP(r,l,tt, 2,0x33333333L); \
410 PERM_OP(l,r,tt, 8,0x00ff00ffL); \
411 PERM_OP(r,l,tt, 1,0x55555555L); \
412 }
413
414#define FP(l,r) \
415 { \
416 register DES_LONG tt; \
417 PERM_OP(l,r,tt, 1,0x55555555L); \
418 PERM_OP(r,l,tt, 8,0x00ff00ffL); \
419 PERM_OP(l,r,tt, 2,0x33333333L); \
420 PERM_OP(r,l,tt,16,0x0000ffffL); \
421 PERM_OP(l,r,tt, 4,0x0f0f0f0fL); \
422 }
423
424OPENSSL_EXTERN const DES_LONG DES_SPtrans[8][64];
425
426void fcrypt_body(DES_LONG *out,DES_key_schedule *ks,
427 DES_LONG Eswap0, DES_LONG Eswap1);
428#endif
diff --git a/src/lib/libssl/src/fips/des/fips_set_key.c b/src/lib/libssl/src/fips/des/fips_set_key.c
new file mode 100644
index 0000000000..1490a3cf54
--- /dev/null
+++ b/src/lib/libssl/src/fips/des/fips_set_key.c
@@ -0,0 +1,417 @@
1/* crypto/des/set_key.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59/* set_key.c v 1.4 eay 24/9/91
60 * 1.4 Speed up by 400% :-)
61 * 1.3 added register declarations.
62 * 1.2 unrolled make_key_sched a bit more
63 * 1.1 added norm_expand_bits
64 * 1.0 First working version
65 */
66#include "fips_des_locl.h"
67#include <openssl/fips.h>
68
69#ifdef OPENSSL_FIPS
70
71OPENSSL_IMPLEMENT_GLOBAL(int,DES_check_key); /* defaults to false */
72
73static const unsigned char odd_parity[256]={
74 1, 1, 2, 2, 4, 4, 7, 7, 8, 8, 11, 11, 13, 13, 14, 14,
75 16, 16, 19, 19, 21, 21, 22, 22, 25, 25, 26, 26, 28, 28, 31, 31,
76 32, 32, 35, 35, 37, 37, 38, 38, 41, 41, 42, 42, 44, 44, 47, 47,
77 49, 49, 50, 50, 52, 52, 55, 55, 56, 56, 59, 59, 61, 61, 62, 62,
78 64, 64, 67, 67, 69, 69, 70, 70, 73, 73, 74, 74, 76, 76, 79, 79,
79 81, 81, 82, 82, 84, 84, 87, 87, 88, 88, 91, 91, 93, 93, 94, 94,
80 97, 97, 98, 98,100,100,103,103,104,104,107,107,109,109,110,110,
81112,112,115,115,117,117,118,118,121,121,122,122,124,124,127,127,
82128,128,131,131,133,133,134,134,137,137,138,138,140,140,143,143,
83145,145,146,146,148,148,151,151,152,152,155,155,157,157,158,158,
84161,161,162,162,164,164,167,167,168,168,171,171,173,173,174,174,
85176,176,179,179,181,181,182,182,185,185,186,186,188,188,191,191,
86193,193,194,194,196,196,199,199,200,200,203,203,205,205,206,206,
87208,208,211,211,213,213,214,214,217,217,218,218,220,220,223,223,
88224,224,227,227,229,229,230,230,233,233,234,234,236,236,239,239,
89241,241,242,242,244,244,247,247,248,248,251,251,253,253,254,254};
90
91void DES_set_odd_parity(DES_cblock *key)
92 {
93 int i;
94
95 for (i=0; i<DES_KEY_SZ; i++)
96 (*key)[i]=odd_parity[(*key)[i]];
97 }
98
99int DES_check_key_parity(const_DES_cblock *key)
100 {
101 int i;
102
103 for (i=0; i<DES_KEY_SZ; i++)
104 {
105 if ((*key)[i] != odd_parity[(*key)[i]])
106 return(0);
107 }
108 return(1);
109 }
110
111/* Weak and semi week keys as take from
112 * %A D.W. Davies
113 * %A W.L. Price
114 * %T Security for Computer Networks
115 * %I John Wiley & Sons
116 * %D 1984
117 * Many thanks to smb@ulysses.att.com (Steven Bellovin) for the reference
118 * (and actual cblock values).
119 */
120#define NUM_WEAK_KEY 16
121static DES_cblock weak_keys[NUM_WEAK_KEY]={
122 /* weak keys */
123 {0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01},
124 {0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE},
125 {0x1F,0x1F,0x1F,0x1F,0x0E,0x0E,0x0E,0x0E},
126 {0xE0,0xE0,0xE0,0xE0,0xF1,0xF1,0xF1,0xF1},
127 /* semi-weak keys */
128 {0x01,0xFE,0x01,0xFE,0x01,0xFE,0x01,0xFE},
129 {0xFE,0x01,0xFE,0x01,0xFE,0x01,0xFE,0x01},
130 {0x1F,0xE0,0x1F,0xE0,0x0E,0xF1,0x0E,0xF1},
131 {0xE0,0x1F,0xE0,0x1F,0xF1,0x0E,0xF1,0x0E},
132 {0x01,0xE0,0x01,0xE0,0x01,0xF1,0x01,0xF1},
133 {0xE0,0x01,0xE0,0x01,0xF1,0x01,0xF1,0x01},
134 {0x1F,0xFE,0x1F,0xFE,0x0E,0xFE,0x0E,0xFE},
135 {0xFE,0x1F,0xFE,0x1F,0xFE,0x0E,0xFE,0x0E},
136 {0x01,0x1F,0x01,0x1F,0x01,0x0E,0x01,0x0E},
137 {0x1F,0x01,0x1F,0x01,0x0E,0x01,0x0E,0x01},
138 {0xE0,0xFE,0xE0,0xFE,0xF1,0xFE,0xF1,0xFE},
139 {0xFE,0xE0,0xFE,0xE0,0xFE,0xF1,0xFE,0xF1}};
140
141int DES_is_weak_key(const_DES_cblock *key)
142 {
143 int i;
144
145 for (i=0; i<NUM_WEAK_KEY; i++)
146 /* Added == 0 to comparison, I obviously don't run
147 * this section very often :-(, thanks to
148 * engineering@MorningStar.Com for the fix
149 * eay 93/06/29
150 * Another problem, I was comparing only the first 4
151 * bytes, 97/03/18 */
152 if (memcmp(weak_keys[i],key,sizeof(DES_cblock)) == 0) return(1);
153 return(0);
154 }
155
156/* NOW DEFINED IN des_local.h
157 * See ecb_encrypt.c for a pseudo description of these macros.
158 * #define PERM_OP(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)),\
159 * (b)^=(t),\
160 * (a)=((a)^((t)<<(n))))
161 */
162
163#define HPERM_OP(a,t,n,m) ((t)=((((a)<<(16-(n)))^(a))&(m)),\
164 (a)=(a)^(t)^(t>>(16-(n))))
165
166static const DES_LONG des_skb[8][64]={
167 {
168 /* for C bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
169 0x00000000L,0x00000010L,0x20000000L,0x20000010L,
170 0x00010000L,0x00010010L,0x20010000L,0x20010010L,
171 0x00000800L,0x00000810L,0x20000800L,0x20000810L,
172 0x00010800L,0x00010810L,0x20010800L,0x20010810L,
173 0x00000020L,0x00000030L,0x20000020L,0x20000030L,
174 0x00010020L,0x00010030L,0x20010020L,0x20010030L,
175 0x00000820L,0x00000830L,0x20000820L,0x20000830L,
176 0x00010820L,0x00010830L,0x20010820L,0x20010830L,
177 0x00080000L,0x00080010L,0x20080000L,0x20080010L,
178 0x00090000L,0x00090010L,0x20090000L,0x20090010L,
179 0x00080800L,0x00080810L,0x20080800L,0x20080810L,
180 0x00090800L,0x00090810L,0x20090800L,0x20090810L,
181 0x00080020L,0x00080030L,0x20080020L,0x20080030L,
182 0x00090020L,0x00090030L,0x20090020L,0x20090030L,
183 0x00080820L,0x00080830L,0x20080820L,0x20080830L,
184 0x00090820L,0x00090830L,0x20090820L,0x20090830L,
185 },{
186 /* for C bits (numbered as per FIPS 46) 7 8 10 11 12 13 */
187 0x00000000L,0x02000000L,0x00002000L,0x02002000L,
188 0x00200000L,0x02200000L,0x00202000L,0x02202000L,
189 0x00000004L,0x02000004L,0x00002004L,0x02002004L,
190 0x00200004L,0x02200004L,0x00202004L,0x02202004L,
191 0x00000400L,0x02000400L,0x00002400L,0x02002400L,
192 0x00200400L,0x02200400L,0x00202400L,0x02202400L,
193 0x00000404L,0x02000404L,0x00002404L,0x02002404L,
194 0x00200404L,0x02200404L,0x00202404L,0x02202404L,
195 0x10000000L,0x12000000L,0x10002000L,0x12002000L,
196 0x10200000L,0x12200000L,0x10202000L,0x12202000L,
197 0x10000004L,0x12000004L,0x10002004L,0x12002004L,
198 0x10200004L,0x12200004L,0x10202004L,0x12202004L,
199 0x10000400L,0x12000400L,0x10002400L,0x12002400L,
200 0x10200400L,0x12200400L,0x10202400L,0x12202400L,
201 0x10000404L,0x12000404L,0x10002404L,0x12002404L,
202 0x10200404L,0x12200404L,0x10202404L,0x12202404L,
203 },{
204 /* for C bits (numbered as per FIPS 46) 14 15 16 17 19 20 */
205 0x00000000L,0x00000001L,0x00040000L,0x00040001L,
206 0x01000000L,0x01000001L,0x01040000L,0x01040001L,
207 0x00000002L,0x00000003L,0x00040002L,0x00040003L,
208 0x01000002L,0x01000003L,0x01040002L,0x01040003L,
209 0x00000200L,0x00000201L,0x00040200L,0x00040201L,
210 0x01000200L,0x01000201L,0x01040200L,0x01040201L,
211 0x00000202L,0x00000203L,0x00040202L,0x00040203L,
212 0x01000202L,0x01000203L,0x01040202L,0x01040203L,
213 0x08000000L,0x08000001L,0x08040000L,0x08040001L,
214 0x09000000L,0x09000001L,0x09040000L,0x09040001L,
215 0x08000002L,0x08000003L,0x08040002L,0x08040003L,
216 0x09000002L,0x09000003L,0x09040002L,0x09040003L,
217 0x08000200L,0x08000201L,0x08040200L,0x08040201L,
218 0x09000200L,0x09000201L,0x09040200L,0x09040201L,
219 0x08000202L,0x08000203L,0x08040202L,0x08040203L,
220 0x09000202L,0x09000203L,0x09040202L,0x09040203L,
221 },{
222 /* for C bits (numbered as per FIPS 46) 21 23 24 26 27 28 */
223 0x00000000L,0x00100000L,0x00000100L,0x00100100L,
224 0x00000008L,0x00100008L,0x00000108L,0x00100108L,
225 0x00001000L,0x00101000L,0x00001100L,0x00101100L,
226 0x00001008L,0x00101008L,0x00001108L,0x00101108L,
227 0x04000000L,0x04100000L,0x04000100L,0x04100100L,
228 0x04000008L,0x04100008L,0x04000108L,0x04100108L,
229 0x04001000L,0x04101000L,0x04001100L,0x04101100L,
230 0x04001008L,0x04101008L,0x04001108L,0x04101108L,
231 0x00020000L,0x00120000L,0x00020100L,0x00120100L,
232 0x00020008L,0x00120008L,0x00020108L,0x00120108L,
233 0x00021000L,0x00121000L,0x00021100L,0x00121100L,
234 0x00021008L,0x00121008L,0x00021108L,0x00121108L,
235 0x04020000L,0x04120000L,0x04020100L,0x04120100L,
236 0x04020008L,0x04120008L,0x04020108L,0x04120108L,
237 0x04021000L,0x04121000L,0x04021100L,0x04121100L,
238 0x04021008L,0x04121008L,0x04021108L,0x04121108L,
239 },{
240 /* for D bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
241 0x00000000L,0x10000000L,0x00010000L,0x10010000L,
242 0x00000004L,0x10000004L,0x00010004L,0x10010004L,
243 0x20000000L,0x30000000L,0x20010000L,0x30010000L,
244 0x20000004L,0x30000004L,0x20010004L,0x30010004L,
245 0x00100000L,0x10100000L,0x00110000L,0x10110000L,
246 0x00100004L,0x10100004L,0x00110004L,0x10110004L,
247 0x20100000L,0x30100000L,0x20110000L,0x30110000L,
248 0x20100004L,0x30100004L,0x20110004L,0x30110004L,
249 0x00001000L,0x10001000L,0x00011000L,0x10011000L,
250 0x00001004L,0x10001004L,0x00011004L,0x10011004L,
251 0x20001000L,0x30001000L,0x20011000L,0x30011000L,
252 0x20001004L,0x30001004L,0x20011004L,0x30011004L,
253 0x00101000L,0x10101000L,0x00111000L,0x10111000L,
254 0x00101004L,0x10101004L,0x00111004L,0x10111004L,
255 0x20101000L,0x30101000L,0x20111000L,0x30111000L,
256 0x20101004L,0x30101004L,0x20111004L,0x30111004L,
257 },{
258 /* for D bits (numbered as per FIPS 46) 8 9 11 12 13 14 */
259 0x00000000L,0x08000000L,0x00000008L,0x08000008L,
260 0x00000400L,0x08000400L,0x00000408L,0x08000408L,
261 0x00020000L,0x08020000L,0x00020008L,0x08020008L,
262 0x00020400L,0x08020400L,0x00020408L,0x08020408L,
263 0x00000001L,0x08000001L,0x00000009L,0x08000009L,
264 0x00000401L,0x08000401L,0x00000409L,0x08000409L,
265 0x00020001L,0x08020001L,0x00020009L,0x08020009L,
266 0x00020401L,0x08020401L,0x00020409L,0x08020409L,
267 0x02000000L,0x0A000000L,0x02000008L,0x0A000008L,
268 0x02000400L,0x0A000400L,0x02000408L,0x0A000408L,
269 0x02020000L,0x0A020000L,0x02020008L,0x0A020008L,
270 0x02020400L,0x0A020400L,0x02020408L,0x0A020408L,
271 0x02000001L,0x0A000001L,0x02000009L,0x0A000009L,
272 0x02000401L,0x0A000401L,0x02000409L,0x0A000409L,
273 0x02020001L,0x0A020001L,0x02020009L,0x0A020009L,
274 0x02020401L,0x0A020401L,0x02020409L,0x0A020409L,
275 },{
276 /* for D bits (numbered as per FIPS 46) 16 17 18 19 20 21 */
277 0x00000000L,0x00000100L,0x00080000L,0x00080100L,
278 0x01000000L,0x01000100L,0x01080000L,0x01080100L,
279 0x00000010L,0x00000110L,0x00080010L,0x00080110L,
280 0x01000010L,0x01000110L,0x01080010L,0x01080110L,
281 0x00200000L,0x00200100L,0x00280000L,0x00280100L,
282 0x01200000L,0x01200100L,0x01280000L,0x01280100L,
283 0x00200010L,0x00200110L,0x00280010L,0x00280110L,
284 0x01200010L,0x01200110L,0x01280010L,0x01280110L,
285 0x00000200L,0x00000300L,0x00080200L,0x00080300L,
286 0x01000200L,0x01000300L,0x01080200L,0x01080300L,
287 0x00000210L,0x00000310L,0x00080210L,0x00080310L,
288 0x01000210L,0x01000310L,0x01080210L,0x01080310L,
289 0x00200200L,0x00200300L,0x00280200L,0x00280300L,
290 0x01200200L,0x01200300L,0x01280200L,0x01280300L,
291 0x00200210L,0x00200310L,0x00280210L,0x00280310L,
292 0x01200210L,0x01200310L,0x01280210L,0x01280310L,
293 },{
294 /* for D bits (numbered as per FIPS 46) 22 23 24 25 27 28 */
295 0x00000000L,0x04000000L,0x00040000L,0x04040000L,
296 0x00000002L,0x04000002L,0x00040002L,0x04040002L,
297 0x00002000L,0x04002000L,0x00042000L,0x04042000L,
298 0x00002002L,0x04002002L,0x00042002L,0x04042002L,
299 0x00000020L,0x04000020L,0x00040020L,0x04040020L,
300 0x00000022L,0x04000022L,0x00040022L,0x04040022L,
301 0x00002020L,0x04002020L,0x00042020L,0x04042020L,
302 0x00002022L,0x04002022L,0x00042022L,0x04042022L,
303 0x00000800L,0x04000800L,0x00040800L,0x04040800L,
304 0x00000802L,0x04000802L,0x00040802L,0x04040802L,
305 0x00002800L,0x04002800L,0x00042800L,0x04042800L,
306 0x00002802L,0x04002802L,0x00042802L,0x04042802L,
307 0x00000820L,0x04000820L,0x00040820L,0x04040820L,
308 0x00000822L,0x04000822L,0x00040822L,0x04040822L,
309 0x00002820L,0x04002820L,0x00042820L,0x04042820L,
310 0x00002822L,0x04002822L,0x00042822L,0x04042822L,
311 }};
312
313int DES_set_key(const_DES_cblock *key, DES_key_schedule *schedule)
314 {
315 if (FIPS_selftest_failed())
316 return -3;
317 if (DES_check_key)
318 {
319 return DES_set_key_checked(key, schedule);
320 }
321 else
322 {
323 DES_set_key_unchecked(key, schedule);
324 return 0;
325 }
326 }
327
328/* return 0 if key parity is odd (correct),
329 * return -1 if key parity error,
330 * return -2 if illegal weak key.
331 */
332int DES_set_key_checked(const_DES_cblock *key, DES_key_schedule *schedule)
333 {
334 if (!DES_check_key_parity(key))
335 return(-1);
336 if (DES_is_weak_key(key))
337 return(-2);
338 if (FIPS_selftest_failed())
339 return -3;
340
341 DES_set_key_unchecked(key, schedule);
342 return 0;
343 }
344
345void DES_set_key_unchecked(const_DES_cblock *key, DES_key_schedule *schedule)
346 {
347 static int shifts2[16]={0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0};
348 register DES_LONG c,d,t,s,t2;
349 register const unsigned char *in;
350 register DES_LONG *k;
351 register int i;
352
353#ifdef OPENBSD_DEV_CRYPTO
354 memcpy(schedule->key,key,sizeof schedule->key);
355 schedule->session=NULL;
356#endif
357 k = &schedule->ks->deslong[0];
358 in = &(*key)[0];
359
360 c2l(in,c);
361 c2l(in,d);
362
363 /* do PC1 in 47 simple operations :-)
364 * Thanks to John Fletcher (john_fletcher@lccmail.ocf.llnl.gov)
365 * for the inspiration. :-) */
366 PERM_OP (d,c,t,4,0x0f0f0f0fL);
367 HPERM_OP(c,t,-2,0xcccc0000L);
368 HPERM_OP(d,t,-2,0xcccc0000L);
369 PERM_OP (d,c,t,1,0x55555555L);
370 PERM_OP (c,d,t,8,0x00ff00ffL);
371 PERM_OP (d,c,t,1,0x55555555L);
372 d= (((d&0x000000ffL)<<16L)| (d&0x0000ff00L) |
373 ((d&0x00ff0000L)>>16L)|((c&0xf0000000L)>>4L));
374 c&=0x0fffffffL;
375
376 for (i=0; i<ITERATIONS; i++)
377 {
378 if (shifts2[i])
379 { c=((c>>2L)|(c<<26L)); d=((d>>2L)|(d<<26L)); }
380 else
381 { c=((c>>1L)|(c<<27L)); d=((d>>1L)|(d<<27L)); }
382 c&=0x0fffffffL;
383 d&=0x0fffffffL;
384 /* could be a few less shifts but I am to lazy at this
385 * point in time to investigate */
386 s= des_skb[0][ (c )&0x3f ]|
387 des_skb[1][((c>> 6L)&0x03)|((c>> 7L)&0x3c)]|
388 des_skb[2][((c>>13L)&0x0f)|((c>>14L)&0x30)]|
389 des_skb[3][((c>>20L)&0x01)|((c>>21L)&0x06) |
390 ((c>>22L)&0x38)];
391 t= des_skb[4][ (d )&0x3f ]|
392 des_skb[5][((d>> 7L)&0x03)|((d>> 8L)&0x3c)]|
393 des_skb[6][ (d>>15L)&0x3f ]|
394 des_skb[7][((d>>21L)&0x0f)|((d>>22L)&0x30)];
395
396 /* table contained 0213 4657 */
397 t2=((t<<16L)|(s&0x0000ffffL))&0xffffffffL;
398 *(k++)=ROTATE(t2,30)&0xffffffffL;
399
400 t2=((s>>16L)|(t&0xffff0000L));
401 *(k++)=ROTATE(t2,26)&0xffffffffL;
402 }
403 }
404
405int DES_key_sched(const_DES_cblock *key, DES_key_schedule *schedule)
406 {
407 return(DES_set_key(key,schedule));
408 }
409/*
410#undef des_fixup_key_parity
411void des_fixup_key_parity(des_cblock *key)
412 {
413 des_set_odd_parity(key);
414 }
415*/
416
417#endif /* def OPENSSL_FIPS */
diff --git a/src/lib/libssl/src/fips/dh/fingerprint.sha1 b/src/lib/libssl/src/fips/dh/fingerprint.sha1
new file mode 100644
index 0000000000..6896d38649
--- /dev/null
+++ b/src/lib/libssl/src/fips/dh/fingerprint.sha1
@@ -0,0 +1,3 @@
1HMAC-SHA1(fips_dh_check.c)= 63347e2007e224381d4a7b6d871633889de72cf3
2HMAC-SHA1(fips_dh_gen.c)= 93fe69b758ca9d70d70cda1c57fff4eb5c668e85
3HMAC-SHA1(fips_dh_key.c)= 7bf23b329a776953bbe7c30ebd7f9faf5249ddbe
diff --git a/src/lib/libssl/src/fips/dsa/fingerprint.sha1 b/src/lib/libssl/src/fips/dsa/fingerprint.sha1
new file mode 100644
index 0000000000..4a89db5cf3
--- /dev/null
+++ b/src/lib/libssl/src/fips/dsa/fingerprint.sha1
@@ -0,0 +1,3 @@
1HMAC-SHA1(fips_dsa_ossl.c)= d5f718695397fe56d6bb46f7c410794cb895e206
2HMAC-SHA1(fips_dsa_gen.c)= c252db14699f3ff641db052311da7d7521569c53
3HMAC-SHA1(fips_dsa_selftest.c)= 4bfc5d3a6b977527b053f3a03d0760a822a26135
diff --git a/src/lib/libssl/src/fips/fingerprint.sha1 b/src/lib/libssl/src/fips/fingerprint.sha1
new file mode 100644
index 0000000000..1af4792eb1
--- /dev/null
+++ b/src/lib/libssl/src/fips/fingerprint.sha1
@@ -0,0 +1,4 @@
1HMAC-SHA1(fips.c)= 4eef19c535c1f3deacdf93eb806479ea3b374115
2HMAC-SHA1(fips_err_wrapper.c)= d3e2be316062510312269e98f964cb87e7577898
3HMAC-SHA1(fips.h)= fbedad5dbd8986ddd521ea576bf2a20e6881540a
4HMAC-SHA1(fips_err.h)= 4a73f2a88e206f1f88edfd9b26609a0eed818491
diff --git a/src/lib/libssl/src/fips/fips_check_sha1 b/src/lib/libssl/src/fips/fips_check_sha1
new file mode 100755
index 0000000000..d60404a51c
--- /dev/null
+++ b/src/lib/libssl/src/fips/fips_check_sha1
@@ -0,0 +1,8 @@
1#!/bin/sh
2
3FP=$1
4shift
5
6egrep 'define OPENSSL_FIPS' $TOP/include/openssl/opensslconf.h > /dev/null || exit 0
7
8$TOP/fips/sha1/fips_standalone_sha1 $@ | diff -w $FP - || { echo; echo "*** Your source code does not match the FIPS validated source ***"; echo; exit 1; }
diff --git a/src/lib/libssl/src/fips/fips_err.h b/src/lib/libssl/src/fips/fips_err.h
new file mode 100644
index 0000000000..d643c9f55f
--- /dev/null
+++ b/src/lib/libssl/src/fips/fips_err.h
@@ -0,0 +1,118 @@
1/* fips/fips_err.h */
2/* ====================================================================
3 * Copyright (c) 1999-2003 The OpenSSL Project. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in
14 * the documentation and/or other materials provided with the
15 * distribution.
16 *
17 * 3. All advertising materials mentioning features or use of this
18 * software must display the following acknowledgment:
19 * "This product includes software developed by the OpenSSL Project
20 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
21 *
22 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
23 * endorse or promote products derived from this software without
24 * prior written permission. For written permission, please contact
25 * openssl-core@OpenSSL.org.
26 *
27 * 5. Products derived from this software may not be called "OpenSSL"
28 * nor may "OpenSSL" appear in their names without prior written
29 * permission of the OpenSSL Project.
30 *
31 * 6. Redistributions of any form whatsoever must retain the following
32 * acknowledgment:
33 * "This product includes software developed by the OpenSSL Project
34 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
35 *
36 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
37 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
38 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
39 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
40 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
42 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
43 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
44 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
45 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
46 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
47 * OF THE POSSIBILITY OF SUCH DAMAGE.
48 * ====================================================================
49 *
50 * This product includes cryptographic software written by Eric Young
51 * (eay@cryptsoft.com). This product includes software written by Tim
52 * Hudson (tjh@cryptsoft.com).
53 *
54 */
55
56/* NOTE: this file was auto generated by the mkerr.pl script: any changes
57 * made to it will be overwritten when the script next updates this file,
58 * only reason strings will be preserved.
59 */
60
61#include <stdio.h>
62#include <openssl/err.h>
63#include <openssl/fips.h>
64
65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR
67static ERR_STRING_DATA FIPS_str_functs[]=
68 {
69{ERR_PACK(0,FIPS_F_DSA_DO_SIGN,0), "DSA_do_sign"},
70{ERR_PACK(0,FIPS_F_DSA_DO_VERIFY,0), "DSA_do_verify"},
71{ERR_PACK(0,FIPS_F_DSA_GENERATE_PARAMETERS,0), "DSA_generate_parameters"},
72{ERR_PACK(0,FIPS_F_FIPS_CHECK_DSA,0), "FIPS_CHECK_DSA"},
73{ERR_PACK(0,FIPS_F_FIPS_CHECK_EXE,0), "FIPS_CHECK_EXE"},
74{ERR_PACK(0,FIPS_F_FIPS_CHECK_RSA,0), "FIPS_CHECK_RSA"},
75{ERR_PACK(0,FIPS_F_FIPS_DSA_CHECK,0), "FIPS_dsa_check"},
76{ERR_PACK(0,FIPS_F_FIPS_MODE_SET,0), "FIPS_mode_set"},
77{ERR_PACK(0,FIPS_F_FIPS_SELFTEST_AES,0), "FIPS_selftest_aes"},
78{ERR_PACK(0,FIPS_F_FIPS_SELFTEST_DES,0), "FIPS_selftest_des"},
79{ERR_PACK(0,FIPS_F_FIPS_SELFTEST_DSA,0), "FIPS_selftest_dsa"},
80{ERR_PACK(0,FIPS_F_FIPS_SELFTEST_RSA,0), "FIPS_selftest_rsa"},
81{ERR_PACK(0,FIPS_F_FIPS_SELFTEST_SHA1,0), "FIPS_selftest_sha1"},
82{ERR_PACK(0,FIPS_F_HASH_FINAL,0), "HASH_FINAL"},
83{ERR_PACK(0,FIPS_F_DH_GENERATE_PARAMETERS,0), "DH_generate_parameters"},
84{ERR_PACK(0,FIPS_F_RSA_EAY_PUBLIC_ENCRYPT,0), "RSA_EAY_PUBLIC_ENCRYPT"},
85{ERR_PACK(0,FIPS_F_RSA_GENERATE_KEY,0), "RSA_generate_key"},
86{ERR_PACK(0,FIPS_F_SSLEAY_RAND_BYTES,0), "SSLEAY_RAND_BYTES"},
87{0,NULL}
88 };
89
90static ERR_STRING_DATA FIPS_str_reasons[]=
91 {
92{FIPS_R_CANNOT_READ_EXE ,"cannot read exe"},
93{FIPS_R_CANNOT_READ_EXE_DIGEST ,"cannot read exe digest"},
94{FIPS_R_EXE_DIGEST_DOES_NOT_MATCH ,"exe digest does not match"},
95{FIPS_R_FIPS_MODE_ALREADY_SET ,"fips mode already set"},
96{FIPS_R_FIPS_SELFTEST_FAILED ,"fips selftest failed"},
97{FIPS_R_NON_FIPS_METHOD ,"non fips method"},
98{FIPS_R_PAIRWISE_TEST_FAILED ,"pairwise test failed"},
99{FIPS_R_SELFTEST_FAILED ,"selftest failed"},
100{0,NULL}
101 };
102
103#endif
104
105void ERR_load_FIPS_strings(void)
106 {
107 static int init=1;
108
109 if (init)
110 {
111 init=0;
112#ifndef OPENSSL_NO_ERR
113 ERR_load_strings(ERR_LIB_FIPS,FIPS_str_functs);
114 ERR_load_strings(ERR_LIB_FIPS,FIPS_str_reasons);
115#endif
116
117 }
118 }
diff --git a/src/lib/libssl/src/fips/fips_err_wrapper.c b/src/lib/libssl/src/fips/fips_err_wrapper.c
new file mode 100644
index 0000000000..09f11748f6
--- /dev/null
+++ b/src/lib/libssl/src/fips/fips_err_wrapper.c
@@ -0,0 +1,7 @@
1#include <openssl/opensslconf.h>
2
3#ifdef OPENSSL_FIPS
4# include "fips_err.h"
5#else
6static void *dummy=&dummy;
7#endif
diff --git a/src/lib/libssl/src/fips/fips_make_sha1 b/src/lib/libssl/src/fips/fips_make_sha1
new file mode 100755
index 0000000000..a326ea3a07
--- /dev/null
+++ b/src/lib/libssl/src/fips/fips_make_sha1
@@ -0,0 +1,30 @@
1#!/bin/sh
2
3S=`pwd`/fips/sha1/fips_standalone_sha1
4
5cd fips/sha1
6$S fips_sha1dgst.c fips_sha1_selftest.c asm/sx86-elf.s fips_standalone_sha1.c fips_sha_locl.h fips_md32_common.h > standalone.sha1
7
8cd ..
9$S fips.c fips_err_wrapper.c fips.h fips_err.h > fingerprint.sha1
10
11cd rand
12$S fips_rand.c fips_rand.h > fingerprint.sha1
13
14cd ../sha1
15$S fips_sha1dgst.c fips_sha1_selftest.c asm/sx86-elf.s fips_sha_locl.h fips_md32_common.h > fingerprint.sha1
16
17cd ../aes
18$S fips_aes_core.c fips_aes_selftest.c fips_aes_locl.h > fingerprint.sha1
19
20cd ../dsa
21$S fips_dsa_ossl.c fips_dsa_gen.c fips_dsa_selftest.c > fingerprint.sha1
22
23cd ../des
24$S fips_des_enc.c asm/fips-dx86-elf.s fips_des_selftest.c fips_set_key.c fips_des_locl.h > fingerprint.sha1
25
26cd ../rsa
27$S fips_rsa_eay.c fips_rsa_gen.c fips_rsa_selftest.c > fingerprint.sha1
28
29cd ../dh
30$S fips_dh_check.c fips_dh_gen.c fips_dh_key.c > fingerprint.sha1
diff --git a/src/lib/libssl/src/fips/rand/fingerprint.sha1 b/src/lib/libssl/src/fips/rand/fingerprint.sha1
new file mode 100644
index 0000000000..0b1d91104f
--- /dev/null
+++ b/src/lib/libssl/src/fips/rand/fingerprint.sha1
@@ -0,0 +1,2 @@
1HMAC-SHA1(fips_rand.c)= 5dc4aa11c0377a049bee01d427e5b0bc3dd9f10f
2HMAC-SHA1(fips_rand.h)= 0567b1fe9b0efe034a537f335659b0b681809791
diff --git a/src/lib/libssl/src/fips/rsa/fingerprint.sha1 b/src/lib/libssl/src/fips/rsa/fingerprint.sha1
new file mode 100644
index 0000000000..569434700c
--- /dev/null
+++ b/src/lib/libssl/src/fips/rsa/fingerprint.sha1
@@ -0,0 +1,3 @@
1HMAC-SHA1(fips_rsa_eay.c)= eabab59a2f11f3da4c21e1144efe1684f5e8f1ec
2HMAC-SHA1(fips_rsa_gen.c)= 4bbc0afcade1ac53f469aaa89f84c413678254bf
3HMAC-SHA1(fips_rsa_selftest.c)= 70553a5212e86f65b068564946d39b738a201e22
diff --git a/src/lib/libssl/src/fips/sha1/Makefile b/src/lib/libssl/src/fips/sha1/Makefile
new file mode 100644
index 0000000000..1fa25b32be
--- /dev/null
+++ b/src/lib/libssl/src/fips/sha1/Makefile
@@ -0,0 +1,157 @@
1#
2# SSLeay/fips/sha1/Makefile
3#
4
5DIR= sha1
6TOP= ../..
7CC= cc
8INCLUDES=
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKEDEPPROG= makedepend
14MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
15MAKEFILE= Makefile
16AR= ar r
17
18CFLAGS= $(INCLUDES) $(CFLAG)
19
20GENERAL=Makefile
21TEST= fips_sha1test.c
22TESTDATA= sha1vectors.txt sha1hashes.txt
23APPS=
24EXE= fips_standalone_sha1
25
26LIB=$(TOP)/libcrypto.a
27LIBSRC=fips_sha1dgst.c fips_sha1_selftest.c asm/sx86-elf.s
28LIBOBJ=fips_sha1dgst.o fips_sha1_selftest.o $(FIPS_SHA1_ASM_OBJ)
29
30SRC= $(LIBSRC) fips_standalone_sha1.c
31
32EXHEADER=
33HEADER= $(EXHEADER) fips_sha_locl.h fips_md32_common.h
34
35ALL= $(GENERAL) $(SRC) $(HEADER)
36
37top:
38 (cd $(TOP); $(MAKE) DIRS=fips SDIRS=$(DIR) sub_all)
39
40all: check_standalone check lib
41
42check:
43 TOP=`pwd`/$(TOP) ../fips_check_sha1 fingerprint.sha1 $(LIBSRC) $(HEADER)
44
45check_standalone: fips_standalone_sha1
46 TOP=`pwd`/$(TOP) ../fips_check_sha1 standalone.sha1 $(SRC) $(HEADER)
47
48lib: $(LIBOBJ)
49 $(AR) $(LIB) $(LIBOBJ)
50 $(RANLIB) $(LIB) || echo Never mind.
51 @sleep 2; touch lib
52
53fips_standalone_sha1: fips_standalone_sha1.o fips_sha1dgst.o $(FIPS_SHA1_ASM_OBJ)
54 $(CC) -o fips_standalone_sha1 $(CFLAGS) fips_standalone_sha1.o \
55 fips_sha1dgst.o $(FIPS_SHA1_ASM_OBJ)
56
57files:
58 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
59
60links:
61 @$(PERL) $(TOP)/util/mklink.pl $(TOP)/include/openssl $(EXHEADER)
62 @$(PERL) $(TOP)/util/mklink.pl $(TOP)/test $(TEST)
63 cp $(TESTDATA) $(TOP)/test
64 @$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS)
65
66install:
67 @headerlist="$(EXHEADER)"; for i in $$headerlist; \
68 do \
69 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
70 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
71 done
72
73tags:
74 ctags $(SRC)
75
76tests:
77
78top_fips_sha1test:
79 (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) TARGET=fips_sha1test sub_target)
80
81fips_sha1test: fips_sha1test.o $(TOP)/libcrypto.a
82 $(CC) $(CFLAGS) -o fips_sha1test fips_sha1test.o $(PEX_LIBS) $(TOP)/libcrypto.a $(EX_LIBS)
83 TOP=$(TOP) $(TOP)/fips/openssl_fips_fingerprint $(TOP)/libcrypto.a fips_sha1test
84
85fips_test: top_fips_sha1test
86 -rm -rf ../testvectors/sha1/rsp
87 mkdir ../testvectors/sha1/rsp
88 ./fips_sha1test ../testvectors/sha1/req/sha.req > ../testvectors/sha1/rsp/sha.rsp
89
90lint:
91 lint -DLINT $(INCLUDES) $(SRC)>fluff
92
93depend:
94 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(SRC) $(TEST)
95
96dclean:
97 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
98 mv -f Makefile.new $(MAKEFILE)
99
100clean:
101 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff $(EXE)
102
103# DO NOT DELETE THIS LINE -- make depend depends on it.
104
105fips_sha1_selftest.o: ../../include/openssl/bio.h
106fips_sha1_selftest.o: ../../include/openssl/crypto.h
107fips_sha1_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
108fips_sha1_selftest.o: ../../include/openssl/fips.h
109fips_sha1_selftest.o: ../../include/openssl/lhash.h
110fips_sha1_selftest.o: ../../include/openssl/opensslconf.h
111fips_sha1_selftest.o: ../../include/openssl/opensslv.h
112fips_sha1_selftest.o: ../../include/openssl/safestack.h
113fips_sha1_selftest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
114fips_sha1_selftest.o: ../../include/openssl/symhacks.h fips_sha1_selftest.c
115fips_sha1dgst.o: ../../include/openssl/opensslconf.h
116fips_sha1dgst.o: ../../include/openssl/opensslv.h fips_sha1dgst.c
117fips_sha1test.o: ../../e_os.h ../../include/openssl/bio.h
118fips_sha1test.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
119fips_sha1test.o: ../../include/openssl/err.h ../../include/openssl/fips.h
120fips_sha1test.o: ../../include/openssl/lhash.h
121fips_sha1test.o: ../../include/openssl/opensslconf.h
122fips_sha1test.o: ../../include/openssl/opensslv.h
123fips_sha1test.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
124fips_sha1test.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
125fips_sha1test.o: fips_sha1test.c
126fips_standalone_sha1.o: ../../include/openssl/aes.h
127fips_standalone_sha1.o: ../../include/openssl/asn1.h
128fips_standalone_sha1.o: ../../include/openssl/bio.h
129fips_standalone_sha1.o: ../../include/openssl/blowfish.h
130fips_standalone_sha1.o: ../../include/openssl/bn.h ../../include/openssl/cast.h
131fips_standalone_sha1.o: ../../include/openssl/crypto.h
132fips_standalone_sha1.o: ../../include/openssl/des.h
133fips_standalone_sha1.o: ../../include/openssl/des_old.h
134fips_standalone_sha1.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
135fips_standalone_sha1.o: ../../include/openssl/e_os2.h
136fips_standalone_sha1.o: ../../include/openssl/evp.h
137fips_standalone_sha1.o: ../../include/openssl/hmac.h
138fips_standalone_sha1.o: ../../include/openssl/idea.h
139fips_standalone_sha1.o: ../../include/openssl/md2.h ../../include/openssl/md4.h
140fips_standalone_sha1.o: ../../include/openssl/md5.h
141fips_standalone_sha1.o: ../../include/openssl/mdc2.h
142fips_standalone_sha1.o: ../../include/openssl/obj_mac.h
143fips_standalone_sha1.o: ../../include/openssl/objects.h
144fips_standalone_sha1.o: ../../include/openssl/opensslconf.h
145fips_standalone_sha1.o: ../../include/openssl/opensslv.h
146fips_standalone_sha1.o: ../../include/openssl/ossl_typ.h
147fips_standalone_sha1.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h
148fips_standalone_sha1.o: ../../include/openssl/rc5.h
149fips_standalone_sha1.o: ../../include/openssl/ripemd.h
150fips_standalone_sha1.o: ../../include/openssl/rsa.h
151fips_standalone_sha1.o: ../../include/openssl/safestack.h
152fips_standalone_sha1.o: ../../include/openssl/sha.h
153fips_standalone_sha1.o: ../../include/openssl/stack.h
154fips_standalone_sha1.o: ../../include/openssl/symhacks.h
155fips_standalone_sha1.o: ../../include/openssl/ui.h
156fips_standalone_sha1.o: ../../include/openssl/ui_compat.h
157fips_standalone_sha1.o: fips_standalone_sha1.c
diff --git a/src/lib/libssl/src/fips/sha1/asm/sx86-elf.s b/src/lib/libssl/src/fips/sha1/asm/sx86-elf.s
new file mode 100644
index 0000000000..2a4d98791d
--- /dev/null
+++ b/src/lib/libssl/src/fips/sha1/asm/sx86-elf.s
@@ -0,0 +1,1568 @@
1
2
3
4
5
6
7 .file "sha1-586.s"
8 .version "01.01"
9gcc2_compiled.:
10.text
11 .align 16
12.globl sha1_block_asm_data_order
13 .type sha1_block_asm_data_order,@function
14sha1_block_asm_data_order:
15 movl 12(%esp), %ecx
16 pushl %esi
17 sall $6, %ecx
18 movl 12(%esp), %esi
19 pushl %ebp
20 addl %esi, %ecx
21 pushl %ebx
22 movl 16(%esp), %ebp
23 pushl %edi
24 movl 12(%ebp), %edx
25 subl $108, %esp
26 movl 16(%ebp), %edi
27 movl 8(%ebp), %ebx
28 movl %ecx, 68(%esp)
29
30.L000start:
31
32 movl (%esi), %eax
33 movl 4(%esi), %ecx
34
35 xchgb %al, %ah
36 rorl $16, %eax
37 xchgb %al, %ah
38
39 xchgb %cl, %ch
40 rorl $16, %ecx
41 xchgb %cl, %ch
42 movl %eax, (%esp)
43 movl %ecx, 4(%esp)
44 movl 8(%esi), %eax
45 movl 12(%esi), %ecx
46
47 xchgb %al, %ah
48 rorl $16, %eax
49 xchgb %al, %ah
50
51 xchgb %cl, %ch
52 rorl $16, %ecx
53 xchgb %cl, %ch
54 movl %eax, 8(%esp)
55 movl %ecx, 12(%esp)
56 movl 16(%esi), %eax
57 movl 20(%esi), %ecx
58
59 xchgb %al, %ah
60 rorl $16, %eax
61 xchgb %al, %ah
62
63 xchgb %cl, %ch
64 rorl $16, %ecx
65 xchgb %cl, %ch
66 movl %eax, 16(%esp)
67 movl %ecx, 20(%esp)
68 movl 24(%esi), %eax
69 movl 28(%esi), %ecx
70
71 xchgb %al, %ah
72 rorl $16, %eax
73 xchgb %al, %ah
74
75 xchgb %cl, %ch
76 rorl $16, %ecx
77 xchgb %cl, %ch
78 movl %eax, 24(%esp)
79 movl %ecx, 28(%esp)
80 movl 32(%esi), %eax
81 movl 36(%esi), %ecx
82
83 xchgb %al, %ah
84 rorl $16, %eax
85 xchgb %al, %ah
86
87 xchgb %cl, %ch
88 rorl $16, %ecx
89 xchgb %cl, %ch
90 movl %eax, 32(%esp)
91 movl %ecx, 36(%esp)
92 movl 40(%esi), %eax
93 movl 44(%esi), %ecx
94
95 xchgb %al, %ah
96 rorl $16, %eax
97 xchgb %al, %ah
98
99 xchgb %cl, %ch
100 rorl $16, %ecx
101 xchgb %cl, %ch
102 movl %eax, 40(%esp)
103 movl %ecx, 44(%esp)
104 movl 48(%esi), %eax
105 movl 52(%esi), %ecx
106
107 xchgb %al, %ah
108 rorl $16, %eax
109 xchgb %al, %ah
110
111 xchgb %cl, %ch
112 rorl $16, %ecx
113 xchgb %cl, %ch
114 movl %eax, 48(%esp)
115 movl %ecx, 52(%esp)
116 movl 56(%esi), %eax
117 movl 60(%esi), %ecx
118
119 xchgb %al, %ah
120 rorl $16, %eax
121 xchgb %al, %ah
122
123 xchgb %cl, %ch
124 rorl $16, %ecx
125 xchgb %cl, %ch
126 movl %eax, 56(%esp)
127 movl %ecx, 60(%esp)
128
129
130 movl %esi, 132(%esp)
131.L001shortcut:
132
133
134 movl (%ebp), %eax
135 movl 4(%ebp), %ecx
136
137 movl %eax, %ebp
138 movl %ebx, %esi
139 roll $5, %ebp
140 xorl %edx, %esi
141 andl %ecx, %esi
142 rorl $2, %ecx
143 addl %edi, %ebp
144 movl (%esp), %edi
145 xorl %edx, %esi
146 leal 1518500249(%ebp,%edi,1),%ebp
147 addl %ebp, %esi
148
149 movl %esi, %ebp
150 movl %ecx, %edi
151 roll $5, %ebp
152 xorl %ebx, %edi
153 andl %eax, %edi
154 rorl $2, %eax
155 addl %edx, %ebp
156 movl 4(%esp), %edx
157 xorl %ebx, %edi
158 leal 1518500249(%ebp,%edx,1),%ebp
159 addl %ebp, %edi
160
161 movl %edi, %ebp
162 movl %eax, %edx
163 roll $5, %ebp
164 xorl %ecx, %edx
165 andl %esi, %edx
166 rorl $2, %esi
167 addl %ebx, %ebp
168 movl 8(%esp), %ebx
169 xorl %ecx, %edx
170 leal 1518500249(%ebp,%ebx,1),%ebp
171 addl %ebp, %edx
172
173 movl %edx, %ebp
174 movl %esi, %ebx
175 roll $5, %ebp
176 xorl %eax, %ebx
177 andl %edi, %ebx
178 rorl $2, %edi
179 addl %ecx, %ebp
180 movl 12(%esp), %ecx
181 xorl %eax, %ebx
182 leal 1518500249(%ebp,%ecx,1),%ebp
183 addl %ebp, %ebx
184
185 movl %ebx, %ebp
186 movl %edi, %ecx
187 roll $5, %ebp
188 xorl %esi, %ecx
189 andl %edx, %ecx
190 rorl $2, %edx
191 addl %eax, %ebp
192 movl 16(%esp), %eax
193 xorl %esi, %ecx
194 leal 1518500249(%ebp,%eax,1),%ebp
195 addl %ebp, %ecx
196
197 movl %ecx, %ebp
198 movl %edx, %eax
199 roll $5, %ebp
200 xorl %edi, %eax
201 andl %ebx, %eax
202 rorl $2, %ebx
203 addl %esi, %ebp
204 movl 20(%esp), %esi
205 xorl %edi, %eax
206 leal 1518500249(%ebp,%esi,1),%ebp
207 addl %ebp, %eax
208
209 movl %eax, %ebp
210 movl %ebx, %esi
211 roll $5, %ebp
212 xorl %edx, %esi
213 andl %ecx, %esi
214 rorl $2, %ecx
215 addl %edi, %ebp
216 movl 24(%esp), %edi
217 xorl %edx, %esi
218 leal 1518500249(%ebp,%edi,1),%ebp
219 addl %ebp, %esi
220
221 movl %esi, %ebp
222 movl %ecx, %edi
223 roll $5, %ebp
224 xorl %ebx, %edi
225 andl %eax, %edi
226 rorl $2, %eax
227 addl %edx, %ebp
228 movl 28(%esp), %edx
229 xorl %ebx, %edi
230 leal 1518500249(%ebp,%edx,1),%ebp
231 addl %ebp, %edi
232
233 movl %edi, %ebp
234 movl %eax, %edx
235 roll $5, %ebp
236 xorl %ecx, %edx
237 andl %esi, %edx
238 rorl $2, %esi
239 addl %ebx, %ebp
240 movl 32(%esp), %ebx
241 xorl %ecx, %edx
242 leal 1518500249(%ebp,%ebx,1),%ebp
243 addl %ebp, %edx
244
245 movl %edx, %ebp
246 movl %esi, %ebx
247 roll $5, %ebp
248 xorl %eax, %ebx
249 andl %edi, %ebx
250 rorl $2, %edi
251 addl %ecx, %ebp
252 movl 36(%esp), %ecx
253 xorl %eax, %ebx
254 leal 1518500249(%ebp,%ecx,1),%ebp
255 addl %ebp, %ebx
256
257 movl %ebx, %ebp
258 movl %edi, %ecx
259 roll $5, %ebp
260 xorl %esi, %ecx
261 andl %edx, %ecx
262 rorl $2, %edx
263 addl %eax, %ebp
264 movl 40(%esp), %eax
265 xorl %esi, %ecx
266 leal 1518500249(%ebp,%eax,1),%ebp
267 addl %ebp, %ecx
268
269 movl %ecx, %ebp
270 movl %edx, %eax
271 roll $5, %ebp
272 xorl %edi, %eax
273 andl %ebx, %eax
274 rorl $2, %ebx
275 addl %esi, %ebp
276 movl 44(%esp), %esi
277 xorl %edi, %eax
278 leal 1518500249(%ebp,%esi,1),%ebp
279 addl %ebp, %eax
280
281 movl %eax, %ebp
282 movl %ebx, %esi
283 roll $5, %ebp
284 xorl %edx, %esi
285 andl %ecx, %esi
286 rorl $2, %ecx
287 addl %edi, %ebp
288 movl 48(%esp), %edi
289 xorl %edx, %esi
290 leal 1518500249(%ebp,%edi,1),%ebp
291 addl %ebp, %esi
292
293 movl %esi, %ebp
294 movl %ecx, %edi
295 roll $5, %ebp
296 xorl %ebx, %edi
297 andl %eax, %edi
298 rorl $2, %eax
299 addl %edx, %ebp
300 movl 52(%esp), %edx
301 xorl %ebx, %edi
302 leal 1518500249(%ebp,%edx,1),%ebp
303 addl %ebp, %edi
304
305 movl %edi, %ebp
306 movl %eax, %edx
307 roll $5, %ebp
308 xorl %ecx, %edx
309 andl %esi, %edx
310 rorl $2, %esi
311 addl %ebx, %ebp
312 movl 56(%esp), %ebx
313 xorl %ecx, %edx
314 leal 1518500249(%ebp,%ebx,1),%ebp
315 addl %ebp, %edx
316
317 movl %edx, %ebp
318 movl %esi, %ebx
319 roll $5, %ebp
320 xorl %eax, %ebx
321 andl %edi, %ebx
322 rorl $2, %edi
323 addl %ecx, %ebp
324 movl 60(%esp), %ecx
325 xorl %eax, %ebx
326 leal 1518500249(%ebp,%ecx,1),%ebp
327 addl %ebp, %ebx
328
329 movl 8(%esp), %ecx
330 movl %edi, %ebp
331 xorl (%esp), %ecx
332 xorl %esi, %ebp
333 xorl 32(%esp), %ecx
334 andl %edx, %ebp
335 xorl 52(%esp), %ecx
336 rorl $2, %edx
337 xorl %esi, %ebp
338.byte 209
339.byte 193
340 movl %ecx, (%esp)
341 leal 1518500249(%ecx,%eax,1),%ecx
342 movl %ebx, %eax
343 addl %ebp, %ecx
344 roll $5, %eax
345 addl %eax, %ecx
346
347 movl 12(%esp), %eax
348 movl %edx, %ebp
349 xorl 4(%esp), %eax
350 xorl %edi, %ebp
351 xorl 36(%esp), %eax
352 andl %ebx, %ebp
353 xorl 56(%esp), %eax
354 rorl $2, %ebx
355 xorl %edi, %ebp
356.byte 209
357.byte 192
358 movl %eax, 4(%esp)
359 leal 1518500249(%eax,%esi,1),%eax
360 movl %ecx, %esi
361 addl %ebp, %eax
362 roll $5, %esi
363 addl %esi, %eax
364
365 movl 16(%esp), %esi
366 movl %ebx, %ebp
367 xorl 8(%esp), %esi
368 xorl %edx, %ebp
369 xorl 40(%esp), %esi
370 andl %ecx, %ebp
371 xorl 60(%esp), %esi
372 rorl $2, %ecx
373 xorl %edx, %ebp
374.byte 209
375.byte 198
376 movl %esi, 8(%esp)
377 leal 1518500249(%esi,%edi,1),%esi
378 movl %eax, %edi
379 addl %ebp, %esi
380 roll $5, %edi
381 addl %edi, %esi
382
383 movl 20(%esp), %edi
384 movl %ecx, %ebp
385 xorl 12(%esp), %edi
386 xorl %ebx, %ebp
387 xorl 44(%esp), %edi
388 andl %eax, %ebp
389 xorl (%esp), %edi
390 rorl $2, %eax
391 xorl %ebx, %ebp
392.byte 209
393.byte 199
394 movl %edi, 12(%esp)
395 leal 1518500249(%edi,%edx,1),%edi
396 movl %esi, %edx
397 addl %ebp, %edi
398 roll $5, %edx
399 addl %edx, %edi
400
401 movl 16(%esp), %edx
402 movl %esi, %ebp
403 xorl 24(%esp), %edx
404 rorl $2, %esi
405 xorl 48(%esp), %edx
406 xorl %eax, %ebp
407 xorl 4(%esp), %edx
408 xorl %ecx, %ebp
409.byte 209
410.byte 194
411 movl %edx, 16(%esp)
412 leal 1859775393(%edx,%ebx,1),%edx
413 movl %edi, %ebx
414 roll $5, %ebx
415 addl %ebp, %edx
416 addl %ebx, %edx
417
418 movl 20(%esp), %ebx
419 movl %edi, %ebp
420 xorl 28(%esp), %ebx
421 rorl $2, %edi
422 xorl 52(%esp), %ebx
423 xorl %esi, %ebp
424 xorl 8(%esp), %ebx
425 xorl %eax, %ebp
426.byte 209
427.byte 195
428 movl %ebx, 20(%esp)
429 leal 1859775393(%ebx,%ecx,1),%ebx
430 movl %edx, %ecx
431 roll $5, %ecx
432 addl %ebp, %ebx
433 addl %ecx, %ebx
434
435 movl 24(%esp), %ecx
436 movl %edx, %ebp
437 xorl 32(%esp), %ecx
438 rorl $2, %edx
439 xorl 56(%esp), %ecx
440 xorl %edi, %ebp
441 xorl 12(%esp), %ecx
442 xorl %esi, %ebp
443.byte 209
444.byte 193
445 movl %ecx, 24(%esp)
446 leal 1859775393(%ecx,%eax,1),%ecx
447 movl %ebx, %eax
448 roll $5, %eax
449 addl %ebp, %ecx
450 addl %eax, %ecx
451
452 movl 28(%esp), %eax
453 movl %ebx, %ebp
454 xorl 36(%esp), %eax
455 rorl $2, %ebx
456 xorl 60(%esp), %eax
457 xorl %edx, %ebp
458 xorl 16(%esp), %eax
459 xorl %edi, %ebp
460.byte 209
461.byte 192
462 movl %eax, 28(%esp)
463 leal 1859775393(%eax,%esi,1),%eax
464 movl %ecx, %esi
465 roll $5, %esi
466 addl %ebp, %eax
467 addl %esi, %eax
468
469 movl 32(%esp), %esi
470 movl %ecx, %ebp
471 xorl 40(%esp), %esi
472 rorl $2, %ecx
473 xorl (%esp), %esi
474 xorl %ebx, %ebp
475 xorl 20(%esp), %esi
476 xorl %edx, %ebp
477.byte 209
478.byte 198
479 movl %esi, 32(%esp)
480 leal 1859775393(%esi,%edi,1),%esi
481 movl %eax, %edi
482 roll $5, %edi
483 addl %ebp, %esi
484 addl %edi, %esi
485
486 movl 36(%esp), %edi
487 movl %eax, %ebp
488 xorl 44(%esp), %edi
489 rorl $2, %eax
490 xorl 4(%esp), %edi
491 xorl %ecx, %ebp
492 xorl 24(%esp), %edi
493 xorl %ebx, %ebp
494.byte 209
495.byte 199
496 movl %edi, 36(%esp)
497 leal 1859775393(%edi,%edx,1),%edi
498 movl %esi, %edx
499 roll $5, %edx
500 addl %ebp, %edi
501 addl %edx, %edi
502
503 movl 40(%esp), %edx
504 movl %esi, %ebp
505 xorl 48(%esp), %edx
506 rorl $2, %esi
507 xorl 8(%esp), %edx
508 xorl %eax, %ebp
509 xorl 28(%esp), %edx
510 xorl %ecx, %ebp
511.byte 209
512.byte 194
513 movl %edx, 40(%esp)
514 leal 1859775393(%edx,%ebx,1),%edx
515 movl %edi, %ebx
516 roll $5, %ebx
517 addl %ebp, %edx
518 addl %ebx, %edx
519
520 movl 44(%esp), %ebx
521 movl %edi, %ebp
522 xorl 52(%esp), %ebx
523 rorl $2, %edi
524 xorl 12(%esp), %ebx
525 xorl %esi, %ebp
526 xorl 32(%esp), %ebx
527 xorl %eax, %ebp
528.byte 209
529.byte 195
530 movl %ebx, 44(%esp)
531 leal 1859775393(%ebx,%ecx,1),%ebx
532 movl %edx, %ecx
533 roll $5, %ecx
534 addl %ebp, %ebx
535 addl %ecx, %ebx
536
537 movl 48(%esp), %ecx
538 movl %edx, %ebp
539 xorl 56(%esp), %ecx
540 rorl $2, %edx
541 xorl 16(%esp), %ecx
542 xorl %edi, %ebp
543 xorl 36(%esp), %ecx
544 xorl %esi, %ebp
545.byte 209
546.byte 193
547 movl %ecx, 48(%esp)
548 leal 1859775393(%ecx,%eax,1),%ecx
549 movl %ebx, %eax
550 roll $5, %eax
551 addl %ebp, %ecx
552 addl %eax, %ecx
553
554 movl 52(%esp), %eax
555 movl %ebx, %ebp
556 xorl 60(%esp), %eax
557 rorl $2, %ebx
558 xorl 20(%esp), %eax
559 xorl %edx, %ebp
560 xorl 40(%esp), %eax
561 xorl %edi, %ebp
562.byte 209
563.byte 192
564 movl %eax, 52(%esp)
565 leal 1859775393(%eax,%esi,1),%eax
566 movl %ecx, %esi
567 roll $5, %esi
568 addl %ebp, %eax
569 addl %esi, %eax
570
571 movl 56(%esp), %esi
572 movl %ecx, %ebp
573 xorl (%esp), %esi
574 rorl $2, %ecx
575 xorl 24(%esp), %esi
576 xorl %ebx, %ebp
577 xorl 44(%esp), %esi
578 xorl %edx, %ebp
579.byte 209
580.byte 198
581 movl %esi, 56(%esp)
582 leal 1859775393(%esi,%edi,1),%esi
583 movl %eax, %edi
584 roll $5, %edi
585 addl %ebp, %esi
586 addl %edi, %esi
587
588 movl 60(%esp), %edi
589 movl %eax, %ebp
590 xorl 4(%esp), %edi
591 rorl $2, %eax
592 xorl 28(%esp), %edi
593 xorl %ecx, %ebp
594 xorl 48(%esp), %edi
595 xorl %ebx, %ebp
596.byte 209
597.byte 199
598 movl %edi, 60(%esp)
599 leal 1859775393(%edi,%edx,1),%edi
600 movl %esi, %edx
601 roll $5, %edx
602 addl %ebp, %edi
603 addl %edx, %edi
604
605 movl (%esp), %edx
606 movl %esi, %ebp
607 xorl 8(%esp), %edx
608 rorl $2, %esi
609 xorl 32(%esp), %edx
610 xorl %eax, %ebp
611 xorl 52(%esp), %edx
612 xorl %ecx, %ebp
613.byte 209
614.byte 194
615 movl %edx, (%esp)
616 leal 1859775393(%edx,%ebx,1),%edx
617 movl %edi, %ebx
618 roll $5, %ebx
619 addl %ebp, %edx
620 addl %ebx, %edx
621
622 movl 4(%esp), %ebx
623 movl %edi, %ebp
624 xorl 12(%esp), %ebx
625 rorl $2, %edi
626 xorl 36(%esp), %ebx
627 xorl %esi, %ebp
628 xorl 56(%esp), %ebx
629 xorl %eax, %ebp
630.byte 209
631.byte 195
632 movl %ebx, 4(%esp)
633 leal 1859775393(%ebx,%ecx,1),%ebx
634 movl %edx, %ecx
635 roll $5, %ecx
636 addl %ebp, %ebx
637 addl %ecx, %ebx
638
639 movl 8(%esp), %ecx
640 movl %edx, %ebp
641 xorl 16(%esp), %ecx
642 rorl $2, %edx
643 xorl 40(%esp), %ecx
644 xorl %edi, %ebp
645 xorl 60(%esp), %ecx
646 xorl %esi, %ebp
647.byte 209
648.byte 193
649 movl %ecx, 8(%esp)
650 leal 1859775393(%ecx,%eax,1),%ecx
651 movl %ebx, %eax
652 roll $5, %eax
653 addl %ebp, %ecx
654 addl %eax, %ecx
655
656 movl 12(%esp), %eax
657 movl %ebx, %ebp
658 xorl 20(%esp), %eax
659 rorl $2, %ebx
660 xorl 44(%esp), %eax
661 xorl %edx, %ebp
662 xorl (%esp), %eax
663 xorl %edi, %ebp
664.byte 209
665.byte 192
666 movl %eax, 12(%esp)
667 leal 1859775393(%eax,%esi,1),%eax
668 movl %ecx, %esi
669 roll $5, %esi
670 addl %ebp, %eax
671 addl %esi, %eax
672
673 movl 16(%esp), %esi
674 movl %ecx, %ebp
675 xorl 24(%esp), %esi
676 rorl $2, %ecx
677 xorl 48(%esp), %esi
678 xorl %ebx, %ebp
679 xorl 4(%esp), %esi
680 xorl %edx, %ebp
681.byte 209
682.byte 198
683 movl %esi, 16(%esp)
684 leal 1859775393(%esi,%edi,1),%esi
685 movl %eax, %edi
686 roll $5, %edi
687 addl %ebp, %esi
688 addl %edi, %esi
689
690 movl 20(%esp), %edi
691 movl %eax, %ebp
692 xorl 28(%esp), %edi
693 rorl $2, %eax
694 xorl 52(%esp), %edi
695 xorl %ecx, %ebp
696 xorl 8(%esp), %edi
697 xorl %ebx, %ebp
698.byte 209
699.byte 199
700 movl %edi, 20(%esp)
701 leal 1859775393(%edi,%edx,1),%edi
702 movl %esi, %edx
703 roll $5, %edx
704 addl %ebp, %edi
705 addl %edx, %edi
706
707 movl 24(%esp), %edx
708 movl %esi, %ebp
709 xorl 32(%esp), %edx
710 rorl $2, %esi
711 xorl 56(%esp), %edx
712 xorl %eax, %ebp
713 xorl 12(%esp), %edx
714 xorl %ecx, %ebp
715.byte 209
716.byte 194
717 movl %edx, 24(%esp)
718 leal 1859775393(%edx,%ebx,1),%edx
719 movl %edi, %ebx
720 roll $5, %ebx
721 addl %ebp, %edx
722 addl %ebx, %edx
723
724 movl 28(%esp), %ebx
725 movl %edi, %ebp
726 xorl 36(%esp), %ebx
727 rorl $2, %edi
728 xorl 60(%esp), %ebx
729 xorl %esi, %ebp
730 xorl 16(%esp), %ebx
731 xorl %eax, %ebp
732.byte 209
733.byte 195
734 movl %ebx, 28(%esp)
735 leal 1859775393(%ebx,%ecx,1),%ebx
736 movl %edx, %ecx
737 roll $5, %ecx
738 addl %ebp, %ebx
739 addl %ecx, %ebx
740
741 movl 32(%esp), %ecx
742 movl %edx, %ebp
743 xorl 40(%esp), %ecx
744 orl %edi, %ebp
745 xorl (%esp), %ecx
746 andl %esi, %ebp
747 xorl 20(%esp), %ecx
748.byte 209
749.byte 193
750 movl %ecx, 32(%esp)
751 leal 2400959708(%ecx,%eax,1),%ecx
752 movl %edx, %eax
753 rorl $2, %edx
754 andl %edi, %eax
755 orl %eax, %ebp
756 movl %ebx, %eax
757 roll $5, %eax
758 addl %eax, %ebp
759 addl %ebp, %ecx
760
761 movl 36(%esp), %eax
762 movl %ebx, %ebp
763 xorl 44(%esp), %eax
764 orl %edx, %ebp
765 xorl 4(%esp), %eax
766 andl %edi, %ebp
767 xorl 24(%esp), %eax
768.byte 209
769.byte 192
770 movl %eax, 36(%esp)
771 leal 2400959708(%eax,%esi,1),%eax
772 movl %ebx, %esi
773 rorl $2, %ebx
774 andl %edx, %esi
775 orl %esi, %ebp
776 movl %ecx, %esi
777 roll $5, %esi
778 addl %esi, %ebp
779 addl %ebp, %eax
780
781 movl 40(%esp), %esi
782 movl %ecx, %ebp
783 xorl 48(%esp), %esi
784 orl %ebx, %ebp
785 xorl 8(%esp), %esi
786 andl %edx, %ebp
787 xorl 28(%esp), %esi
788.byte 209
789.byte 198
790 movl %esi, 40(%esp)
791 leal 2400959708(%esi,%edi,1),%esi
792 movl %ecx, %edi
793 rorl $2, %ecx
794 andl %ebx, %edi
795 orl %edi, %ebp
796 movl %eax, %edi
797 roll $5, %edi
798 addl %edi, %ebp
799 addl %ebp, %esi
800
801 movl 44(%esp), %edi
802 movl %eax, %ebp
803 xorl 52(%esp), %edi
804 orl %ecx, %ebp
805 xorl 12(%esp), %edi
806 andl %ebx, %ebp
807 xorl 32(%esp), %edi
808.byte 209
809.byte 199
810 movl %edi, 44(%esp)
811 leal 2400959708(%edi,%edx,1),%edi
812 movl %eax, %edx
813 rorl $2, %eax
814 andl %ecx, %edx
815 orl %edx, %ebp
816 movl %esi, %edx
817 roll $5, %edx
818 addl %edx, %ebp
819 addl %ebp, %edi
820
821 movl 48(%esp), %edx
822 movl %esi, %ebp
823 xorl 56(%esp), %edx
824 orl %eax, %ebp
825 xorl 16(%esp), %edx
826 andl %ecx, %ebp
827 xorl 36(%esp), %edx
828.byte 209
829.byte 194
830 movl %edx, 48(%esp)
831 leal 2400959708(%edx,%ebx,1),%edx
832 movl %esi, %ebx
833 rorl $2, %esi
834 andl %eax, %ebx
835 orl %ebx, %ebp
836 movl %edi, %ebx
837 roll $5, %ebx
838 addl %ebx, %ebp
839 addl %ebp, %edx
840
841 movl 52(%esp), %ebx
842 movl %edi, %ebp
843 xorl 60(%esp), %ebx
844 orl %esi, %ebp
845 xorl 20(%esp), %ebx
846 andl %eax, %ebp
847 xorl 40(%esp), %ebx
848.byte 209
849.byte 195
850 movl %ebx, 52(%esp)
851 leal 2400959708(%ebx,%ecx,1),%ebx
852 movl %edi, %ecx
853 rorl $2, %edi
854 andl %esi, %ecx
855 orl %ecx, %ebp
856 movl %edx, %ecx
857 roll $5, %ecx
858 addl %ecx, %ebp
859 addl %ebp, %ebx
860
861 movl 56(%esp), %ecx
862 movl %edx, %ebp
863 xorl (%esp), %ecx
864 orl %edi, %ebp
865 xorl 24(%esp), %ecx
866 andl %esi, %ebp
867 xorl 44(%esp), %ecx
868.byte 209
869.byte 193
870 movl %ecx, 56(%esp)
871 leal 2400959708(%ecx,%eax,1),%ecx
872 movl %edx, %eax
873 rorl $2, %edx
874 andl %edi, %eax
875 orl %eax, %ebp
876 movl %ebx, %eax
877 roll $5, %eax
878 addl %eax, %ebp
879 addl %ebp, %ecx
880
881 movl 60(%esp), %eax
882 movl %ebx, %ebp
883 xorl 4(%esp), %eax
884 orl %edx, %ebp
885 xorl 28(%esp), %eax
886 andl %edi, %ebp
887 xorl 48(%esp), %eax
888.byte 209
889.byte 192
890 movl %eax, 60(%esp)
891 leal 2400959708(%eax,%esi,1),%eax
892 movl %ebx, %esi
893 rorl $2, %ebx
894 andl %edx, %esi
895 orl %esi, %ebp
896 movl %ecx, %esi
897 roll $5, %esi
898 addl %esi, %ebp
899 addl %ebp, %eax
900
901 movl (%esp), %esi
902 movl %ecx, %ebp
903 xorl 8(%esp), %esi
904 orl %ebx, %ebp
905 xorl 32(%esp), %esi
906 andl %edx, %ebp
907 xorl 52(%esp), %esi
908.byte 209
909.byte 198
910 movl %esi, (%esp)
911 leal 2400959708(%esi,%edi,1),%esi
912 movl %ecx, %edi
913 rorl $2, %ecx
914 andl %ebx, %edi
915 orl %edi, %ebp
916 movl %eax, %edi
917 roll $5, %edi
918 addl %edi, %ebp
919 addl %ebp, %esi
920
921 movl 4(%esp), %edi
922 movl %eax, %ebp
923 xorl 12(%esp), %edi
924 orl %ecx, %ebp
925 xorl 36(%esp), %edi
926 andl %ebx, %ebp
927 xorl 56(%esp), %edi
928.byte 209
929.byte 199
930 movl %edi, 4(%esp)
931 leal 2400959708(%edi,%edx,1),%edi
932 movl %eax, %edx
933 rorl $2, %eax
934 andl %ecx, %edx
935 orl %edx, %ebp
936 movl %esi, %edx
937 roll $5, %edx
938 addl %edx, %ebp
939 addl %ebp, %edi
940
941 movl 8(%esp), %edx
942 movl %esi, %ebp
943 xorl 16(%esp), %edx
944 orl %eax, %ebp
945 xorl 40(%esp), %edx
946 andl %ecx, %ebp
947 xorl 60(%esp), %edx
948.byte 209
949.byte 194
950 movl %edx, 8(%esp)
951 leal 2400959708(%edx,%ebx,1),%edx
952 movl %esi, %ebx
953 rorl $2, %esi
954 andl %eax, %ebx
955 orl %ebx, %ebp
956 movl %edi, %ebx
957 roll $5, %ebx
958 addl %ebx, %ebp
959 addl %ebp, %edx
960
961 movl 12(%esp), %ebx
962 movl %edi, %ebp
963 xorl 20(%esp), %ebx
964 orl %esi, %ebp
965 xorl 44(%esp), %ebx
966 andl %eax, %ebp
967 xorl (%esp), %ebx
968.byte 209
969.byte 195
970 movl %ebx, 12(%esp)
971 leal 2400959708(%ebx,%ecx,1),%ebx
972 movl %edi, %ecx
973 rorl $2, %edi
974 andl %esi, %ecx
975 orl %ecx, %ebp
976 movl %edx, %ecx
977 roll $5, %ecx
978 addl %ecx, %ebp
979 addl %ebp, %ebx
980
981 movl 16(%esp), %ecx
982 movl %edx, %ebp
983 xorl 24(%esp), %ecx
984 orl %edi, %ebp
985 xorl 48(%esp), %ecx
986 andl %esi, %ebp
987 xorl 4(%esp), %ecx
988.byte 209
989.byte 193
990 movl %ecx, 16(%esp)
991 leal 2400959708(%ecx,%eax,1),%ecx
992 movl %edx, %eax
993 rorl $2, %edx
994 andl %edi, %eax
995 orl %eax, %ebp
996 movl %ebx, %eax
997 roll $5, %eax
998 addl %eax, %ebp
999 addl %ebp, %ecx
1000
1001 movl 20(%esp), %eax
1002 movl %ebx, %ebp
1003 xorl 28(%esp), %eax
1004 orl %edx, %ebp
1005 xorl 52(%esp), %eax
1006 andl %edi, %ebp
1007 xorl 8(%esp), %eax
1008.byte 209
1009.byte 192
1010 movl %eax, 20(%esp)
1011 leal 2400959708(%eax,%esi,1),%eax
1012 movl %ebx, %esi
1013 rorl $2, %ebx
1014 andl %edx, %esi
1015 orl %esi, %ebp
1016 movl %ecx, %esi
1017 roll $5, %esi
1018 addl %esi, %ebp
1019 addl %ebp, %eax
1020
1021 movl 24(%esp), %esi
1022 movl %ecx, %ebp
1023 xorl 32(%esp), %esi
1024 orl %ebx, %ebp
1025 xorl 56(%esp), %esi
1026 andl %edx, %ebp
1027 xorl 12(%esp), %esi
1028.byte 209
1029.byte 198
1030 movl %esi, 24(%esp)
1031 leal 2400959708(%esi,%edi,1),%esi
1032 movl %ecx, %edi
1033 rorl $2, %ecx
1034 andl %ebx, %edi
1035 orl %edi, %ebp
1036 movl %eax, %edi
1037 roll $5, %edi
1038 addl %edi, %ebp
1039 addl %ebp, %esi
1040
1041 movl 28(%esp), %edi
1042 movl %eax, %ebp
1043 xorl 36(%esp), %edi
1044 orl %ecx, %ebp
1045 xorl 60(%esp), %edi
1046 andl %ebx, %ebp
1047 xorl 16(%esp), %edi
1048.byte 209
1049.byte 199
1050 movl %edi, 28(%esp)
1051 leal 2400959708(%edi,%edx,1),%edi
1052 movl %eax, %edx
1053 rorl $2, %eax
1054 andl %ecx, %edx
1055 orl %edx, %ebp
1056 movl %esi, %edx
1057 roll $5, %edx
1058 addl %edx, %ebp
1059 addl %ebp, %edi
1060
1061 movl 32(%esp), %edx
1062 movl %esi, %ebp
1063 xorl 40(%esp), %edx
1064 orl %eax, %ebp
1065 xorl (%esp), %edx
1066 andl %ecx, %ebp
1067 xorl 20(%esp), %edx
1068.byte 209
1069.byte 194
1070 movl %edx, 32(%esp)
1071 leal 2400959708(%edx,%ebx,1),%edx
1072 movl %esi, %ebx
1073 rorl $2, %esi
1074 andl %eax, %ebx
1075 orl %ebx, %ebp
1076 movl %edi, %ebx
1077 roll $5, %ebx
1078 addl %ebx, %ebp
1079 addl %ebp, %edx
1080
1081 movl 36(%esp), %ebx
1082 movl %edi, %ebp
1083 xorl 44(%esp), %ebx
1084 orl %esi, %ebp
1085 xorl 4(%esp), %ebx
1086 andl %eax, %ebp
1087 xorl 24(%esp), %ebx
1088.byte 209
1089.byte 195
1090 movl %ebx, 36(%esp)
1091 leal 2400959708(%ebx,%ecx,1),%ebx
1092 movl %edi, %ecx
1093 rorl $2, %edi
1094 andl %esi, %ecx
1095 orl %ecx, %ebp
1096 movl %edx, %ecx
1097 roll $5, %ecx
1098 addl %ecx, %ebp
1099 addl %ebp, %ebx
1100
1101 movl 40(%esp), %ecx
1102 movl %edx, %ebp
1103 xorl 48(%esp), %ecx
1104 orl %edi, %ebp
1105 xorl 8(%esp), %ecx
1106 andl %esi, %ebp
1107 xorl 28(%esp), %ecx
1108.byte 209
1109.byte 193
1110 movl %ecx, 40(%esp)
1111 leal 2400959708(%ecx,%eax,1),%ecx
1112 movl %edx, %eax
1113 rorl $2, %edx
1114 andl %edi, %eax
1115 orl %eax, %ebp
1116 movl %ebx, %eax
1117 roll $5, %eax
1118 addl %eax, %ebp
1119 addl %ebp, %ecx
1120
1121 movl 44(%esp), %eax
1122 movl %ebx, %ebp
1123 xorl 52(%esp), %eax
1124 orl %edx, %ebp
1125 xorl 12(%esp), %eax
1126 andl %edi, %ebp
1127 xorl 32(%esp), %eax
1128.byte 209
1129.byte 192
1130 movl %eax, 44(%esp)
1131 leal 2400959708(%eax,%esi,1),%eax
1132 movl %ebx, %esi
1133 rorl $2, %ebx
1134 andl %edx, %esi
1135 orl %esi, %ebp
1136 movl %ecx, %esi
1137 roll $5, %esi
1138 addl %esi, %ebp
1139 addl %ebp, %eax
1140
1141 movl 48(%esp), %esi
1142 movl %ecx, %ebp
1143 xorl 56(%esp), %esi
1144 rorl $2, %ecx
1145 xorl 16(%esp), %esi
1146 xorl %ebx, %ebp
1147 xorl 36(%esp), %esi
1148 xorl %edx, %ebp
1149.byte 209
1150.byte 198
1151 movl %esi, 48(%esp)
1152 leal 3395469782(%esi,%edi,1),%esi
1153 movl %eax, %edi
1154 roll $5, %edi
1155 addl %ebp, %esi
1156 addl %edi, %esi
1157
1158 movl 52(%esp), %edi
1159 movl %eax, %ebp
1160 xorl 60(%esp), %edi
1161 rorl $2, %eax
1162 xorl 20(%esp), %edi
1163 xorl %ecx, %ebp
1164 xorl 40(%esp), %edi
1165 xorl %ebx, %ebp
1166.byte 209
1167.byte 199
1168 movl %edi, 52(%esp)
1169 leal 3395469782(%edi,%edx,1),%edi
1170 movl %esi, %edx
1171 roll $5, %edx
1172 addl %ebp, %edi
1173 addl %edx, %edi
1174
1175 movl 56(%esp), %edx
1176 movl %esi, %ebp
1177 xorl (%esp), %edx
1178 rorl $2, %esi
1179 xorl 24(%esp), %edx
1180 xorl %eax, %ebp
1181 xorl 44(%esp), %edx
1182 xorl %ecx, %ebp
1183.byte 209
1184.byte 194
1185 movl %edx, 56(%esp)
1186 leal 3395469782(%edx,%ebx,1),%edx
1187 movl %edi, %ebx
1188 roll $5, %ebx
1189 addl %ebp, %edx
1190 addl %ebx, %edx
1191
1192 movl 60(%esp), %ebx
1193 movl %edi, %ebp
1194 xorl 4(%esp), %ebx
1195 rorl $2, %edi
1196 xorl 28(%esp), %ebx
1197 xorl %esi, %ebp
1198 xorl 48(%esp), %ebx
1199 xorl %eax, %ebp
1200.byte 209
1201.byte 195
1202 movl %ebx, 60(%esp)
1203 leal 3395469782(%ebx,%ecx,1),%ebx
1204 movl %edx, %ecx
1205 roll $5, %ecx
1206 addl %ebp, %ebx
1207 addl %ecx, %ebx
1208
1209 movl (%esp), %ecx
1210 movl %edx, %ebp
1211 xorl 8(%esp), %ecx
1212 rorl $2, %edx
1213 xorl 32(%esp), %ecx
1214 xorl %edi, %ebp
1215 xorl 52(%esp), %ecx
1216 xorl %esi, %ebp
1217.byte 209
1218.byte 193
1219 movl %ecx, (%esp)
1220 leal 3395469782(%ecx,%eax,1),%ecx
1221 movl %ebx, %eax
1222 roll $5, %eax
1223 addl %ebp, %ecx
1224 addl %eax, %ecx
1225
1226 movl 4(%esp), %eax
1227 movl %ebx, %ebp
1228 xorl 12(%esp), %eax
1229 rorl $2, %ebx
1230 xorl 36(%esp), %eax
1231 xorl %edx, %ebp
1232 xorl 56(%esp), %eax
1233 xorl %edi, %ebp
1234.byte 209
1235.byte 192
1236 movl %eax, 4(%esp)
1237 leal 3395469782(%eax,%esi,1),%eax
1238 movl %ecx, %esi
1239 roll $5, %esi
1240 addl %ebp, %eax
1241 addl %esi, %eax
1242
1243 movl 8(%esp), %esi
1244 movl %ecx, %ebp
1245 xorl 16(%esp), %esi
1246 rorl $2, %ecx
1247 xorl 40(%esp), %esi
1248 xorl %ebx, %ebp
1249 xorl 60(%esp), %esi
1250 xorl %edx, %ebp
1251.byte 209
1252.byte 198
1253 movl %esi, 8(%esp)
1254 leal 3395469782(%esi,%edi,1),%esi
1255 movl %eax, %edi
1256 roll $5, %edi
1257 addl %ebp, %esi
1258 addl %edi, %esi
1259
1260 movl 12(%esp), %edi
1261 movl %eax, %ebp
1262 xorl 20(%esp), %edi
1263 rorl $2, %eax
1264 xorl 44(%esp), %edi
1265 xorl %ecx, %ebp
1266 xorl (%esp), %edi
1267 xorl %ebx, %ebp
1268.byte 209
1269.byte 199
1270 movl %edi, 12(%esp)
1271 leal 3395469782(%edi,%edx,1),%edi
1272 movl %esi, %edx
1273 roll $5, %edx
1274 addl %ebp, %edi
1275 addl %edx, %edi
1276
1277 movl 16(%esp), %edx
1278 movl %esi, %ebp
1279 xorl 24(%esp), %edx
1280 rorl $2, %esi
1281 xorl 48(%esp), %edx
1282 xorl %eax, %ebp
1283 xorl 4(%esp), %edx
1284 xorl %ecx, %ebp
1285.byte 209
1286.byte 194
1287 movl %edx, 16(%esp)
1288 leal 3395469782(%edx,%ebx,1),%edx
1289 movl %edi, %ebx
1290 roll $5, %ebx
1291 addl %ebp, %edx
1292 addl %ebx, %edx
1293
1294 movl 20(%esp), %ebx
1295 movl %edi, %ebp
1296 xorl 28(%esp), %ebx
1297 rorl $2, %edi
1298 xorl 52(%esp), %ebx
1299 xorl %esi, %ebp
1300 xorl 8(%esp), %ebx
1301 xorl %eax, %ebp
1302.byte 209
1303.byte 195
1304 movl %ebx, 20(%esp)
1305 leal 3395469782(%ebx,%ecx,1),%ebx
1306 movl %edx, %ecx
1307 roll $5, %ecx
1308 addl %ebp, %ebx
1309 addl %ecx, %ebx
1310
1311 movl 24(%esp), %ecx
1312 movl %edx, %ebp
1313 xorl 32(%esp), %ecx
1314 rorl $2, %edx
1315 xorl 56(%esp), %ecx
1316 xorl %edi, %ebp
1317 xorl 12(%esp), %ecx
1318 xorl %esi, %ebp
1319.byte 209
1320.byte 193
1321 movl %ecx, 24(%esp)
1322 leal 3395469782(%ecx,%eax,1),%ecx
1323 movl %ebx, %eax
1324 roll $5, %eax
1325 addl %ebp, %ecx
1326 addl %eax, %ecx
1327
1328 movl 28(%esp), %eax
1329 movl %ebx, %ebp
1330 xorl 36(%esp), %eax
1331 rorl $2, %ebx
1332 xorl 60(%esp), %eax
1333 xorl %edx, %ebp
1334 xorl 16(%esp), %eax
1335 xorl %edi, %ebp
1336.byte 209
1337.byte 192
1338 movl %eax, 28(%esp)
1339 leal 3395469782(%eax,%esi,1),%eax
1340 movl %ecx, %esi
1341 roll $5, %esi
1342 addl %ebp, %eax
1343 addl %esi, %eax
1344
1345 movl 32(%esp), %esi
1346 movl %ecx, %ebp
1347 xorl 40(%esp), %esi
1348 rorl $2, %ecx
1349 xorl (%esp), %esi
1350 xorl %ebx, %ebp
1351 xorl 20(%esp), %esi
1352 xorl %edx, %ebp
1353.byte 209
1354.byte 198
1355 movl %esi, 32(%esp)
1356 leal 3395469782(%esi,%edi,1),%esi
1357 movl %eax, %edi
1358 roll $5, %edi
1359 addl %ebp, %esi
1360 addl %edi, %esi
1361
1362 movl 36(%esp), %edi
1363 movl %eax, %ebp
1364 xorl 44(%esp), %edi
1365 rorl $2, %eax
1366 xorl 4(%esp), %edi
1367 xorl %ecx, %ebp
1368 xorl 24(%esp), %edi
1369 xorl %ebx, %ebp
1370.byte 209
1371.byte 199
1372 movl %edi, 36(%esp)
1373 leal 3395469782(%edi,%edx,1),%edi
1374 movl %esi, %edx
1375 roll $5, %edx
1376 addl %ebp, %edi
1377 addl %edx, %edi
1378
1379 movl 40(%esp), %edx
1380 movl %esi, %ebp
1381 xorl 48(%esp), %edx
1382 rorl $2, %esi
1383 xorl 8(%esp), %edx
1384 xorl %eax, %ebp
1385 xorl 28(%esp), %edx
1386 xorl %ecx, %ebp
1387.byte 209
1388.byte 194
1389 movl %edx, 40(%esp)
1390 leal 3395469782(%edx,%ebx,1),%edx
1391 movl %edi, %ebx
1392 roll $5, %ebx
1393 addl %ebp, %edx
1394 addl %ebx, %edx
1395
1396 movl 44(%esp), %ebx
1397 movl %edi, %ebp
1398 xorl 52(%esp), %ebx
1399 rorl $2, %edi
1400 xorl 12(%esp), %ebx
1401 xorl %esi, %ebp
1402 xorl 32(%esp), %ebx
1403 xorl %eax, %ebp
1404.byte 209
1405.byte 195
1406 movl %ebx, 44(%esp)
1407 leal 3395469782(%ebx,%ecx,1),%ebx
1408 movl %edx, %ecx
1409 roll $5, %ecx
1410 addl %ebp, %ebx
1411 addl %ecx, %ebx
1412
1413 movl 48(%esp), %ecx
1414 movl %edx, %ebp
1415 xorl 56(%esp), %ecx
1416 rorl $2, %edx
1417 xorl 16(%esp), %ecx
1418 xorl %edi, %ebp
1419 xorl 36(%esp), %ecx
1420 xorl %esi, %ebp
1421.byte 209
1422.byte 193
1423 movl %ecx, 48(%esp)
1424 leal 3395469782(%ecx,%eax,1),%ecx
1425 movl %ebx, %eax
1426 roll $5, %eax
1427 addl %ebp, %ecx
1428 addl %eax, %ecx
1429
1430 movl 52(%esp), %eax
1431 movl %ebx, %ebp
1432 xorl 60(%esp), %eax
1433 rorl $2, %ebx
1434 xorl 20(%esp), %eax
1435 xorl %edx, %ebp
1436 xorl 40(%esp), %eax
1437 xorl %edi, %ebp
1438.byte 209
1439.byte 192
1440 movl %eax, 52(%esp)
1441 leal 3395469782(%eax,%esi,1),%eax
1442 movl %ecx, %esi
1443 roll $5, %esi
1444 addl %ebp, %eax
1445 addl %esi, %eax
1446
1447 movl 56(%esp), %esi
1448 movl %ecx, %ebp
1449 xorl (%esp), %esi
1450 rorl $2, %ecx
1451 xorl 24(%esp), %esi
1452 xorl %ebx, %ebp
1453 xorl 44(%esp), %esi
1454 xorl %edx, %ebp
1455.byte 209
1456.byte 198
1457 movl %esi, 56(%esp)
1458 leal 3395469782(%esi,%edi,1),%esi
1459 movl %eax, %edi
1460 roll $5, %edi
1461 addl %ebp, %esi
1462 addl %edi, %esi
1463
1464 movl 60(%esp), %edi
1465 movl %eax, %ebp
1466 xorl 4(%esp), %edi
1467 rorl $2, %eax
1468 xorl 28(%esp), %edi
1469 xorl %ecx, %ebp
1470 xorl 48(%esp), %edi
1471 xorl %ebx, %ebp
1472.byte 209
1473.byte 199
1474 movl %edi, 60(%esp)
1475 leal 3395469782(%edi,%edx,1),%edi
1476 movl %esi, %edx
1477 roll $5, %edx
1478 addl %ebp, %edi
1479 addl %edx, %edi
1480
1481
1482 movl 128(%esp), %ebp
1483 movl 12(%ebp), %edx
1484 addl %ecx, %edx
1485 movl 4(%ebp), %ecx
1486 addl %esi, %ecx
1487 movl %eax, %esi
1488 movl (%ebp), %eax
1489 movl %edx, 12(%ebp)
1490 addl %edi, %eax
1491 movl 16(%ebp), %edi
1492 addl %ebx, %edi
1493 movl 8(%ebp), %ebx
1494 addl %esi, %ebx
1495 movl %eax, (%ebp)
1496 movl 132(%esp), %esi
1497 movl %ebx, 8(%ebp)
1498 addl $64, %esi
1499 movl 68(%esp), %eax
1500 movl %edi, 16(%ebp)
1501 cmpl %eax, %esi
1502 movl %ecx, 4(%ebp)
1503 jb .L000start
1504 addl $108, %esp
1505 popl %edi
1506 popl %ebx
1507 popl %ebp
1508 popl %esi
1509 ret
1510.L_sha1_block_asm_data_order_end:
1511 .size sha1_block_asm_data_order,.L_sha1_block_asm_data_order_end-sha1_block_asm_data_order
1512.ident "desasm.pl"
1513.text
1514 .align 16
1515.globl sha1_block_asm_host_order
1516 .type sha1_block_asm_host_order,@function
1517sha1_block_asm_host_order:
1518 movl 12(%esp), %ecx
1519 pushl %esi
1520 sall $6, %ecx
1521 movl 12(%esp), %esi
1522 pushl %ebp
1523 addl %esi, %ecx
1524 pushl %ebx
1525 movl 16(%esp), %ebp
1526 pushl %edi
1527 movl 12(%ebp), %edx
1528 subl $108, %esp
1529 movl 16(%ebp), %edi
1530 movl 8(%ebp), %ebx
1531 movl %ecx, 68(%esp)
1532
1533 movl (%esi), %eax
1534 movl 4(%esi), %ecx
1535 movl %eax, (%esp)
1536 movl %ecx, 4(%esp)
1537 movl 8(%esi), %eax
1538 movl 12(%esi), %ecx
1539 movl %eax, 8(%esp)
1540 movl %ecx, 12(%esp)
1541 movl 16(%esi), %eax
1542 movl 20(%esi), %ecx
1543 movl %eax, 16(%esp)
1544 movl %ecx, 20(%esp)
1545 movl 24(%esi), %eax
1546 movl 28(%esi), %ecx
1547 movl %eax, 24(%esp)
1548 movl %ecx, 28(%esp)
1549 movl 32(%esi), %eax
1550 movl 36(%esi), %ecx
1551 movl %eax, 32(%esp)
1552 movl %ecx, 36(%esp)
1553 movl 40(%esi), %eax
1554 movl 44(%esi), %ecx
1555 movl %eax, 40(%esp)
1556 movl %ecx, 44(%esp)
1557 movl 48(%esi), %eax
1558 movl 52(%esi), %ecx
1559 movl %eax, 48(%esp)
1560 movl %ecx, 52(%esp)
1561 movl 56(%esi), %eax
1562 movl 60(%esi), %ecx
1563 movl %eax, 56(%esp)
1564 movl %ecx, 60(%esp)
1565 jmp .L001shortcut
1566.L_sha1_block_asm_host_order_end:
1567 .size sha1_block_asm_host_order,.L_sha1_block_asm_host_order_end-sha1_block_asm_host_order
1568.ident "desasm.pl"
diff --git a/src/lib/libssl/src/fips/sha1/fingerprint.sha1 b/src/lib/libssl/src/fips/sha1/fingerprint.sha1
new file mode 100644
index 0000000000..5cb919fdc5
--- /dev/null
+++ b/src/lib/libssl/src/fips/sha1/fingerprint.sha1
@@ -0,0 +1,5 @@
1HMAC-SHA1(fips_sha1dgst.c)= 10575600a9540eb15188a7d3b0b031e60aedbc18
2HMAC-SHA1(fips_sha1_selftest.c)= 98910a0c85eff1688bd7adb23e738dc75b39546e
3HMAC-SHA1(asm/sx86-elf.s)= ae66fb23ab8e1a2287e87a0a2dd30a4b9039fe63
4HMAC-SHA1(fips_sha_locl.h)= c1b4c82eec5f0ee119658456690f3ea9d77ed1c5
5HMAC-SHA1(fips_md32_common.h)= 08a057a7b94acf5df4301ea6c894ce14082e1ec4
diff --git a/src/lib/libssl/src/fips/sha1/fips_md32_common.h b/src/lib/libssl/src/fips/sha1/fips_md32_common.h
new file mode 100644
index 0000000000..cf1110e897
--- /dev/null
+++ b/src/lib/libssl/src/fips/sha1/fips_md32_common.h
@@ -0,0 +1,623 @@
1/* crypto/md32_common.h */
2/* ====================================================================
3 * Copyright (c) 1999-2002 The OpenSSL Project. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in
14 * the documentation and/or other materials provided with the
15 * distribution.
16 *
17 * 3. All advertising materials mentioning features or use of this
18 * software must display the following acknowledgment:
19 * "This product includes software developed by the OpenSSL Project
20 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
21 *
22 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
23 * endorse or promote products derived from this software without
24 * prior written permission. For written permission, please contact
25 * licensing@OpenSSL.org.
26 *
27 * 5. Products derived from this software may not be called "OpenSSL"
28 * nor may "OpenSSL" appear in their names without prior written
29 * permission of the OpenSSL Project.
30 *
31 * 6. Redistributions of any form whatsoever must retain the following
32 * acknowledgment:
33 * "This product includes software developed by the OpenSSL Project
34 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
35 *
36 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
37 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
38 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
39 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
40 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
42 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
43 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
44 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
45 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
46 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
47 * OF THE POSSIBILITY OF SUCH DAMAGE.
48 * ====================================================================
49 *
50 * This product includes cryptographic software written by Eric Young
51 * (eay@cryptsoft.com). This product includes software written by Tim
52 * Hudson (tjh@cryptsoft.com).
53 *
54 */
55
56/*
57 * This is a generic 32 bit "collector" for message digest algorithms.
58 * Whenever needed it collects input character stream into chunks of
59 * 32 bit values and invokes a block function that performs actual hash
60 * calculations.
61 *
62 * Porting guide.
63 *
64 * Obligatory macros:
65 *
66 * DATA_ORDER_IS_BIG_ENDIAN or DATA_ORDER_IS_LITTLE_ENDIAN
67 * this macro defines byte order of input stream.
68 * HASH_CBLOCK
69 * size of a unit chunk HASH_BLOCK operates on.
70 * HASH_LONG
71 * has to be at lest 32 bit wide, if it's wider, then
72 * HASH_LONG_LOG2 *has to* be defined along
73 * HASH_CTX
74 * context structure that at least contains following
75 * members:
76 * typedef struct {
77 * ...
78 * HASH_LONG Nl,Nh;
79 * HASH_LONG data[HASH_LBLOCK];
80 * unsigned int num;
81 * ...
82 * } HASH_CTX;
83 * HASH_UPDATE
84 * name of "Update" function, implemented here.
85 * HASH_TRANSFORM
86 * name of "Transform" function, implemented here.
87 * HASH_FINAL
88 * name of "Final" function, implemented here.
89 * HASH_BLOCK_HOST_ORDER
90 * name of "block" function treating *aligned* input message
91 * in host byte order, implemented externally.
92 * HASH_BLOCK_DATA_ORDER
93 * name of "block" function treating *unaligned* input message
94 * in original (data) byte order, implemented externally (it
95 * actually is optional if data and host are of the same
96 * "endianess").
97 * HASH_MAKE_STRING
98 * macro convering context variables to an ASCII hash string.
99 *
100 * Optional macros:
101 *
102 * B_ENDIAN or L_ENDIAN
103 * defines host byte-order.
104 * HASH_LONG_LOG2
105 * defaults to 2 if not states otherwise.
106 * HASH_LBLOCK
107 * assumed to be HASH_CBLOCK/4 if not stated otherwise.
108 * HASH_BLOCK_DATA_ORDER_ALIGNED
109 * alternative "block" function capable of treating
110 * aligned input message in original (data) order,
111 * implemented externally.
112 *
113 * MD5 example:
114 *
115 * #define DATA_ORDER_IS_LITTLE_ENDIAN
116 *
117 * #define HASH_LONG MD5_LONG
118 * #define HASH_LONG_LOG2 MD5_LONG_LOG2
119 * #define HASH_CTX MD5_CTX
120 * #define HASH_CBLOCK MD5_CBLOCK
121 * #define HASH_LBLOCK MD5_LBLOCK
122 * #define HASH_UPDATE MD5_Update
123 * #define HASH_TRANSFORM MD5_Transform
124 * #define HASH_FINAL MD5_Final
125 * #define HASH_BLOCK_HOST_ORDER md5_block_host_order
126 * #define HASH_BLOCK_DATA_ORDER md5_block_data_order
127 *
128 * <appro@fy.chalmers.se>
129 */
130
131#if !defined(DATA_ORDER_IS_BIG_ENDIAN) && !defined(DATA_ORDER_IS_LITTLE_ENDIAN)
132#error "DATA_ORDER must be defined!"
133#endif
134
135#ifndef HASH_CBLOCK
136#error "HASH_CBLOCK must be defined!"
137#endif
138#ifndef HASH_LONG
139#error "HASH_LONG must be defined!"
140#endif
141#ifndef HASH_CTX
142#error "HASH_CTX must be defined!"
143#endif
144
145#ifndef HASH_UPDATE
146#error "HASH_UPDATE must be defined!"
147#endif
148#ifndef HASH_TRANSFORM
149#error "HASH_TRANSFORM must be defined!"
150#endif
151#ifndef HASH_FINAL
152#error "HASH_FINAL must be defined!"
153#endif
154
155#ifndef HASH_BLOCK_HOST_ORDER
156#error "HASH_BLOCK_HOST_ORDER must be defined!"
157#endif
158
159#if 0
160/*
161 * Moved below as it's required only if HASH_BLOCK_DATA_ORDER_ALIGNED
162 * isn't defined.
163 */
164#ifndef HASH_BLOCK_DATA_ORDER
165#error "HASH_BLOCK_DATA_ORDER must be defined!"
166#endif
167#endif
168
169#ifndef HASH_LBLOCK
170#define HASH_LBLOCK (HASH_CBLOCK/4)
171#endif
172
173#ifndef HASH_LONG_LOG2
174#define HASH_LONG_LOG2 2
175#endif
176
177/*
178 * Engage compiler specific rotate intrinsic function if available.
179 */
180#undef ROTATE
181#ifndef PEDANTIC
182# if defined(_MSC_VER) || defined(__ICC)
183# define ROTATE(a,n) _lrotl(a,n)
184# elif defined(__MWERKS__)
185# if defined(__POWERPC__)
186# define ROTATE(a,n) __rlwinm(a,n,0,31)
187# elif defined(__MC68K__)
188 /* Motorola specific tweak. <appro@fy.chalmers.se> */
189# define ROTATE(a,n) ( n<24 ? __rol(a,n) : __ror(a,32-n) )
190# else
191# define ROTATE(a,n) __rol(a,n)
192# endif
193# elif defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
194 /*
195 * Some GNU C inline assembler templates. Note that these are
196 * rotates by *constant* number of bits! But that's exactly
197 * what we need here...
198 * <appro@fy.chalmers.se>
199 */
200# if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
201# define ROTATE(a,n) ({ register unsigned int ret; \
202 asm ( \
203 "roll %1,%0" \
204 : "=r"(ret) \
205 : "I"(n), "0"(a) \
206 : "cc"); \
207 ret; \
208 })
209# elif defined(__powerpc) || defined(__ppc)
210# define ROTATE(a,n) ({ register unsigned int ret; \
211 asm ( \
212 "rlwinm %0,%1,%2,0,31" \
213 : "=r"(ret) \
214 : "r"(a), "I"(n)); \
215 ret; \
216 })
217# endif
218# endif
219#endif /* PEDANTIC */
220
221#if HASH_LONG_LOG2==2 /* Engage only if sizeof(HASH_LONG)== 4 */
222/* A nice byte order reversal from Wei Dai <weidai@eskimo.com> */
223#ifdef ROTATE
224/* 5 instructions with rotate instruction, else 9 */
225#define REVERSE_FETCH32(a,l) ( \
226 l=*(const HASH_LONG *)(a), \
227 ((ROTATE(l,8)&0x00FF00FF)|(ROTATE((l&0x00FF00FF),24))) \
228 )
229#else
230/* 6 instructions with rotate instruction, else 8 */
231#define REVERSE_FETCH32(a,l) ( \
232 l=*(const HASH_LONG *)(a), \
233 l=(((l>>8)&0x00FF00FF)|((l&0x00FF00FF)<<8)), \
234 ROTATE(l,16) \
235 )
236/*
237 * Originally the middle line started with l=(((l&0xFF00FF00)>>8)|...
238 * It's rewritten as above for two reasons:
239 * - RISCs aren't good at long constants and have to explicitely
240 * compose 'em with several (well, usually 2) instructions in a
241 * register before performing the actual operation and (as you
242 * already realized:-) having same constant should inspire the
243 * compiler to permanently allocate the only register for it;
244 * - most modern CPUs have two ALUs, but usually only one has
245 * circuitry for shifts:-( this minor tweak inspires compiler
246 * to schedule shift instructions in a better way...
247 *
248 * <appro@fy.chalmers.se>
249 */
250#endif
251#endif
252
253#ifndef ROTATE
254#define ROTATE(a,n) (((a)<<(n))|(((a)&0xffffffff)>>(32-(n))))
255#endif
256
257/*
258 * Make some obvious choices. E.g., HASH_BLOCK_DATA_ORDER_ALIGNED
259 * and HASH_BLOCK_HOST_ORDER ought to be the same if input data
260 * and host are of the same "endianess". It's possible to mask
261 * this with blank #define HASH_BLOCK_DATA_ORDER though...
262 *
263 * <appro@fy.chalmers.se>
264 */
265#if defined(B_ENDIAN)
266# if defined(DATA_ORDER_IS_BIG_ENDIAN)
267# if !defined(HASH_BLOCK_DATA_ORDER_ALIGNED) && HASH_LONG_LOG2==2
268# define HASH_BLOCK_DATA_ORDER_ALIGNED HASH_BLOCK_HOST_ORDER
269# endif
270# endif
271#elif defined(L_ENDIAN)
272# if defined(DATA_ORDER_IS_LITTLE_ENDIAN)
273# if !defined(HASH_BLOCK_DATA_ORDER_ALIGNED) && HASH_LONG_LOG2==2
274# define HASH_BLOCK_DATA_ORDER_ALIGNED HASH_BLOCK_HOST_ORDER
275# endif
276# endif
277#endif
278
279#if !defined(HASH_BLOCK_DATA_ORDER_ALIGNED)
280#ifndef HASH_BLOCK_DATA_ORDER
281#error "HASH_BLOCK_DATA_ORDER must be defined!"
282#endif
283#endif
284
285#if defined(DATA_ORDER_IS_BIG_ENDIAN)
286
287#ifndef PEDANTIC
288# if defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
289# if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
290 /*
291 * This gives ~30-40% performance improvement in SHA-256 compiled
292 * with gcc [on P4]. Well, first macro to be frank. We can pull
293 * this trick on x86* platforms only, because these CPUs can fetch
294 * unaligned data without raising an exception.
295 */
296# define HOST_c2l(c,l) ({ unsigned int r=*((const unsigned int *)(c)); \
297 asm ("bswapl %0":"=r"(r):"0"(r)); \
298 (c)+=4; (l)=r; })
299# define HOST_l2c(l,c) ({ unsigned int r=(l); \
300 asm ("bswapl %0":"=r"(r):"0"(r)); \
301 *((unsigned int *)(c))=r; (c)+=4; r; })
302# endif
303# endif
304#endif
305
306#ifndef HOST_c2l
307#define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++)))<<24), \
308 l|=(((unsigned long)(*((c)++)))<<16), \
309 l|=(((unsigned long)(*((c)++)))<< 8), \
310 l|=(((unsigned long)(*((c)++))) ), \
311 l)
312#endif
313#define HOST_p_c2l(c,l,n) { \
314 switch (n) { \
315 case 0: l =((unsigned long)(*((c)++)))<<24; \
316 case 1: l|=((unsigned long)(*((c)++)))<<16; \
317 case 2: l|=((unsigned long)(*((c)++)))<< 8; \
318 case 3: l|=((unsigned long)(*((c)++))); \
319 } }
320#define HOST_p_c2l_p(c,l,sc,len) { \
321 switch (sc) { \
322 case 0: l =((unsigned long)(*((c)++)))<<24; \
323 if (--len == 0) break; \
324 case 1: l|=((unsigned long)(*((c)++)))<<16; \
325 if (--len == 0) break; \
326 case 2: l|=((unsigned long)(*((c)++)))<< 8; \
327 } }
328/* NOTE the pointer is not incremented at the end of this */
329#define HOST_c2l_p(c,l,n) { \
330 l=0; (c)+=n; \
331 switch (n) { \
332 case 3: l =((unsigned long)(*(--(c))))<< 8; \
333 case 2: l|=((unsigned long)(*(--(c))))<<16; \
334 case 1: l|=((unsigned long)(*(--(c))))<<24; \
335 } }
336#ifndef HOST_l2c
337#define HOST_l2c(l,c) (*((c)++)=(unsigned char)(((l)>>24)&0xff), \
338 *((c)++)=(unsigned char)(((l)>>16)&0xff), \
339 *((c)++)=(unsigned char)(((l)>> 8)&0xff), \
340 *((c)++)=(unsigned char)(((l) )&0xff), \
341 l)
342#endif
343
344#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
345
346#if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
347 /* See comment in DATA_ORDER_IS_BIG_ENDIAN section. */
348# define HOST_c2l(c,l) ((l)=*((const unsigned int *)(c)), (c)+=4, l)
349# define HOST_l2c(l,c) (*((unsigned int *)(c))=(l), (c)+=4, l)
350#endif
351
352#ifndef HOST_c2l
353#define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++))) ), \
354 l|=(((unsigned long)(*((c)++)))<< 8), \
355 l|=(((unsigned long)(*((c)++)))<<16), \
356 l|=(((unsigned long)(*((c)++)))<<24), \
357 l)
358#endif
359#define HOST_p_c2l(c,l,n) { \
360 switch (n) { \
361 case 0: l =((unsigned long)(*((c)++))); \
362 case 1: l|=((unsigned long)(*((c)++)))<< 8; \
363 case 2: l|=((unsigned long)(*((c)++)))<<16; \
364 case 3: l|=((unsigned long)(*((c)++)))<<24; \
365 } }
366#define HOST_p_c2l_p(c,l,sc,len) { \
367 switch (sc) { \
368 case 0: l =((unsigned long)(*((c)++))); \
369 if (--len == 0) break; \
370 case 1: l|=((unsigned long)(*((c)++)))<< 8; \
371 if (--len == 0) break; \
372 case 2: l|=((unsigned long)(*((c)++)))<<16; \
373 } }
374/* NOTE the pointer is not incremented at the end of this */
375#define HOST_c2l_p(c,l,n) { \
376 l=0; (c)+=n; \
377 switch (n) { \
378 case 3: l =((unsigned long)(*(--(c))))<<16; \
379 case 2: l|=((unsigned long)(*(--(c))))<< 8; \
380 case 1: l|=((unsigned long)(*(--(c)))); \
381 } }
382#ifndef HOST_l2c
383#define HOST_l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \
384 *((c)++)=(unsigned char)(((l)>> 8)&0xff), \
385 *((c)++)=(unsigned char)(((l)>>16)&0xff), \
386 *((c)++)=(unsigned char)(((l)>>24)&0xff), \
387 l)
388#endif
389
390#endif
391
392/*
393 * Time for some action:-)
394 */
395
396int HASH_UPDATE (HASH_CTX *c, const void *data_, FIPS_SHA_SIZE_T len)
397 {
398 const unsigned char *data=data_;
399 register HASH_LONG * p;
400 register HASH_LONG l;
401 size_t sw,sc,ew,ec;
402
403 if(FIPS_selftest_failed())
404 return 0;
405
406 if (len==0) return 1;
407
408 l=(c->Nl+(((HASH_LONG)len)<<3))&0xffffffffUL;
409 /* 95-05-24 eay Fixed a bug with the overflow handling, thanks to
410 * Wei Dai <weidai@eskimo.com> for pointing it out. */
411 if (l < c->Nl) /* overflow */
412 c->Nh++;
413 c->Nh+=(len>>29); /* might cause compiler warning on 16-bit */
414 c->Nl=l;
415
416 if (c->num != 0)
417 {
418 p=c->data;
419 sw=c->num>>2;
420 sc=c->num&0x03;
421
422 if ((c->num+len) >= HASH_CBLOCK)
423 {
424 l=p[sw]; HOST_p_c2l(data,l,sc); p[sw++]=l;
425 for (; sw<HASH_LBLOCK; sw++)
426 {
427 HOST_c2l(data,l); p[sw]=l;
428 }
429 HASH_BLOCK_HOST_ORDER (c,p,1);
430 len-=(HASH_CBLOCK-c->num);
431 c->num=0;
432 /* drop through and do the rest */
433 }
434 else
435 {
436 c->num+=(unsigned int)len;
437 if ((sc+len) < 4) /* ugly, add char's to a word */
438 {
439 l=p[sw]; HOST_p_c2l_p(data,l,sc,len); p[sw]=l;
440 }
441 else
442 {
443 ew=(c->num>>2);
444 ec=(c->num&0x03);
445 if (sc)
446 l=p[sw];
447 HOST_p_c2l(data,l,sc);
448 p[sw++]=l;
449 for (; sw < ew; sw++)
450 {
451 HOST_c2l(data,l); p[sw]=l;
452 }
453 if (ec)
454 {
455 HOST_c2l_p(data,l,ec); p[sw]=l;
456 }
457 }
458 return 1;
459 }
460 }
461
462 sw=len/HASH_CBLOCK;
463 if (sw > 0)
464 {
465#if defined(HASH_BLOCK_DATA_ORDER_ALIGNED)
466 /*
467 * Note that HASH_BLOCK_DATA_ORDER_ALIGNED gets defined
468 * only if sizeof(HASH_LONG)==4.
469 */
470 if ((((size_t)data)%4) == 0)
471 {
472 /* data is properly aligned so that we can cast it: */
473 HASH_BLOCK_DATA_ORDER_ALIGNED (c,(const HASH_LONG *)data,sw);
474 sw*=HASH_CBLOCK;
475 data+=sw;
476 len-=sw;
477 }
478 else
479#if !defined(HASH_BLOCK_DATA_ORDER)
480 while (sw--)
481 {
482 memcpy (p=c->data,data,HASH_CBLOCK);
483 HASH_BLOCK_DATA_ORDER_ALIGNED(c,p,1);
484 data+=HASH_CBLOCK;
485 len-=HASH_CBLOCK;
486 }
487#endif
488#endif
489#if defined(HASH_BLOCK_DATA_ORDER)
490 {
491 HASH_BLOCK_DATA_ORDER(c,data,sw);
492 sw*=HASH_CBLOCK;
493 data+=sw;
494 len-=sw;
495 }
496#endif
497 }
498
499 if (len!=0)
500 {
501 p = c->data;
502 c->num = len;
503 ew=len>>2; /* words to copy */
504 ec=len&0x03;
505 for (; ew; ew--,p++)
506 {
507 HOST_c2l(data,l); *p=l;
508 }
509 HOST_c2l_p(data,l,ec);
510 *p=l;
511 }
512 return 1;
513 }
514
515
516void HASH_TRANSFORM (HASH_CTX *c, const unsigned char *data)
517 {
518#if defined(HASH_BLOCK_DATA_ORDER_ALIGNED)
519 if ((((size_t)data)%4) == 0)
520 /* data is properly aligned so that we can cast it: */
521 HASH_BLOCK_DATA_ORDER_ALIGNED (c,(const HASH_LONG *)data,1);
522 else
523#if !defined(HASH_BLOCK_DATA_ORDER)
524 {
525 memcpy (c->data,data,HASH_CBLOCK);
526 HASH_BLOCK_DATA_ORDER_ALIGNED (c,c->data,1);
527 }
528#endif
529#endif
530#if defined(HASH_BLOCK_DATA_ORDER)
531 HASH_BLOCK_DATA_ORDER (c,data,1);
532#endif
533 }
534
535
536int HASH_FINAL (unsigned char *md, HASH_CTX *c)
537 {
538 register HASH_LONG *p;
539 register unsigned long l;
540 register int i,j;
541 static const unsigned char end[4]={0x80,0x00,0x00,0x00};
542 const unsigned char *cp=end;
543
544 /* c->num should definitly have room for at least one more byte. */
545 p=c->data;
546 i=c->num>>2;
547 j=c->num&0x03;
548
549#if 0
550 /* purify often complains about the following line as an
551 * Uninitialized Memory Read. While this can be true, the
552 * following p_c2l macro will reset l when that case is true.
553 * This is because j&0x03 contains the number of 'valid' bytes
554 * already in p[i]. If and only if j&0x03 == 0, the UMR will
555 * occur but this is also the only time p_c2l will do
556 * l= *(cp++) instead of l|= *(cp++)
557 * Many thanks to Alex Tang <altitude@cic.net> for pickup this
558 * 'potential bug' */
559#ifdef PURIFY
560 if (j==0) p[i]=0; /* Yeah, but that's not the way to fix it:-) */
561#endif
562 l=p[i];
563#else
564 l = (j==0) ? 0 : p[i];
565#endif
566 HOST_p_c2l(cp,l,j); p[i++]=l; /* i is the next 'undefined word' */
567
568 if (i>(HASH_LBLOCK-2)) /* save room for Nl and Nh */
569 {
570 if (i<HASH_LBLOCK) p[i]=0;
571 HASH_BLOCK_HOST_ORDER (c,p,1);
572 i=0;
573 }
574 for (; i<(HASH_LBLOCK-2); i++)
575 p[i]=0;
576
577#if defined(DATA_ORDER_IS_BIG_ENDIAN)
578 p[HASH_LBLOCK-2]=c->Nh;
579 p[HASH_LBLOCK-1]=c->Nl;
580#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
581 p[HASH_LBLOCK-2]=c->Nl;
582 p[HASH_LBLOCK-1]=c->Nh;
583#endif
584 HASH_BLOCK_HOST_ORDER (c,p,1);
585
586#ifndef HASH_MAKE_STRING
587#error "HASH_MAKE_STRING must be defined!"
588#else
589 HASH_MAKE_STRING(c,md);
590#endif
591
592 c->num=0;
593 /* clear stuff, HASH_BLOCK may be leaving some stuff on the stack
594 * but I'm not worried :-)
595 OPENSSL_cleanse((void *)c,sizeof(HASH_CTX));
596 */
597 return 1;
598 }
599
600#ifndef MD32_REG_T
601#define MD32_REG_T long
602/*
603 * This comment was originaly written for MD5, which is why it
604 * discusses A-D. But it basically applies to all 32-bit digests,
605 * which is why it was moved to common header file.
606 *
607 * In case you wonder why A-D are declared as long and not
608 * as MD5_LONG. Doing so results in slight performance
609 * boost on LP64 architectures. The catch is we don't
610 * really care if 32 MSBs of a 64-bit register get polluted
611 * with eventual overflows as we *save* only 32 LSBs in
612 * *either* case. Now declaring 'em long excuses the compiler
613 * from keeping 32 MSBs zeroed resulting in 13% performance
614 * improvement under SPARC Solaris7/64 and 5% under AlphaLinux.
615 * Well, to be honest it should say that this *prevents*
616 * performance degradation.
617 * <appro@fy.chalmers.se>
618 * Apparently there're LP64 compilers that generate better
619 * code if A-D are declared int. Most notably GCC-x86_64
620 * generates better code.
621 * <appro@fy.chalmers.se>
622 */
623#endif
diff --git a/src/lib/libssl/src/fips/sha1/fips_sha1_selftest.c b/src/lib/libssl/src/fips/sha1/fips_sha1_selftest.c
new file mode 100644
index 0000000000..248539acb0
--- /dev/null
+++ b/src/lib/libssl/src/fips/sha1/fips_sha1_selftest.c
@@ -0,0 +1,97 @@
1/* ====================================================================
2 * Copyright (c) 2003 The OpenSSL Project. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in
13 * the documentation and/or other materials provided with the
14 * distribution.
15 *
16 * 3. All advertising materials mentioning features or use of this
17 * software must display the following acknowledgment:
18 * "This product includes software developed by the OpenSSL Project
19 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
20 *
21 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
22 * endorse or promote products derived from this software without
23 * prior written permission. For written permission, please contact
24 * openssl-core@openssl.org.
25 *
26 * 5. Products derived from this software may not be called "OpenSSL"
27 * nor may "OpenSSL" appear in their names without prior written
28 * permission of the OpenSSL Project.
29 *
30 * 6. Redistributions of any form whatsoever must retain the following
31 * acknowledgment:
32 * "This product includes software developed by the OpenSSL Project
33 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
34 *
35 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
36 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
37 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
38 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
39 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
41 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
42 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
43 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
44 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
45 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
46 * OF THE POSSIBILITY OF SUCH DAMAGE.
47 *
48 */
49
50#include <string.h>
51#include <openssl/err.h>
52#include <openssl/fips.h>
53#include <openssl/sha.h>
54
55#ifdef OPENSSL_FIPS
56static char *test[]=
57 {
58 "",
59 "abc",
60 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
61 NULL,
62 };
63
64static unsigned char ret[][SHA_DIGEST_LENGTH]=
65 {
66 { 0xda,0x39,0xa3,0xee,0x5e,0x6b,0x4b,0x0d,0x32,0x55,
67 0xbf,0xef,0x95,0x60,0x18,0x90,0xaf,0xd8,0x07,0x09 },
68 { 0xa9,0x99,0x3e,0x36,0x47,0x06,0x81,0x6a,0xba,0x3e,
69 0x25,0x71,0x78,0x50,0xc2,0x6c,0x9c,0xd0,0xd8,0x9d },
70 { 0x84,0x98,0x3e,0x44,0x1c,0x3b,0xd2,0x6e,0xba,0xae,
71 0x4a,0xa1,0xf9,0x51,0x29,0xe5,0xe5,0x46,0x70,0xf1 },
72 };
73
74void FIPS_corrupt_sha1()
75 {
76 ret[0][0]++;
77 }
78
79int FIPS_selftest_sha1()
80 {
81 int n;
82
83 for(n=0 ; test[n] ; ++n)
84 {
85 unsigned char md[SHA_DIGEST_LENGTH];
86
87 SHA1((unsigned char*)test[n],strlen(test[n]),md);
88 if(memcmp(md,ret[n],sizeof md))
89 {
90 FIPSerr(FIPS_F_FIPS_SELFTEST_SHA1,FIPS_R_SELFTEST_FAILED);
91 return 0;
92 }
93 }
94 return 1;
95 }
96
97#endif
diff --git a/src/lib/libssl/src/fips/sha1/fips_sha1dgst.c b/src/lib/libssl/src/fips/sha1/fips_sha1dgst.c
new file mode 100644
index 0000000000..dc2ce7daf0
--- /dev/null
+++ b/src/lib/libssl/src/fips/sha1/fips_sha1dgst.c
@@ -0,0 +1,80 @@
1/* crypto/sha/sha1dgst.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#if !defined(OPENSSL_NO_SHA1) && !defined(OPENSSL_NO_SHA)
60
61#undef SHA_0
62#define SHA_1
63
64#include <openssl/opensslv.h>
65#include <openssl/opensslconf.h>
66
67#ifdef OPENSSL_FIPS
68const char *SHA1_version="SHA1" OPENSSL_VERSION_PTEXT;
69
70/* The implementation is in fips_md32_common.h */
71#include "fips_sha_locl.h"
72
73#else /* ndef OPENSSL_FIPS */
74
75static void *dummy=&dummy;
76
77#endif /* ndef OPENSSL_FIPS */
78
79#endif
80
diff --git a/src/lib/libssl/src/fips/sha1/fips_sha1test.c b/src/lib/libssl/src/fips/sha1/fips_sha1test.c
new file mode 100644
index 0000000000..176d6009bb
--- /dev/null
+++ b/src/lib/libssl/src/fips/sha1/fips_sha1test.c
@@ -0,0 +1,151 @@
1#include <stdio.h>
2#include <assert.h>
3#include <ctype.h>
4#include <string.h>
5#include <stdlib.h>
6#include <openssl/sha.h>
7#include <openssl/err.h>
8#include <openssl/fips.h>
9#ifdef FLAT_INC
10#include "e_os.h"
11#else
12#include "../e_os.h"
13#endif
14
15#ifndef OPENSSL_FIPS
16int main(int argc, char *argv[])
17{
18 printf("No FIPS SHA1 support\n");
19 return(0);
20}
21#else
22
23#define MAX_TEST_BITS 103432
24
25static void dump(const unsigned char *b,int n)
26 {
27 while(n-- > 0)
28 printf("%02X",*b++);
29 }
30
31static void bitfill(unsigned char *buf,int bit,int b,int n)
32 {
33 for( ; n > 0 ; --n,++bit)
34 {
35 assert(bit < MAX_TEST_BITS);
36 buf[bit/8]|=b << (7-bit%8);
37 }
38 }
39
40void montecarlo(unsigned char *seed,int n)
41 {
42 int i,j;
43 unsigned char m[10240];
44
45 memcpy(m,seed,n);
46 for(j=0 ; j < 100 ; ++j)
47 {
48 for(i=1 ; i <= 50000 ; ++i)
49 {
50 memset(m+n,'\0',j/4+3);
51 n+=j/4+3;
52 m[n++]=i >> 24;
53 m[n++]=i >> 16;
54 m[n++]=i >> 8;
55 m[n++]=i;
56/* putchar(' '); */
57/* dump(m,bit/8); */
58/* putchar('\n'); */
59 SHA1(m,n,m);
60 n=20;
61 }
62 dump(m,20);
63 puts(" ^");
64 }
65 }
66
67int main(int argc,char **argv)
68 {
69 FILE *fp;
70 int phase;
71
72 if(argc != 2)
73 {
74 fprintf(stderr,"%s <test vector file>\n",argv[0]);
75 EXIT(1);
76 }
77
78 if(!FIPS_mode_set(1,argv[0]))
79 {
80 ERR_load_crypto_strings();
81 ERR_print_errors(BIO_new_fp(stderr,BIO_NOCLOSE));
82 EXIT(1);
83 }
84 fp=fopen(argv[1],"r");
85 if(!fp)
86 {
87 perror(argv[1]);
88 EXIT(2);
89 }
90
91 for(phase=0 ; ; )
92 {
93 unsigned char buf[MAX_TEST_BITS/8];
94 unsigned char md[20];
95 char line[10240];
96 int n,t,b,bit;
97 char *p;
98
99 fgets(line,1024,fp);
100 if(feof(fp))
101 break;
102 n=strlen(line);
103 line[n-1]='\0';
104 if(!strcmp(line,"D>"))
105 ++phase;
106
107 if(!isdigit(line[0]))
108 {
109 puts(line);
110 continue;
111 }
112 for( ; ; )
113 {
114 assert(n > 1);
115 if(line[n-2] == '^')
116 break;
117 fgets(line+n-1,sizeof(line)-n+1,fp);
118 n=strlen(line);
119 /* printf("line=%s\n",line); */
120 assert(!feof(fp));
121 }
122
123 p=strtok(line," ");
124 t=atoi(p);
125 p=strtok(NULL," ");
126 b=atoi(p);
127 memset(buf,'\0',sizeof buf);
128 for(bit=0,p=strtok(NULL," ") ; p && *p != '^' ; p=strtok(NULL," "))
129 {
130 assert(t-- > 0);
131 bitfill(buf,bit,b,atoi(p));
132 bit+=atoi(p);
133 b=1-b;
134 }
135 assert(t == 0);
136 assert((bit%8) == 0);
137 /* dump(buf,bit/8); */
138 /* putchar('\n'); */
139 if(phase < 3)
140 {
141 SHA1(buf,bit/8,md);
142 dump(md,20);
143 puts(" ^");
144 }
145 else
146 montecarlo(buf,bit/8);
147 }
148 EXIT(0);
149 return(0);
150 }
151#endif
diff --git a/src/lib/libssl/src/fips/sha1/fips_sha_locl.h b/src/lib/libssl/src/fips/sha1/fips_sha_locl.h
new file mode 100644
index 0000000000..6146b07812
--- /dev/null
+++ b/src/lib/libssl/src/fips/sha1/fips_sha_locl.h
@@ -0,0 +1,479 @@
1/* crypto/sha/sha_locl.h */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdlib.h>
60#include <string.h>
61
62#include <openssl/opensslconf.h>
63#include <openssl/sha.h>
64#include <openssl/fips.h>
65
66#ifndef SHA_LONG_LOG2
67#define SHA_LONG_LOG2 2 /* default to 32 bits */
68#endif
69
70#define DATA_ORDER_IS_BIG_ENDIAN
71
72#define HASH_LONG SHA_LONG
73#define HASH_LONG_LOG2 SHA_LONG_LOG2
74#define HASH_CTX SHA_CTX
75#define HASH_CBLOCK SHA_CBLOCK
76#define HASH_LBLOCK SHA_LBLOCK
77#define HASH_MAKE_STRING(c,s) do { \
78 unsigned long ll; \
79 ll=(c)->h0; HOST_l2c(ll,(s)); \
80 ll=(c)->h1; HOST_l2c(ll,(s)); \
81 ll=(c)->h2; HOST_l2c(ll,(s)); \
82 ll=(c)->h3; HOST_l2c(ll,(s)); \
83 ll=(c)->h4; HOST_l2c(ll,(s)); \
84 } while (0)
85
86#if defined(SHA_0)
87
88# define HASH_UPDATE SHA_Update
89# define HASH_TRANSFORM SHA_Transform
90# define HASH_FINAL SHA_Final
91# define HASH_INIT SHA_Init
92# define HASH_BLOCK_HOST_ORDER sha_block_host_order
93# define HASH_BLOCK_DATA_ORDER sha_block_data_order
94# define Xupdate(a,ix,ia,ib,ic,id) (ix=(a)=(ia^ib^ic^id))
95
96 void sha_block_host_order (SHA_CTX *c, const void *p,FIPS_SHA_SIZE_T num);
97 void sha_block_data_order (SHA_CTX *c, const void *p,FIPS_SHA_SIZE_T num);
98
99#elif defined(SHA_1)
100
101# define HASH_UPDATE SHA1_Update
102# define HASH_TRANSFORM SHA1_Transform
103# define HASH_FINAL SHA1_Final
104# define HASH_INIT SHA1_Init
105# define HASH_BLOCK_HOST_ORDER sha1_block_host_order
106# define HASH_BLOCK_DATA_ORDER sha1_block_data_order
107# if defined(__MWERKS__) && defined(__MC68K__)
108 /* Metrowerks for Motorola fails otherwise:-( <appro@fy.chalmers.se> */
109# define Xupdate(a,ix,ia,ib,ic,id) do { (a)=(ia^ib^ic^id); \
110 ix=(a)=ROTATE((a),1); \
111 } while (0)
112# else
113# define Xupdate(a,ix,ia,ib,ic,id) ( (a)=(ia^ib^ic^id), \
114 ix=(a)=ROTATE((a),1) \
115 )
116# endif
117
118# ifdef SHA1_ASM
119# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || defined(__INTEL__)
120# define sha1_block_host_order sha1_block_asm_host_order
121# define DONT_IMPLEMENT_BLOCK_HOST_ORDER
122# define sha1_block_data_order sha1_block_asm_data_order
123# define DONT_IMPLEMENT_BLOCK_DATA_ORDER
124# define HASH_BLOCK_DATA_ORDER_ALIGNED sha1_block_asm_data_order
125# endif
126# endif
127 void sha1_block_host_order (SHA_CTX *c, const void *p,FIPS_SHA_SIZE_T num);
128 void sha1_block_data_order (SHA_CTX *c, const void *p,FIPS_SHA_SIZE_T num);
129
130#else
131# error "Either SHA_0 or SHA_1 must be defined."
132#endif
133
134#include "fips_md32_common.h"
135
136#define INIT_DATA_h0 0x67452301UL
137#define INIT_DATA_h1 0xefcdab89UL
138#define INIT_DATA_h2 0x98badcfeUL
139#define INIT_DATA_h3 0x10325476UL
140#define INIT_DATA_h4 0xc3d2e1f0UL
141
142int HASH_INIT (SHA_CTX *c)
143 {
144 c->h0=INIT_DATA_h0;
145 c->h1=INIT_DATA_h1;
146 c->h2=INIT_DATA_h2;
147 c->h3=INIT_DATA_h3;
148 c->h4=INIT_DATA_h4;
149 c->Nl=0;
150 c->Nh=0;
151 c->num=0;
152 return 1;
153 }
154
155#define K_00_19 0x5a827999UL
156#define K_20_39 0x6ed9eba1UL
157#define K_40_59 0x8f1bbcdcUL
158#define K_60_79 0xca62c1d6UL
159
160/* As pointed out by Wei Dai <weidai@eskimo.com>, F() below can be
161 * simplified to the code in F_00_19. Wei attributes these optimisations
162 * to Peter Gutmann's SHS code, and he attributes it to Rich Schroeppel.
163 * #define F(x,y,z) (((x) & (y)) | ((~(x)) & (z)))
164 * I've just become aware of another tweak to be made, again from Wei Dai,
165 * in F_40_59, (x&a)|(y&a) -> (x|y)&a
166 */
167#define F_00_19(b,c,d) ((((c) ^ (d)) & (b)) ^ (d))
168#define F_20_39(b,c,d) ((b) ^ (c) ^ (d))
169#define F_40_59(b,c,d) (((b) & (c)) | (((b)|(c)) & (d)))
170#define F_60_79(b,c,d) F_20_39(b,c,d)
171
172#define BODY_00_15(i,a,b,c,d,e,f,xi) \
173 (f)=xi+(e)+K_00_19+ROTATE((a),5)+F_00_19((b),(c),(d)); \
174 (b)=ROTATE((b),30);
175
176#define BODY_16_19(i,a,b,c,d,e,f,xi,xa,xb,xc,xd) \
177 Xupdate(f,xi,xa,xb,xc,xd); \
178 (f)+=(e)+K_00_19+ROTATE((a),5)+F_00_19((b),(c),(d)); \
179 (b)=ROTATE((b),30);
180
181#define BODY_20_31(i,a,b,c,d,e,f,xi,xa,xb,xc,xd) \
182 Xupdate(f,xi,xa,xb,xc,xd); \
183 (f)+=(e)+K_20_39+ROTATE((a),5)+F_20_39((b),(c),(d)); \
184 (b)=ROTATE((b),30);
185
186#define BODY_32_39(i,a,b,c,d,e,f,xa,xb,xc,xd) \
187 Xupdate(f,xa,xa,xb,xc,xd); \
188 (f)+=(e)+K_20_39+ROTATE((a),5)+F_20_39((b),(c),(d)); \
189 (b)=ROTATE((b),30);
190
191#define BODY_40_59(i,a,b,c,d,e,f,xa,xb,xc,xd) \
192 Xupdate(f,xa,xa,xb,xc,xd); \
193 (f)+=(e)+K_40_59+ROTATE((a),5)+F_40_59((b),(c),(d)); \
194 (b)=ROTATE((b),30);
195
196#define BODY_60_79(i,a,b,c,d,e,f,xa,xb,xc,xd) \
197 Xupdate(f,xa,xa,xb,xc,xd); \
198 (f)=xa+(e)+K_60_79+ROTATE((a),5)+F_60_79((b),(c),(d)); \
199 (b)=ROTATE((b),30);
200
201#ifdef X
202#undef X
203#endif
204#ifndef MD32_XARRAY
205 /*
206 * Originally X was an array. As it's automatic it's natural
207 * to expect RISC compiler to accomodate at least part of it in
208 * the register bank, isn't it? Unfortunately not all compilers
209 * "find" this expectation reasonable:-( On order to make such
210 * compilers generate better code I replace X[] with a bunch of
211 * X0, X1, etc. See the function body below...
212 * <appro@fy.chalmers.se>
213 */
214# define X(i) XX##i
215#else
216 /*
217 * However! Some compilers (most notably HP C) get overwhelmed by
218 * that many local variables so that we have to have the way to
219 * fall down to the original behavior.
220 */
221# define X(i) XX[i]
222#endif
223
224#ifndef DONT_IMPLEMENT_BLOCK_HOST_ORDER
225void HASH_BLOCK_HOST_ORDER (SHA_CTX *c, const void *d, FIPS_SHA_SIZE_T num)
226 {
227 const SHA_LONG *W=d;
228 register unsigned MD32_REG_T A,B,C,D,E,T;
229#ifndef MD32_XARRAY
230 unsigned MD32_REG_T XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7,
231 XX8, XX9,XX10,XX11,XX12,XX13,XX14,XX15;
232#else
233 SHA_LONG XX[16];
234#endif
235
236 if(FIPS_selftest_failed())
237 return;
238
239 A=c->h0;
240 B=c->h1;
241 C=c->h2;
242 D=c->h3;
243 E=c->h4;
244
245 for (;;)
246 {
247 BODY_00_15( 0,A,B,C,D,E,T,W[ 0]);
248 BODY_00_15( 1,T,A,B,C,D,E,W[ 1]);
249 BODY_00_15( 2,E,T,A,B,C,D,W[ 2]);
250 BODY_00_15( 3,D,E,T,A,B,C,W[ 3]);
251 BODY_00_15( 4,C,D,E,T,A,B,W[ 4]);
252 BODY_00_15( 5,B,C,D,E,T,A,W[ 5]);
253 BODY_00_15( 6,A,B,C,D,E,T,W[ 6]);
254 BODY_00_15( 7,T,A,B,C,D,E,W[ 7]);
255 BODY_00_15( 8,E,T,A,B,C,D,W[ 8]);
256 BODY_00_15( 9,D,E,T,A,B,C,W[ 9]);
257 BODY_00_15(10,C,D,E,T,A,B,W[10]);
258 BODY_00_15(11,B,C,D,E,T,A,W[11]);
259 BODY_00_15(12,A,B,C,D,E,T,W[12]);
260 BODY_00_15(13,T,A,B,C,D,E,W[13]);
261 BODY_00_15(14,E,T,A,B,C,D,W[14]);
262 BODY_00_15(15,D,E,T,A,B,C,W[15]);
263
264 BODY_16_19(16,C,D,E,T,A,B,X( 0),W[ 0],W[ 2],W[ 8],W[13]);
265 BODY_16_19(17,B,C,D,E,T,A,X( 1),W[ 1],W[ 3],W[ 9],W[14]);
266 BODY_16_19(18,A,B,C,D,E,T,X( 2),W[ 2],W[ 4],W[10],W[15]);
267 BODY_16_19(19,T,A,B,C,D,E,X( 3),W[ 3],W[ 5],W[11],X( 0));
268
269 BODY_20_31(20,E,T,A,B,C,D,X( 4),W[ 4],W[ 6],W[12],X( 1));
270 BODY_20_31(21,D,E,T,A,B,C,X( 5),W[ 5],W[ 7],W[13],X( 2));
271 BODY_20_31(22,C,D,E,T,A,B,X( 6),W[ 6],W[ 8],W[14],X( 3));
272 BODY_20_31(23,B,C,D,E,T,A,X( 7),W[ 7],W[ 9],W[15],X( 4));
273 BODY_20_31(24,A,B,C,D,E,T,X( 8),W[ 8],W[10],X( 0),X( 5));
274 BODY_20_31(25,T,A,B,C,D,E,X( 9),W[ 9],W[11],X( 1),X( 6));
275 BODY_20_31(26,E,T,A,B,C,D,X(10),W[10],W[12],X( 2),X( 7));
276 BODY_20_31(27,D,E,T,A,B,C,X(11),W[11],W[13],X( 3),X( 8));
277 BODY_20_31(28,C,D,E,T,A,B,X(12),W[12],W[14],X( 4),X( 9));
278 BODY_20_31(29,B,C,D,E,T,A,X(13),W[13],W[15],X( 5),X(10));
279 BODY_20_31(30,A,B,C,D,E,T,X(14),W[14],X( 0),X( 6),X(11));
280 BODY_20_31(31,T,A,B,C,D,E,X(15),W[15],X( 1),X( 7),X(12));
281
282 BODY_32_39(32,E,T,A,B,C,D,X( 0),X( 2),X( 8),X(13));
283 BODY_32_39(33,D,E,T,A,B,C,X( 1),X( 3),X( 9),X(14));
284 BODY_32_39(34,C,D,E,T,A,B,X( 2),X( 4),X(10),X(15));
285 BODY_32_39(35,B,C,D,E,T,A,X( 3),X( 5),X(11),X( 0));
286 BODY_32_39(36,A,B,C,D,E,T,X( 4),X( 6),X(12),X( 1));
287 BODY_32_39(37,T,A,B,C,D,E,X( 5),X( 7),X(13),X( 2));
288 BODY_32_39(38,E,T,A,B,C,D,X( 6),X( 8),X(14),X( 3));
289 BODY_32_39(39,D,E,T,A,B,C,X( 7),X( 9),X(15),X( 4));
290
291 BODY_40_59(40,C,D,E,T,A,B,X( 8),X(10),X( 0),X( 5));
292 BODY_40_59(41,B,C,D,E,T,A,X( 9),X(11),X( 1),X( 6));
293 BODY_40_59(42,A,B,C,D,E,T,X(10),X(12),X( 2),X( 7));
294 BODY_40_59(43,T,A,B,C,D,E,X(11),X(13),X( 3),X( 8));
295 BODY_40_59(44,E,T,A,B,C,D,X(12),X(14),X( 4),X( 9));
296 BODY_40_59(45,D,E,T,A,B,C,X(13),X(15),X( 5),X(10));
297 BODY_40_59(46,C,D,E,T,A,B,X(14),X( 0),X( 6),X(11));
298 BODY_40_59(47,B,C,D,E,T,A,X(15),X( 1),X( 7),X(12));
299 BODY_40_59(48,A,B,C,D,E,T,X( 0),X( 2),X( 8),X(13));
300 BODY_40_59(49,T,A,B,C,D,E,X( 1),X( 3),X( 9),X(14));
301 BODY_40_59(50,E,T,A,B,C,D,X( 2),X( 4),X(10),X(15));
302 BODY_40_59(51,D,E,T,A,B,C,X( 3),X( 5),X(11),X( 0));
303 BODY_40_59(52,C,D,E,T,A,B,X( 4),X( 6),X(12),X( 1));
304 BODY_40_59(53,B,C,D,E,T,A,X( 5),X( 7),X(13),X( 2));
305 BODY_40_59(54,A,B,C,D,E,T,X( 6),X( 8),X(14),X( 3));
306 BODY_40_59(55,T,A,B,C,D,E,X( 7),X( 9),X(15),X( 4));
307 BODY_40_59(56,E,T,A,B,C,D,X( 8),X(10),X( 0),X( 5));
308 BODY_40_59(57,D,E,T,A,B,C,X( 9),X(11),X( 1),X( 6));
309 BODY_40_59(58,C,D,E,T,A,B,X(10),X(12),X( 2),X( 7));
310 BODY_40_59(59,B,C,D,E,T,A,X(11),X(13),X( 3),X( 8));
311
312 BODY_60_79(60,A,B,C,D,E,T,X(12),X(14),X( 4),X( 9));
313 BODY_60_79(61,T,A,B,C,D,E,X(13),X(15),X( 5),X(10));
314 BODY_60_79(62,E,T,A,B,C,D,X(14),X( 0),X( 6),X(11));
315 BODY_60_79(63,D,E,T,A,B,C,X(15),X( 1),X( 7),X(12));
316 BODY_60_79(64,C,D,E,T,A,B,X( 0),X( 2),X( 8),X(13));
317 BODY_60_79(65,B,C,D,E,T,A,X( 1),X( 3),X( 9),X(14));
318 BODY_60_79(66,A,B,C,D,E,T,X( 2),X( 4),X(10),X(15));
319 BODY_60_79(67,T,A,B,C,D,E,X( 3),X( 5),X(11),X( 0));
320 BODY_60_79(68,E,T,A,B,C,D,X( 4),X( 6),X(12),X( 1));
321 BODY_60_79(69,D,E,T,A,B,C,X( 5),X( 7),X(13),X( 2));
322 BODY_60_79(70,C,D,E,T,A,B,X( 6),X( 8),X(14),X( 3));
323 BODY_60_79(71,B,C,D,E,T,A,X( 7),X( 9),X(15),X( 4));
324 BODY_60_79(72,A,B,C,D,E,T,X( 8),X(10),X( 0),X( 5));
325 BODY_60_79(73,T,A,B,C,D,E,X( 9),X(11),X( 1),X( 6));
326 BODY_60_79(74,E,T,A,B,C,D,X(10),X(12),X( 2),X( 7));
327 BODY_60_79(75,D,E,T,A,B,C,X(11),X(13),X( 3),X( 8));
328 BODY_60_79(76,C,D,E,T,A,B,X(12),X(14),X( 4),X( 9));
329 BODY_60_79(77,B,C,D,E,T,A,X(13),X(15),X( 5),X(10));
330 BODY_60_79(78,A,B,C,D,E,T,X(14),X( 0),X( 6),X(11));
331 BODY_60_79(79,T,A,B,C,D,E,X(15),X( 1),X( 7),X(12));
332
333 c->h0=(c->h0+E)&0xffffffffL;
334 c->h1=(c->h1+T)&0xffffffffL;
335 c->h2=(c->h2+A)&0xffffffffL;
336 c->h3=(c->h3+B)&0xffffffffL;
337 c->h4=(c->h4+C)&0xffffffffL;
338
339 if (--num == 0) break;
340
341 A=c->h0;
342 B=c->h1;
343 C=c->h2;
344 D=c->h3;
345 E=c->h4;
346
347 W+=SHA_LBLOCK;
348 }
349 }
350#endif
351
352#ifndef DONT_IMPLEMENT_BLOCK_DATA_ORDER
353void HASH_BLOCK_DATA_ORDER (SHA_CTX *c, const void *p, FIPS_SHA_SIZE_T num)
354 {
355 const unsigned char *data=p;
356 register unsigned MD32_REG_T A,B,C,D,E,T,l;
357#ifndef MD32_XARRAY
358 unsigned MD32_REG_T XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7,
359 XX8, XX9,XX10,XX11,XX12,XX13,XX14,XX15;
360#else
361 SHA_LONG XX[16];
362#endif
363
364 if(FIPS_selftest_failed())
365 return;
366
367 A=c->h0;
368 B=c->h1;
369 C=c->h2;
370 D=c->h3;
371 E=c->h4;
372
373 for (;;)
374 {
375
376 HOST_c2l(data,l); X( 0)=l; HOST_c2l(data,l); X( 1)=l;
377 BODY_00_15( 0,A,B,C,D,E,T,X( 0)); HOST_c2l(data,l); X( 2)=l;
378 BODY_00_15( 1,T,A,B,C,D,E,X( 1)); HOST_c2l(data,l); X( 3)=l;
379 BODY_00_15( 2,E,T,A,B,C,D,X( 2)); HOST_c2l(data,l); X( 4)=l;
380 BODY_00_15( 3,D,E,T,A,B,C,X( 3)); HOST_c2l(data,l); X( 5)=l;
381 BODY_00_15( 4,C,D,E,T,A,B,X( 4)); HOST_c2l(data,l); X( 6)=l;
382 BODY_00_15( 5,B,C,D,E,T,A,X( 5)); HOST_c2l(data,l); X( 7)=l;
383 BODY_00_15( 6,A,B,C,D,E,T,X( 6)); HOST_c2l(data,l); X( 8)=l;
384 BODY_00_15( 7,T,A,B,C,D,E,X( 7)); HOST_c2l(data,l); X( 9)=l;
385 BODY_00_15( 8,E,T,A,B,C,D,X( 8)); HOST_c2l(data,l); X(10)=l;
386 BODY_00_15( 9,D,E,T,A,B,C,X( 9)); HOST_c2l(data,l); X(11)=l;
387 BODY_00_15(10,C,D,E,T,A,B,X(10)); HOST_c2l(data,l); X(12)=l;
388 BODY_00_15(11,B,C,D,E,T,A,X(11)); HOST_c2l(data,l); X(13)=l;
389 BODY_00_15(12,A,B,C,D,E,T,X(12)); HOST_c2l(data,l); X(14)=l;
390 BODY_00_15(13,T,A,B,C,D,E,X(13)); HOST_c2l(data,l); X(15)=l;
391 BODY_00_15(14,E,T,A,B,C,D,X(14));
392 BODY_00_15(15,D,E,T,A,B,C,X(15));
393
394 BODY_16_19(16,C,D,E,T,A,B,X( 0),X( 0),X( 2),X( 8),X(13));
395 BODY_16_19(17,B,C,D,E,T,A,X( 1),X( 1),X( 3),X( 9),X(14));
396 BODY_16_19(18,A,B,C,D,E,T,X( 2),X( 2),X( 4),X(10),X(15));
397 BODY_16_19(19,T,A,B,C,D,E,X( 3),X( 3),X( 5),X(11),X( 0));
398
399 BODY_20_31(20,E,T,A,B,C,D,X( 4),X( 4),X( 6),X(12),X( 1));
400 BODY_20_31(21,D,E,T,A,B,C,X( 5),X( 5),X( 7),X(13),X( 2));
401 BODY_20_31(22,C,D,E,T,A,B,X( 6),X( 6),X( 8),X(14),X( 3));
402 BODY_20_31(23,B,C,D,E,T,A,X( 7),X( 7),X( 9),X(15),X( 4));
403 BODY_20_31(24,A,B,C,D,E,T,X( 8),X( 8),X(10),X( 0),X( 5));
404 BODY_20_31(25,T,A,B,C,D,E,X( 9),X( 9),X(11),X( 1),X( 6));
405 BODY_20_31(26,E,T,A,B,C,D,X(10),X(10),X(12),X( 2),X( 7));
406 BODY_20_31(27,D,E,T,A,B,C,X(11),X(11),X(13),X( 3),X( 8));
407 BODY_20_31(28,C,D,E,T,A,B,X(12),X(12),X(14),X( 4),X( 9));
408 BODY_20_31(29,B,C,D,E,T,A,X(13),X(13),X(15),X( 5),X(10));
409 BODY_20_31(30,A,B,C,D,E,T,X(14),X(14),X( 0),X( 6),X(11));
410 BODY_20_31(31,T,A,B,C,D,E,X(15),X(15),X( 1),X( 7),X(12));
411
412 BODY_32_39(32,E,T,A,B,C,D,X( 0),X( 2),X( 8),X(13));
413 BODY_32_39(33,D,E,T,A,B,C,X( 1),X( 3),X( 9),X(14));
414 BODY_32_39(34,C,D,E,T,A,B,X( 2),X( 4),X(10),X(15));
415 BODY_32_39(35,B,C,D,E,T,A,X( 3),X( 5),X(11),X( 0));
416 BODY_32_39(36,A,B,C,D,E,T,X( 4),X( 6),X(12),X( 1));
417 BODY_32_39(37,T,A,B,C,D,E,X( 5),X( 7),X(13),X( 2));
418 BODY_32_39(38,E,T,A,B,C,D,X( 6),X( 8),X(14),X( 3));
419 BODY_32_39(39,D,E,T,A,B,C,X( 7),X( 9),X(15),X( 4));
420
421 BODY_40_59(40,C,D,E,T,A,B,X( 8),X(10),X( 0),X( 5));
422 BODY_40_59(41,B,C,D,E,T,A,X( 9),X(11),X( 1),X( 6));
423 BODY_40_59(42,A,B,C,D,E,T,X(10),X(12),X( 2),X( 7));
424 BODY_40_59(43,T,A,B,C,D,E,X(11),X(13),X( 3),X( 8));
425 BODY_40_59(44,E,T,A,B,C,D,X(12),X(14),X( 4),X( 9));
426 BODY_40_59(45,D,E,T,A,B,C,X(13),X(15),X( 5),X(10));
427 BODY_40_59(46,C,D,E,T,A,B,X(14),X( 0),X( 6),X(11));
428 BODY_40_59(47,B,C,D,E,T,A,X(15),X( 1),X( 7),X(12));
429 BODY_40_59(48,A,B,C,D,E,T,X( 0),X( 2),X( 8),X(13));
430 BODY_40_59(49,T,A,B,C,D,E,X( 1),X( 3),X( 9),X(14));
431 BODY_40_59(50,E,T,A,B,C,D,X( 2),X( 4),X(10),X(15));
432 BODY_40_59(51,D,E,T,A,B,C,X( 3),X( 5),X(11),X( 0));
433 BODY_40_59(52,C,D,E,T,A,B,X( 4),X( 6),X(12),X( 1));
434 BODY_40_59(53,B,C,D,E,T,A,X( 5),X( 7),X(13),X( 2));
435 BODY_40_59(54,A,B,C,D,E,T,X( 6),X( 8),X(14),X( 3));
436 BODY_40_59(55,T,A,B,C,D,E,X( 7),X( 9),X(15),X( 4));
437 BODY_40_59(56,E,T,A,B,C,D,X( 8),X(10),X( 0),X( 5));
438 BODY_40_59(57,D,E,T,A,B,C,X( 9),X(11),X( 1),X( 6));
439 BODY_40_59(58,C,D,E,T,A,B,X(10),X(12),X( 2),X( 7));
440 BODY_40_59(59,B,C,D,E,T,A,X(11),X(13),X( 3),X( 8));
441
442 BODY_60_79(60,A,B,C,D,E,T,X(12),X(14),X( 4),X( 9));
443 BODY_60_79(61,T,A,B,C,D,E,X(13),X(15),X( 5),X(10));
444 BODY_60_79(62,E,T,A,B,C,D,X(14),X( 0),X( 6),X(11));
445 BODY_60_79(63,D,E,T,A,B,C,X(15),X( 1),X( 7),X(12));
446 BODY_60_79(64,C,D,E,T,A,B,X( 0),X( 2),X( 8),X(13));
447 BODY_60_79(65,B,C,D,E,T,A,X( 1),X( 3),X( 9),X(14));
448 BODY_60_79(66,A,B,C,D,E,T,X( 2),X( 4),X(10),X(15));
449 BODY_60_79(67,T,A,B,C,D,E,X( 3),X( 5),X(11),X( 0));
450 BODY_60_79(68,E,T,A,B,C,D,X( 4),X( 6),X(12),X( 1));
451 BODY_60_79(69,D,E,T,A,B,C,X( 5),X( 7),X(13),X( 2));
452 BODY_60_79(70,C,D,E,T,A,B,X( 6),X( 8),X(14),X( 3));
453 BODY_60_79(71,B,C,D,E,T,A,X( 7),X( 9),X(15),X( 4));
454 BODY_60_79(72,A,B,C,D,E,T,X( 8),X(10),X( 0),X( 5));
455 BODY_60_79(73,T,A,B,C,D,E,X( 9),X(11),X( 1),X( 6));
456 BODY_60_79(74,E,T,A,B,C,D,X(10),X(12),X( 2),X( 7));
457 BODY_60_79(75,D,E,T,A,B,C,X(11),X(13),X( 3),X( 8));
458 BODY_60_79(76,C,D,E,T,A,B,X(12),X(14),X( 4),X( 9));
459 BODY_60_79(77,B,C,D,E,T,A,X(13),X(15),X( 5),X(10));
460 BODY_60_79(78,A,B,C,D,E,T,X(14),X( 0),X( 6),X(11));
461 BODY_60_79(79,T,A,B,C,D,E,X(15),X( 1),X( 7),X(12));
462
463 c->h0=(c->h0+E)&0xffffffffL;
464 c->h1=(c->h1+T)&0xffffffffL;
465 c->h2=(c->h2+A)&0xffffffffL;
466 c->h3=(c->h3+B)&0xffffffffL;
467 c->h4=(c->h4+C)&0xffffffffL;
468
469 if (--num == 0) break;
470
471 A=c->h0;
472 B=c->h1;
473 C=c->h2;
474 D=c->h3;
475 E=c->h4;
476
477 }
478 }
479#endif
diff --git a/src/lib/libssl/src/fips/sha1/fips_standalone_sha1.c b/src/lib/libssl/src/fips/sha1/fips_standalone_sha1.c
new file mode 100644
index 0000000000..1c2ec469e9
--- /dev/null
+++ b/src/lib/libssl/src/fips/sha1/fips_standalone_sha1.c
@@ -0,0 +1,156 @@
1/* ====================================================================
2 * Copyright (c) 2003 The OpenSSL Project. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in
13 * the documentation and/or other materials provided with the
14 * distribution.
15 *
16 * 3. All advertising materials mentioning features or use of this
17 * software must display the following acknowledgment:
18 * "This product includes software developed by the OpenSSL Project
19 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
20 *
21 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
22 * endorse or promote products derived from this software without
23 * prior written permission. For written permission, please contact
24 * openssl-core@openssl.org.
25 *
26 * 5. Products derived from this software may not be called "OpenSSL"
27 * nor may "OpenSSL" appear in their names without prior written
28 * permission of the OpenSSL Project.
29 *
30 * 6. Redistributions of any form whatsoever must retain the following
31 * acknowledgment:
32 * "This product includes software developed by the OpenSSL Project
33 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
34 *
35 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
36 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
37 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
38 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
39 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
41 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
42 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
43 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
44 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
45 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
46 * OF THE POSSIBILITY OF SUCH DAMAGE.
47 *
48 */
49
50#include <openssl/sha.h>
51#include <openssl/hmac.h>
52#include <openssl/opensslconf.h>
53#include <stdio.h>
54#include <stdlib.h>
55#include <string.h>
56
57int FIPS_selftest_failed() { return 0; }
58
59#ifdef OPENSSL_FIPS
60
61static void hmac_init(SHA_CTX *md_ctx,SHA_CTX *o_ctx,
62 const char *key)
63 {
64 int len=strlen(key);
65 int i;
66 unsigned char keymd[HMAC_MAX_MD_CBLOCK];
67 unsigned char pad[HMAC_MAX_MD_CBLOCK];
68
69 if (len > SHA_CBLOCK)
70 {
71 SHA1_Init(md_ctx);
72 SHA1_Update(md_ctx,key,len);
73 SHA1_Final(keymd,md_ctx);
74 len=20;
75 }
76 else
77 memcpy(keymd,key,len);
78 memset(&keymd[len],'\0',HMAC_MAX_MD_CBLOCK-len);
79
80 for(i=0 ; i < HMAC_MAX_MD_CBLOCK ; i++)
81 pad[i]=0x36^keymd[i];
82 SHA1_Init(md_ctx);
83 SHA1_Update(md_ctx,pad,SHA_CBLOCK);
84
85 for(i=0 ; i < HMAC_MAX_MD_CBLOCK ; i++)
86 pad[i]=0x5c^keymd[i];
87 SHA1_Init(o_ctx);
88 SHA1_Update(o_ctx,pad,SHA_CBLOCK);
89 }
90
91static void hmac_final(unsigned char *md,SHA_CTX *md_ctx,SHA_CTX *o_ctx)
92 {
93 unsigned char buf[20];
94
95 SHA1_Final(buf,md_ctx);
96 SHA1_Update(o_ctx,buf,sizeof buf);
97 SHA1_Final(md,o_ctx);
98 }
99
100#endif
101
102int main(int argc,char **argv)
103 {
104#ifdef OPENSSL_FIPS
105 static char key[]="etaonrishdlcupfm";
106 int n;
107
108 if(argc < 2)
109 {
110 fprintf(stderr,"%s [<file>]+\n",argv[0]);
111 exit(1);
112 }
113
114 for(n=1 ; n < argc ; ++n)
115 {
116 FILE *f=fopen(argv[n],"rb");
117 SHA_CTX md_ctx,o_ctx;
118 unsigned char md[20];
119 int i;
120
121 if(!f)
122 {
123 perror(argv[n]);
124 exit(2);
125 }
126
127 hmac_init(&md_ctx,&o_ctx,key);
128 for( ; ; )
129 {
130 char buf[1024];
131 int l=fread(buf,1,sizeof buf,f);
132
133 if(l == 0)
134 {
135 if(ferror(f))
136 {
137 perror(argv[n]);
138 exit(3);
139 }
140 else
141 break;
142 }
143 SHA1_Update(&md_ctx,buf,l);
144 }
145 hmac_final(md,&md_ctx,&o_ctx);
146
147 printf("HMAC-SHA1(%s)= ",argv[n]);
148 for(i=0 ; i < 20 ; ++i)
149 printf("%02x",md[i]);
150 printf("\n");
151 }
152#endif
153 return 0;
154 }
155
156
diff --git a/src/lib/libssl/src/fips/sha1/sha1hashes.txt b/src/lib/libssl/src/fips/sha1/sha1hashes.txt
new file mode 100644
index 0000000000..4adfa197e9
--- /dev/null
+++ b/src/lib/libssl/src/fips/sha1/sha1hashes.txt
@@ -0,0 +1,342 @@
1# Configuration information for "SHA-1 Test"
2# SHA tests are configured for BYTE oriented implementations
3H>SHS Type 1 Hashes<H
4D>
5DA39A3EE5E6B4B0D3255BFEF95601890AFD80709 ^
63CDF2936DA2FC556BFA533AB1EB59CE710AC80E5 ^
719C1E2048FA7393CFBF2D310AD8209EC11D996E5 ^
8CA775D8C80FAA6F87FA62BECA6CA6089D63B56E5 ^
971AC973D0E4B50AE9E5043FF4D615381120A25A0 ^
10A6B5B9F854CFB76701C3BDDBF374B3094EA49CBA ^
11D87A0EE74E4B9AD72E6847C87BDEEB3D07844380 ^
121976B8DD509FE66BF09C9A8D33534D4EF4F63BFD ^
135A78F439B6DB845BB8A558E4CEB106CD7B7FF783 ^
14F871BCE62436C1E280357416695EE2EF9B83695C ^
1562B243D1B780E1D31CF1BA2DE3F01C72AEEA0E47 ^
161698994A273404848E56E7FDA4457B5900DE1342 ^
17056F4CDC02791DA7ED1EB2303314F7667518DEEF ^
189FE2DA967BD8441EEA1C32DF68DDAA9DC1FC8E4B ^
1973A31777B4ACE9384EFA8BBEAD45C51A71ABA6DD ^
203F9D7C4E2384EDDABFF5DD8A31E23DE3D03F42AC ^
214814908F72B93FFD011135BEE347DE9A08DA838F ^
220978374B67A412A3102C5AA0B10E1A6596FC68EB ^
2344AD6CB618BD935460D46D3F921D87B99AB91C1E ^
2402DC989AF265B09CF8485640842128DCF95E9F39 ^
2567507B8D497B35D6E99FC01976D73F54AECA75CF ^
261EAE0373C1317CB60C36A42A867B716039D441F5 ^
279C3834589E5BFFAC9F50950E0199B3EC2620BEC8 ^
28209F7ABC7F3B878EE46CDF3A1FBB9C21C3474F32 ^
2905FC054B00D97753A9B3E2DA8FBBA3EE808CEF22 ^
300C4980EA3A46C757DFBFC5BAA38AC6C8E72DDCE7 ^
3196A460D2972D276928B69864445BEA353BDCFFD2 ^
32F3EF04D8FA8C6FA9850F394A4554C080956FA64B ^
33F2A31D875D1D7B30874D416C4D2EA6BAF0FFBAFE ^
34F4942D3B9E9588DCFDC6312A84DF75D05F111C20 ^
35310207DF35B014E4676D30806FA34424813734DD ^
364DA1955B2FA7C7E74E3F47D7360CE530BBF57CA3 ^
3774C4BC5B26FB4A08602D40CCEC6C6161B6C11478 ^
380B103CE297338DFC7395F7715EE47539B556DDB6 ^
39EFC72D99E3D2311CE14190C0B726BDC68F4B0821 ^
40660EDAC0A8F4CE33DA0D8DBAE597650E97687250 ^
41FE0A55A988B3B93946A63EB36B23785A5E6EFC3E ^
420CBDF2A5781C59F907513147A0DE3CC774B54BF3 ^
43663E40FEE5A44BFCB1C99EA5935A6B5BC9F583B0 ^
4400162134256952DD9AE6B51EFB159B35C3C138C7 ^
45CEB88E4736E354416E2010FC1061B3B53B81664B ^
46A6A2C4B6BCC41DDC67278F3DF4D8D0B9DD7784EF ^
47C23D083CD8820B57800A869F5F261D45E02DC55D ^
48E8AC31927B78DDEC41A31CA7A44EB7177165E7AB ^
49E864EC5DBAB0F9FF6984AB6AD43A8C9B81CC9F9C ^
50CFED6269069417A84D6DE2347220F4B858BCD530 ^
51D9217BFB46C96348722C3783D29D4B1A3FEDA38C ^
52DEC24E5554F79697218D317315FA986229CE3350 ^
5383A099DF7071437BA5495A5B0BFBFEFE1C0EF7F3 ^
54AA3198E30891A83E33CE3BFA0587D86A197D4F80 ^
559B6ACBEB4989CBEE7015C7D515A75672FFDE3442 ^
56B021EB08A436B02658EAA7BA3C88D49F1219C035 ^
57CAE36DAB8AEA29F62E0855D9CB3CD8E7D39094B1 ^
5802DE8BA699F3C1B0CB5AD89A01F2346E630459D7 ^
5988021458847DD39B4495368F7254941859FAD44B ^
6091A165295C666FE85C2ADBC5A10329DAF0CB81A0 ^
614B31312EAF8B506811151A9DBD162961F7548C4B ^
623FE70971B20558F7E9BAC303ED2BC14BDE659A62 ^
6393FB769D5BF49D6C563685954E2AECC024DC02D6 ^
64BC8827C3E614D515E83DEA503989DEA4FDA6EA13 ^
65E83868DBE4A389AB48E61CFC4ED894F32AE112AC ^
6655C95459CDE4B33791B4B2BCAAF840930AF3F3BD ^
6736BB0E2BA438A3E03214D9ED2B28A4D5C578FCAA ^
683ACBF874199763EBA20F3789DFC59572ACA4CF33 ^
6986BE037C4D509C9202020767D860DAB039CADACE ^
7051B57D7080A87394EEC3EB2E0B242E553F2827C9 ^
711EFBFA78866315CE6A71E457F3A750A38FACAB41 ^
7257D6CB41AEEC20236F365B3A490C61D0CFA39611 ^
73C532CB64B4BA826372BCCF2B4B5793D5B88BB715 ^
7415833B5631032663E783686A209C6A2B47A1080E ^
75D04F2043C96E10CD83B574B1E1C217052CD4A6B2 ^
76E8882627C64DB743F7DB8B4413DD033FC63BEB20 ^
77CD2D32286B8867BC124A0AF2236FC74BE3622199 ^
78019B70D745375091ED5C7B218445EC986D0F5A82 ^
79E5FF5FEC1DADBAED02BF2DAD4026BE6A96B3F2AF ^
806F4E23B3F2E2C068D13921FE4E5E053FFED4E146 ^
8125E179602A575C915067566FBA6DA930E97F8678 ^
8267DED0E68E235C8A523E051E86108EEB757EFBFD ^
83AF78536EA83C822796745556D62A3EE82C7BE098 ^
8464D7AC52E47834BE72455F6C64325F9C358B610D ^
859D4866BAA3639C13E541F250FFA3D8BC157A491F ^
862E258811961D3EB876F30E7019241A01F9517BEC ^
878E0EBC487146F83BC9077A1630E0FB3AB3C89E63 ^
88CE8953741FFF3425D2311FBBF4AB481B669DEF70 ^
89789D1D2DAB52086BD90C0E137E2515ED9C6B59B5 ^
90B76CE7472700DD68D6328B7AA8437FB051D15745 ^
91F218669B596C5FFB0B1C14BD03C467FC873230A0 ^
921FF3BDBE0D504CB0CDFAB17E6C37ABA6B3CFFDED ^
932F3CBACBB14405A4652ED52793C1814FD8C4FCE0 ^
94982C8AB6CE164F481915AF59AAED9FFF2A391752 ^
955CD92012D488A07ECE0E47901D0E083B6BD93E3F ^
9669603FEC02920851D4B3B8782E07B92BB2963009 ^
973E90F76437B1EA44CF98A08D83EA24CECF6E6191 ^
9834C09F107C42D990EB4881D4BF2DDDCAB01563AE ^
99474BE0E5892EB2382109BFC5E3C8249A9283B03D ^
100A04B4F75051786682483252438F6A75BF4705EC6 ^
101BE88A6716083EB50ED9416719D6A247661299383 ^
102C67E38717FEE1A5F65EC6C7C7C42AFC00CD37F04 ^
103959AC4082388E19E9BE5DE571C047EF10C174A8D ^
104BAA7AA7B7753FA0ABDC4A541842B5D238D949F0A ^
105351394DCEBC08155D100FCD488578E6AE71D0E9C ^
106AB8BE94C5AF60D9477EF1252D604E58E27B2A9EE ^
1073429EC74A695FDD3228F152564952308AFE0680A ^
108907FA46C029BC67EAA8E4F46E3C2A232F85BD122 ^
1092644C87D1FBBBC0FC8D65F64BCA2492DA15BAAE4 ^
110110A3EEB408756E2E81ABAF4C5DCD4D4C6AFCF6D ^
111CD4FDC35FAC7E1ADB5DE40F47F256EF74D584959 ^
1128E6E273208AC256F9ECCF296F3F5A37BC8A0F9F7 ^
113FE0606100BDBC268DB39B503E0FDFE3766185828 ^
1146C63C3E58047BCDB35A17F74EEBA4E9B14420809 ^
115BCC2BD305F0BCDA8CF2D478EF9FE080486CB265F ^
116CE5223FD3DD920A3B666481D5625B16457DCB5E8 ^
117948886776E42E4F5FAE1B2D0C906AC3759E3F8B0 ^
1184C12A51FCFE242F832E3D7329304B11B75161EFB ^
119C54BDD2050504D92F551D378AD5FC72C9ED03932 ^
1208F53E8FA79EA09FD1B682AF5ED1515ECA965604C ^
1212D7E17F6294524CE78B33EAB72CDD08E5FF6E313 ^
12264582B4B57F782C9302BFE7D07F74AA176627A3A ^
1236D88795B71D3E386BBD1EB830FB9F161BA98869F ^
12486AD34A6463F12CEE6DE9596ABA72F0DF1397FD1 ^
1257EB46685A57C0D466152DC339C8122548C757ED1 ^
126E7A98FB0692684054407CC221ABC60C199D6F52A ^
12734DF1306662206FD0A5FC2969A4BEEC4EB0197F7 ^
12856CF7EBF08D10F0CB9FE7EE3B63A5C3A02BCB450 ^
1293BAE5CB8226642088DA760A6F78B0CF8EDDEA9F1 ^
1306475DF681E061FA506672C27CBABFA9AA6DDFF62 ^
13179D81991FA4E4957C8062753439DBFD47BBB277D ^
132BAE224477B20302E881F5249F52EC6C34DA8ECEF ^
133EDE4DEB4293CFE4138C2C056B7C46FF821CC0ACC ^
134<D
135
136H>SHS Type 2 Hashes<H
137D>
138A771FA5C812BD0C9596D869EC99E4F4AC988B13F ^
139E99D566212BBBCEEE903946F6100C9C96039A8F4 ^
140B48CE6B1D13903E3925AE0C88CB931388C013F9C ^
141E647D5BAF670D4BF3AFC0A6B72A2424B0C64F194 ^
14265C1CD932A06B05CD0B43AFB3BC7891F6BCEF45C ^
14370FFAE353A5CD0F8A65A8B2746D0F16281B25EC7 ^
144CC8221F2B829B8CF39646BF46888317C3EB378EA ^
14526ACCC2D6D51FF7BF3E5895588907765111BB69B ^
14601072915B8E868D9B28E759CF2BC1AEA4BB92165 ^
1473016115711D74236ADF0C371E47992F87A428598 ^
148BF30417999C1368F008C1F19FECA4D18A5E1C3C9 ^
14962BA49087185F2742C26E1C1F4844112178BF673 ^
150E1F6B9536F384DD3098285BBFD495A474140DC5A ^
151B522DAE1D67726EBA7C4136D4E2F6D6D645AC43E ^
152E9A021C3EB0B9F2C710554D4BF21B19F78E09478 ^
153DF13573188F3BF705E697A3E1F580145F2183377 ^
154188835CFE52ECFA0C4135C2825F245DC29973970 ^
15541B615A34EE2CEC9D84A91B141CFAB115821950B ^
156AB3DD6221D2AFE6613B815DA1C389EEC74AA0337 ^
1570706D414B4AA7FB4A9051AA70D6856A7264054FB ^
1583CBF8151F3A00B1D5A809CBB8C4F3135055A6BD1 ^
159DA5D6A0319272BBCCEA63ACFA6799756FFDA6840 ^
160FB4429C95F6277B346D3B389413758DFFFEEDC98 ^
1612C6E30D9C895B42DCCCFC84C906EC88C09B20DE1 ^
1623DE3189A5E19F225CDCE254DFF23DACD22C61363 ^
16393530A9BC9A817F6922518A73A1505C411D05DA2 ^
164E31354345F832D31E05C1B842D405D4BD4588EC8 ^
1653FF76957E80B60CF74D015AD431FCA147B3AF232 ^
16634AE3B806BE143A84DCE82E4B830EB7D3D2BAC69 ^
167D7447E53D66BB5E4C26E8B41F83EFD107BF4ADDA ^
16877DD2A4482705BC2E9DC96EC0A13395771AC850C ^
169EAA1465DB1F59DE3F25EB8629602B568E693BB57 ^
1709329D5B40E0DC43AA25FED69A0FA9C211A948411 ^
171E94C0B6AA62AA08C625FAF817DDF8F51EC645273 ^
1727FF02B909D82AD668E31E547E0FB66CB8E213771 ^
1735BB3570858FA1744123BAC2873B0BB9810F53FA1 ^
174905F43940B3591CE39D1145ACB1ECA80AB5E43CD ^
175336C79FBD82F33E490C577E3F791C3CBFE842AFF ^
1765C6D07A6B44F7A75A64F6CE592F3BAE91E022210 ^
1777E0D3E9D33127F4A30EB8D9C134A58409FA8695B ^
1789A5F50DFCFB19286206C229019F0ABF25283028C ^
179DCA737E269F9D8626D488988C996E06B352C0708 ^
180B8FFC1D4972FCE63241E0E77850AC46DDE75DBFA ^
181E9C9BF41C8549354151B977003CE1D830BE667DB ^
1820942908960B54F96CB43452E583F4F9CB66E398A ^
183FCE34051C34D4B81B85DDC4B543CDE8007E284B3 ^
18461E8916532503627F4024D13884640A46F1D61D4 ^
185F008D5D7853B6A17B7466CD9E18BD135E520FAF4 ^
186BD8D2E873CF659B5C77AAC1616827EF8A3B1A3B3 ^
187B25A04DD425302ED211A1C2412D2410FA10C63B6 ^
188A404E21588123E0893718B4B44E91414A785B91F ^
189A1E13BC55BF6DAD83CF3AABDA3287AD68681EA64 ^
190D5FD35FFABED6733C92365929DF0FB4CAE864D15 ^
191C12E9C280EE9C079E0506FF89F9B20536E0A83EF ^
192E22769DC00748A9BBD6C05BBC8E81F2CD1DC4E2D ^
193F29835A93475740E888E8C14318F3CA45A3C8606 ^
1941A1D77C6D0F97C4B620FAA90F3F8644408E4B13D ^
1954EC84870E9BDD25F523C6DFB6EDD605052CA4EAA ^
196D689513FED08B80C39B67371959BC4E3FECB0537 ^
197C4FED58F209FC3C34AD19F86A6DACADC86C04D33 ^
198051888C6D00029C176DE792B84DECE2DC1C74B00 ^
1991A3540BEE05518505827954F58B751C475AEECE0 ^
200DFA19180359D5A7A38E842F172359CAF4208FC05 ^
2017B0FA84EBBCFF7D7F4500F73D79660C4A3431B67 ^
2029E886081C9ACAAD0F97B10810D1DE6FCDCE6B5F4 ^
203A4D46E4BA0AE4B012F75B1B50D0534D578AE9CB6 ^
2046342B199EE64C7B2C9CBCD4F2DCB65ACEF51516F ^
205AABFD63688EB678357869130083E1B52F6EA861D ^
206F732B7372DAF44801F81EFFE3108726239837936 ^
2075E9347FE4574CDCB80281ED092191199BADD7B42 ^
208D5776B7DFFF75C1358ABDBBB3F27A20BB6CA7C55 ^
209022B7ADA472FB7A9DA9219621C9C5F563D3792F6 ^
2107F1DE4ECA20362DA624653D225A5B3F7964A9FF2 ^
211CA0F2B1BFB4469C11ED006A994734F0F2F5EFD17 ^
212833D63F5C2EA0CD43EC15F2B9DD97FF12B030479 ^
21314FD356190416C00592B86FF7CA50B622F85593A ^
2144AB6B57EDDEF1CE935622F935C1619AE7C1667D6 ^
215B456A6A968ACD66CAA974F96A9A916E700AA3C5D ^
216FD1C257FE046B2A27E2F0CD55ED2DECA845F01D7 ^
21766E0D01780F1063E2929EAAD74826BC64060E38C ^
218A8478DF406F179FD4EF97F4574D7F99EA1CE9EB8 ^
219248E58CF09A372114FC2F93B09C5FC14F3D0059E ^
220F15767DE91796A6816977EFA4FCED4B7FD9B8A57 ^
22136A6BC5E680E15675D9696338C88B36248BBBAF4 ^
2224DEA6251B2A6DF017A8093AB066EE3863A4EC369 ^
223D30E70E357D57E3D82CA554B8A3D58DFF528FA94 ^
22470CA84D827F7FD61446233F88CF2F990B0F3E2AA ^
2258D500C9CFDE0288530A2106B70BED39326C52C3C ^
226F3D4D139EDFC24596377BC97A96FB7621F27FFC7 ^
2275509BAFFAC6D507860CEFC5AB5832CB63CD4B687 ^
2280C0AEA0C2FD7A620C77866B1A177481E26B4F592 ^
229149176007FEE58A591E3F00F8DB658B605F8390C ^
23017C0D7B0256159F3626786FFDB20237AE154FA84 ^
231741A58618ABEB1D983D67AFDCBC49AA397A3B8E0 ^
232B738D6B3409EB9ED2F1719B84D13F7C36169CDEC ^
2333D33DE31F64055D3B128AC9A6AA3F92DFD4F5330 ^
234B6925F4DF94949B8844C867428BA3DEDF4CF2B51 ^
235CF5E7256292ABEC431D8E8B9CBEAF22AF072377E ^
236975DCE94902923977F129C0E4ACF40AD28DDB9AA ^
237333B0259B18CE64D6B52CF563DD3041E5F63A516 ^
238<D
239
240H>SHS Type 3 Hashes<H
241D>
24280E044703A880C20EC41F645120A8A5B5D194ECE ^
243E142829CA08FC9787F17AA16CE727396169B2713 ^
2446A2BAF62469D311F9257A0727F52C7EAA87CCEB4 ^
245362E3E7136CA611D7FBF687D3BBDC54CDA64843F ^
246F5900ADC6223A5D24A7526ABFC60FA8E2D59A5AB ^
247AD0CAC6A21D5B10833DDE7FA85927D74EDA142A9 ^
24847AD337EAFFDC177AAF7CBD035BE6F398B9D0536 ^
2499CF58595DF80872535BCC7C056E223546F0BB4EE ^
2507151CEB1918278CED2902B1D663D596F8D1B986F ^
251ADDC9F09AA4026EF6C4B7F1A84D3A13B4CDC65B3 ^
252921FE78A863A317B1FA1FB3CA3BE1948DE7EF754 ^
25364BE10732D71D52CE8A486DA23E6B453DF7C6FBD ^
2544A450659470DD759ABFAE1D73972A6D2E63AC16C ^
2550D665E4BBF30B7EAB955BDE84759E185EECAB4CB ^
2560C1B8EE94D61CDD0837EAED9FE33DE4A8334B596 ^
257D93BFE2A6227A4BF9B7C61EBCE4A8CDE131593FE ^
258BDA883F804B470C90BD6AC490DFC34EBC27F9648 ^
25946A0969373552213632591C52030C38E5DBDC49E ^
2604781289E48B910C550DC23CA7D3AF5324C03532D ^
261693A34CFCDDED0F3AC72E7197FCE9BB66A8E3981 ^
262AE088AF1D8865140963B3ABFB63E32E04CD1506F ^
263ADF0F8F1D85CA97586F5DC6DC5FD11FA39270F55 ^
264E484F5AD86C5F4D09E366ADF6E0DE73449F97B28 ^
26581C49842BA3D7072FB42288E03CE737A2672C091 ^
266F6CC71AD897C23A16835490DED289BFD45500AB0 ^
26723E71AED62FE8E28F34F58E7FE5594EC5EB0486C ^
26892BA7934AA5867EE52960F4E0EDFB90AA7B69305 ^
269C3D1CC8CBD1B6FFEE0D90CE962CD9C09AB1548AA ^
2703CE37A583B71A6A77BE325066A0F00C5D11DFC3E ^
27176EF5D236E1042D356A3234A422C092F86003064 ^
2728C3F703436C6C882E60263540A8E4C3E5646DC15 ^
2736138F9F3AB43B988DD3857422CCB304352459F40 ^
274B812DE98775B4690B4FC2ECFCAB61C73C7271DC7 ^
27506660985CD80D48E7B9F88455B4233924C3B64BB ^
27676AB4B6378D6F63499A94EB67EB1CB31AFF8D775 ^
277F31F6B0BE7AB059A1F59A46481967E88392979E6 ^
2780C1638498FBB7DB9600B98B4B22EF85E0FE245FB ^
2795607C6AF600939736795AC523FA43B736F41A118 ^
2808A03244866BDD21B9D8A82E98436C894FAD86ECC ^
2818A75BFD911AF87303B9B8FB7A1A47CCA52D3D98A ^
28216F0F3B5D37411236A1E3D6B1EDAB74CDA25ED4B ^
283AC72BF45477481F58A302628DC5299FFA32E7C9F ^
28474CFFD5881F75AC20726E1447DCF7F47024380EF ^
2855BFBECEECBC27DA05729C4D1AC8C1286EA6DCEC9 ^
286012AACBC0579FA4CB4F107E9A9AD1A86AD2F6A4D ^
287F7D552CBC5EF90F1A579388B5A8A9EC71EB67681 ^
28810C70115C4C34753274BFED477DF01440A67A361 ^
289078D2FACD293B6B6219D89899C16AA1AA8E3DE82 ^
29083C6BF9FB0D3091ADF374EBFA0A69916F17E6D26 ^
2912CDB1924DA62AB64C007C6505FF657E4ADDEA9C1 ^
292E95D209BCB9864B076FF4DFCA8F8BD75D62D1B48 ^
293632824CF5025F8F90AD2923BDDF449550D64C0F5 ^
29402B1C0B41FC27EC5A32E586F1AC480BF0061E56A ^
29528156BC6769AE390BF32C6512C46169181E1536D ^
296F730E6E287D992E7F3E013B6F1E088F0B9C41598 ^
297B056A6A832FA5FE964EF77FF3E0BE1C32E0D58C0 ^
298D5B3D19AFBB48FB56BA6D44A82DE6BD08DB208DE ^
2990215AD79BD6B8023C05FD2F8966211897DF6337A ^
300EC4CF38C244EB6526A44F70570925247145DA8CA ^
301C0D931262ECE93DA5A6ABC89CD6AD3162EA6B09E ^
3026BB48FAC26AA2B4859BBDEFCFB53AE4D1D9A0340 ^
30358611D43741E67A7F0DA9CB337A59DCD1EBE758E ^
3047C2AEC216AF231509E47B7EED06BB17859812B7E ^
305F60EE5DBF4A7A676EC98B3DDB1CDD6CDF3CDA33B ^
3060492E59B1F4C94E97F29A26C3EE7D57E1B0FDD72 ^
3074FCF549D902D9BE1101A756DB9E45415FB61BCD2 ^
30895C71D26AD6B38CC771376B4A4F962F12E1E3D4F ^
309F6A2449E773C72FB886B3C43E2B30EC2A1B7454A ^
310CDE86695E00AEC9A5DB6FDDB5D5A5934448D58E0 ^
311502318A758FABFF6AC53844E9E2BCD159C678510 ^
312589D295148F95F75DAE964DD743FE981FA236D4E ^
3137973DD33AE3599A556BACC77E8656E782E029EFF ^
3149F5BE43AADD43C6DB3883C9DA4B52E1A50257AEE ^
315454289D8FFB237A56D5214EAE88F0A9D328FEA1A ^
3167E686B36595BEB4C0D4528FF960EDB55088A028D ^
317F9789D1EF19A0084AC0E9F43A4BC0EE0478939EF ^
3182F32B0E7CC8BE19C325545C816E77056D7BBE70F ^
3196B1617746F073CFCD2CEBCAFBBE6FD0E28ED2D56 ^
320CF8D2EA3888AD76761799383E5A15979F6DB7A88 ^
321557AF6D9D5947203C60E98C9A79B92B8BD085E2B ^
322C61A217423DE68ED6CD34C91756C8DD3A650A2A2 ^
32373F3F79C151B6C1BD9369EDB26B932C2362B0593 ^
324364141E5FBCDE83F210C5BBBEB6810F6299DE14B ^
325F806BECD025D264FD59E93D9E3606A674C40F216 ^
326E0C761A57F00CBFB07D49BCB034C36A7122F4C5B ^
3275D3831044B9E0032FBE3C3425FFD13698F413B33 ^
3287EB1AB41E9997753C5D530DF118E71E72D7B86FC ^
329CC053EA1556269D7E8BCBA30B208FCBF0EE2EE64 ^
330A57739B1DD41E7DC0C40D6B6159A7E73CE2748AA ^
33190DA527C9DB9ACC2FD530D560A2F1191A80D0567 ^
3326AC1F2A0B8CA0E5ABC9FDF1ADCE588FBDF5CC53E ^
33343C1A0A0EE4163EC929726989F92B03639B233AB ^
3348927F299462413AC29A74080E54D8EE2DB7165E7 ^
3350C8D7E22226D91B423E781B508F31517EAAB607B ^
3367286E20D7F08D18A893254FBD3CC833F7973DCAF ^
3370CB8C235928B8E936C43B8F29EF3758B9FD54A7B ^
338F67C24CC23E440CA3F206CEEB5504ECA54CD5CA3 ^
339D78A25DEAA1E7ADADDB3C145ED0E5263BA4F2910 ^
34000AA68174D29492C578AC853FFCD55908292D41A ^
341D5570EEDB09A62A5948F7F311F7ED5EF247F9AD9 ^
342<D
diff --git a/src/lib/libssl/src/fips/sha1/sha1vectors.txt b/src/lib/libssl/src/fips/sha1/sha1vectors.txt
new file mode 100644
index 0000000000..c2ea186603
--- /dev/null
+++ b/src/lib/libssl/src/fips/sha1/sha1vectors.txt
@@ -0,0 +1,2293 @@
1# Configuration information for "SHA-1 Test"
2# SHA tests are configured for BYTE oriented implementations
3H>SHS Type 1 Strings<H
4D>
50 1 ^
65 0 2 1 2 1 2 ^
75 0 1 3 4 4 4 ^
87 0 4 3 4 4 1 4 4 ^
910 0 4 1 5 3 4 4 3 1 3 4 ^
1010 0 3 1 6 5 5 1 3 6 6 4 ^
1113 1 3 2 5 3 3 3 4 6 6 1 4 6 2 ^
1216 1 3 5 5 1 2 1 3 3 6 3 5 2 3 5 7 2 ^
1315 1 8 1 5 3 2 7 4 5 6 7 3 3 1 6 3 ^
1415 1 4 6 8 2 1 4 2 5 1 6 8 8 6 4 7 ^
1518 1 1 2 7 3 8 6 7 5 4 3 4 3 5 3 3 2 6 8 ^
1616 0 9 8 1 8 1 7 6 7 7 1 2 6 9 5 4 7 ^
1718 0 7 1 7 3 9 4 7 7 5 2 8 1 7 8 2 7 2 9 ^
1819 1 2 3 1 8 8 6 9 10 3 10 8 9 2 4 1 5 1 5 9 ^
1919 1 8 5 4 8 1 3 9 5 7 7 2 7 2 7 8 7 4 8 10 ^
2020 1 1 9 7 4 1 4 5 1 10 8 6 4 4 9 9 9 8 2 9 10 ^
2119 1 11 6 7 7 2 6 2 6 10 6 9 10 5 11 1 6 8 11 4 ^
2222 0 10 5 10 3 7 8 9 9 1 1 1 10 2 1 5 10 2 9 9 9 7 8 ^
2321 0 1 10 1 6 9 4 2 5 2 11 8 12 12 9 8 1 3 10 7 11 12 ^
2424 1 3 9 5 12 3 4 2 9 12 11 6 6 1 1 9 5 9 1 4 9 4 10 8 9 ^
2525 1 3 2 3 11 1 12 5 6 2 7 8 4 8 8 9 9 8 4 9 1 4 8 10 9 9 ^
2623 0 11 10 7 10 10 6 10 9 4 5 10 5 8 4 1 10 12 4 6 1 8 11 6 ^
2722 0 12 8 10 4 3 8 5 5 7 11 13 11 12 11 4 12 3 6 5 11 10 5 ^
2826 1 10 9 6 9 7 2 10 4 4 5 5 2 12 13 5 3 1 10 1 4 7 8 13 13 12 9 ^
2931 0 2 6 5 4 7 3 10 6 13 6 3 9 6 2 10 5 3 8 4 1 11 3 5 3 7 11 1 12 9 12 5 ^
3027 1 14 5 1 3 7 2 3 9 3 4 14 4 4 10 8 5 14 1 11 12 12 10 4 13 7 11 9 ^
3130 1 4 9 5 5 8 9 5 10 4 2 4 7 9 9 6 3 5 1 8 3 2 13 3 14 9 8 9 10 14 10 ^
3227 0 12 9 5 8 7 2 14 12 3 8 14 6 6 4 7 5 7 10 7 11 10 1 9 6 7 12 14 ^
3324 0 12 9 9 2 11 13 12 11 11 6 14 13 10 5 6 8 10 4 3 11 11 14 5 14 ^
3424 0 15 4 5 3 8 12 15 8 14 15 9 12 12 3 10 13 6 11 10 4 13 14 8 8 ^
3528 1 1 8 1 5 11 4 9 12 4 13 15 5 9 11 7 14 11 1 11 7 8 8 11 1 13 15 12 13 ^
3632 1 5 8 3 8 10 7 8 1 5 13 12 14 5 3 6 4 12 15 6 6 10 11 13 9 1 11 6 10 3 7 14
372 ^
3831 0 10 3 5 1 14 11 11 16 1 2 2 11 6 13 15 12 6 5 16 2 14 2 10 12 2 5 5 6 10 13
3915 ^
4034 0 3 10 8 16 9 5 12 15 4 11 13 3 6 5 10 8 1 3 9 3 11 1 2 16 12 10 6 1 9 1 16
415 6 14 ^
4230 1 1 12 4 4 2 15 13 15 11 15 5 11 9 7 15 16 6 16 12 3 2 10 16 5 5 7 1 7 11 16
43^
4434 0 7 9 11 2 5 5 5 4 13 13 14 4 7 12 6 4 8 2 9 9 13 13 3 3 6 7 16 7 6 15 5 8
4515 14 ^
4636 1 4 6 16 15 11 14 14 4 7 10 3 4 10 3 6 7 14 4 6 6 5 2 7 8 16 2 12 16 10 14 3
472 3 7 14 3 ^
4832 0 15 10 9 1 14 10 14 6 6 16 3 2 3 8 3 12 8 11 17 3 9 7 16 14 4 11 15 5 13 9
495 17 ^
5030 0 17 17 13 8 2 6 8 16 1 12 5 17 2 9 8 10 13 14 11 17 12 5 14 9 11 9 11 4 11
5112 ^
5230 1 16 6 10 5 8 3 17 16 14 1 15 15 15 6 13 2 11 6 13 11 13 4 6 7 11 11 12 16
5313 16 ^
5433 1 16 16 14 16 2 4 16 11 6 15 7 4 17 6 5 7 6 3 14 16 5 17 11 13 1 1 14 13 3 6
5514 5 16 ^
5639 1 2 16 13 7 8 6 2 15 1 9 12 4 4 11 13 7 2 11 9 18 4 5 4 8 2 14 9 9 1 8 13 11
5715 8 5 9 10 16 7 ^
5834 0 2 7 1 1 17 13 6 11 10 8 5 12 15 6 15 10 12 4 18 1 2 8 11 12 16 10 12 18 11
5916 12 11 17 6 ^
6034 1 4 7 13 7 10 7 10 6 1 12 7 18 11 18 2 10 15 10 14 8 18 9 9 12 12 3 13 12 6
614 9 17 13 17 ^
6240 0 5 7 3 2 1 17 14 4 16 6 13 1 13 6 6 10 1 3 18 3 11 7 9 5 7 11 17 1 9 16 5
6315 10 17 3 8 15 17 8 12 ^
6440 0 11 3 15 17 11 1 1 4 3 14 18 4 2 18 8 15 6 4 6 3 15 11 16 10 17 17 9 6 3 2
656 16 4 9 12 6 8 1 11 17 ^
6637 1 2 19 12 8 16 14 2 9 16 2 6 6 7 9 10 9 11 9 14 11 15 5 16 9 2 17 2 8 15 8 4
673 14 14 16 16 12 ^
6837 1 11 10 16 12 11 7 14 14 14 6 10 10 1 6 13 19 5 6 4 7 12 12 10 5 10 15 15 8
695 13 17 13 5 6 14 1 19 ^
7038 1 2 6 5 17 9 11 18 18 8 6 13 15 3 3 15 5 13 18 3 2 5 5 14 7 13 4 17 7 2 17 3
7118 15 7 15 16 18 11 ^
7238 1 12 8 6 3 17 12 13 19 15 9 7 17 16 15 3 11 11 5 2 13 19 16 2 4 16 7 8 1 2 9
7317 12 3 5 18 19 11 9 ^
7439 1 14 16 14 8 9 16 5 1 6 3 17 18 16 9 1 15 9 10 9 19 1 3 3 20 11 13 17 1 19 8
753 4 3 7 1 14 19 19 19 ^
7637 1 18 13 11 5 18 4 19 10 6 19 11 17 10 10 7 9 13 16 9 10 18 4 12 5 16 5 20 12
773 8 10 1 18 1 6 20 14 ^
7836 0 8 9 6 12 11 7 7 3 17 13 6 20 17 9 20 16 10 12 17 8 11 8 11 10 5 10 14 18 8
7919 9 12 12 2 20 19 ^
8039 0 12 16 20 3 9 9 19 17 13 13 4 17 2 11 7 14 3 6 16 13 10 13 5 16 10 2 8 2 17
8119 4 17 7 19 6 9 15 15 6 ^
8243 0 7 2 18 5 7 18 5 2 15 7 11 10 9 3 2 14 19 3 11 8 18 15 5 3 5 12 15 16 10 17
837 19 16 2 1 16 6 3 19 12 5 18 16 ^
8449 1 9 11 2 1 12 11 14 12 14 10 4 11 6 8 16 7 5 11 20 8 17 4 14 4 15 3 2 2 4 3
852 3 14 15 10 2 12 7 3 7 20 20 19 10 2 3 1 10 20 ^
8636 0 19 20 12 5 19 21 5 21 11 14 19 1 17 8 9 4 19 3 17 1 14 21 14 7 6 5 20 14
8721 20 4 6 21 7 11 12 ^
8841 0 12 9 11 6 16 18 18 10 11 20 6 12 11 5 7 21 19 18 6 15 21 10 4 14 9 19 10 3
893 5 13 1 8 12 3 13 9 7 10 17 14 ^
9045 0 10 6 8 3 17 18 3 21 19 6 17 15 4 9 15 9 15 14 4 7 14 8 10 13 4 11 10 7 6
9121 1 14 5 11 7 7 2 13 13 3 9 13 8 14 20 ^
9239 1 3 7 18 4 9 9 5 15 13 17 10 15 16 20 8 19 9 10 9 1 19 14 21 2 18 13 10 4 18
9316 4 21 15 10 18 19 3 12 18 ^
9441 0 14 4 13 11 1 11 1 10 2 12 4 21 10 21 18 9 2 16 7 20 6 7 12 19 20 1 13 12
9510 8 21 15 7 19 13 6 8 19 20 18 19 ^
9637 0 11 18 1 17 14 15 20 16 20 8 2 17 10 4 21 5 19 19 14 22 21 18 13 14 1 3 12
9711 11 4 22 13 5 18 7 21 21 ^
9848 0 9 22 19 12 8 16 5 17 5 9 1 2 9 6 12 6 1 7 4 3 15 1 14 1 12 3 10 2 10 14 21
9913 17 6 6 17 1 21 2 14 16 17 9 11 20 21 11 18 ^
10050 1 12 8 20 13 2 9 20 9 14 10 1 16 2 22 6 4 16 14 15 1 12 4 14 9 21 3 3 9 8 21
10115 14 8 4 14 4 2 3 8 12 8 6 1 2 18 20 15 3 19 10 ^
10244 0 10 20 14 6 3 4 21 1 12 4 18 2 6 7 6 9 20 14 10 10 19 17 21 12 15 17 7 10
10311 8 10 12 1 19 19 9 18 21 4 18 11 9 22 5 ^
10447 0 15 8 15 3 5 6 2 19 12 17 4 20 8 11 20 2 18 4 16 20 12 9 9 6 16 21 16 3 16
10518 3 19 5 16 2 4 2 12 11 15 11 14 17 2 10 18 8 ^
10648 1 5 13 3 21 5 3 6 18 18 10 1 21 21 7 1 13 12 19 1 14 6 8 21 19 21 11 19 13 2
10713 4 1 10 22 16 4 9 4 10 16 3 7 15 11 9 13 17 12 ^
10845 0 14 7 6 2 20 3 6 19 19 10 2 22 12 17 12 1 20 7 7 15 20 6 18 8 3 14 23 18 15
1094 7 5 23 15 7 14 10 10 19 17 2 4 15 17 21 ^
11045 1 15 11 8 9 17 5 12 18 14 6 20 17 21 12 16 9 22 9 20 15 2 22 11 2 6 11 9 8 2
1114 14 19 3 21 21 23 8 2 11 4 8 4 20 22 11 ^
11238 0 21 18 22 10 19 9 14 17 23 21 10 7 15 13 16 5 4 10 13 14 20 23 12 20 23 18
11310 12 8 21 11 6 12 7 19 14 18 17 ^
11440 0 18 22 6 9 22 5 23 13 6 8 23 20 22 5 22 15 19 20 9 9 1 13 13 10 14 13 5 22
11514 21 9 21 19 14 14 4 18 13 12 14 ^
11648 1 7 3 15 5 17 14 23 14 5 17 22 11 1 8 13 23 6 21 3 6 11 7 23 8 6 21 4 4 22
11719 13 8 5 19 7 5 23 1 4 19 11 23 11 21 14 1 3 21 ^
11843 0 22 14 11 7 18 16 17 24 12 12 3 13 19 16 22 4 16 4 6 23 8 18 11 2 3 20 22 9
11921 8 23 1 23 20 7 16 13 23 4 13 3 7 22 ^
12047 1 23 6 13 19 2 3 7 2 9 9 15 6 13 4 22 6 19 20 1 9 7 14 1 15 3 23 24 22 18 12
12112 17 19 10 8 11 22 12 10 2 20 15 18 17 18 7 19 ^
12247 1 12 21 6 12 4 7 18 17 3 2 14 24 14 1 23 1 11 15 10 6 18 20 7 1 8 1 16 6 20
12323 23 21 10 10 12 24 10 11 23 2 12 23 9 3 24 24 10 ^
12452 0 14 10 18 15 14 5 16 11 22 2 15 24 8 22 1 4 24 9 10 15 3 9 5 4 17 15 9 12
12519 19 1 3 10 6 8 3 17 8 18 24 19 3 4 15 4 9 2 24 5 20 13 13 ^
12642 0 20 17 19 22 13 8 10 19 15 11 1 14 17 20 22 10 7 11 16 9 21 22 17 23 12 15
1274 24 7 21 18 2 21 16 1 19 18 20 11 3 15 17 ^
12850 0 18 1 6 14 5 5 5 19 13 10 24 19 16 24 15 13 2 19 15 24 21 17 4 13 17 1 1 9
1291 10 2 18 1 21 19 5 18 12 2 22 16 23 15 19 6 18 9 1 23 5 ^
13051 0 21 13 14 11 18 12 13 3 19 9 20 22 20 2 11 12 6 1 12 16 18 2 9 8 4 3 11 17
13111 5 4 19 16 11 23 13 18 1 20 8 2 16 16 21 4 19 5 5 20 24 16 ^
13253 1 20 25 17 11 8 4 19 25 17 7 16 21 6 4 8 2 15 9 2 9 19 3 6 3 3 10 25 13 15 7
1338 20 21 12 10 12 5 24 11 20 3 13 13 16 9 13 10 3 9 16 3 7 25 ^
13449 1 9 9 14 2 13 17 25 2 18 5 19 23 9 25 9 10 23 12 12 7 13 8 15 7 1 6 21 2 8 7
1356 16 14 14 12 15 13 24 10 15 11 10 8 14 15 21 25 21 25 ^
13647 0 9 18 20 22 21 20 11 14 23 22 10 13 14 8 19 12 2 11 20 23 13 4 10 6 5 7 23
13711 3 16 8 21 4 8 18 5 12 14 8 6 20 19 24 8 23 17 23 ^
13848 1 7 19 1 18 1 14 22 13 14 5 8 22 18 14 25 17 11 12 22 2 12 12 16 12 13 18 17
13912 17 14 18 8 25 9 23 5 3 8 14 24 17 7 3 3 23 17 22 19 ^
14051 1 19 17 16 22 24 14 16 20 23 20 9 19 16 7 12 16 5 8 9 7 10 21 24 10 11 19 1
14121 14 14 19 3 22 8 12 20 1 18 5 6 5 12 14 1 1 11 9 22 3 24 4 ^
14252 1 6 1 11 16 1 12 8 11 11 17 10 22 7 3 10 2 6 4 24 16 24 19 4 5 18 11 12 9 20
14321 25 2 21 18 10 20 25 21 3 17 17 5 8 22 25 19 8 10 19 7 11 18 ^
14444 0 26 14 21 25 25 4 9 13 5 8 9 21 8 12 26 24 9 24 15 1 23 22 16 14 8 22 15 19
14524 20 7 8 15 24 12 4 4 23 21 13 19 15 21 12 ^
14659 1 15 7 3 21 20 8 22 14 23 26 19 2 10 18 3 5 3 1 9 15 15 3 7 13 23 9 7 1 13
14717 14 25 9 16 2 2 6 13 7 19 25 17 1 5 21 2 7 22 5 6 25 3 12 19 6 2 4 24 17 ^
14860 0 9 18 20 19 4 11 14 1 6 8 26 6 9 22 4 10 2 7 21 9 8 24 25 14 22 12 22 3 23
1493 3 20 6 11 23 6 1 7 5 18 5 15 25 26 1 1 10 11 11 4 12 11 20 3 14 2 3 2 23 15 ^
15049 0 12 17 24 11 8 6 24 16 15 22 21 14 6 12 20 19 5 5 12 11 6 23 2 16 23 7 24 6
15121 2 17 17 5 25 11 25 20 25 24 18 6 12 19 25 7 6 5 2 25 ^
15254 1 12 16 1 15 7 1 26 19 19 13 20 11 17 6 20 5 24 24 1 21 11 9 20 21 15 10 19
15326 3 2 6 7 12 9 10 8 14 10 15 5 17 8 21 1 20 25 6 19 8 3 22 16 16 20 ^
15463 0 17 13 11 10 17 15 12 6 13 14 17 4 12 10 24 5 13 24 3 5 2 5 11 14 8 5 10 17
15516 8 4 14 21 15 3 6 17 25 8 2 3 3 19 10 13 22 22 8 2 13 25 17 2 1 19 1 14 20 2
1565 4 15 24 ^
15749 0 14 20 7 25 20 26 20 16 7 17 17 22 1 13 6 5 1 18 14 15 23 15 10 5 19 18 18
15826 12 13 3 25 12 21 16 24 4 16 3 6 26 26 10 20 13 1 20 24 15 ^
15956 0 3 8 14 5 5 7 11 13 11 26 11 4 26 17 20 19 11 10 3 10 14 9 6 9 7 16 10 4 4
16019 19 2 26 13 19 17 15 24 15 4 21 22 13 13 12 22 2 14 20 5 18 7 17 24 20 20 ^
16158 1 6 17 9 20 2 10 19 3 22 4 1 11 3 5 3 21 11 15 12 23 26 5 2 27 6 5 16 6 3 2
16223 5 3 20 20 4 24 2 18 21 7 14 10 27 23 6 24 6 19 23 3 9 22 16 21 17 19 23 ^
16358 1 17 7 21 19 6 16 15 15 20 14 2 25 19 14 18 19 7 9 1 14 11 10 16 3 23 14 26
16410 11 1 18 1 12 24 19 19 1 7 2 3 24 7 12 9 2 8 16 20 24 5 26 26 4 9 2 7 25 17 ^
16554 1 8 12 18 14 26 7 17 18 4 20 1 16 14 21 26 4 6 8 24 11 25 15 24 16 23 4 10
16623 21 24 15 10 9 26 7 14 24 21 6 20 5 17 16 17 1 3 12 1 4 13 3 9 21 26 ^
16756 1 7 18 11 1 19 20 23 12 12 27 13 13 15 16 13 1 16 15 12 26 3 16 16 8 17 13
16821 4 6 5 19 14 16 4 16 11 14 18 18 27 9 13 21 3 26 22 3 7 6 4 26 3 15 8 25 21 ^
16950 1 20 13 9 11 20 6 11 21 27 25 20 7 4 18 26 16 27 5 12 19 7 23 6 25 25 2 11
17013 25 21 18 17 6 12 14 13 24 11 14 19 26 27 25 6 1 15 4 7 27 15 ^
17151 0 15 16 26 27 23 14 12 28 22 15 8 19 2 20 13 1 24 2 25 1 6 19 19 8 11 24 24
17221 13 27 5 11 28 17 7 25 6 23 24 14 25 12 5 13 26 2 5 8 10 16 17 ^
17358 1 5 26 18 19 21 3 12 11 13 4 14 22 22 14 16 13 3 22 16 23 5 19 6 13 10 26 17
17427 26 4 3 25 6 14 2 3 5 7 23 11 22 8 25 2 9 25 18 17 8 2 14 4 19 1 5 27 13 24 ^
17553 0 2 27 28 2 17 23 10 27 18 26 7 22 16 3 27 1 26 21 28 10 3 6 2 2 10 17 13 16
1766 17 21 23 13 20 22 5 6 11 12 12 8 23 13 17 9 23 20 3 28 27 12 17 22 ^
17759 0 28 19 5 21 4 27 8 1 19 14 20 6 7 9 1 6 22 3 19 26 14 8 6 7 19 15 23 1 17
17816 6 26 14 5 22 25 4 7 10 16 21 10 18 19 24 16 23 8 3 17 28 18 10 2 5 3 21 21
17915 ^
18058 0 6 24 1 4 24 18 10 22 1 21 12 5 4 4 20 25 24 26 8 25 11 2 7 27 22 19 4 18
18127 10 28 4 12 24 8 16 12 11 16 17 25 8 12 16 1 9 9 10 5 24 23 18 5 14 18 8 4 28
182^
18361 0 5 17 8 28 1 22 4 11 3 2 17 3 14 9 27 13 18 24 9 8 7 28 25 14 21 27 24 6 18
18416 2 12 15 9 14 10 1 8 17 4 6 15 26 11 15 2 28 20 26 16 3 7 5 8 9 26 10 12 25
18511 22 ^
18653 0 9 13 24 15 20 2 4 8 2 22 20 19 4 15 14 28 13 25 10 10 12 28 24 22 26 28 15
1879 11 26 19 22 27 2 21 8 20 23 26 12 10 21 9 15 13 25 7 26 1 13 5 9 20 ^
18858 0 3 9 21 22 7 1 23 28 1 2 8 22 12 18 28 5 18 14 7 11 17 20 20 7 21 13 8 28
18921 22 2 16 20 15 28 9 3 22 13 10 23 4 16 11 14 1 10 8 14 14 15 18 13 12 21 18
19025 28 ^
19160 1 29 20 2 29 22 8 16 20 4 12 9 6 12 16 16 7 9 20 29 11 9 4 1 15 25 16 29 10
19222 7 2 8 5 18 14 23 24 4 6 26 3 11 6 12 1 7 14 24 14 6 10 21 16 23 29 25 6 14
19317 24 ^
19464 0 12 10 5 10 15 25 8 15 3 7 13 25 16 14 1 29 22 26 15 27 9 1 8 8 28 6 13 5
19513 3 15 5 23 8 23 2 5 5 4 17 13 14 7 17 12 27 3 18 5 7 5 26 18 15 22 28 16 13 7
1962 23 19 25 15 ^
19756 1 17 7 16 25 23 11 11 15 2 13 9 26 2 24 26 7 28 11 2 29 7 22 23 5 28 19 1 27
19829 1 24 11 18 20 3 13 11 7 3 15 17 24 1 18 13 6 3 25 27 16 28 18 24 8 23 22 ^
19951 1 29 28 6 28 14 12 28 27 22 4 14 25 1 3 9 7 11 14 15 16 10 19 12 19 11 20 13
20028 4 27 28 7 27 12 4 28 21 17 22 20 17 15 15 23 22 13 12 21 22 21 29 ^
20164 1 12 14 12 18 27 8 7 4 9 14 16 15 8 11 21 20 10 10 21 23 20 2 11 23 1 11 1 5
2023 23 16 15 27 14 5 16 3 22 2 3 24 3 19 29 4 4 10 8 20 14 15 1 26 12 27 25 4 28
20322 11 19 19 24 9 ^
20460 1 20 8 9 5 25 19 17 19 15 7 24 24 21 3 20 16 8 3 17 28 18 29 9 23 9 10 29 4
20512 24 15 5 8 22 17 29 12 3 8 29 15 21 21 4 7 20 7 10 7 26 10 16 24 6 7 12 8 12
20615 17 ^
20760 0 9 17 11 28 12 26 26 6 29 13 10 20 6 23 10 4 3 26 26 14 20 20 25 14 13 15
20824 14 11 4 23 27 24 20 9 16 17 24 13 12 6 1 14 26 25 7 8 21 1 19 3 2 2 17 21 13
2095 9 21 11 ^
21054 0 25 1 27 24 6 23 16 5 1 20 29 22 25 9 25 10 3 28 28 25 19 18 16 24 14 15 5
21128 12 28 26 29 2 15 15 9 5 18 19 22 12 15 4 6 15 24 16 9 4 26 25 18 27 12 ^
21261 1 20 4 26 12 3 22 1 22 30 3 28 10 9 24 14 29 6 30 3 10 20 14 6 3 19 21 21 28
21316 18 11 30 11 20 30 1 9 8 11 5 19 10 24 4 22 4 2 26 5 15 20 8 3 13 30 18 8 1
21425 28 19 ^
21556 1 20 15 21 18 18 12 16 13 24 9 21 2 28 6 1 23 9 18 27 27 4 9 13 10 8 14 16
21615 12 11 14 21 14 10 11 25 17 17 30 21 13 27 26 26 22 14 13 17 21 19 9 9 20 23
21713 28 ^
21859 1 10 28 24 10 22 27 23 27 8 17 14 6 4 21 26 15 1 8 29 27 6 28 15 3 27 25 25
21914 19 13 29 8 24 2 8 2 4 12 19 11 10 6 26 14 22 24 30 10 11 12 2 12 17 23 8 8
22012 28 12 ^
22156 0 14 28 2 17 4 8 3 26 9 23 21 30 30 20 4 13 28 29 9 3 17 7 19 30 28 1 2 20 9
22212 24 15 30 20 27 3 23 11 6 29 25 23 26 17 20 10 22 15 23 6 25 5 4 30 2 29 ^
22363 1 23 15 27 14 26 1 1 7 19 12 7 6 20 18 14 4 15 17 28 7 11 7 8 9 22 17 12 5
22423 18 25 18 6 12 26 30 12 30 14 3 1 18 10 20 27 21 8 6 24 26 20 11 24 7 2 4 18
22515 14 30 16 19 14 ^
22652 0 27 15 4 19 25 29 29 7 14 18 9 11 9 27 11 15 29 9 28 20 2 30 26 21 17 8 28
22717 22 29 24 8 11 18 29 15 6 7 27 27 17 24 18 23 11 19 8 30 5 24 22 24 ^
22866 1 25 15 28 23 5 10 21 5 8 7 3 10 19 17 6 9 15 29 10 7 4 1 16 21 16 29 13 18
2295 3 8 15 8 21 29 20 5 27 2 13 27 7 7 30 2 18 26 10 2 5 29 21 15 25 26 24 8 12
23020 3 9 10 30 7 12 29 ^
23153 1 30 26 20 11 22 19 27 2 16 10 6 4 24 17 20 25 20 15 8 23 23 20 30 18 16 3
23230 15 26 23 28 7 21 8 7 31 31 14 26 18 3 1 26 28 15 25 11 31 3 25 9 21 30 ^
23367 0 2 6 14 4 9 5 28 8 17 22 1 4 8 7 10 14 19 10 14 8 27 9 24 26 4 30 11 8 19 5
23421 7 2 27 20 16 20 20 22 14 13 16 26 14 10 3 25 22 25 23 21 10 15 15 29 8 13 4
2352 13 22 20 7 4 20 31 23 ^
23665 0 2 2 28 13 19 14 12 23 27 6 2 14 2 22 6 25 30 29 31 13 14 16 31 12 16 30 5
23714 31 11 4 1 1 25 21 13 26 22 21 5 22 14 29 1 21 3 14 30 4 2 29 12 15 23 3 15 5
2381 6 23 22 13 1 14 23 ^
23959 1 25 5 15 6 13 3 22 11 23 31 24 6 5 20 4 14 3 29 8 29 19 7 29 23 25 28 19 11
24015 27 21 14 1 19 20 26 12 7 12 1 18 13 29 28 23 29 14 23 7 1 9 29 24 5 30 18 5
24125 30 ^
24255 1 31 25 13 7 24 25 24 1 12 19 9 7 6 28 20 14 28 21 19 31 20 20 6 24 18 27 24
2434 18 21 1 31 15 1 15 2 27 4 26 25 4 23 19 2 31 22 30 21 22 5 27 12 30 28 31 ^
24462 0 27 15 18 14 25 15 17 7 28 11 28 29 30 1 17 12 10 2 18 20 21 2 11 12 5 4 12
24525 14 5 5 24 22 18 31 15 22 29 11 3 21 31 21 27 3 28 7 10 25 2 15 30 9 30 7 22
24615 9 3 20 24 14 ^
24760 0 28 14 18 9 27 14 22 27 31 10 8 14 7 15 7 20 5 26 1 29 7 17 17 8 3 13 27 18
2488 31 27 28 22 22 17 19 18 18 11 19 13 25 10 19 6 28 4 31 23 10 18 26 31 5 10 13
24912 8 15 27 ^
25060 1 24 22 4 29 22 31 28 20 4 16 21 3 1 15 5 15 6 30 3 29 29 7 27 20 2 20 31 22
25126 9 29 16 4 26 32 17 20 14 28 17 19 6 24 11 26 28 5 18 15 8 16 20 21 4 9 12 4
2528 17 29 ^
253<D
254
255H>SHS Type 2 Strings<H
256D>
25769 1 5 3 11 15 12 24 31 23 1 6 28 2 8 31 6 7 30 5 19 23 12 6 9 31 19 17 24 25
25822 6 12 16 3 7 9 9 11 29 4 11 2 5 13 29 10 12 30 32 18 28 18 27 3 30 4 4 26 6
25913 31 13 2 11 7 24 4 17 29 12 ^
26095 0 21 19 21 23 11 42 36 2 13 4 1 33 22 16 27 9 4 33 16 3 30 15 11 32 13 17 38
26132 9 38 4 36 15 32 27 19 42 18 6 36 22 10 29 12 25 40 15 29 23 28 30 4 8 11 24
2629 10 31 28 43 23 16 29 33 5 40 26 3 19 12 36 43 5 35 37 5 14 11 45 35 16 10 8
26332 4 15 35 26 2 39 22 37 22 30 29 ^
264106 1 18 14 51 2 6 32 51 9 32 50 44 46 51 8 11 53 45 55 16 10 3 52 8 20 20 46
26546 13 32 2 46 50 43 25 54 9 31 29 2 47 15 29 24 45 44 18 37 14 28 39 36 44 47
26616 50 10 44 24 53 35 22 40 20 15 51 22 18 22 42 6 54 49 38 21 7 13 30 16 7 52
26716 22 13 38 7 11 44 33 9 25 13 37 42 14 45 53 30 38 5 25 5 35 38 22 28 53 ^
268127 0 58 35 43 28 5 28 63 8 12 25 9 47 53 29 62 7 37 2 3 48 5 12 55 56 28 35 12
26963 6 58 27 27 48 44 35 14 17 22 56 10 8 1 16 15 42 63 14 51 57 19 41 7 8 56 47
27034 52 22 48 60 43 9 1 52 4 21 49 61 18 50 23 13 46 62 23 45 62 9 56 18 23 31 8
27130 27 36 13 38 4 58 53 47 24 18 41 58 19 12 18 52 42 29 44 45 26 63 34 32 41 64
27215 26 55 19 2 49 6 30 53 13 54 12 53 37 12 37 43 ^
273148 0 60 4 51 47 58 38 17 63 33 23 28 43 12 69 70 33 17 12 50 18 18 36 45 2 67
2744 45 20 4 33 38 29 45 8 22 58 39 71 38 32 53 35 19 53 31 29 51 35 4 63 18 33 26
27547 70 9 64 62 63 30 15 1 35 28 16 40 20 14 50 33 19 38 30 27 55 10 16 46 47 7
27655 12 53 26 56 33 29 55 25 17 48 43 21 43 18 24 63 27 68 46 38 33 35 10 18 11
27727 5 9 58 35 70 36 36 39 47 2 10 66 47 5 18 21 44 71 51 57 3 22 7 56 55 28 25
27814 40 16 24 48 37 66 50 24 45 18 39 53 55 ^
279165 1 15 62 35 29 15 40 19 76 67 4 5 71 46 61 26 8 77 48 1 23 12 60 40 24 44 33
28029 42 73 66 49 61 20 30 1 54 52 42 39 64 23 65 37 24 20 11 26 66 22 77 22 57 7
28138 57 33 61 73 7 64 1 49 35 76 14 27 21 45 68 38 58 73 13 72 47 73 33 8 66 23
28238 4 56 77 47 10 71 13 20 31 41 6 51 3 18 17 61 47 14 48 76 46 28 34 43 1 56 4
28325 7 65 41 1 34 37 23 59 59 27 26 13 15 14 75 60 14 1 28 59 26 65 61 16 23 17
28428 6 19 2 35 49 30 29 48 2 63 73 59 1 3 76 41 11 19 18 43 54 63 67 51 4 9 78 60
28566 ^
286181 0 18 19 84 17 12 10 57 18 77 51 52 16 39 74 49 52 63 38 72 2 15 64 83 62 49
28756 11 26 68 58 83 33 23 50 63 71 53 27 84 22 39 41 52 58 11 64 7 60 45 70 22 5
28873 38 30 30 48 21 75 80 40 21 8 53 9 26 30 34 81 71 71 51 23 75 33 41 23 32 5 8
28966 40 72 40 16 66 45 14 48 34 21 41 27 3 55 27 37 23 41 65 4 57 51 74 22 19 75
29042 16 19 46 16 10 48 20 19 37 41 14 57 9 17 55 38 5 60 7 46 20 43 36 39 52 20
29110 62 45 23 46 7 35 75 29 70 35 36 34 25 12 15 84 26 10 6 71 29 79 33 32 25 59
29276 82 64 58 7 8 19 41 74 2 53 65 24 1 55 51 36 21 79 7 ^
293184 1 60 66 66 6 3 9 73 12 7 40 70 18 71 70 65 51 14 14 27 50 9 87 81 50 22 19
29440 37 16 79 12 34 37 76 82 10 61 7 81 49 67 26 45 82 50 81 63 45 69 31 31 76 51
2959 59 34 51 54 34 83 10 33 51 86 81 82 69 18 8 22 64 19 86 62 58 33 37 17 34 5
29629 83 42 76 50 54 66 39 9 1 36 43 17 65 6 35 56 72 71 83 88 10 1 8 87 22 6 21
29778 25 89 43 62 40 55 85 31 89 74 63 46 28 24 26 31 17 7 8 27 19 12 85 17 20 27
29877 10 2 54 80 17 52 74 76 69 78 11 20 80 4 29 24 85 75 18 39 23 70 83 29 57 67
29972 70 33 4 15 46 42 2 69 13 53 33 69 64 33 64 14 40 69 59 78 54 ^
300193 1 68 43 95 53 38 58 55 28 20 16 67 48 17 86 32 44 68 67 28 16 14 79 25 15
30172 67 50 80 18 30 10 75 1 60 45 87 78 28 95 49 63 70 59 26 6 51 73 60 65 18 26
3028 87 5 58 31 25 57 40 46 78 57 34 78 61 36 66 57 38 80 22 32 68 71 30 74 37 81
30366 77 66 55 2 51 24 93 61 40 68 45 61 12 63 24 89 59 52 72 43 20 20 69 36 40 88
30446 9 62 55 77 84 20 18 6 77 15 52 39 75 3 26 4 85 17 62 29 11 92 46 58 29 59 28
30542 80 71 96 2 49 85 37 63 4 61 14 2 53 87 25 86 6 75 76 93 41 39 93 92 42 56 41
30663 26 28 18 77 11 50 78 79 1 12 12 91 29 13 58 5 56 92 66 59 4 39 47 95 5 5 62
30733 13 80 27 ^
308203 1 35 28 11 7 20 7 17 3 3 30 89 13 65 56 66 63 22 82 16 31 55 56 77 91 91 71
309101 13 10 85 101 95 17 99 98 91 33 14 20 48 32 7 64 29 38 35 25 4 95 23 34 1 85
31081 23 31 96 71 84 50 15 79 47 25 51 45 35 66 19 61 60 9 31 93 64 70 30 42 86 53
3111 71 46 42 22 38 96 10 99 34 76 26 55 73 63 63 97 23 92 81 64 46 1 30 31 35 86
31291 88 64 87 16 37 69 84 94 60 100 3 47 52 8 71 87 57 29 76 43 18 45 46 15 65 12
31344 42 66 60 15 68 19 58 39 62 76 9 92 101 57 32 4 34 15 41 62 32 89 71 43 35 31
31441 21 17 82 33 96 27 62 29 82 57 46 62 15 24 99 37 83 40 52 46 56 80 98 3 91 74
3156 27 7 58 94 10 41 79 97 84 77 74 26 99 35 ^
316212 1 26 101 17 91 45 97 80 59 102 30 68 4 85 9 4 39 16 18 85 70 11 87 62 72 78
31738 3 41 53 82 82 35 18 13 94 64 52 39 77 59 26 9 65 46 64 98 32 29 86 79 16 63
31854 76 56 98 16 98 78 22 72 33 103 104 52 84 12 65 15 85 101 97 84 31 51 26 100
319100 38 80 13 2 78 7 24 44 84 103 27 7 28 16 33 99 25 103 54 14 42 62 87 92 27
32022 42 5 52 100 84 73 72 63 24 48 56 52 23 5 17 76 31 1 95 58 43 60 50 62 30 23
32135 79 20 35 3 72 32 45 51 87 41 84 27 79 77 70 102 15 54 15 100 8 52 69 105 3
32230 84 42 93 66 89 69 74 24 33 42 97 4 38 99 106 13 93 6 106 74 100 54 45 21 59
32356 37 9 50 32 75 79 31 77 9 61 1 8 68 6 60 81 7 100 99 14 61 48 25 73 26 70 72
32494 34 ^
325233 0 11 98 110 88 35 110 35 64 49 88 93 28 85 6 78 65 90 52 24 97 51 39 51 59
32623 1 3 49 33 11 78 27 35 55 64 5 102 4 70 25 56 58 38 66 11 31 96 66 104 59 41
32786 58 29 79 41 40 72 51 12 92 34 52 44 69 104 21 97 89 96 48 21 4 61 40 28 67
32834 23 85 44 22 62 52 33 84 23 30 73 74 4 79 12 81 47 80 53 47 89 40 19 80 62 34
32961 29 41 95 43 1 70 63 55 53 18 19 13 48 10 19 89 49 4 52 53 56 76 10 8 104 77
33015 28 38 75 109 3 85 90 8 40 8 93 90 43 39 14 60 17 36 78 56 105 80 35 75 36 58
33182 50 100 98 45 74 13 66 95 72 71 95 34 14 98 72 33 38 37 52 6 14 107 59 3 29
33261 67 98 92 5 93 17 98 36 87 41 75 71 57 88 17 25 91 84 3 58 20 92 69 51 50 36
33331 14 25 18 30 18 1 41 104 30 82 59 87 70 34 96 28 47 62 81 103 48 ^
334234 1 63 90 108 108 102 64 82 88 4 111 76 97 22 1 108 41 34 91 33 20 25 24 26 8
33583 11 31 7 85 109 106 4 105 85 68 28 33 99 53 8 16 12 11 74 17 83 66 70 16 30 9
33667 68 34 24 81 47 92 72 47 37 33 38 92 17 8 28 88 22 62 69 32 89 75 3 72 96 85
33713 105 24 38 37 94 115 83 72 108 114 24 93 76 103 60 99 102 9 43 10 59 95 46 33
33893 15 26 69 44 2 86 107 55 45 61 65 92 66 9 55 39 70 83 29 98 67 13 111 15 20
33931 62 8 2 51 20 19 33 44 14 115 71 112 97 10 41 28 53 51 26 57 15 38 98 55 106
34022 56 31 50 95 107 110 84 70 10 108 96 73 100 25 36 55 88 71 63 96 30 90 96 79
34122 7 30 23 28 59 89 8 51 99 47 86 34 18 43 65 98 104 107 49 7 79 71 8 57 21 29
34280 2 74 78 44 57 9 61 22 13 68 52 91 74 98 43 30 58 68 95 101 72 102 76 42 99
34361 ^
344249 0 27 117 45 119 80 2 59 52 8 76 20 94 102 69 96 42 46 106 67 9 110 89 71 69
34534 31 15 85 16 29 100 82 37 62 68 95 108 44 23 114 34 36 56 93 11 30 96 12 31
34667 14 114 14 66 70 30 81 46 53 119 85 6 104 47 92 72 70 5 70 15 115 68 105 33
34797 13 85 106 14 61 29 22 86 45 57 69 91 38 38 28 66 13 60 95 103 3 15 5 113 38
34823 62 5 65 94 107 73 104 37 47 102 117 3 78 35 7 95 56 78 45 52 28 46 43 37 32
34953 19 55 29 47 97 76 115 83 71 11 45 62 73 99 116 2 24 116 7 28 41 2 29 37 52
35023 5 118 79 31 57 89 61 24 101 78 50 93 73 41 7 33 45 47 24 1 48 73 36 3 25 87
35146 28 108 54 68 53 67 119 28 36 118 104 42 88 27 112 4 74 85 1 63 39 97 71 74
35275 76 10 49 12 79 11 50 103 118 94 117 118 37 27 12 94 60 28 51 47 82 110 17 15
353105 23 52 43 12 21 22 81 41 12 74 90 42 108 117 98 67 4 69 85 ^
354243 0 76 81 26 101 13 68 62 106 87 19 98 32 81 63 79 93 31 121 123 75 52 11 66
35541 54 87 38 5 104 62 51 38 55 29 31 120 44 16 48 94 46 105 91 66 78 27 43 6 64
3562 55 79 75 84 113 22 4 113 109 31 33 17 96 11 29 63 98 103 107 116 34 14 9 95
35738 18 51 75 33 109 118 55 66 4 76 7 75 70 82 74 23 1 26 69 40 112 99 47 65 31
35870 119 52 103 88 85 86 28 16 12 76 25 22 78 64 21 86 27 61 77 72 108 2 18 106
359119 121 54 16 85 72 2 73 26 88 66 60 80 35 24 117 63 24 44 67 52 122 119 33 72
36016 99 98 69 54 19 42 28 53 114 32 117 81 100 57 49 123 56 21 68 80 53 95 1 45
36195 107 98 87 1 27 24 99 116 16 67 1 113 91 84 25 40 25 72 3 28 90 87 112 80 16
362117 45 77 36 90 105 59 88 122 64 108 108 71 98 18 50 115 93 105 77 35 6 46 55
36347 102 4 26 87 111 120 81 113 4 57 105 3 84 94 115 61 73 ^
364255 1 91 47 51 9 57 9 55 94 61 61 68 46 107 6 35 81 114 78 96 74 14 89 73 67 67
36569 113 107 11 98 113 109 20 92 17 67 70 88 57 10 124 9 60 122 93 91 45 7 15 24
36651 5 98 115 24 49 90 104 117 66 128 94 64 80 12 43 91 46 111 59 58 77 30 14 88
36760 123 68 41 44 68 40 104 118 41 43 93 90 105 92 16 127 26 54 125 114 79 71 24
36848 21 25 118 40 103 49 91 44 67 65 25 119 109 18 48 23 69 112 38 61 64 87 84
369104 119 110 122 92 22 1 8 83 34 100 32 62 41 46 112 34 102 76 56 39 4 127 30 13
37019 110 124 7 16 128 95 4 124 11 104 116 126 49 95 3 55 96 70 90 101 4 122 96 75
371118 39 128 99 92 18 42 20 87 83 35 75 111 61 67 71 28 101 9 56 34 105 95 71 23
37273 71 26 57 15 23 76 55 99 89 128 98 117 68 43 88 62 38 62 39 2 83 36 15 26 60
373128 96 73 74 10 1 12 42 22 2 77 33 33 32 57 13 14 82 57 12 39 3 58 80 14 87 85
37444 69 109 119 ^
375283 0 102 55 53 41 60 88 25 67 58 76 44 22 68 118 108 40 95 96 81 90 85 28 77
37618 11 37 72 93 60 110 124 119 95 131 91 37 109 126 8 73 69 72 80 17 83 5 76 20
37732 15 10 1 103 18 22 116 98 9 51 104 102 44 33 15 12 24 31 89 1 6 28 101 8 64
37872 106 30 5 52 89 111 39 108 64 85 17 57 124 22 105 78 115 3 40 108 66 108 77
379128 103 44 35 38 13 95 10 111 63 98 117 61 51 126 69 96 70 70 59 39 13 97 33
380112 2 77 7 123 70 83 29 66 67 49 79 19 104 115 14 60 2 55 40 71 33 28 114 51 91
38117 46 45 128 57 87 62 25 115 38 50 55 90 74 8 51 102 79 43 94 36 122 94 12 41
38236 25 104 91 24 7 99 80 30 126 32 63 122 107 114 27 28 79 41 12 35 51 115 122
38370 22 79 65 2 88 27 17 59 15 23 44 57 5 65 6 26 78 80 125 93 84 100 45 22 129
38468 36 111 74 118 11 50 42 120 47 21 8 86 112 26 67 60 99 45 93 47 8 38 59 52 56
385124 20 82 18 117 24 18 46 106 19 117 26 41 47 45 130 7 15 1 4 5 100 10 85 50 44
38611 48 92 119 108 42 118 125 ^
387272 0 8 61 99 70 96 20 87 123 134 82 22 2 110 118 33 86 5 7 5 94 56 15 60 96 54
38813 22 55 99 4 25 105 17 37 69 10 38 117 117 30 70 13 9 109 115 62 94 52 66 117
389100 135 7 75 23 5 81 110 31 118 29 1 62 11 41 88 109 119 102 37 3 30 123 47 31
39056 134 29 124 116 118 99 21 56 77 91 23 37 135 81 44 51 67 95 51 133 30 57 67
391116 122 48 100 7 132 97 106 69 93 4 95 125 102 103 119 81 57 133 96 37 118 50
392117 113 81 127 17 45 103 32 121 129 60 43 65 127 30 36 132 110 52 53 35 71 12
39376 22 72 130 112 99 76 26 21 73 63 63 97 23 58 115 132 114 1 132 31 35 18 23 54
39430 53 118 37 35 84 94 60 100 3 47 18 110 105 87 57 63 76 43 52 45 46 49 65 12
39510 42 66 60 117 34 19 92 5 28 76 9 126 101 125 32 38 34 15 7 62 32 21 3 43 69
39631 109 123 51 116 135 130 129 130 63 14 57 80 62 15 126 31 105 83 108 120 80
397124 46 98 105 91 6 6 27 7 58 128 78 7 79 63 84 77 74 128 65 61 95 121 17 24 123
398117 51 122 ^
399284 0 44 71 43 20 126 58 53 47 98 18 19 119 93 29 70 39 94 112 44 115 135 98 82
40010 67 29 102 113 68 80 19 75 1 91 114 87 80 7 40 37 86 120 16 104 136 117 82
401138 32 65 114 119 137 121 8 12 46 126 26 119 73 130 60 76 113 100 14 133 26 116
40234 120 80 95 84 53 15 24 44 51 4 10 23 77 24 99 66 37 54 63 42 136 21 34 76 5
40317 128 101 1 59 40 113 112 32 97 31 93 105 79 91 18 39 1 103 132 51 68 124 111
40413 97 43 128 69 84 85 72 15 12 26 87 16 16 92 101 13 77 4 118 89 103 56 42 16
40560 44 39 126 46 18 83 93 41 105 3 82 106 115 91 6 4 54 115 15 120 109 113 48 41
4069 95 20 62 67 105 111 25 132 7 116 46 138 44 83 61 124 131 35 107 6 109 81 114
40767 41 137 77 56 74 73 34 12 14 69 52 11 98 47 54 83 81 6 1 15 88 35 139 80 83
40849 89 27 47 130 92 133 87 51 112 76 49 109 49 57 93 73 22 117 50 64 58 97 139
40936 131 111 133 58 33 8 88 55 38 90 46 30 118 57 29 82 74 41 117 38 46 94 92 5
410105 15 117 70 103 68 60 120 48 21 110 85 40 81 66 ^
411291 0 46 113 52 134 79 74 64 57 18 23 9 52 8 16 103 57 138 59 59 65 92 2 7 130
41292 8 34 40 86 131 140 100 112 4 42 1 110 108 43 37 15 67 19 35 94 61 130 98 35
41388 34 65 104 56 126 118 50 87 10 81 109 90 86 118 32 6 114 88 39 38 39 62 3 12
414134 72 137 35 75 81 115 106 140 112 11 123 41 103 45 95 84 71 107 13 26 110 96
41562 16 109 84 59 53 38 27 8 28 13 32 137 17 138 41 122 36 99 65 99 83 36 112 29
41649 70 96 126 136 131 116 3 18 17 126 142 14 37 141 141 123 42 13 20 83 42 139
41783 54 49 58 42 7 137 29 48 16 121 127 34 52 140 106 128 58 36 124 83 24 69 54
41861 112 17 6 95 97 24 57 86 124 59 71 119 67 1 109 54 68 49 57 132 32 5 71 113
41940 80 104 75 106 133 31 126 130 104 62 9 39 44 66 116 141 135 96 132 19 41 121
420126 124 77 8 4 60 82 6 101 124 89 51 123 48 40 85 77 21 112 10 69 66 115 87 16
421108 30 84 65 80 103 32 131 134 73 47 10 63 39 50 93 37 135 114 69 48 34 58 23
42227 133 37 9 40 98 41 115 99 70 83 29 42 67 133 55 79 80 91 122 12 2 115 112 47 ^
423293 1 33 13 99 138 1 42 89 118 87 113 99 12 134 142 100 38 5 55 75 14 110 108
42442 64 130 79 138 62 64 69 57 11 123 25 59 16 111 94 24 65 30 51 119 48 107 92
42584 69 28 136 143 54 20 6 70 47 142 64 4 65 59 73 99 134 146 102 125 116 57 137
426137 72 48 128 78 5 80 63 54 85 30 22 129 68 21 21 74 28 128 107 27 60 2 93 95
42771 37 11 37 15 39 102 3 104 65 80 59 52 113 34 20 67 60 27 81 135 46 106 106
428102 68 128 17 15 100 124 15 43 136 122 100 67 142 35 14 53 120 2 89 93 99 73 9
429122 39 77 15 96 90 43 79 134 60 92 105 55 96 31 119 77 97 72 23 140 38 30 43 83
430136 88 107 117 72 109 118 58 91 119 73 95 100 59 138 123 54 49 143 50 133 66
431106 45 80 88 42 93 5 59 77 101 74 110 104 40 92 19 77 76 86 102 129 3 144 101
432139 134 56 90 18 91 94 85 55 10 137 11 58 1 107 113 70 22 7 56 29 143 111 8 46
43345 116 122 129 89 7 121 53 95 14 49 118 62 125 91 37 97 15 35 100 63 140 63 50
43451 58 26 127 6 45 59 102 121 114 85 141 135 10 72 19 106 66 66 41 53 13 38 1 21
435103 50 108 46 119 ^
436297 1 46 31 132 112 28 63 124 97 129 43 40 72 99 107 132 137 96 139 99 145 121
437144 118 37 81 39 94 60 55 109 47 109 110 75 42 12 139 137 43 128 106 107 19 126
43812 101 148 127 15 117 125 125 62 96 13 76 70 96 101 110 138 8 95 76 143 17 32
43997 79 149 39 31 94 123 21 41 135 55 84 70 33 135 118 50 62 121 81 1 45 144 93
44060 5 64 137 8 105 91 82 67 27 113 119 53 18 98 79 48 84 32 135 128 5 1 20 76 17
44185 108 72 36 141 140 49 150 105 104 3 149 14 54 18 148 64 49 125 37 28 28 101
44222 104 91 32 82 117 12 114 69 58 2 58 115 9 108 47 59 65 14 92 7 4 86 98 16 82
44392 95 38 94 10 10 48 97 104 66 115 97 142 115 122 119 40 97 16 32 47 34 88 89
44426 50 12 76 80 51 40 9 133 24 44 40 122 84 108 22 142 140 99 44 15 54 8 42 125
445150 130 21 79 124 62 46 119 15 29 91 57 150 42 138 71 61 68 80 114 6 1 70 121
44618 35 113 56 87 86 10 73 14 29 41 72 89 1 133 87 101 123 59 90 142 77 133 52 78
44748 34 138 134 27 17 60 131 147 61 93 148 39 132 49 62 71 36 91 4 139 49 100 120
44843 113 144 30 94 73 127 40 125 ^
449313 1 35 97 95 76 105 88 32 138 30 69 61 40 47 21 107 6 39 81 114 53 125 53 147
45014 4 73 146 96 98 13 136 11 98 117 138 153 67 146 71 99 88 7 139 24 13 35 47 97
451145 74 36 119 3 51 84 48 119 53 49 15 79 17 120 103 148 64 30 41 97 120 75 111
45263 58 131 134 18 13 10 48 18 16 48 43 15 54 18 41 47 122 144 80 92 145 77 1 33
45389 54 46 78 48 21 54 43 40 53 24 16 73 42 94 29 44 34 151 152 23 123 12 142 140
45443 37 88 29 19 35 72 96 151 130 62 112 34 36 91 120 50 112 138 2 105 60 68 137
455131 5 17 19 139 74 11 120 78 149 58 128 15 104 16 126 78 20 57 134 71 49 90 76
456108 126 100 54 68 39 132 153 42 147 146 124 62 87 35 75 61 65 46 100 82 105 113
45731 63 5 95 54 71 77 127 150 80 36 144 2 130 59 74 39 3 152 121 122 18 117 12
458117 141 118 135 62 36 69 5 39 53 150 52 153 143 30 66 96 126 131 56 137 8 7 86
459142 14 7 111 141 93 136 137 134 43 12 89 23 44 9 152 146 121 97 19 38 110 91 67
46014 32 110 66 68 8 130 84 73 118 59 24 41 72 121 150 55 37 138 27 104 66 124 9
46151 109 47 125 109 148 8 29 47 72 146 149 61 93 10 20 54 15 76 133 125 106 110
46267 ^
463330 0 23 9 26 136 27 51 115 122 44 106 6 146 108 113 85 51 8 96 47 56 137 62 59
46489 143 71 140 14 85 156 139 99 154 30 53 115 35 147 108 148 58 52 28 103 19 92
46595 152 152 10 11 13 155 67 11 83 101 69 153 152 45 141 14 120 129 140 119 59 2
46689 73 70 83 29 16 67 81 29 1 54 65 96 117 2 37 47 128 33 3 89 108 98 139 49 78
46727 103 39 119 94 132 90 38 132 55 65 131 90 58 2 54 100 69 118 22 44 19 7 148
46893 25 29 123 81 64 131 55 30 1 89 38 97 82 64 9 28 86 123 151 10 133 40 154 102
4694 111 65 9 63 59 124 116 72 105 76 57 137 97 32 145 108 78 112 50 43 34 75 20
47022 129 68 11 118 74 125 118 57 17 20 129 53 65 61 144 1 17 142 156 52 100 54 15
47120 59 52 63 131 20 57 124 31 125 46 106 76 92 8 98 154 152 80 114 15 140 136
472112 100 17 92 25 151 150 80 99 69 83 49 43 156 102 19 57 122 96 30 3 39 134 40
47332 75 5 76 127 138 99 17 57 52 150 130 18 127 33 23 116 107 78 77 77 42 69 68
47448 41 69 33 75 40 49 128 103 4 146 93 10 83 66 96 152 30 38 12 33 5 39 47 41 34
47560 74 20 42 156 67 46 56 102 89 3 124 81 99 104 56 50 8 61 74 55 15 87 108 28
476138 47 93 60 2 124 46 126 103 91 145 36 25 116 122 51 ^
477322 0 75 7 107 158 81 105 154 90 20 125 77 114 69 92 7 58 21 98 154 50 128 149
478117 127 153 45 3 18 121 86 29 71 79 101 2 5 22 143 10 27 53 146 157 148 112 33
47922 80 123 24 147 1 112 82 159 63 74 97 109 33 151 32 89 87 132 117 46 129 59
480115 91 114 118 37 21 9 94 60 25 89 47 79 110 55 12 143 99 87 43 88 56 57 160 76
48112 71 128 77 146 117 95 105 42 66 3 76 20 76 101 100 118 149 45 26 143 148 32
48257 39 129 19 31 84 123 1 152 135 5 54 30 13 125 68 30 62 101 51 142 5 94 83 20
483116 24 107 109 105 91 42 17 27 93 69 3 139 68 79 38 84 2 85 128 126 122 131 46
48417 35 98 42 26 111 100 29 120 55 84 114 109 145 14 18 138 14 9 85 7 18 129 91 2
48594 51 133 82 87 123 64 39 8 103 38 75 110 78 7 9 45 115 42 138 135 86 78 16 62
48652 75 159 54 151 121 149 77 74 16 85 47 102 105 82 119 10 67 137 153 148 135 28
48749 26 151 153 36 80 11 130 113 24 44 30 102 24 58 133 122 140 99 24 156 54 119
48842 115 140 90 132 19 94 2 157 99 136 19 71 7 130 153 108 51 21 58 70 74 137 1
48940 111 149 5 103 6 27 76 141 23 125 140 1 72 29 152 103 87 51 93 29 80 132 77
490123 153 68 159 14 98 114 158 121 158 81 131 ^
491322 0 35 93 109 125 119 10 10 19 135 26 4 74 135 35 120 129 113 92 17 29 47 88
49214 159 149 87 45 36 75 68 22 138 20 59 61 144 151 11 107 6 153 81 114 43 85 157
49397 148 118 73 126 56 58 137 96 11 98 67 98 103 57 146 21 59 88 151 139 148 127
49425 17 47 115 34 160 109 107 51 64 28 69 13 49 149 69 141 90 93 118 64 10 1 67
49580 35 111 13 58 101 124 132 147 154 18 162 6 162 33 5 34 142 41 161 82 114 70
49692 145 57 155 137 114 79 44 36 48 48 21 14 13 40 33 14 150 33 32 54 143 14 4
497101 142 23 93 136 132 120 147 17 38 163 143 5 52 46 151 130 32 72 34 124 150 51
498100 112 128 126 65 10 28 87 81 159 131 19 99 54 125 110 58 119 28 78 129 104
499140 126 38 154 27 114 61 153 90 66 98 76 50 158 48 39 82 123 22 147 136 114 52
50037 35 75 41 15 150 60 52 55 103 21 23 129 95 24 71 47 97 130 50 140 144 106 100
5019 64 19 117 122 71 92 8 77 156 97 121 98 85 2 36 39 109 143 23 120 156 133 93
502154 36 66 116 131 160 127 162 161 46 142 14 141 81 141 63 86 117 104 3 146 39
503127 34 133 102 106 91 57 9 28 60 61 7 158 12 80 26 8 122 80 44 63 68 49 158 21
50432 81 150 15 141 108 161 64 46 124 123 31 99 27 105 109 98 112 144 ^
505336 1 34 161 107 149 48 67 138 109 156 104 37 133 60 80 84 81 160 9 16 96 164 1
50695 112 4 86 163 116 98 103 55 31 8 56 37 36 127 32 9 89 103 31 100 161 85 106
507119 89 154 43 115 162 137 108 128 38 42 155 103 9 62 65 102 122 10 138 160 125
50847 158 43 91 69 123 132 35 121 4 110 89 130 69 29 139 69 53 70 83 29 163 67 41
5099 108 34 45 76 87 2 144 164 98 33 160 79 78 48 89 9 38 134 93 146 79 54 122 80
51038 112 55 55 101 70 8 129 44 70 59 98 149 24 136 124 138 63 25 166 83 51 34 91
51145 30 118 59 28 87 72 44 116 28 36 103 101 113 10 114 62 111 71 65 126 53 19
512114 86 42 85 36 57 137 57 159 95 88 78 72 20 23 14 65 10 22 129 68 1 68 74 75
513108 7 7 147 109 13 35 51 104 158 164 122 126 2 50 4 132 127 59 52 13 81 20 47
514107 74 148 115 46 106 46 82 115 68 144 142 60 104 15 90 136 102 100 134 42 15
515141 100 40 49 49 73 166 13 156 82 166 37 82 96 137 130 166 134 20 139 45 122 56
516107 98 79 124 17 32 130 120 165 77 23 130 96 67 68 47 37 12 29 18 38 158 19 160
51755 147 39 118 83 121 96 43 137 33 66 86 112 147 155 149 140 5 19 17 148 161 10
51844 159 146 57 16 26 102 49 3 104 61 59 74 56 10 165 31 54 25 142 157 37 58 165
519128 154 73 50 149 94 137 ^
520330 1 61 51 65 132 23 169 116 122 14 66 7 98 131 72 69 127 72 163 125 68 69 51
52147 159 31 164 71 118 50 83 113 81 127 153 45 137 134 121 68 163 26 43 65 127
522166 138 98 144 18 53 137 139 148 76 158 4 62 78 167 102 144 94 55 141 63 29 97
52391 24 115 166 80 69 132 99 1 120 23 88 64 87 118 37 137 152 94 60 168 71 47 52
524110 37 155 125 63 42 43 52 11 12 151 31 12 44 110 32 128 117 68 87 24 39 164 76
525145 58 101 91 100 140 151 143 130 32 21 3 111 1 31 75 123 153 116 135 130 27
526164 165 116 23 12 62 83 24 133 139 49 74 154 80 158 80 64 105 91 6 142 27 75 24
527128 112 41 79 29 84 145 40 128 99 95 95 19 17 160 89 15 17 84 64 11 93 10 66 78
52873 127 148 18 129 139 143 49 150 9 84 82 154 85 15 88 82 60 87 19 12 133 58 20
52939 65 51 141 134 27 70 167 120 117 86 60 16 44 16 57 132 18 142 85 104 59 47
530141 58 2 66 96 46 119 153 40 110 126 103 90 144 13 26 106 144 80 145 134 103 95
53124 44 21 84 140 13 97 104 140 99 6 147 54 83 42 106 131 54 96 135 67 118 121 81
532109 10 53 132 112 117 81 33 155 49 61 38 119 1 13 102 131 148 94 131 143 67 123
533148 89 104 135 72 145 152 76 87 6 66 2 71 123 77 114 108 59 123 166 62 96 140
53494 149 116 169 ^
535349 0 125 17 93 82 80 110 156 147 156 99 154 4 29 90 163 120 84 113 56 8 157 29
53661 169 141 113 78 48 50 13 138 11 50 61 99 106 2 107 6 117 81 114 34 49 112 52
537130 82 73 108 20 22 110 60 11 98 22 62 58 48 146 149 23 88 142 139 121 91 16
538163 2 88 171 133 100 62 51 46 10 24 150 49 131 60 114 63 84 91 64 165 138 40 44
539172 111 141 58 74 115 96 129 145 164 153 170 126 24 169 16 115 41 125 46 87 61
54092 145 39 155 92 78 70 35 27 21 48 21 151 159 40 15 5 132 170 23 18 107 160 150
54156 133 23 66 109 123 102 102 172 166 145 116 151 34 1 151 130 5 36 34 97 114 15
54282 128 112 119 99 29 138 165 42 36 159 95 19 63 36 89 101 40 92 1 33 93 104 113
543126 2 136 96 52 108 90 57 89 31 5 113 30 39 37 96 4 147 127 105 43 165 35 75 23
544143 105 24 25 10 94 12 160 102 95 170 71 20 70 112 23 95 144 61 73 137 55 1 81
54595 26 65 172 41 147 79 103 80 40 121 36 12 64 98 169 93 111 115 48 127 9 39 107
546131 115 118 162 161 10 142 14 123 54 141 36 41 99 77 140 128 167 82 25 106 57
54770 64 21 19 15 34 126 149 167 53 163 127 86 35 8 54 23 40 140 3 169 45 150 152
54896 81 143 28 28 124 87 13 90 9 87 109 53 67 164 28 131 89 149 42 55 126 79 132
54974 19 133 30 68 72 75 148 9 10 72 152 144 83 106 153 74 163 98 152 ^
550375 1 94 28 13 8 20 28 18 118 5 140 89 67 171 64 152 85 61 101 80 154 149 34
551115 135 128 108 110 20 33 128 103 35 38 57 95 10 111 151 98 29 149 7 82 69 96
552114 26 103 171 101 53 121 24 2 121 51 35 70 83 29 154 67 5 167 63 16 27 58 60 2
55399 128 71 33 160 70 51 3 44 149 2 89 84 101 43 18 113 71 38 94 55 46 74 52 139
554102 35 43 50 80 122 6 100 88 129 36 25 148 47 24 7 55 36 30 82 32 19 78 63 26
55571 28 167 85 56 167 95 159 78 26 66 35 65 90 44 159 105 59 15 67 57 137 21 132
55650 70 78 36 169 5 172 56 1 22 129 68 168 23 74 30 99 138 174 120 91 153 8 42 68
557158 155 104 99 133 5 135 96 82 59 52 144 36 20 38 62 29 112 106 46 106 19 73 70
55841 135 133 42 95 15 45 136 93 100 98 173 6 132 55 4 4 31 64 130 162 156 64 157
55919 46 96 92 103 139 134 2 94 18 86 38 89 62 61 79 157 14 112 111 156 32 14 85
56078 31 59 20 1 161 169 149 29 122 150 133 37 102 30 109 65 85 51 174 110 164 66
56177 76 111 119 131 95 5 1 166 103 134 141 17 158 123 137 48 165 175 102 13 3 86
56243 23 47 56 150 165 4 36 174 115 157 168 13 147 119 109 55 41 140 67 27 31 27
56353 126 17 163 116 122 160 60 7 92 113 66 45 109 60 151 125 62 39 39 17 153 13
564152 53 94 50 53 89 57 127 153 45 119 104 121 56 145 172 19 41 103 166 108 68
565126 12 53 131 127 148 52 134 168 50 48 155 72 132 82 37 129 63 175 160 ^
566366 1 73 15 79 139 71 51 132 81 135 111 166 61 37 60 118 37 92 134 94 60 150 53
56747 25 110 19 137 107 27 176 43 16 145 146 142 165 12 17 92 166 110 117 41 69 6
56812 164 76 109 40 101 82 82 131 134 115 143 112 32 164 146 93 162 31 66 123 144
56980 135 94 137 156 107 157 173 62 65 176 124 112 4 65 127 44 131 53 19 105 91
570149 106 27 57 158 92 85 14 79 20 84 127 174 128 72 68 59 171 17 124 80 167 8 57
57128 172 66 144 48 42 37 109 121 18 120 103 116 13 132 39 73 145 76 158 43 82 33
57251 153 164 97 13 2 3 20 24 114 98 9 25 131 102 99 86 42 16 26 159 39 105 161
573133 49 59 41 20 105 31 136 30 87 10 119 135 13 83 99 58 45 99 156 26 61 135 143
57480 118 107 76 77 24 44 12 66 95 147 61 86 140 99 167 138 54 47 42 97 122 18 60
57590 40 73 85 63 82 1 35 96 94 81 54 15 128 40 52 2 101 1 165 93 113 130 85 95 98
57658 105 112 53 68 108 72 100 152 49 87 140 39 154 62 114 77 105 63 50 87 157 26
57778 122 67 140 71 170 119 5 93 64 50 104 144 129 138 75 130 4 178 60 139 120 54
578113 32 2 133 17 43 163 129 89 72 149 155 30 38 7 138 5 44 61 69 76 175 107 6 93
57981 114 28 25 82 22 118 58 73 96 175 177 92 36 11 98 171 38 28 42 146 125 178 88
580136 139 103 67 10 151 151 70 153 115 94 32 51 34 177 173 132 49 119 54 96 45 78
58173 64 159 120 22 20 154 111 117 58 56 109 72 143 ^
582372 1 136 146 144 170 90 15 169 180 88 41 89 10 60 52 92 145 21 155 47 42 61 26
58318 176 48 21 124 141 40 179 178 114 143 14 164 71 142 132 11 124 23 39 82 114
58484 57 163 130 127 89 133 16 138 151 130 160 34 70 78 161 64 92 112 110 72 175
585102 138 179 173 159 59 19 27 18 53 92 22 65 156 170 57 104 86 126 148 118 155
58678 43 63 90 48 80 168 142 68 12 39 174 69 168 147 118 96 34 129 35 75 5 107 60
587170 180 147 85 3 133 75 95 152 71 175 43 94 178 50 144 16 46 101 46 165 45 68
588163 38 172 5 138 61 85 62 177 76 36 167 19 53 151 66 66 97 3 100 164 12 98 131
58970 109 162 161 156 142 14 105 27 141 9 178 81 50 113 110 131 37 16 79 12 34 37
590167 173 10 152 7 81 140 158 26 136 82 50 172 154 45 160 31 122 167 142 9 150
591125 51 54 125 174 10 124 51 177 81 173 69 109 8 22 155 19 86 62 149 33 37 108
59234 96 29 174 133 167 50 54 66 130 9 1 36 134 108 65 97 126 56 163 71 83 88 10 1
5938 178 22 6 112 169 116 89 43 153 40 146 85 31 89 74 154 137 28 115 117 122 108
59498 8 27 110 103 176 17 20 27 77 10 93 145 80 17 143 165 76 69 78 102 20 91 171
59595 29 115 176 166 109 39 23 70 83 29 148 67 163 161 33 4 15 46 42 2 69 104 53
59633 160 64 33 155 14 131 160 59 78 71 19 176 107 65 38 82 55 40 56 40 115 84 29
59725 44 68 104 176 76 64 123 18 25 136 23 6 171 31 30 30 58 14 13 72 57 14 41 177
598^
599363 0 135 69 16 167 79 143 46 178 26 3 65 58 36 135 97 35 175 51 152 57 137 173
600108 10 54 78 4 153 173 164 48 177 22 129 68 168 167 74 174 91 106 174 96 75 129
601168 34 36 158 147 88 75 101 149 103 64 42 59 52 112 180 20 30 22 173 80 98 46
602106 179 65 30 17 127 125 26 87 15 5 136 85 100 66 141 182 124 15 156 148 15 56
60398 146 156 48 149 3 14 96 52 79 115 134 170 54 178 54 22 73 30 45 39 133 182 96
604103 148 176 6 45 62 183 51 180 153 145 145 117 21 90 118 109 21 62 22 101 49 53
60511 142 86 132 66 69 44 79 87 115 55 5 169 150 63 110 109 177 150 91 129 40 149
606159 102 165 3 70 27 175 23 56 126 165 164 20 158 91 157 136 157 131 111 69 39
60733 132 43 19 175 179 37 118 9 155 116 122 128 52 7 84 89 58 13 85 44 135 125 54
608183 23 161 145 173 136 29 62 50 13 57 25 127 153 45 95 64 121 40 121 140 171 9
60971 166 68 28 102 4 53 123 111 148 20 102 160 34 8 139 32 116 66 13 113 63 143
61097 63 10 59 124 66 41 132 71 115 106 151 46 22 45 118 37 67 124 94 60 140 43 47
61110 110 9 127 97 7 156 43 180 125 126 137 145 12 2 82 146 100 117 26 59 180 181
612164 76 89 30 101 77 72 126 114 95 143 102 32 149 131 83 157 31 61 123 139 60
613135 74 169 122 151 102 137 168 62 55 166 119 97 163 60 112 24 116 38 178 105 91
614134 86 27 47 138 72 70 183 79 15 84 117 154 128 57 53 39 161 88 ^
615393 1 92 72 151 33 183 164 42 112 32 10 5 93 97 18 112 71 92 168 116 179 186 65
616137 68 134 3 82 9 19 121 148 65 160 173 158 167 90 66 180 172 99 86 83 86 26 16
61710 135 23 81 137 125 17 19 25 183 73 7 104 185 79 165 119 119 176 59 75 18 5 59
618132 26 21 127 119 80 94 83 52 61 24 44 4 50 55 115 29 70 140 99 159 130 54 15
61942 89 114 173 28 50 16 33 53 47 58 180 19 64 78 49 30 186 104 32 44 157 85 1
620149 85 97 114 77 63 58 50 89 80 21 36 84 72 60 152 25 87 108 15 138 54 106 77
62197 23 42 55 149 181 62 106 43 132 31 138 111 176 93 40 10 96 128 105 114 43 98
6224 146 20 107 120 14 113 181 101 1 19 155 113 57 64 117 131 6 22 186 138 184 36
62361 29 36 175 107 6 61 81 114 20 180 42 169 102 26 73 80 151 153 68 4 11 98 139
6246 175 34 146 93 154 88 128 139 79 35 2 135 119 46 129 91 86 179 51 18 169 141
625108 49 103 46 72 21 70 49 64 151 96 185 175 130 111 85 58 32 101 40 101 131 136
626139 170 70 10 169 175 73 41 69 177 45 47 92 145 11 155 22 22 56 21 13 166 48 21
627109 131 40 174 178 104 128 9 149 51 132 122 173 119 23 24 67 109 74 32 158 110
628117 74 123 6 118 151 130 150 167 34 55 58 146 54 72 112 105 57 160 82 123 159
629153 159 39 19 7 8 33 87 12 50 146 150 37 104 71 126 133 108 145 68 38 38 90 43
63075 148 122 43 2 39 154 54 163 147 113 91 29 109 35 75 182 87 35 155 170 127 80
631185 118 60 95 142 71 165 28 84 168 25 144 178 31 81 41 160 25 53 143 ^
632381 1 14 172 163 130 45 69 46 145 36 36 151 169 13 135 42 26 81 153 76 148 178
63390 131 30 101 162 161 132 142 14 89 3 141 175 146 65 26 89 94 99 187 8 55 162 2
63413 143 173 2 120 173 41 132 150 2 112 42 18 140 130 37 128 23 106 159 118 167
635150 101 11 30 109 150 184 124 19 169 73 165 53 109 158 172 147 11 46 38 149 25
63621 92 184 64 179 158 133 135 34 38 58 114 9 183 4 118 76 49 89 102 40 163 47 75
63780 176 175 8 154 14 180 104 153 84 89 11 129 8 138 85 181 73 66 154 121 20 115
63893 114 108 82 182 19 86 103 176 183 186 177 53 10 69 137 56 1 135 141 68 69 54
63986 12 75 171 87 187 107 144 150 93 23 7 70 83 29 140 67 139 153 183 178 189 30
64018 2 29 72 29 33 160 56 9 123 164 107 136 19 70 31 177 152 99 57 38 66 55 32 32
64124 83 60 21 1 36 52 80 168 44 32 115 184 25 120 181 172 155 189 22 30 26 180 5
64264 49 188 1 28 111 57 176 167 67 131 22 160 186 169 65 34 30 117 91 17 163 39
643134 57 137 155 90 170 42 78 170 141 167 158 42 177 22 129 68 168 143 74 150 85
64482 174 78 63 111 156 28 12 158 141 76 57 77 125 79 40 12 59 52 88 156 20 24 182
645149 56 92 46 106 167 59 189 121 119 14 81 15 165 136 79 100 42 117 182 118 175
646138 124 3 50 74 134 156 36 143 181 180 96 22 61 97 134 164 24 166 30 10 61 6 33
6479 115 176 84 97 142 152 15 50 165 45 168 135 133 127 93 15 66 94 91 9 32 16 95
64837 29 171 118 68 108 66 63 20 55 186 ^
649396 1 97 10 5 160 132 18 83 73 159 141 55 120 31 131 141 102 138 3 52 9 148 189
65056 99 165 146 2 140 64 157 100 121 113 102 24 21 24 123 16 10 139 152 19 109
651146 116 122 92 43 7 75 62 49 170 58 26 117 125 45 147 5 125 136 155 118 2 26 50
652161 21 182 127 153 45 68 19 121 22 94 104 144 166 35 166 23 176 75 188 53 114
65393 148 177 66 151 16 156 121 180 98 48 179 95 63 107 97 45 1 23 97 57 23 132 53
65479 97 124 19 188 18 118 37 22 106 94 60 122 25 47 176 110 184 109 79 164 120 43
655153 89 90 128 109 12 168 64 110 82 117 192 41 171 163 164 76 53 12 101 68 54
656117 78 59 143 84 32 122 104 65 148 31 52 123 130 24 135 38 151 95 142 93 101
657159 62 37 148 110 70 127 51 85 181 89 11 142 105 91 107 50 27 29 102 36 43 165
65879 6 84 99 118 128 30 26 3 143 17 68 66 139 187 15 165 158 24 88 20 179 174 81
65979 18 106 47 74 150 104 179 162 59 131 62 116 166 82 184 188 97 136 41 136 167
660140 143 175 72 42 174 148 75 74 71 86 14 16 191 117 11 63 119 119 186 182 13
661171 49 182 80 167 73 147 119 107 164 41 57 181 168 29 114 26 184 121 101 80 76
66265 34 49 24 44 191 38 25 91 5 58 140 99 153 124 54 184 42 83 108 155 4 20 191 3
66329 35 40 180 7 40 66 25 12 180 86 26 38 139 73 1 137 79 85 102 71 39 28 44 77
66456 190 12 66 72 30 152 7 87 84 190 126 48 100 77 91 186 36 31 143 163 50 94 25
665126 1 114 105 170 93 22 173 90 116 87 96 19 74 4 122 183 83 120 177 113 169 181
66677 182 1 149 186 ^
667384 1 25 56 85 107 177 6 186 138 184 28 61 184 191 175 107 6 29 81 114 12 156 2
668137 86 189 73 64 127 129 44 167 11 98 107 169 143 26 146 61 130 88 120 139 55 3
669189 119 87 22 105 67 78 147 51 2 161 109 84 49 87 38 48 192 62 25 64 143 72 169
670151 106 111 53 58 8 93 8 85 123 120 131 170 38 2 169 167 49 41 37 153 21 39 92
671145 190 155 177 185 48 13 5 150 48 21 85 115 40 166 178 88 104 1 125 19 116 106
672141 111 23 43 101 58 187 150 78 101 50 107 185 86 151 130 134 143 34 31 26 122
67338 40 112 97 33 136 50 99 127 121 159 7 19 170 187 1 79 191 26 130 118 5 104 47
674126 109 92 129 52 30 193 90 35 67 116 90 3 181 39 122 30 155 147 105 83 21 77
67535 75 174 55 190 131 154 95 72 185 94 36 95 126 71 149 4 68 152 180 144 146 7
67649 33 152 188 29 111 194 172 148 125 35 59 36 125 11 36 141 149 183 125 27 1 71
677133 61 138 168 85 131 5 96 162 161 117 142 14 79 183 141 165 126 55 11 74 84 79
678167 3 40 142 177 193 128 173 192 100 163 16 127 145 182 97 17 193 120 115 32
679108 18 96 154 103 152 150 86 181 15 99 135 179 124 194 164 68 160 43 109 138
680152 142 6 21 23 149 20 11 82 164 44 159 148 133 115 24 28 53 104 9 183 179 108
68156 39 84 87 30 163 32 70 75 166 170 8 139 9 175 99 143 64 89 186 114 183 133 85
682161 63 61 154 111 15 115 78 109 108 72 177 14 71 103 176 173 176 157 38 10 54
683132 41 186 130 126 63 69 39 76 7 65 171 82 172 102 124 140 83 113 ^
684396 1 189 70 83 29 132 67 115 145 151 170 181 14 192 2 187 40 5 33 160 48 183
68591 132 83 112 177 62 189 153 128 91 49 38 50 55 24 8 8 51 36 13 175 28 36 56
686160 12 107 168 25 104 157 156 139 165 14 30 192 164 195 56 41 180 159 28 79 41
687144 167 51 115 188 136 154 145 65 2 22 93 83 191 147 23 110 57 137 131 66 138
68826 78 146 125 159 150 34 177 22 129 68 168 111 74 118 77 50 174 54 47 87 140 20
689178 158 133 60 33 45 93 47 8 170 59 52 56 124 20 16 150 117 24 84 46 106 151 51
690158 173 113 111 196 73 15 133 136 71 100 10 85 182 110 143 114 92 185 42 42 118
691156 20 135 173 156 96 180 37 73 134 156 182 150 196 192 45 172 17 167 91 168 68
69289 134 120 190 173 34 141 37 152 111 117 103 61 7 34 62 67 191 190 8 87 21 195
693139 86 44 76 66 55 186 23 31 87 183 5 155 122 191 68 53 149 136 35 115 26 121
694131 102 123 3 42 197 133 179 56 84 165 136 190 130 49 157 80 101 103 97 197 11
69519 118 1 5 119 137 9 104 193 141 116 122 72 38 7 70 47 44 155 43 16 107 125 40
696127 193 105 131 145 108 185 6 50 141 1 167 127 153 45 53 192 121 12 79 84 129
697151 15 166 196 156 60 188 53 109 83 148 162 46 146 6 136 111 160 88 38 169 85
69863 87 97 35 194 3 82 52 13 132 43 59 92 109 4 178 3 118 37 195 96 94 60 112 15
69947 166 110 179 99 69 149 100 43 138 69 70 123 89 12 158 54 90 72 117 182 31 166
700153 164 76 33 2 101 63 44 112 58 39 143 74 32 107 89 55 143 31 47 123 125 4 135
70118 141 80 137 88 81 154 187 ^
702406 0 23 134 103 49 99 44 64 160 68 190 114 105 91 86 22 27 15 74 8 22 151 79
703199 84 85 90 128 9 5 175 129 17 40 59 125 187 194 144 151 3 60 6 158 153 67 58
70418 99 19 53 129 90 179 134 52 124 55 95 138 82 170 167 69 122 13 108 160 119
705115 161 51 14 167 120 47 60 57 86 16 184 96 197 42 98 112 165 154 199 157 21
706168 52 146 66 126 119 93 150 20 36 153 140 194 93 26 156 114 80 80 55 44 13 35
70724 44 191 24 190 63 177 44 140 99 146 117 54 163 42 76 101 134 176 185 177 168
7081 21 19 180 193 12 52 197 191 173 65 19 31 118 59 1 123 72 71 88 64 11 193 37
70963 28 169 184 45 72 195 152 186 87 56 176 112 41 93 77 84 158 29 3 136 142 36
71080 4 119 166 86 98 163 93 1 145 83 102 66 75 191 46 4 94 155 55 120 149 113 148
711181 49 175 180 142 87 5 51 65 92 167 196 186 138 184 23 61 164 171 175 107 6 9
71281 114 7 141 177 117 76 174 73 54 112 114 29 152 11 98 87 154 123 21 146 41 115
71388 115 139 40 183 189 109 67 7 90 52 73 127 51 192 156 89 69 49 77 33 33 182 57
71410 64 138 57 159 136 91 111 33 58 193 88 188 75 118 110 126 170 18 197 169 162
71534 41 17 138 6 34 92 145 185 155 157 170 43 8 140 48 21 70 105 40 161 178 78 89
716196 110 199 106 96 121 106 23 185 28 96 48 167 145 58 91 35 97 180 66 151 130
717124 128 34 16 6 107 28 20 112 92 18 121 30 84 107 101 159 187 19 155 182 181 74
718186 11 120 98 185 104 32 126 94 82 119 42 25 173 90 30 62 96 70 178 176 39 102
71915 150 147 100 78 16 57 35 75 169 35 170 116 144 75 146 ^
720409 1 185 70 12 95 110 71 133 183 52 136 148 144 114 186 17 25 144 164 5 79 178
721172 124 117 19 43 20 93 174 36 125 117 151 109 3 164 55 101 37 122 152 77 131
722168 88 162 161 93 142 14 63 167 141 149 94 39 190 50 68 47 135 198 16 110 153
723177 104 173 192 68 147 179 119 137 166 73 180 169 88 91 24 76 10 80 146 79 128
724150 62 149 194 83 111 171 124 170 156 60 152 27 109 106 120 134 201 184 202 149
72512 198 66 132 12 127 132 133 83 8 12 45 88 9 183 155 92 24 23 76 63 14 163 8 62
72667 150 162 8 115 1 167 91 127 32 89 162 90 159 125 85 129 47 53 154 95 7 115 54
727101 108 56 169 6 47 103 176 157 160 125 14 10 30 124 17 178 122 102 55 69 15 60
728202 49 171 74 148 94 92 124 67 200 184 70 83 29 127 67 100 140 131 165 176 4
729182 2 167 20 193 33 160 43 173 71 112 68 97 157 57 169 138 113 86 44 38 40 55
73019 196 201 31 21 8 165 23 26 41 155 195 183 102 158 25 94 142 146 129 150 9 30
731177 154 195 51 36 175 139 28 59 31 124 167 41 105 173 121 134 130 65 185 17 78
73278 181 137 13 95 57 137 116 51 118 16 78 131 115 154 145 29 177 22 129 68 168
73391 74 98 72 30 174 39 37 72 130 15 163 158 128 50 18 25 73 27 191 150 59 52 36
734104 20 11 130 97 4 79 46 106 141 46 138 163 108 106 191 68 15 113 136 66 100
735193 65 182 105 123 99 72 180 37 22 108 156 10 130 168 141 96 160 22 58 134 151
736162 140 181 187 35 157 7 147 76 163 58 84 129 100 190 153 24 126 32 142 96 107
73788 41 2 14 42 52 186 170 3 82 11 180 119 66 29 56 66 50 171 3 11 77 163 5 150
738112 128 ^
739413 1 47 25 135 129 7 108 19 107 117 102 102 3 28 190 112 165 56 63 165 122 183
740116 28 157 52 73 89 90 169 202 12 111 185 203 91 116 200 97 193 134 116 122 44
74131 7 63 26 37 134 22 2 93 125 33 99 186 77 124 131 94 171 183 50 113 178 146
742127 153 45 32 164 121 203 58 56 108 130 192 166 168 128 39 188 53 102 69 148
743141 18 139 197 108 97 132 74 24 155 71 63 59 97 21 194 180 61 45 204 132 29 31
74485 88 188 164 187 118 37 167 82 94 60 98 1 47 152 110 172 85 55 128 72 43 117
74541 42 116 61 12 144 40 62 58 117 168 17 159 139 164 76 5 193 101 56 30 105 30
74611 143 60 32 86 68 41 136 31 40 123 118 181 135 195 127 59 130 81 53 147 62 13
747124 98 34 79 39 49 145 53 180 94 105 91 71 2 27 5 54 193 7 141 79 199 84 75 70
748128 199 195 160 119 17 20 54 115 187 184 129 146 193 40 201 143 138 57 43 18 94
749204 38 114 80 179 114 47 119 50 80 118 82 160 152 49 112 198 88 155 104 95 151
75036 199 162 100 27 50 47 86 195 16 179 81 192 27 83 107 150 134 194 147 1 158 32
751131 61 111 119 83 140 5 21 133 120 174 78 26 136 109 65 80 40 29 203 25 24 44
752191 14 170 43 162 34 140 99 141 112 54 148 42 71 96 119 161 165 167 148 186 11
7534 180 188 197 42 182 181 168 50 14 26 103 49 1 113 67 61 78 59 196 173 32 53 8
754154 169 30 72 175 152 176 87 36 166 102 36 88 77 79 138 24 188 131 127 26 70
755194 114 146 66 93 158 93 191 125 78 92 51 60 176 26 4 74 135 35 120 129 113 133
756181 29 170 170 137 77 190 46 45 77 157 191 186 138 184 18 61 144 151 175 107 6
757194 81 114 2 126 110 ^
758427 1 85 60 150 73 38 88 90 5 128 11 98 55 130 91 13 146 9 91 88 107 139 16 159
759189 93 35 191 66 28 65 95 51 184 148 57 45 49 61 25 9 166 49 194 64 130 33 143
760112 67 111 1 58 177 80 164 59 110 94 118 170 194 197 169 154 10 41 193 114 190
76126 92 145 177 155 125 146 35 200 124 48 21 46 89 40 153 178 62 65 196 86 175 90
76280 89 98 23 169 4 88 32 135 137 26 75 11 81 172 34 151 130 108 104 34 200 182
76383 12 196 112 84 202 97 206 60 75 69 159 163 19 131 174 157 66 178 195 104 66
764161 104 8 126 70 66 103 26 17 141 90 22 54 64 38 146 168 39 70 199 142 147 92
76570 8 25 35 75 161 3 138 92 128 43 59 185 55 205 95 100 71 123 173 42 126 128
766144 94 176 205 20 139 149 198 59 168 172 109 112 9 33 10 73 154 36 115 97 131
76799 196 144 45 81 22 112 142 72 131 148 83 162 161 78 142 14 53 157 141 139 74
76829 180 35 58 27 115 198 1 90 138 167 89 173 192 48 137 159 114 132 156 58 160
769154 68 76 19 56 5 70 141 64 113 150 47 129 184 73 96 166 124 155 151 55 147 17
770109 86 100 129 201 164 192 149 7 193 56 112 200 107 122 133 63 206 2 40 78 9
771183 140 82 4 13 71 48 4 163 201 57 62 140 157 8 100 204 162 86 117 12 89 147 75
772144 120 85 109 37 48 154 85 2 115 39 96 108 46 164 1 32 103 176 147 150 105 207
77310 15 119 2 173 117 87 50 69 50 202 39 171 69 133 89 72 114 57 195 179 70 83 29
774122 67 85 135 111 160 171 202 172 2 147 183 33 160 38 163 51 92 53 82 137 52
775149 123 98 81 39 38 30 55 14 186 196 11 6 3 155 18 16 26 150 180 168 97 148 25
77684 127 136 119 135 4 30 162 144 195 46 31 170 119 28 190 ^
777443 1 17 96 167 27 91 152 100 106 109 65 164 10 57 71 167 123 209 74 57 137 95
77830 90 2 78 110 101 147 138 22 177 22 129 68 168 63 74 70 65 2 174 18 23 51 116
7798 142 158 121 36 207 207 45 209 170 122 59 52 8 76 20 4 102 69 186 72 46 106
780127 39 110 149 101 99 184 61 15 85 136 59 100 172 37 182 98 95 78 44 173 30 204
78194 156 206 123 161 120 96 132 1 37 134 144 134 126 160 180 21 136 203 119 55
782156 44 77 122 72 190 125 10 105 25 128 75 93 67 13 205 196 14 31 179 142 206 75
783207 159 91 38 8 28 66 43 150 185 193 63 135 5 143 98 143 32 5 125 124 197 103
78414 97 107 102 87 3 18 185 97 155 56 48 165 112 178 106 13 157 32 53 79 85 149
785197 7 106 175 203 71 101 195 92 193 129 116 122 24 26 7 58 11 32 119 7 202 83
786125 28 79 181 57 119 121 84 161 168 50 93 163 131 127 153 45 17 144 121 198 43
78736 93 115 177 166 148 108 24 188 53 97 59 148 126 208 134 192 88 87 112 64 14
788145 61 63 39 97 11 194 165 46 40 199 132 19 11 80 73 178 154 177 118 37 147 72
78994 60 88 201 47 142 110 167 75 45 113 52 43 102 21 22 111 41 12 134 30 42 48
790117 158 7 154 129 164 76 195 188 101 51 20 100 10 201 143 50 32 71 53 31 131 31
79135 123 113 166 135 180 117 44 125 76 33 142 62 3 114 93 19 59 34 34 130 38 170
79274 105 91 56 192 27 205 34 178 202 131 79 199 84 65 50 128 189 185 145 109 17
79349 105 187 174 114 141 183 20 196 128 123 47 28 18 89 189 23 99 70 179 94 42
794114 45 65 98 82 150 137 29 102 183 68 150 89 75 141 21 184 157 80 7 40 37 86
795190 16 174 66 187 12 68 102 135 114 189 137 191 148 12 116 56 96 119 73 130 200
7966 113 100 154 63 26 116 104 50 80 25 14 193 83 ^
797436 1 24 44 191 211 138 11 138 18 140 99 133 104 54 124 42 63 88 95 137 133 151
798116 162 208 193 180 180 173 26 158 165 160 26 6 18 79 33 1 97 59 45 62 51 172
799141 24 37 189 130 145 6 72 143 152 160 87 4 150 86 28 80 77 71 106 16 164 123
800103 10 54 178 106 114 34 85 150 93 175 93 70 76 27 36 152 207 4 42 103 3 120 97
801113 109 181 210 162 154 129 61 166 38 13 53 141 183 186 138 184 10 61 112 119
802175 107 6 170 81 114 207 102 125 65 50 135 73 28 73 75 203 113 11 98 35 115 71
8038 146 202 76 88 102 139 1 144 189 83 15 181 51 13 60 75 51 179 143 37 30 49 51
80420 207 156 44 184 64 125 18 133 97 52 111 194 58 167 75 149 49 105 84 113 170
805179 197 169 149 208 41 178 99 180 21 92 145 172 155 105 131 30 208 200 114 48
80621 31 79 40 148 178 52 50 196 71 160 80 70 69 93 23 159 202 83 22 115 132 6 65
807209 71 167 14 151 130 98 89 34 190 167 68 2 181 112 79 192 82 191 45 55 49 159
808148 19 116 169 142 61 173 185 94 46 146 104 206 126 55 56 93 16 12 121 90 17 49
80944 18 126 163 39 50 189 137 147 87 65 3 5 35 75 156 196 118 77 118 23 54 185 40
810195 95 90 71 113 163 32 116 108 144 74 166 190 15 134 134 188 39 158 172 94 107
811212 23 53 134 36 105 77 111 89 186 124 35 61 7 102 132 67 131 128 78 162 161 63
812142 14 43 147 141 129 54 19 170 20 48 7 95 198 199 70 123 157 74 173 192 28 127
813139 109 127 146 43 140 139 48 61 14 36 60 136 49 98 150 32 109 174 63 81 161
814124 140 146 50 142 7 109 66 80 124 201 144 182 149 2 188 46 92 185 87 112 133
81543 201 205 35 68 9 183 125 72 197 3 66 33 207 163 191 52 57 130 152 8 85 204
816157 81 107 205 187 ^
817462 1 126 54 123 113 85 81 23 41 154 71 210 115 18 89 108 32 157 209 11 103 176
818133 136 77 193 10 209 112 196 166 110 66 43 69 194 36 202 25 171 62 112 82 44
819100 43 188 172 70 83 29 115 67 64 128 83 153 164 195 158 2 119 187 169 33 160
82031 149 23 64 32 61 109 45 121 102 77 74 32 38 16 55 7 172 189 198 200 211 141
82111 2 5 143 159 147 90 134 25 70 106 122 105 114 212 30 141 130 195 39 24 163 91
82228 11 7 76 167 17 81 137 85 86 94 65 149 5 42 66 157 113 204 59 57 137 80 15 70
823207 78 95 91 142 133 17 177 22 129 68 168 43 74 50 60 197 174 3 13 36 106 3 127
824158 116 26 197 192 25 194 155 102 59 52 203 56 20 214 82 49 171 67 46 106 117
82534 90 139 96 94 179 56 15 65 136 54 100 157 17 182 93 75 63 24 168 25 189 84
826156 201 118 156 105 96 112 201 22 134 139 114 116 145 175 11 121 198 99 40 151
82734 72 117 52 190 105 90 20 118 60 83 52 208 205 181 209 16 174 122 206 70 202
828144 71 18 208 8 66 38 135 170 178 53 115 5 138 88 123 17 200 115 119 182 98 9
82987 97 102 72 3 8 180 82 145 56 33 165 102 173 96 213 157 12 33 69 80 129 192 2
830101 165 203 51 86 190 87 193 124 116 122 4 21 7 53 211 27 104 207 197 73 125 23
83159 176 37 114 111 74 151 153 50 73 148 116 127 153 45 2 124 121 193 28 16 78
832100 162 166 128 88 9 188 53 92 49 148 111 193 129 187 68 77 92 54 4 135 51 63
83319 97 1 194 150 31 35 194 132 9 206 75 58 168 144 167 118 37 127 62 94 60 78
834196 47 132 110 162 65 35 98 32 43 87 1 2 106 21 12 124 20 22 38 117 148 212 149
835119 164 76 180 183 101 46 10 95 205 186 143 40 32 56 38 21 126 31 30 123 108
836151 135 165 107 29 120 71 13 137 62 208 104 88 4 39 29 19 115 23 160 54 105 91
83741 177 27 200 14 163 124 ^
838453 0 115 79 199 84 49 18 128 173 169 121 93 17 186 41 89 187 158 90 133 167
839206 188 104 99 31 4 18 81 165 217 75 54 179 62 34 106 37 41 66 82 134 113 215
84086 159 36 142 65 43 125 215 160 149 48 193 24 21 86 182 16 166 42 179 206 44 94
841111 82 181 121 167 132 198 92 48 72 119 57 114 184 200 81 68 122 39 26 84 96 26
84280 1 208 177 217 24 44 191 206 118 209 123 8 140 99 128 99 54 109 42 58 83 80
843122 113 141 96 147 203 183 180 175 158 16 143 155 155 11 1 13 64 23 1 87 54 35
84452 46 157 121 19 27 174 115 130 209 72 123 152 150 87 202 140 76 23 75 77 66 86
84511 149 118 88 44 168 101 94 14 80 145 93 165 73 65 66 12 21 137 192 4 22 83 201
846120 77 113 94 181 195 157 144 124 51 151 33 211 38 131 178 186 138 184 5 61 92
84799 175 107 6 155 81 114 207 87 105 45 40 120 73 18 58 60 193 98 11 98 15 100 51
8483 146 187 61 88 97 139 204 129 189 73 213 171 36 216 55 55 51 174 138 17 15 49
84941 15 197 146 39 174 64 120 3 123 82 37 111 179 58 157 70 134 39 100 74 108 170
850164 197 169 144 198 41 163 84 170 16 92 145 167 155 85 116 25 208 200 104 48 21
85116 69 40 143 178 42 35 196 56 145 70 60 49 88 23 149 192 78 12 95 127 204 55
852199 61 162 212 151 130 88 74 34 180 152 53 210 166 112 74 182 67 176 30 35 29
853159 133 19 101 164 127 56 168 175 84 26 131 104 196 126 40 46 83 6 7 101 90 12
85444 24 216 106 158 39 30 179 132 147 82 60 216 203 35 75 151 181 98 62 108 3 49
855185 25 185 95 80 71 103 153 22 106 88 144 54 156 175 10 129 119 178 19 148 172
85679 102 207 13 208 33 114 36 95 57 91 79 176 104 25 41 210 92 122 62 131 108 73
857162 161 48 142 14 33 137 141 119 34 9 160 5 38 205 75 198 189 50 108 112 ^
858454 1 53 173 192 113 111 102 120 132 22 112 118 20 40 7 8 213 46 129 28 77 150
85911 81 160 49 60 154 124 119 139 43 135 213 109 38 52 117 201 116 168 149 215
860181 32 64 164 59 98 133 15 194 198 28 54 9 183 104 58 176 209 59 12 200 163 177
86145 50 116 145 8 64 204 150 74 93 184 89 111 39 108 108 85 61 13 36 154 61 210
862115 3 84 108 22 152 209 216 103 176 123 126 57 183 10 199 107 186 161 105 51 38
86369 184 26 202 15 171 57 97 77 24 90 33 183 167 70 83 29 110 67 49 123 63 148
864159 190 148 2 99 172 159 33 160 26 139 3 44 17 46 89 40 101 87 62 69 27 38 6 55
8652 162 184 183 190 211 131 6 212 210 138 144 132 85 124 25 60 91 112 95 99 212
86630 126 120 195 34 19 158 71 28 211 217 56 167 7 71 122 70 66 79 65 134 27 61
867147 103 199 44 57 137 65 50 202 78 80 81 137 128 12 177 22 129 68 168 23 74 30
86855 182 174 208 3 21 96 218 112 158 111 16 187 177 5 179 140 82 59 52 188 36 20
869214 62 29 156 62 46 106 107 29 70 129 91 89 174 51 15 45 136 49 100 142 217 182
87088 55 48 4 163 20 174 74 156 196 113 151 90 96 92 191 7 134 134 94 106 130 170
8711 106 193 79 25 146 24 67 112 32 190 85 210 75 15 108 45 73 37 193 205 166 194
8721 169 102 206 65 197 129 51 218 198 208 66 33 120 155 163 43 95 5 133 78 103 2
873185 105 114 167 93 4 77 87 102 57 3 218 175 67 135 56 18 165 92 168 86 203 157
874212 13 59 75 109 187 217 96 155 203 31 71 185 82 193 119 116 122 204 16 7 48
875201 22 89 197 192 63 125 18 39 171 17 109 101 64 141 138 50 53 133 101 127 153
87645 207 104 121 188 13 216 63 85 147 166 108 68 214 188 53 87 39 148 96 178 124
877182 48 67 72 44 214 125 41 63 219 97 211 194 135 16 30 189 132 219 191 70 43
878158 181 ^
879475 0 153 118 37 99 48 94 60 64 189 47 118 110 155 51 21 77 4 43 66 195 196 99
880215 12 110 6 216 24 117 134 205 142 105 164 76 159 176 101 39 218 88 184 165
881143 26 32 35 17 7 119 31 23 123 101 130 135 144 93 8 113 64 207 130 62 201 90
88281 205 11 22 220 94 2 146 26 105 91 20 156 27 193 208 142 178 107 79 199 84 41
8832 128 165 161 109 85 17 174 37 81 187 150 78 129 159 194 184 92 87 23 214 18 77
884153 209 63 46 179 46 30 102 33 29 50 82 126 101 203 78 147 20 138 53 27 117 207
885148 145 32 181 16 13 86 178 16 162 30 175 198 32 90 99 66 177 113 155 124 186
88680 44 60 119 49 106 176 192 65 52 106 27 26 68 92 14 80 211 200 169 213 24 44
887191 202 102 197 111 140 99 124 95 54 97 42 54 79 68 110 97 133 80 135 199 175
888180 171 146 8 131 147 151 221 219 9 52 15 1 79 50 27 44 42 145 105 15 19 162
889103 118 201 72 107 152 142 87 190 132 68 19 71 77 62 70 7 137 114 76 214 36 160
89097 78 220 76 141 93 157 57 61 58 9 125 180 4 6 67 189 120 61 113 82 181 183 153
891136 120 43 139 29 199 26 123 174 186 138 184 1 61 76 83 175 107 6 143 81 114
892207 75 89 29 32 108 73 10 46 48 185 86 11 98 221 88 35 221 146 175 49 88 93 139
893196 117 189 65 201 163 24 208 51 39 51 170 134 1 3 49 33 11 189 138 35 166 64
894116 213 115 70 25 111 167 58 149 66 122 31 96 66 104 170 152 197 169 140 190 41
895151 72 162 12 92 145 163 155 69 104 21 208 200 96 48 21 4 61 40 139 178 34 23
896196 44 133 62 52 33 84 23 141 184 74 4 79 123 192 47 191 53 158 200 151 130 80
89762 34 172 140 41 206 154 112 70 174 55 164 18 19 13 159 121 19 89 160 115 52
898164 167 76 10 119 104 188 126 28 38 75 220 3 85 90 8 40 8 204 90 154 39 14 171
899128 147 78 56 216 191 35 75 147 169 82 50 100 209 45 185 13 177 95 150 ^
900471 0 71 89 139 8 92 60 144 26 142 154 3 122 98 164 216 134 172 58 95 200 224
901201 5 86 36 81 29 63 65 162 76 11 13 196 78 108 55 131 80 66 162 161 27 142 14
90219 123 141 105 6 220 146 209 24 184 47 198 175 22 87 133 38 173 192 205 103 91
90397 115 122 7 92 103 25 2 213 213 36 124 13 62 150 221 61 150 39 45 149 124 104
904134 38 130 208 109 18 32 112 201 96 158 149 215 176 22 44 149 39 88 133 220 189
905193 23 44 9 183 89 48 161 204 54 222 195 163 167 40 45 106 140 8 49 204 145 69
90683 169 89 96 24 93 103 85 41 3 31 154 51 210 115 213 79 108 12 147 209 206 103
907176 113 116 37 173 10 189 102 176 156 100 36 33 69 174 16 202 5 171 52 82 72 4
90880 23 178 162 70 83 29 105 67 34 118 43 143 154 185 138 2 79 157 149 33 160 21
909129 208 24 2 31 69 35 81 72 47 64 22 38 221 55 222 152 179 168 180 211 121 1
910207 200 133 129 117 80 114 25 50 76 102 85 84 212 30 111 110 195 29 14 153 51
91128 196 212 36 167 222 61 107 55 46 64 65 119 220 12 56 137 93 194 29 57 137 50
912210 30 197 78 65 71 132 123 7 177 22 129 68 168 3 74 10 50 167 174 198 218 6 86
913218 97 158 106 6 177 162 210 164 125 62 59 52 173 16 20 214 42 9 141 57 46 106
91497 24 50 119 86 84 169 46 15 25 136 44 100 127 202 182 83 35 33 209 158 15 159
91564 156 191 108 146 75 96 72 181 217 134 129 74 96 115 165 216 91 188 59 10 141
91614 62 107 12 190 65 205 60 10 98 30 63 22 178 205 151 179 211 164 82 206 60 192
917114 31 203 188 193 66 28 105 140 148 33 75 5 128 68 83 212 170 95 109 152 88
918224 67 77 102 42 3 213 170 52 125 56 3 165 82 163 76 193 157 197 218 49 70 89
919182 217 91 145 203 11 56 180 77 193 114 116 122 189 11 7 43 191 17 74 187 187
92053 125 13 19 166 222 104 91 54 131 123 50 33 118 86 127 167 ^
921480 1 45 193 76 121 181 219 195 42 64 126 166 80 40 200 188 53 80 25 148 75 157
922117 175 20 53 44 30 207 111 27 63 198 97 204 194 114 222 23 182 132 212 170 63
92322 144 120 143 118 37 79 38 94 60 54 184 47 108 110 150 41 11 62 211 43 51 180
924181 94 200 12 100 223 201 14 117 124 200 137 95 164 76 144 171 101 34 213 83
925169 150 143 16 32 20 2 224 114 31 18 123 96 115 135 129 83 220 108 59 192 125
92662 196 80 76 195 218 17 210 79 214 136 6 105 91 5 141 27 188 193 127 168 97 79
927199 84 31 209 128 155 151 94 75 17 159 32 71 187 140 63 124 149 179 179 77 72
92813 204 18 72 138 199 48 36 179 26 25 97 28 14 30 82 116 86 188 68 132 133 38 7
929107 197 133 140 12 166 6 3 86 173 16 157 15 170 188 17 85 84 46 172 103 140 114
930171 65 39 45 119 39 96 166 182 45 32 86 12 26 48 87 226 80 201 190 159 208 24
93144 191 197 82 182 96 217 140 99 119 90 54 82 42 49 74 53 95 77 123 60 120 194
932165 180 166 131 225 116 137 146 211 219 4 37 5 1 69 45 17 34 37 130 85 10 9 147
93388 103 191 72 87 152 132 87 175 122 58 14 66 77 57 50 2 122 109 61 209 26 150
93492 58 205 71 136 93 147 37 56 48 212 221 110 165 4 213 47 174 120 41 113 67 181
935168 148 126 115 33 124 24 184 11 113 169 186 138 184 223 61 56 63 175 107 6 128
93681 114 207 60 69 9 22 93 73 31 33 175 71 11 98 206 73 15 221 146 160 34 88 88
937139 186 102 189 55 186 153 9 198 46 19 51 165 129 208 215 49 23 6 179 128 30
938156 64 111 203 105 55 10 111 152 58 139 61 107 21 91 56 99 170 137 197 169 135
939180 41 136 57 152 7 92 145 158 155 49 89 16 208 200 86 48 21 216 51 40 134 178
94024 8 196 29 118 52 42 13 79 23 131 174 69 221 59 118 177 37 181 43 153 185 151
941130 70 47 34 162 125 26 201 139 112 65 164 40 149 3 226 220 159 106 19 74 155
942100 47 159 157 193 ^
943471 0 211 98 104 174 126 7 24 61 213 225 57 90 1 33 209 183 62 147 39 215 157
944121 147 71 49 216 170 35 75 140 148 54 29 86 188 38 185 221 163 95 58 71 81 131
94584 44 144 10 134 142 228 118 86 156 204 126 172 46 91 196 220 197 218 70 36 73
94613 47 57 154 60 3 226 188 70 100 51 131 64 62 162 161 15 142 14 11 115 141 97
947219 216 138 201 16 172 31 198 167 6 75 125 26 173 192 193 95 75 93 111 114 224
94876 91 213 13 227 201 213 28 120 1 50 150 213 45 142 31 33 145 124 92 130 34 126
949204 109 2 16 108 201 80 150 149 215 172 14 28 137 23 80 133 208 185 189 19 36 9
950183 77 40 149 200 50 214 191 163 159 36 41 98 136 8 37 204 141 65 75 157 89 84
95112 81 99 85 25 224 27 154 43 210 115 205 75 108 4 143 209 198 103 176 105 108
95221 165 10 181 98 168 152 96 24 29 69 166 8 202 226 171 48 70 68 217 72 15 174
953158 70 83 29 101 67 22 114 27 139 150 181 130 2 63 145 141 33 160 17 121 196 8
954219 19 53 31 65 60 35 60 18 38 217 55 222 144 175 156 172 211 113 226 203 192
955129 117 105 76 106 25 42 64 94 77 72 212 30 99 102 195 25 10 149 35 28 184 208
95620 167 218 53 95 43 30 52 65 107 220 52 129 85 190 17 57 137 38 202 14 193 78
95753 63 128 119 3 177 22 129 68 168 216 74 223 46 155 174 190 214 223 78 218 85
958158 102 227 169 150 198 152 113 46 59 52 161 20 214 26 222 129 53 46 106 89 20
95934 111 82 80 165 42 15 9 136 40 100 115 190 182 79 19 21 197 154 11 147 56 156
960187 104 142 63 96 56 173 209 134 125 58 88 103 161 212 79 184 43 227 137 6 58
961103 225 190 49 201 48 6 90 18 55 10 166 205 139 167 203 160 66 206 56 188 102
96215 191 180 181 66 24 93 128 136 25 59 5 124 60 67 204 158 87 105 140 84 224 59
96369 102 30 3 209 166 40 117 56 220 165 74 159 68 185 157 185 206 41 66 167 ^
964490 1 176 217 85 133 203 218 38 174 71 193 108 116 122 171 5 7 37 179 11 56 175
965181 41 125 7 226 160 204 98 79 42 119 105 50 9 100 68 127 153 45 185 60 121 177
966211 183 30 52 114 166 64 24 192 188 53 76 17 148 63 145 113 171 4 45 28 22 203
967103 19 63 186 97 200 194 102 214 19 178 132 208 158 59 10 136 112 135 118 37 63
96830 94 60 46 180 47 100 110 146 33 3 50 199 43 39 168 169 90 188 12 92 219 189 6
969117 116 196 133 87 164 76 132 167 101 30 209 79 157 138 143 8 32 8 221 220 110
97031 14 123 92 103 135 117 75 212 104 55 180 121 62 192 72 72 187 206 13 202 67
971206 128 221 105 91 224 129 27 184 181 115 160 89 79 199 84 23 197 128 147 143
97282 67 17 147 28 63 187 132 51 120 141 167 175 65 60 5 196 18 68 126 191 36 28
973179 10 21 93 24 2 14 82 108 74 176 60 120 215 129 26 222 99 189 121 136 227 154
974229 226 86 169 16 153 3 166 180 5 81 72 30 168 95 128 106 159 53 35 33 119 31
97588 158 174 29 16 70 26 32 83 218 80 193 182 151 204 24 44 191 193 66 170 84 213
976140 99 115 86 54 70 42 45 70 41 83 61 115 44 108 190 157 180 162 119 221 104
977129 142 203 219 25 228 1 61 41 9 26 33 118 69 6 1 135 76 91 183 72 71 152 124
97887 163 114 50 10 62 77 53 34 229 110 105 49 205 18 142 88 42 193 67 132 93 139
97921 52 40 204 213 98 153 4 201 31 162 120 25 113 55 181 156 144 118 111 25 112
98020 172 230 105 165 186 138 184 223 61 40 47 175 107 6 116 81 114 207 48 53 224
98114 81 73 223 19 21 167 59 11 98 194 61 230 221 146 148 22 88 84 139 178 90 189
98247 174 145 228 190 42 3 51 161 125 196 207 49 15 2 171 120 26 148 64 107 195 97
98343 229 111 140 58 131 57 95 13 87 48 95 170 125 197 169 131 172 41 124 45 144 3
98492 145 154 155 33 77 12 208 200 78 48 21 208 43 40 130 178 16 227 196 17 106 44
98534 228 75 23 123 166 65 217 43 114 165 29 173 35 200 ^
986479 0 167 151 130 58 29 34 150 107 8 195 121 112 59 152 22 131 218 208 202 159
98788 19 56 149 82 41 153 145 54 199 86 104 166 126 228 16 53 209 225 41 90 230 29
988197 171 46 143 39 203 149 117 147 67 45 216 158 35 75 136 136 38 17 78 176 34
989185 213 155 95 50 71 73 123 225 76 28 144 227 126 130 228 114 74 148 192 118
990172 34 87 192 216 193 206 54 36 65 230 31 49 146 44 228 214 180 62 92 47 131 48
99158 162 161 3 142 14 3 107 141 89 207 212 130 193 8 160 15 198 159 223 63 117 14
992173 192 181 87 59 89 107 106 216 60 79 201 1 227 189 213 20 116 222 38 150 205
99329 134 23 21 141 124 80 126 30 122 200 109 219 104 201 64 142 149 215 168 6 12
994125 7 72 133 196 181 185 15 28 9 183 65 32 137 196 46 206 187 163 151 32 37 90
995132 8 25 204 137 61 67 145 89 72 69 95 85 9 220 23 154 35 210 115 197 71 108
996229 139 209 190 103 176 97 100 5 157 10 173 94 160 148 92 12 25 69 158 202 222
997171 44 58 64 205 64 7 170 154 70 83 29 97 67 10 110 11 135 146 177 122 2 47 133
998133 33 160 13 113 184 225 211 7 37 27 49 48 23 56 14 38 213 55 222 136 171 144
999164 211 105 226 199 184 125 105 93 72 98 25 34 52 86 69 60 212 30 87 94 195 21
10006 145 19 28 172 204 4 167 214 45 83 31 14 40 65 95 220 221 48 121 77 186 5 57
1001137 26 194 231 189 78 41 55 124 115 232 177 22 129 68 168 204 74 211 42 143 174
1002182 210 215 70 218 73 158 98 223 161 138 186 140 101 30 59 52 149 217 20 214 10
1003210 117 49 46 106 81 16 18 103 78 76 161 38 15 226 136 36 100 103 178 182 75 3
10049 185 150 7 135 48 156 183 100 138 51 96 40 165 201 134 121 42 80 91 157 208 67
1005180 27 219 133 231 54 99 213 190 33 197 36 2 82 6 47 231 154 205 127 155 195
1006156 50 206 52 184 90 232 179 172 169 66 20 81 116 124 17 43 5 120 52 51 196 146
100779 101 128 80 224 65 ^
1008503 1 55 102 9 3 202 159 19 103 56 206 165 60 152 54 171 157 164 185 27 59 45
1009171 217 80 123 203 203 23 169 66 193 103 116 122 156 7 32 169 6 41 165 176 31
1010125 2 211 155 189 93 69 32 109 90 50 225 85 53 127 153 45 175 40 121 172 201
1011168 15 37 99 166 44 4 182 188 53 71 7 148 48 130 108 166 220 35 8 12 198 93 9
101263 171 97 195 194 87 204 14 173 132 203 143 54 231 126 102 125 118 37 43 20 94
101360 36 175 47 90 110 141 23 229 35 184 43 24 153 154 85 173 12 82 214 174 232
1014117 106 191 128 77 164 76 117 162 101 25 204 74 142 123 143 234 32 229 211 215
1015105 31 9 123 87 88 135 102 65 202 99 50 165 116 62 187 62 67 177 191 8 192 52
1016196 118 206 105 91 214 114 27 179 166 100 150 79 79 199 84 13 182 128 137 133
101767 57 17 132 23 53 187 122 36 115 131 152 170 50 45 231 186 18 63 111 181 21 18
1018179 226 16 88 19 223 230 82 98 59 161 50 105 200 124 11 207 89 179 106 131 212
1019139 224 221 86 164 16 148 224 161 170 226 76 57 10 163 85 113 96 144 38 30 18
1020119 21 78 148 164 9 232 50 221 26 12 78 208 80 183 172 141 199 24 44 191 188 46
1021155 69 208 140 99 110 81 54 55 42 40 65 26 68 41 105 24 93 185 147 180 157 104
1022216 89 119 137 193 219 231 10 223 1 51 36 235 16 28 103 49 1 227 120 61 76 173
102372 51 152 114 87 148 104 40 5 57 77 48 14 229 95 100 34 200 8 132 83 22 178 62
1024127 93 129 1 47 30 194 203 83 138 4 186 11 147 120 5 113 40 181 141 139 108 106
102515 97 15 157 220 95 160 186 138 184 223 61 20 27 175 107 6 101 81 114 207 33 33
1026209 4 66 73 218 4 6 157 44 11 98 179 46 215 221 146 133 7 88 79 139 168 75 189
102737 159 135 218 180 37 219 51 156 120 181 197 49 5 233 161 110 21 138 64 102 185
102887 28 219 111 125 58 121 52 80 3 82 38 90 170 110 197 169 126 162 41 109 30 134
1029234 92 145 149 155 13 62 7 208 200 68 48 21 198 33 40 125 178 6 217 196 2 91 34
103024 213 70 23 113 161 ^
1031470 0 58 210 15 107 144 15 159 21 142 152 151 130 48 14 34 140 92 231 190 106
1032112 54 142 7 116 208 193 187 159 73 19 41 144 67 36 148 135 44 184 71 104 156
1033126 218 6 43 204 225 21 90 230 24 182 156 26 138 39 188 139 112 147 62 40 216
1034143 35 75 131 121 18 2 68 161 29 185 203 145 95 40 71 63 113 220 66 8 144 212
1035116 115 228 109 59 138 177 108 172 19 82 187 211 188 191 34 36 55 215 11 39 136
103624 223 199 170 52 82 42 131 28 53 162 161 226 142 14 231 97 141 79 192 207 120
1037183 236 145 233 198 149 208 48 107 237 173 192 166 77 39 84 102 96 206 40 64
1038186 224 227 174 213 10 111 212 23 150 195 9 124 13 6 136 124 65 121 25 117 195
1039109 204 218 99 201 44 132 149 215 163 234 230 110 225 62 133 181 176 180 10 18
10409 183 50 22 122 191 41 196 182 163 141 27 32 80 127 8 10 204 132 56 57 130 89
104157 223 54 90 85 227 215 18 154 25 210 115 187 66 108 224 134 209 180 103 176 87
104290 223 147 10 163 89 150 143 87 235 20 69 148 228 202 217 171 39 43 59 190 54
1043235 165 149 70 83 29 92 67 233 105 229 130 141 172 112 2 27 118 123 33 160 8
1044103 169 210 201 230 17 22 29 33 8 51 9 38 208 55 222 126 166 129 154 211 95 226
1045194 174 120 90 78 67 88 25 24 37 76 59 45 212 30 72 84 195 16 1 140 237 28 157
1046199 222 167 209 35 68 16 232 25 65 80 220 211 43 111 67 181 228 57 137 11 184
1047216 184 78 26 45 119 110 232 177 22 129 68 168 189 74 196 37 128 174 172 205
1048205 60 218 58 158 93 218 151 123 171 125 86 10 59 52 134 202 20 214 228 195 102
104944 46 106 71 11 236 93 73 71 156 33 15 211 136 31 100 88 163 182 70 221 232 170
1050145 2 120 38 156 178 95 133 36 96 20 155 191 134 116 22 70 76 152 203 52 175 7
1051209 128 226 49 94 198 190 13 192 21 235 72 229 37 221 139 205 112 140 185 151
105230 206 47 179 75 217 101 ^
1053502 0 158 148 66 13 60 95 103 3 15 5 113 38 23 182 125 65 94 107 73 224 37 47
1054102 237 3 198 155 7 95 56 198 165 52 148 46 163 157 152 173 19 55 29 167 217 76
1055115 203 191 11 165 62 193 99 116 122 144 236 7 28 161 2 29 157 172 23 125 238
1056199 151 177 89 61 24 101 78 50 213 73 41 127 153 45 167 24 121 168 193 156 3 25
105787 166 28 228 174 188 53 67 239 148 36 118 104 162 208 27 232 4 194 85 1 63 159
105897 191 194 75 196 10 169 132 199 131 50 223 118 94 117 118 37 27 12 94 60 28
1059171 47 82 110 137 15 225 23 172 43 12 141 142 81 161 12 74 210 162 228 117 98
1060187 124 69 164 76 105 158 101 21 200 70 130 111 143 230 32 221 203 211 101 31 5
1061123 83 76 135 90 57 194 95 46 153 112 62 183 54 63 169 179 4 184 40 188 110 194
1062105 91 206 102 27 175 154 88 142 71 79 199 84 5 170 128 129 125 55 49 17 120 19
106345 187 114 24 111 123 140 166 38 33 227 178 18 59 99 173 9 10 179 214 12 84 15
1064215 218 82 90 47 149 42 93 188 120 239 195 81 171 94 127 200 127 220 217 86 160
106516 144 216 157 162 218 72 45 234 159 77 101 88 132 26 26 6 119 13 70 140 156
1066233 220 34 213 26 236 74 200 80 175 164 133 195 24 44 191 184 30 143 57 204 140
106799 106 77 54 43 42 36 61 14 56 25 97 8 81 181 139 180 153 92 212 77 111 133 185
1068219 231 238 219 1 43 32 231 8 24 91 33 237 223 108 49 64 165 72 35 152 106 87
1069136 96 32 1 53 77 44 238 229 83 96 22 196 124 79 6 166 58 123 93 121 225 43 22
1070186 195 71 126 4 174 235 135 120 229 113 28 181 129 135 100 102 7 85 11 145 212
107187 156 186 138 184 223 61 4 11 175 107 6 89 81 114 207 21 17 197 236 54 73 214
1072232 234 149 32 11 98 167 34 203 221 146 121 235 88 75 139 160 63 189 29 147 127
1073210 172 33 207 51 152 116 169 189 49 237 233 153 102 17 130 64 98 177 79 16 211
1074111 113 58 113 48 68 235 78 30 86 170 98 197 169 122 154 41 97 18 126 234 92
1075145 145 155 237 50 209 ^
1076481 1 208 200 56 48 21 186 21 40 119 178 236 205 196 226 73 22 12 195 64 23 101
1077144 54 206 241 103 132 7 151 13 138 140 151 130 40 2 34 132 80 223 186 94 112
107850 134 237 104 200 181 175 159 61 19 29 140 55 32 144 127 36 172 59 104 148 126
1079210 240 35 200 225 5 90 230 20 170 144 10 134 39 176 131 108 147 58 36 216 131
108035 75 127 109 2 232 60 149 25 185 195 137 95 32 71 55 105 216 58 234 144 200
1081108 103 228 105 47 130 165 100 172 7 78 183 207 184 179 18 36 47 203 237 31 128
10828 219 187 162 44 74 38 131 12 49 162 161 218 142 14 227 89 141 71 180 203 112
1083175 232 133 221 198 141 196 36 99 229 173 192 154 69 23 80 98 88 198 24 52 174
1084216 227 162 213 2 107 204 11 150 187 235 116 5 236 132 124 53 117 21 113 191
1085109 192 206 95 201 28 124 149 215 159 230 218 98 213 54 133 169 172 176 6 10 9
1086183 38 14 110 187 37 188 178 163 133 23 28 72 123 8 240 204 128 52 49 118 89 45
1087215 42 86 85 215 211 14 154 17 210 115 179 62 108 220 130 209 172 103 176 79 82
1088211 139 10 155 85 142 139 83 227 16 69 140 224 202 213 171 35 31 55 178 46 231
1089161 145 70 83 29 88 67 225 101 217 126 137 168 104 2 11 106 115 33 160 4 95 157
1090198 193 222 1 18 13 21 238 47 5 38 204 55 222 118 162 117 146 211 87 226 190
1091166 116 78 66 63 80 25 16 25 68 51 33 212 30 60 76 195 12 239 136 225 28 145
1092195 210 167 205 27 56 4 220 13 65 68 220 203 39 103 59 177 220 57 137 241 176
1093204 180 78 14 37 115 106 232 177 22 129 68 168 177 74 184 33 116 174 164 201
1094197 52 218 46 158 89 214 143 111 159 113 74 236 59 52 122 190 20 214 216 183 90
109540 46 106 63 7 224 85 69 67 152 29 15 199 136 27 100 76 151 182 66 209 224 158
1096141 240 108 30 156 174 91 129 24 96 4 147 183 134 112 6 62 64 148 199 40 171
1097233 201 124 222 45 90 186 190 239 188 9 235 64 221 29 213 127 178 ^
1098508 1 94 122 173 145 6 206 41 173 57 199 146 150 136 66 9 48 83 91 239 243 5
1099109 30 7 174 113 57 90 95 69 224 29 39 102 229 3 194 151 239 87 56 190 165 44
1100144 38 155 157 140 161 11 51 13 163 217 72 107 203 179 243 161 58 193 95 116
1101122 132 236 7 24 153 242 17 149 168 15 125 238 187 147 165 85 53 16 93 66 50
1102201 61 29 127 153 45 159 8 121 164 185 144 235 13 75 166 12 216 166 188 53 63
1103235 148 24 106 100 158 196 19 220 240 190 77 237 63 147 97 187 194 63 188 6 165
1104132 195 119 46 215 110 86 109 118 37 11 4 94 60 20 167 47 74 110 133 7 221 11
1105160 43 129 130 77 149 12 66 206 150 224 117 90 183 120 61 164 76 93 154 101 17
1106196 66 118 99 143 226 32 213 195 207 97 31 1 123 79 64 135 78 49 186 91 42 141
1107108 62 179 46 59 161 167 176 28 180 102 182 105 91 198 90 27 171 142 76 134 63
110879 199 84 241 158 128 121 117 43 41 17 108 15 37 187 106 12 107 115 128 162 26
110921 223 170 18 55 87 165 241 2 179 202 8 80 11 207 206 82 82 35 137 34 81 176
1110116 231 183 73 163 82 123 188 115 216 213 86 156 16 140 208 153 154 210 68 33
1111222 155 69 89 80 120 14 22 238 119 5 62 132 148 221 208 18 205 26 224 70 192 80
1112167 156 125 191 24 44 191 180 14 131 45 200 140 99 102 73 54 31 42 32 57 2 44 9
111389 236 69 177 131 180 149 80 208 65 103 129 177 219 231 230 215 1 35 28 227 20
111479 17 237 219 96 37 52 157 72 19 152 98 87 124 88 24 241 49 77 40 226 229 71 92
111510 192 236 116 75 234 154 54 119 93 113 213 39 14 178 187 59 114 4 162 223 123
1116120 217 113 16 181 117 131 92 98 243 73 7 133 204 79 152 186 138 184 223 61 232
1117239 175 107 6 77 81 114 207 9 1 185 232 42 73 210 224 226 141 20 11 98 155 22
1118191 221 146 109 227 88 71 139 152 51 189 21 135 119 202 164 29 195 51 148 112
1119157 181 49 233 233 145 94 13 122 64 94 169 71 4 203 111 101 58 105 44 56 231 74
112022 82 170 86 197 169 118 146 41 85 6 118 234 92 145 141 149 ^
1121484 1 219 32 243 208 200 48 48 21 178 13 40 115 178 232 197 196 218 61 14 4 183
112260 23 93 136 50 202 229 99 120 245 143 5 134 128 151 130 32 236 34 124 68 215
1123182 82 112 46 126 229 92 192 169 163 159 49 19 17 136 43 28 140 119 28 160 47
1124104 140 126 202 236 27 196 225 235 90 230 16 158 132 240 130 39 164 123 104 147
112554 32 216 119 35 75 123 97 232 224 52 137 21 185 187 129 95 24 71 47 97 212 50
1126222 144 188 100 91 228 101 35 122 153 92 172 241 74 179 203 180 167 2 36 39 191
1127225 23 120 238 215 175 154 36 66 34 131 242 45 162 161 210 142 14 223 81 141 63
1128168 199 104 167 228 121 209 198 133 184 24 91 221 173 192 142 61 7 76 94 80 190
11298 40 162 208 227 150 213 240 103 196 245 150 179 223 108 243 228 128 124 41 113
113017 109 187 109 180 194 91 201 12 116 149 215 155 226 206 86 201 46 133 157 168
1131172 2 2 9 183 26 6 98 183 33 180 174 163 125 19 24 64 119 8 232 204 124 48 41
1132106 89 33 207 30 82 85 203 207 10 154 9 210 115 171 58 108 216 126 209 164 103
1133176 71 74 199 131 10 147 81 134 135 79 219 12 69 132 220 202 209 171 31 19 51
1134166 38 227 157 141 70 83 29 84 67 217 97 205 122 133 164 96 2 241 94 107 33 160
113587 145 186 185 214 231 14 243 9 230 43 1 38 200 55 222 110 158 105 138 211 79
1136226 186 158 112 66 54 59 72 25 8 13 60 43 21 212 30 48 68 195 8 239 132 213 28
1137133 191 198 167 201 19 44 238 208 1 65 56 220 195 35 95 51 173 212 57 137 233
1138168 192 176 78 2 29 111 102 232 177 22 129 68 168 165 74 172 29 104 174 156 197
1139189 44 218 34 158 85 210 135 99 147 101 62 224 59 52 110 178 20 214 204 171 78
114036 46 106 55 3 212 77 65 63 148 25 15 187 136 23 100 64 139 182 62 197 216 146
1141137 240 96 22 156 170 87 125 12 96 234 139 175 134 108 236 54 52 144 195 28 167
1142221 193 120 218 41 86 174 190 227 184 243 235 56 213 21 205 115 205 71 ^
1143506 0 110 165 141 238 206 37 169 45 187 134 142 124 66 5 36 71 79 235 231 5 105
114422 239 166 101 49 86 83 65 224 21 31 102 221 3 190 147 231 79 56 182 165 36 140
114530 147 157 128 149 3 47 245 159 217 68 99 203 167 235 157 54 193 91 116 122 120
1146236 7 20 145 242 5 141 164 7 125 238 175 143 153 81 45 8 85 54 50 189 49 17 127
1147153 45 151 240 121 160 177 132 227 1 63 166 244 204 158 188 53 59 231 148 12 94
114896 154 184 11 208 236 186 69 233 63 135 97 183 194 51 180 2 161 132 191 107 42
1149207 102 78 101 118 37 243 244 94 60 12 163 47 66 110 129 247 217 247 148 43 236
1150117 118 73 137 12 58 202 138 220 117 82 179 116 53 164 76 81 150 101 13 192 62
1151106 87 143 222 32 205 187 203 93 31 245 123 75 52 135 66 41 178 87 38 129 104
115262 175 38 55 153 155 244 168 16 172 94 170 105 91 190 78 27 167 130 64 126 55
115379 199 84 237 146 128 113 109 31 33 17 96 11 29 187 98 103 107 116 158 14 9 219
1154162 18 51 75 157 233 242 179 190 4 76 7 199 194 82 74 23 125 26 69 164 112 223
1155171 65 155 70 119 176 103 212 209 86 152 16 136 200 149 146 202 64 21 210 151
115661 77 72 108 2 18 230 119 245 54 124 140 209 196 2 197 26 212 66 184 80 159 148
1157117 187 24 44 191 176 246 119 33 196 140 99 98 69 54 19 42 28 53 238 32 241 81
1158224 57 173 123 180 145 68 204 53 95 125 169 219 231 222 211 1 27 24 223 240 16
115967 1 237 215 84 25 40 149 72 3 152 90 87 112 80 16 241 45 77 36 214 229 59 88
1160246 188 232 108 71 222 142 50 115 93 105 201 35 6 170 179 47 102 4 150 211 111
1161120 205 113 4 181 105 127 84 94 239 61 3 121 196 71 148 186 138 184 223 61 220
1162227 175 107 6 65 81 114 207 245 233 173 228 30 73 206 216 218 133 8 11 98 143
116310 179 221 146 97 219 88 67 139 144 39 189 13 123 111 194 156 25 183 51 144 108
1164145 173 49 229 233 137 86 9 114 64 90 161 63 240 195 111 89 58 97 40 44 227 70
116514 78 170 74 197 169 114 138 41 73 242 110 234 177 ^
1166491 0 145 135 155 207 20 243 208 200 40 48 21 170 5 40 111 178 228 189 196 210
116749 6 246 171 56 23 85 128 46 198 217 95 108 241 135 247 130 116 151 130 24 228
116834 116 56 207 178 70 112 42 118 221 80 184 157 151 159 37 19 5 132 31 24 136
1169111 20 148 35 104 132 126 194 232 19 192 225 223 90 230 12 146 120 228 126 39
1170152 115 100 147 50 28 216 107 35 75 119 85 220 216 44 125 17 185 179 121 95 16
117171 39 89 208 42 210 144 176 92 79 228 97 23 114 141 84 172 233 70 175 199 176
1172155 236 36 31 179 213 15 112 226 211 163 146 28 58 30 131 230 41 162 161 202
1173142 14 219 73 141 55 156 195 96 159 224 109 197 198 125 172 12 83 213 173 192
1174130 53 241 72 90 72 182 242 28 150 200 227 138 213 236 99 188 237 150 171 211
1175100 239 220 124 124 29 109 13 105 183 109 168 182 87 201 246 108 149 215 151
1176222 194 74 189 38 133 145 164 168 248 244 9 183 14 248 86 179 29 172 170 163
1177117 15 20 56 115 8 224 204 120 44 33 94 89 21 199 18 78 85 191 203 6 154 1 210
1178115 163 54 108 212 122 209 156 103 176 63 66 187 123 10 139 77 126 131 75 211 8
117969 124 216 202 205 171 27 7 47 154 30 223 153 137 70 83 29 80 67 209 93 193 118
1180129 160 88 2 229 82 99 33 160 246 79 133 174 177 206 219 10 231 247 222 39 247
118138 196 55 222 102 154 93 130 211 71 226 182 150 108 54 42 55 64 25 1 52 35 9
1182212 30 36 60 195 4 239 128 201 28 121 187 186 167 197 11 32 230 196 239 65 44
1183220 187 31 87 43 169 204 57 137 225 160 180 172 78 240 21 107 98 232 177 22 129
118468 168 153 74 160 25 92 174 148 193 181 36 218 22 158 81 206 127 87 135 89 50
1185212 59 52 98 166 20 214 192 159 66 32 46 106 47 249 200 69 61 59 144 21 15 175
1186136 19 100 52 127 182 58 185 208 134 133 240 84 14 156 166 83 121 96 222 131
1187167 134 104 224 46 40 140 191 16 163 209 185 116 214 37 82 162 190 215 180 235
1188235 48 205 13 197 103 205 76 104 161 139 232 146 ^
1189516 0 33 165 33 175 122 134 112 66 1 24 59 67 231 219 5 101 14 227 158 89 41 82
119071 61 224 13 23 102 213 3 186 143 223 71 56 174 165 28 136 22 139 157 116 137
1191247 43 233 155 217 64 91 203 155 227 153 50 193 87 116 122 108 236 7 16 137 242
1192245 133 160 251 125 238 163 139 141 77 37 77 42 50 177 37 5 127 153 45 143 228
1193121 156 169 120 219 241 51 166 232 192 150 188 53 55 227 148 82 92 150 172 3
1194196 232 182 61 229 63 123 97 179 194 39 172 250 157 132 187 95 38 199 94 70 93
1195118 37 231 240 94 60 4 159 47 58 110 125 243 213 239 136 43 228 105 106 69 125
119612 50 198 126 216 117 74 175 112 45 164 76 69 146 101 9 188 58 94 75 143 218 32
1197197 179 199 89 31 245 123 71 40 135 54 33 170 83 34 117 100 62 171 30 51 145
1198143 244 160 4 164 86 158 105 91 182 66 27 163 118 52 118 47 79 199 84 233 134
1199128 105 101 19 25 17 84 7 21 187 90 240 99 99 104 154 2 249 215 154 18 47 63
1200149 225 238 179 178 72 3 191 182 82 66 11 113 18 57 152 108 215 159 57 147 58
1201115 164 91 208 205 86 148 16 132 192 145 138 194 60 9 198 147 53 65 64 96 242
120214 222 119 241 46 116 132 197 184 238 189 26 200 62 176 80 151 140 109 183 24
120344 191 172 234 107 21 192 140 99 94 65 54 7 42 24 49 230 20 229 73 212 45 169
1204115 180 141 56 200 41 87 121 161 219 231 214 207 1 19 20 219 236 12 55 237 237
1205211 72 13 28 141 72 239 152 82 87 100 72 8 241 41 77 32 202 229 47 84 238 184
1206228 100 67 210 130 46 111 93 97 189 31 250 162 171 35 90 4 138 199 99 120 193
1207113 244 181 93 123 76 90 235 49 251 109 188 63 144 186 138 184 223 61 208 215
1208175 107 6 53 81 114 207 237 221 161 224 18 73 202 208 210 125 248 11 98 131 250
1209167 221 146 85 211 88 63 139 136 27 189 5 111 103 186 148 21 171 51 140 104 133
1210165 49 225 233 129 78 5 106 64 86 153 55 232 187 111 77 58 89 36 32 223 66 6 74
1211170 62 197 169 110 130 41 61 234 102 234 92 145 133 155 201 14 243 208 200 36
121248 21 166 1 40 109 178 147 ^
1213522 0 179 196 200 34 251 241 156 51 23 75 118 41 193 202 90 93 236 125 242 125
1214101 151 130 14 218 34 106 41 197 173 55 112 37 108 211 65 174 142 136 159 22 19
1215245 127 16 19 131 101 10 133 20 104 122 126 184 227 9 187 225 208 90 230 7 131
1216105 213 121 39 137 105 95 147 45 23 216 92 35 75 114 70 205 206 34 110 12 185
1217169 111 95 6 71 29 79 203 32 195 144 161 82 64 228 92 8 104 126 74 172 223 65
1218170 194 171 140 221 36 21 164 198 5 102 211 206 148 136 18 48 25 131 215 36 162
1219161 192 142 14 214 63 141 45 141 190 86 149 219 94 182 198 115 157 252 73 203
1220173 192 115 43 226 67 85 62 172 227 13 135 190 227 123 213 231 94 178 227 150
1221161 196 90 234 210 119 124 14 104 8 100 178 109 153 167 82 201 231 98 149 215
1222146 217 179 59 174 28 133 130 159 163 248 239 9 183 254 243 71 174 24 162 165
1223163 107 10 15 46 110 8 214 204 115 39 23 79 89 6 189 3 73 85 176 198 1 154 246
1224210 115 153 49 108 207 117 209 146 103 176 53 56 172 113 10 129 72 116 126 70
1225201 3 69 114 211 202 200 171 22 247 42 139 20 218 148 132 70 83 29 75 67 199 88
1226178 113 124 155 78 2 214 67 89 33 160 246 69 118 159 167 196 204 5 216 237 212
122734 247 38 191 55 222 92 149 78 120 211 61 226 177 140 103 39 27 50 54 25 245
1228241 42 25 249 212 30 21 50 195 254 239 123 186 28 106 182 171 167 192 1 17 220
1229181 229 65 29 220 177 26 77 33 164 194 57 137 215 150 165 167 78 230 11 102 93
1230232 177 22 129 68 168 138 74 145 20 77 174 138 188 171 26 218 7 158 76 201 117
123172 120 74 35 197 59 52 83 151 20 214 177 144 51 27 46 106 37 249 185 59 56 54
1232139 16 15 160 136 14 100 37 112 182 53 170 198 119 128 240 69 4 156 161 78 116
1233240 96 207 121 157 134 99 209 36 25 135 186 1 158 194 175 111 209 32 77 147 190
1234200 175 225 235 38 195 3 187 88 205 61 89 151 134 217 206 30 162 24 166 113 128
1235103 66 253 15 50 58 228 210 5 98 8 218 152 80 35 79 62 58 224 7 17 102 207 3
1236183 140 217 65 56 168 165 22 133 16 133 157 107 128 244 12 ^
1237517 1 218 150 217 59 81 203 140 217 148 45 193 82 116 122 93 236 7 11 127 242
1238235 123 155 246 125 238 148 134 126 72 27 247 67 27 50 162 22 247 127 153 45
1239133 213 121 151 159 105 209 231 36 166 217 177 140 188 53 50 222 148 242 67 87
1240145 157 250 181 227 177 51 224 63 108 97 174 194 24 162 250 152 132 182 80 33
1241189 84 60 83 118 37 216 235 94 60 251 154 47 48 110 120 238 208 229 121 43 218
124290 91 64 110 12 40 193 111 211 117 64 170 107 35 164 76 54 141 101 4 183 53 79
124360 143 213 32 187 169 194 84 31 245 123 66 25 135 39 23 160 78 29 102 95 62 166
124420 46 135 128 244 150 246 154 76 143 105 91 172 51 27 158 103 37 108 37 79 199
124584 228 119 128 95 91 4 15 17 69 2 11 187 80 230 94 89 89 149 244 239 210 144 18
124642 48 139 215 233 179 163 252 67 255 181 167 82 56 253 98 8 42 137 103 205 144
124747 137 43 110 149 76 203 200 86 143 16 127 182 140 128 184 55 251 183 142 43 50
124854 81 232 9 212 119 236 36 106 122 182 169 223 179 26 185 57 166 80 141 130 99
1249178 24 44 191 167 219 92 6 187 140 99 89 60 54 249 42 19 44 220 5 214 63 197 30
1250164 105 180 136 41 195 26 77 116 151 219 231 204 202 1 9 15 214 231 7 40 222
1251237 206 57 255 13 131 72 224 152 72 87 85 62 255 241 36 77 27 187 229 32 79 228
1252179 223 90 62 195 115 41 106 93 87 174 26 245 152 161 20 75 4 123 184 84 120
1253178 113 234 181 78 118 66 85 230 34 251 94 178 53 139 186 138 184 223 61 193
1254200 175 107 6 38 81 114 207 227 206 146 219 3 73 197 198 200 115 238 11 98 116
1255240 152 221 146 70 201 88 58 139 126 12 189 252 96 93 176 138 16 156 51 135 99
1256118 155 49 220 233 119 68 96 64 81 143 45 222 177 111 62 58 79 31 17 218 61 253
125769 170 47 197 169 105 120 41 46 224 92 234 92 145 128 155 186 256 243 208 200
125826 48 21 156 248 40 104 178 221 175 196 196 28 249 239 150 49 23 71 114 39 191
1259196 88 87 234 121 240 123 95 151 130 10 214 34 102 35 193 171 49 112 35 104 207
126059 170 136 130 159 16 19 241 125 213 ^
1261529 1 15 127 93 2 121 8 104 114 126 176 223 1 183 225 196 90 230 3 119 93 201
1262117 39 125 97 91 147 41 19 216 80 35 75 110 58 193 198 26 98 8 185 161 103 95
1263257 71 21 71 199 24 183 144 149 74 52 228 88 255 96 114 66 172 215 61 166 190
1264167 128 209 36 13 152 186 256 94 199 202 136 128 10 40 21 131 203 32 162 161
1265184 142 14 210 55 141 37 129 186 78 141 215 82 170 198 107 145 244 65 195 173
1266192 103 35 214 63 81 54 164 215 1 123 182 227 111 213 227 90 170 219 150 153
1267184 82 230 202 115 124 2 100 4 96 174 109 141 155 78 201 219 90 149 215 142 213
1268167 47 162 20 133 118 155 159 248 235 9 183 246 239 59 170 20 154 161 163 99 6
126911 38 106 8 206 204 111 35 15 67 89 253 181 250 69 85 164 194 256 154 242 210
1270115 145 45 108 203 113 209 138 103 176 45 48 160 105 10 121 68 108 122 66 193
1271258 69 106 207 202 196 171 18 239 38 127 12 214 144 128 70 83 29 71 67 191 84
1272166 109 120 151 70 2 202 55 81 33 160 246 61 106 147 159 188 192 1 204 229 204
127330 247 38 187 55 222 84 145 66 112 211 53 226 173 132 99 27 15 46 46 25 241 233
127434 17 241 212 30 9 42 195 254 239 119 174 28 94 178 159 167 188 252 5 212 169
1275221 65 17 220 169 22 69 25 160 186 57 137 207 142 153 163 78 222 3 98 89 232
1276177 22 129 68 168 126 74 133 16 65 174 130 184 163 18 218 254 158 72 197 109 60
1277108 62 23 185 59 52 71 139 20 214 165 132 39 23 46 106 29 249 173 51 52 50 135
127812 15 148 136 10 100 25 100 182 49 158 190 107 124 240 57 255 156 157 74 112
1279232 96 195 113 149 134 95 197 28 13 131 182 248 154 182 167 107 205 28 73 135
1280190 188 171 217 235 30 187 254 179 76 205 49 77 143 130 205 206 26 158 12 154
1281101 120 91 66 253 3 38 46 224 198 5 94 206 144 68 27 75 50 54 224 258 9 102 199
12823 179 136 209 57 56 160 165 14 129 8 125 157 95 116 240 36 212 148 217 57 77
1283203 134 213 146 43 193 80 116 122 87 236 7 9 123 242 231 119 153 244 125 238
1284142 132 120 70 23 245 63 21 50 156 16 243 127 153 45 129 207 121 149 155 99 205
1285227 30 166 211 57 ^
1286548 0 134 188 53 47 219 148 236 58 84 142 148 247 172 224 174 45 221 63 99 97
1287171 194 15 156 250 149 132 179 71 30 183 78 54 77 118 37 207 232 94 60 248 151
128847 42 110 117 235 205 223 112 43 212 81 82 61 101 12 34 190 102 208 117 58 167
1289104 29 164 76 45 138 101 1 180 50 70 51 143 210 32 181 163 191 81 31 245 123 63
129016 135 30 17 154 75 26 93 92 62 163 14 43 129 119 244 144 240 148 70 134 105 91
1291166 42 27 155 94 28 102 31 79 199 84 225 110 128 89 85 255 9 17 60 259 5 187 74
1292224 91 83 80 146 238 233 207 138 18 39 39 133 209 230 179 154 252 64 255 175
1293158 82 50 247 89 2 33 128 100 199 135 41 131 34 107 140 67 200 197 86 140 16
1294124 176 137 122 178 52 245 174 139 37 41 48 72 226 6 206 119 233 30 100 116 173
1295160 214 173 26 176 54 160 80 135 124 93 175 24 44 191 164 210 83 257 184 140 99
129686 57 54 243 42 16 41 214 256 205 57 188 21 161 99 180 133 32 192 17 71 113 145
1297219 231 198 199 1 3 12 211 228 4 31 213 237 203 48 249 4 125 72 215 152 66 87
129876 56 252 241 33 77 24 178 229 23 76 222 176 220 84 59 186 106 38 103 93 81 165
129923 242 146 155 11 66 4 114 175 75 120 169 113 228 181 69 115 60 82 227 25 251
130085 172 47 136 186 138 184 223 61 184 191 175 107 6 29 81 114 207 221 197 137
1301216 254 73 194 192 194 109 232 11 98 107 234 143 221 146 61 195 88 55 139 120 3
1302189 249 87 87 170 132 13 147 51 132 96 109 149 49 217 233 113 62 257 90 64 78
1303137 39 216 171 111 53 58 73 28 8 215 58 250 66 170 38 197 169 102 114 41 37 218
130486 234 92 145 125 155 177 250 243 208 200 20 48 21 150 245 40 101 178 218 169
1305196 190 19 246 236 141 46 23 65 108 36 188 187 85 78 231 115 237 120 86 151 130
13064 208 34 96 26 187 168 40 112 32 98 201 50 164 127 121 159 7 19 235 122 1 14
1307126 91 118 5 104 112 126 174 222 259 182 225 193 90 230 2 116 90 198 116 39 122
130895 90 147 40 18 216 77 35 75 109 55 190 196 24 95 7 185 159 101 95 256 71 19 69
1309198 22 180 144 146 72 49 228 87 253 94 111 64 172 213 60 165 189 166 125 206 36
131011 149 183 255 92 196 201 133 126 8 38 20 131 213 ^
1311547 0 29 162 161 178 142 14 207 49 141 31 120 183 72 135 212 73 161 198 101 136
1312238 59 189 173 192 94 29 205 60 78 48 158 206 254 114 176 227 102 213 224 87
1313164 213 150 147 175 76 227 196 112 124 255 97 1 93 171 109 132 146 75 201 210
131484 149 215 139 210 158 38 153 14 133 109 152 156 248 232 9 183 240 236 50 167
131517 148 158 163 93 3 8 32 103 8 200 204 108 32 9 58 89 247 175 244 66 85 155 191
1316256 154 239 210 115 139 42 108 200 110 209 132 103 176 39 42 151 99 10 115 65
1317102 119 63 187 258 69 100 204 202 193 171 15 233 35 118 6 211 141 125 70 83 29
131868 67 185 81 157 106 117 148 64 2 193 46 75 33 160 246 55 97 138 153 182 183
1319260 195 223 198 27 247 38 184 55 222 78 142 57 106 211 47 226 170 126 96 18 6
132043 40 25 238 227 28 11 235 212 30 36 195 254 239 116 165 28 85 175 150 167 185
1321249 258 206 160 215 65 8 220 163 19 63 19 157 180 57 137 201 136 144 160 78 216
1322259 95 86 232 177 22 129 68 168 117 74 124 13 56 174 124 181 157 12 218 248 158
132369 194 103 51 99 53 14 176 59 52 62 130 20 214 156 123 30 20 46 106 23 249 164
132445 49 47 132 9 15 139 136 7 100 16 91 182 46 149 184 98 121 240 48 252 156 154
132571 109 226 96 186 107 143 134 92 188 22 4 128 179 242 151 173 161 104 202 25 70
1326126 190 179 168 211 235 24 181 251 173 67 205 40 68 137 127 196 206 23 155 3
1327145 92 114 82 66 253 256 29 37 221 189 5 91 256 197 138 59 21 72 41 51 224 255
13283 102 193 3 176 133 203 51 56 154 165 8 126 2 119 157 86 107 237 33 203 145 217
132954 71 203 125 207 143 40 193 77 116 122 78 236 7 6 117 242 225 113 150 241 125
1330238 133 129 111 67 17 242 57 12 50 147 7 237 127 153 45 123 198 121 146 149 90
1331199 221 21 166 202 162 130 188 53 45 217 148 232 52 82 140 142 245 166 222 172
133241 219 63 93 97 169 194 9 152 250 147 132 177 65 28 179 74 50 73 118 37 201 230
133394 60 246 149 47 38 110 115 233 203 219 106 43 208 75 76 59 95 12 30 188 96 206
1334117 54 165 102 25 164 76 39 136 101 261 178 48 64 45 143 208 32 177 159 189 79
133531 245 123 61 10 135 24 13 150 73 24 87 90 62 161 10 41 125 209 ^
1336542 1 244 136 232 140 62 122 105 91 158 30 27 151 82 16 94 23 79 199 84 221 98
1337128 81 77 247 1 17 48 259 261 187 66 216 87 75 68 142 230 225 203 130 18 35 27
1338125 201 226 179 142 252 60 255 167 146 82 42 239 77 258 21 116 96 191 123 33
1339123 22 103 128 55 196 193 86 136 16 120 168 133 114 170 48 237 162 135 29 29 40
134060 218 2 198 119 229 22 92 108 161 148 202 165 26 164 50 152 80 127 116 85 171
134124 44 191 160 198 71 249 180 140 99 82 53 54 235 42 12 37 206 248 193 49 176 9
1342157 91 180 129 20 188 5 63 109 137 219 231 190 195 1 259 8 207 224 19 201 237
1343199 36 241 256 117 72 203 152 58 87 64 48 248 241 29 77 20 166 229 11 72 214
1344172 216 76 55 174 94 34 99 93 73 153 19 238 138 147 263 54 4 102 163 63 120 157
1345113 220 181 57 111 52 78 223 13 251 73 164 39 132 186 138 184 223 61 172 179
1346175 107 6 17 81 114 207 213 185 125 212 246 73 190 184 186 101 224 11 98 95 226
1347131 221 146 49 187 88 51 139 112 255 189 245 75 79 162 124 9 135 51 128 92 97
1348141 49 213 233 105 54 257 82 64 74 129 31 208 163 111 41 58 65 24 260 211 54
1349246 62 170 26 197 169 98 106 41 25 210 78 234 92 145 121 155 165 242 243 208
1350200 12 48 21 142 241 40 97 178 214 161 196 182 7 242 232 129 42 23 57 100 32
1351184 175 81 66 227 107 233 116 74 151 130 260 200 34 88 14 179 164 28 112 28 90
1352193 38 156 115 109 159 259 19 227 118 253 10 122 83 256 106 257 104 104 126 166
1353218 255 178 225 181 90 230 262 104 78 186 112 39 110 87 86 147 36 14 216 65 35
135475 105 43 178 188 16 83 3 185 151 93 95 252 71 11 61 194 14 168 144 134 64 37
1355228 83 245 86 99 56 172 205 56 161 185 162 113 194 36 3 137 171 251 84 184 197
1356121 118 30 16 131 188 27 162 161 174 142 14 205 45 141 27 114 181 68 131 210 67
1357155 198 97 130 234 55 185 173 192 88 25 199 58 76 44 154 200 250 108 172 227 96
1358213 222 85 160 209 150 143 169 72 225 192 110 124 251 95 263 91 169 109 126 140
135973 201 204 80 149 215 137 208 152 32 147 10 133 103 150 154 248 230 9 183 236
1360234 44 165 15 144 156 163 89 1 6 28 101 8 196 204 106 164 ^
1361567 0 1 46 89 239 167 236 62 85 143 187 256 154 235 210 115 131 38 108 196 106
1362209 124 103 176 31 34 139 91 10 107 61 94 115 59 179 258 69 92 200 202 189 171
136311 225 31 106 264 207 137 121 70 83 29 64 67 177 77 145 102 113 144 56 2 181 34
136467 33 160 246 47 85 126 145 174 171 260 183 215 190 23 247 38 180 55 222 70 138
136545 98 211 39 226 166 118 92 6 260 39 32 25 234 219 20 3 227 212 30 254 28 195
1366254 239 112 153 28 73 171 138 167 181 245 250 198 148 207 65 262 220 155 15 55
136711 153 172 57 137 193 128 132 156 78 208 255 91 82 232 177 22 129 68 168 105 74
1368112 9 44 174 116 177 149 4 218 240 158 65 190 95 39 87 41 2 164 59 52 50 118 20
1369214 144 111 18 16 46 106 15 249 152 37 45 43 128 5 15 127 136 3 100 4 79 182 42
1370137 176 86 117 240 36 248 156 150 67 105 218 96 174 99 135 134 88 176 14 258
1371124 175 234 147 161 153 100 198 21 66 114 190 167 164 203 235 16 173 247 165 55
1372205 28 56 129 123 184 206 19 151 257 133 80 106 70 66 253 248 17 25 217 177 5
137387 252 185 130 47 13 68 29 47 224 251 261 102 185 3 172 129 195 43 56 146 165
1374122 260 111 157 74 95 233 29 191 141 217 50 63 203 113 199 139 36 193 73 116
1375122 66 236 7 2 109 242 217 105 146 237 125 238 121 125 99 63 9 238 49 50 135
1376261 229 127 153 45 115 186 121 142 141 78 191 213 9 166 190 150 122 188 53 41
1377213 148 224 40 78 136 130 241 154 218 168 33 215 63 81 97 165 194 263 144 250
1378143 132 173 53 24 171 66 42 65 118 37 189 226 94 60 242 145 47 30 110 111 229
1379199 211 94 43 200 63 64 55 83 12 22 184 84 202 117 46 161 98 17 164 76 27 132
1380101 261 174 44 52 33 143 204 32 169 151 185 75 31 245 123 57 264 135 12 5 142
138169 20 75 86 62 157 2 37 117 101 244 132 228 136 58 116 105 91 154 24 27 149 76
138210 90 19 79 199 84 219 92 128 77 73 243 263 17 42 259 259 187 62 212 85 71 62
1383140 226 221 201 126 18 33 21 121 197 224 179 136 252 58 255 163 140 82 38 235
138471 256 15 110 94 187 117 29 119 16 101 122 49 194 191 86 134 16 118 164 131 110
1385166 46 233 156 133 25 23 36 54 214 194 119 227 18 88 104 155 142 196 161 26 158
138648 148 80 123 112 81 169 24 44 191 158 192 65 245 178 140 223 ^
1387551 1 78 49 54 227 42 8 33 198 240 181 41 164 265 153 83 180 125 8 184 261 55
1388105 129 219 231 182 191 1 255 4 203 220 264 7 189 237 195 24 233 248 109 72 191
1389152 50 87 52 40 244 241 25 77 16 154 229 267 68 206 168 212 68 51 162 82 30 95
139093 65 141 15 234 130 139 255 42 4 90 151 51 120 145 113 212 181 45 107 44 74
1391219 1 251 61 156 31 128 186 138 184 223 61 160 167 175 107 6 5 81 114 207 205
1392173 113 208 238 73 186 176 178 93 216 11 98 83 218 119 221 146 37 179 88 47 139
1393104 247 189 241 63 71 154 116 5 123 51 124 88 85 133 49 209 233 97 46 257 74 64
139470 121 23 200 155 111 29 58 57 20 252 207 50 242 58 170 14 197 169 94 98 41 13
1395202 70 234 92 145 117 155 153 234 243 208 200 4 48 21 134 237 40 93 178 210 153
1396196 174 263 238 228 117 38 23 49 92 28 180 163 77 54 223 99 229 112 62 151 130
1397256 192 34 80 2 171 160 16 112 24 82 185 26 148 103 97 159 251 19 219 114 245 6
1398118 75 252 94 249 104 96 126 158 214 251 174 225 169 90 230 262 92 66 174 108
139939 98 79 82 147 32 10 216 53 35 75 101 31 166 180 8 71 267 185 143 85 95 248 71
14003 53 190 6 156 144 122 56 25 228 79 237 78 87 48 172 197 52 157 181 158 101 182
140136 263 125 159 247 76 172 193 109 110 260 22 12 131 176 23 162 161 166 142 14
1402201 37 141 19 102 177 60 123 206 55 143 198 89 118 226 47 177 173 192 76 17 187
140354 72 36 146 188 242 96 164 227 84 213 218 81 152 201 150 135 157 64 221 184
1404106 124 243 91 263 87 165 109 114 128 69 201 192 72 149 215 133 204 140 20 135
14052 133 91 146 150 248 226 9 183 228 230 32 161 11 136 152 163 81 265 2 20 97 8
1406188 204 102 26 265 40 89 235 163 232 60 85 137 185 256 154 233 210 115 127 36
1407108 194 104 209 120 103 176 27 30 133 87 10 103 59 90 113 57 175 258 69 88 198
1408202 187 171 9 221 29 100 262 205 135 119 70 83 29 62 67 173 75 139 100 111 142
140952 2 175 28 63 33 160 246 43 79 120 141 170 165 260 177 211 186 21 247 38 178
141055 222 66 136 39 94 211 35 226 164 114 90 256 37 28 25 232 215 16 267 223 212
141130 250 24 195 254 239 110 147 28 67 169 132 167 179 243 246 194 142 203 65 263 ^
1412578 0 220 147 11 47 3 149 164 57 137 185 120 120 152 78 200 251 87 78 232 177
141322 129 68 168 93 74 100 5 32 174 108 173 141 266 218 232 158 61 186 87 27 75 29
1414260 152 59 52 38 106 20 214 132 99 6 12 46 106 7 249 140 29 41 39 124 1 15 115
1415136 269 100 262 67 182 38 125 168 74 113 240 24 244 156 146 63 101 210 96 162
141691 127 134 84 164 6 250 120 171 226 143 149 145 96 194 17 62 102 190 155 160
1417195 235 8 165 243 157 43 205 16 44 121 119 172 206 15 147 249 121 68 98 58 66
1418253 240 5 13 213 165 5 83 248 173 122 35 5 64 17 43 224 247 257 102 177 3 168
1419125 187 35 56 138 165 262 118 256 103 157 62 83 229 25 179 137 217 46 55 203
1420101 191 135 32 193 69 116 122 54 236 7 268 101 242 209 97 142 233 125 238 109
1421121 87 59 1 234 41 258 50 123 253 221 127 153 45 107 174 121 138 133 66 183 205
1422267 166 178 138 114 188 53 37 209 148 216 28 74 132 118 237 142 214 164 25 211
142363 69 97 161 194 255 136 250 139 132 169 41 20 163 58 34 57 118 37 177 222 94
142460 238 141 47 22 110 107 225 195 203 82 43 192 51 52 51 71 12 14 180 72 198 117
142538 157 94 9 164 76 15 128 101 261 170 40 40 21 143 200 32 161 143 181 71 31 245
1426123 53 256 135 267 134 65 16 63 82 62 153 264 33 109 89 244 124 220 128 50 104
1427105 91 146 12 27 145 64 268 82 11 79 199 84 215 80 128 69 65 235 259 17 30 259
1428255 187 54 204 81 63 50 136 218 213 197 118 18 29 9 113 189 220 179 124 252 54
1429255 155 128 82 30 227 59 252 3 98 90 179 105 21 111 4 97 110 37 190 187 86 130
143016 114 156 127 102 158 42 225 144 129 17 11 28 42 206 266 186 119 223 10 80 96
1431143 130 184 153 26 146 44 140 80 115 104 73 165 24 44 191 154 180 53 237 174
1432140 99 76 47 54 223 42 6 31 194 236 175 37 158 261 151 79 180 123 2 182 257 51
1433103 125 219 231 178 189 1 253 2 201 218 264 1 183 237 193 18 229 244 105 72 185
1434152 46 87 46 36 242 241 23 77 14 148 229 263 66 202 166 210 64 49 156 76 28 93
143593 61 135 13 232 126 135 251 36 4 84 145 45 120 139 113 208 181 39 105 40 72
1436217 265 251 55 152 27 126 186 138 184 223 61 154 161 175 107 6 269 81 114 207
1437201 167 107 206 234 73 184 172 174 89 212 11 98 77 214 113 221 146 31 175 88 45
1438139 100 243 189 213 ^
1439578 1 51 63 146 108 1 111 51 120 84 73 125 49 205 233 89 38 257 66 64 66 113 15
1440192 147 111 17 58 49 16 244 203 46 238 54 170 2 197 169 90 90 41 1 194 62 234
144192 145 113 155 141 226 243 208 200 268 48 21 126 233 40 89 178 206 145 196 166
1442255 234 224 105 34 23 41 84 24 176 151 73 42 219 91 225 108 50 151 130 252 184
144334 72 262 163 156 4 112 20 74 177 14 140 91 85 159 243 19 211 110 237 2 114 67
1444248 82 241 104 88 126 150 210 247 170 225 157 90 230 262 80 54 162 104 39 86 71
144578 147 28 6 216 41 35 75 97 19 154 172 59 267 185 135 77 95 244 71 267 45 186
1446270 144 144 110 48 13 228 75 229 70 75 40 172 189 48 153 177 154 89 170 36 259
1447113 147 243 68 160 189 97 102 256 14 8 131 164 19 162 161 158 142 14 197 29 141
144811 90 173 52 115 202 43 131 198 81 106 218 39 169 173 192 64 9 175 50 68 28 138
1449176 234 84 156 227 72 213 214 77 144 193 150 127 145 56 217 176 102 124 235 87
1450263 83 161 109 102 116 65 201 180 64 149 215 129 200 128 8 123 266 133 79 142
1451146 248 222 9 183 220 226 20 157 7 128 148 163 73 265 270 12 93 8 180 204 98 22
1452261 28 89 227 155 224 56 85 125 181 256 154 229 210 115 119 32 108 190 100 209
1453112 103 176 19 22 121 79 10 95 55 82 109 53 167 258 69 80 194 202 183 171 5 213
145425 88 258 201 131 115 70 83 29 58 67 165 71 127 96 107 138 44 2 163 16 55 33
1455160 246 35 67 108 133 162 153 260 165 203 178 17 247 38 174 55 222 58 132 27 86
1456211 27 226 160 106 86 260 248 33 20 25 228 207 8 263 215 212 30 242 16 195 254
1457239 106 135 28 55 165 120 167 175 239 238 186 130 195 65 250 220 143 9 43 271
1458147 160 57 137 181 116 114 150 78 196 249 85 76 232 177 22 129 68 168 87 74 94
14593 26 174 104 171 137 264 218 228 158 59 184 83 21 69 23 256 146 59 52 32 100 20
1460214 126 93 10 46 106 3 249 134 25 39 37 122 271 15 109 136 269 100 258 61 182
146136 119 164 68 111 240 18 242 156 144 61 99 206 96 156 87 123 134 82 158 2 246
1462118 169 222 141 143 141 94 192 15 60 96 190 149 158 191 235 4 161 241 153 37
1463205 10 38 117 117 166 206 13 145 245 115 62 94 52 66 253 236 271 7 211 159 5 81
1464246 167 118 29 1 62 11 41 224 245 255 102 173 3 166 123 183 31 56 134 165 260
1465116 254 81 ^
1466583 1 157 50 71 225 21 167 133 217 42 47 203 89 183 131 28 193 65 116 122 42
1467236 7 268 93 242 201 89 138 229 125 238 97 117 75 55 267 230 33 250 50 111 245
1468213 127 153 45 99 162 121 134 125 54 175 197 259 166 166 126 106 188 53 33 205
1469148 208 16 70 128 106 233 130 210 160 17 207 63 57 97 157 194 247 128 250 135
1470132 165 29 16 155 50 26 49 118 37 165 218 94 60 234 137 47 14 110 103 221 191
1471195 70 43 184 39 40 47 59 12 6 176 60 194 117 30 153 90 1 164 76 3 124 101 261
1472166 36 28 9 143 196 32 153 135 177 67 31 245 123 49 248 135 262 263 126 61 12
147351 78 62 149 260 29 101 77 244 116 212 120 42 92 105 91 138 27 141 52 260 74 3
147479 199 84 211 68 128 61 57 227 255 17 18 259 251 187 46 196 77 55 38 132 210
1475205 193 110 18 25 271 105 181 216 179 112 252 50 255 147 116 82 22 219 47 248
1476265 86 86 171 93 13 103 266 93 98 25 186 183 86 126 16 110 148 123 94 150 38
1477217 132 125 9 273 20 30 198 266 178 119 219 2 72 88 131 118 172 145 26 134 40
1478132 80 107 96 65 161 24 44 191 150 168 41 229 170 140 99 72 43 54 215 42 2 27
1479186 228 163 29 146 253 147 71 180 119 264 178 249 43 99 117 219 231 170 185 1
1480249 272 197 214 264 263 171 237 189 6 221 236 97 72 173 152 38 87 34 28 238 241
148119 77 10 136 229 255 62 194 162 206 56 45 144 64 24 89 93 53 123 9 228 118 127
1482243 24 4 72 133 33 120 127 113 200 181 27 101 32 68 213 257 251 43 144 19 122
1483186 138 184 223 61 142 149 175 107 6 261 81 114 207 193 155 95 202 226 73 180
1484164 166 81 204 11 98 65 206 101 221 146 19 167 88 41 139 92 235 189 235 45 59
1485142 104 273 105 51 118 82 67 121 49 203 233 85 34 257 62 64 64 109 11 188 143
1486111 11 58 45 14 240 201 44 236 52 170 270 197 169 88 86 41 269 190 58 234 92
1487145 111 155 135 222 243 208 200 266 48 21 122 231 40 87 178 204 141 196 162 251
1488232 222 99 32 23 37 80 22 174 145 71 36 217 87 223 106 44 151 130 250 180 34 68
1489258 159 154 272 112 18 70 173 8 136 85 79 159 239 19 207 108 233 112 63 246 76
1490237 104 84 126 146 208 245 168 225 151 90 230 262 74 48 156 102 39 80 67 76 147
149126 4 216 35 35 75 95 13 148 168 270 53 267 185 131 73 95 242 71 265 41 184 268
1492138 144 104 44 7 228 73 225 66 69 36 272 ^
1493588 0 181 44 149 173 150 77 158 36 255 101 135 239 60 148 185 85 94 252 6 4 131
1494152 15 162 161 150 142 14 193 21 141 3 78 169 44 107 198 31 119 198 73 94 210
149531 161 173 192 52 1 163 46 64 20 130 164 226 72 148 227 60 213 210 73 136 185
1496150 119 133 48 213 168 98 124 227 83 263 79 157 109 90 104 61 201 168 56 149
1497215 125 196 116 272 111 262 133 67 138 142 248 218 9 183 212 222 8 153 3 120
1498144 163 65 265 270 4 89 8 172 204 94 18 257 16 89 219 147 216 52 85 113 177 256
1499154 225 210 115 111 28 108 186 96 209 104 103 176 11 14 109 71 10 87 51 74 105
150049 159 258 69 72 190 202 179 171 1 205 21 76 254 197 127 111 70 83 29 54 67 157
150167 115 92 103 134 36 2 151 4 47 33 160 246 27 55 96 125 154 141 260 153 195 170
150213 247 38 170 55 222 50 128 15 78 211 19 226 156 98 82 252 240 29 12 25 224 199
1503259 207 212 30 234 8 195 254 239 102 123 28 43 161 108 167 171 235 230 178 118
1504187 65 242 220 135 5 35 267 143 152 57 137 173 108 102 146 78 188 245 81 72 232
1505177 22 129 68 168 75 74 82 275 14 174 96 167 129 260 218 220 158 55 180 75 9 57
150611 248 134 59 52 20 88 20 214 114 81 264 6 46 106 271 249 122 17 35 33 118 271
150715 97 136 269 100 250 49 182 32 107 156 56 107 240 6 238 156 140 57 95 198 96
1508144 79 115 134 78 146 270 238 114 165 214 137 131 133 90 188 11 56 84 190 137
1509154 183 235 272 153 237 145 25 205 274 26 109 113 154 206 9 141 237 103 50 86
151040 66 253 228 263 271 207 147 5 77 242 155 110 17 269 58 275 37 224 241 251 102
1511165 3 162 119 175 23 56 126 165 256 112 250 91 157 44 65 223 19 161 131 217 40
151243 203 83 179 129 26 193 63 116 122 36 236 7 268 89 242 197 85 136 227 125 238
151391 115 69 53 265 228 29 246 50 105 241 209 127 153 45 95 156 121 132 121 48 171
1514193 255 166 160 120 102 188 53 31 203 148 204 10 68 126 100 231 124 208 158 13
1515205 63 51 97 155 194 243 124 250 133 132 163 23 14 151 46 22 45 118 37 159 216
151694 60 232 135 47 10 110 101 219 189 191 64 43 180 33 34 45 53 12 2 174 54 192
1517117 26 151 88 273 164 76 273 122 101 261 164 34 22 3 143 194 32 149 131 175 65
151831 245 123 47 244 135 258 261 122 59 10 45 76 62 147 258 27 97 71 244 112 208
1519116 38 86 105 91 134 270 27 139 46 256 70 275 79 199 160 ^
1520594 0 207 56 128 53 49 219 251 17 6 259 247 187 38 188 73 47 26 128 202 197 189
1521102 18 21 263 97 173 212 179 100 252 46 255 139 104 82 14 211 35 244 257 74 82
1522163 81 5 95 258 89 86 13 182 179 86 122 16 106 140 119 86 142 34 209 120 121 1
1523265 12 18 190 266 170 119 215 272 64 80 119 106 160 137 26 122 36 124 80 99 88
152457 157 24 44 191 146 156 29 221 166 140 99 68 39 54 207 42 276 23 178 220 151
152521 134 245 143 63 180 115 256 174 241 35 95 109 219 231 162 181 1 245 272 193
1526210 264 255 159 237 185 272 213 228 89 72 161 152 30 87 22 20 234 241 15 77 6
1527124 229 247 58 186 158 202 48 41 132 52 20 85 93 45 111 5 224 110 119 235 12 4
152860 121 21 120 115 113 192 181 15 97 24 64 209 249 251 31 136 11 118 186 138 184
1529223 61 130 137 175 107 6 253 81 114 207 185 143 83 198 218 73 176 156 158 73
1530196 11 98 53 198 89 221 146 7 159 88 37 139 84 227 189 231 33 51 134 96 273 93
153151 114 78 55 113 49 199 233 77 26 257 54 64 60 101 3 180 135 111 277 58 37 10
1532232 197 40 232 48 170 262 197 169 84 78 41 261 182 50 234 92 145 107 155 123
1533214 243 208 200 262 48 21 114 227 40 83 178 200 133 196 154 243 228 218 87 28
153423 29 72 18 170 133 67 24 213 79 219 102 32 151 130 246 172 34 60 250 151 150
1535264 112 14 62 165 274 128 73 67 159 231 19 199 104 225 274 108 55 242 64 229
1536104 76 126 138 204 241 164 225 139 90 230 262 62 36 144 98 39 68 59 72 147 22
1537216 23 35 75 91 1 136 160 266 41 267 185 123 65 95 238 71 261 33 180 264 126
1538144 92 36 273 228 69 217 58 57 28 172 177 42 147 171 148 71 152 36 253 95 129
1539237 56 142 183 79 90 250 2 2 131 146 13 162 161 146 142 14 191 17 141 277 72
1540167 40 103 196 25 113 198 69 88 206 27 157 173 192 46 275 157 44 62 16 126 158
1541222 66 144 227 54 213 208 71 132 181 150 115 127 44 211 164 96 124 223 81 263
154277 155 109 84 98 59 201 162 52 149 215 123 194 110 268 105 260 133 61 136 140
1543248 216 9 183 208 220 2 151 1 116 142 163 61 265 270 87 8 168 204 92 16 255 10
154489 215 143 212 50 85 107 175 256 154 223 210 115 107 26 108 184 94 209 100 103
1545176 7 10 103 67 10 83 49 70 103 47 155 258 69 68 188 202 177 171 277 201 19 70
1546252 195 125 109 70 83 29 52 67 153 65 109 90 101 132 32 2 145 276 43 33 160 246
154723 259 ^
1548600 1 87 119 148 132 260 144 189 164 10 247 38 167 55 222 44 125 6 72 211 13
1549226 153 92 79 246 234 26 6 25 221 193 273 256 201 212 30 228 2 195 254 239 99
1550114 28 34 158 99 167 168 232 224 172 109 181 65 236 220 129 2 29 264 140 146 57
1551137 167 102 93 143 78 182 242 78 69 232 177 22 129 68 168 66 74 73 275 5 174 90
1552164 123 257 218 214 158 52 177 69 48 2 242 125 59 52 11 79 20 214 105 72 258 3
155346 106 268 249 113 11 32 30 115 271 15 88 136 269 100 244 40 182 29 98 150 47
1554104 240 276 235 156 137 54 92 192 96 135 73 109 134 75 137 267 232 111 162 208
1555134 122 127 87 185 8 53 75 190 128 151 177 235 269 147 234 139 16 205 268 17
1556103 110 145 206 6 138 231 94 41 80 31 66 253 222 257 265 204 138 5 74 239 146
1557104 8 266 55 269 34 224 238 248 102 159 3 159 116 169 17 56 120 165 253 109 247
155885 157 35 56 220 16 152 128 217 37 37 203 74 173 126 23 193 60 116 122 27 236 7
1559268 83 242 191 79 133 224 125 238 82 112 60 50 262 225 23 240 50 96 235 203 127
1560153 45 89 147 121 129 115 39 165 187 249 166 151 111 96 188 53 28 200 148 198 1
156165 123 91 228 115 205 155 7 202 63 42 97 152 194 237 118 250 130 132 160 14 11
1562145 40 16 39 118 37 150 213 94 60 229 132 47 4 110 98 216 186 185 55 43 174 24
156325 42 44 12 275 171 45 189 117 20 148 85 270 164 76 267 119 101 261 161 31 13
1564273 143 191 32 143 125 172 62 31 245 123 44 238 135 252 258 116 56 7 36 73 62
1565144 255 24 91 62 244 106 202 110 32 77 105 91 128 264 27 136 37 250 64 272 79
1566199 84 206 53 128 51 47 217 250 17 3 259 246 187 36 186 72 45 23 127 200 195
1567188 100 18 20 261 95 171 211 179 97 252 45 255 137 101 82 12 209 32 243 255 71
156881 161 78 3 93 256 88 83 10 181 178 86 121 16 105 138 118 84 140 33 207 117 120
1569278 263 10 15 188 266 168 119 214 271 62 78 116 103 157 135 26 119 35 122 80 97
157086 55 156 24 44 191 145 153 26 219 165 140 99 67 38 54 205 42 276 22 176 218
1571148 19 131 243 142 61 180 114 254 173 239 33 94 107 219 231 160 180 1 244 272
1572192 209 264 253 156 237 184 270 211 226 87 72 158 152 28 87 19 18 233 241 14 77
15735 121 229 245 57 184 157 201 46 40 129 49 19 84 93 43 108 4 223 108 117 233 9 4
157457 118 18 120 112 113 190 181 12 96 22 63 208 247 251 28 134 9 117 186 138 184
1575223 61 127 216 ^
1576590 1 175 107 6 247 81 114 207 179 134 74 195 212 73 173 150 152 67 190 11 98
157744 192 80 221 146 279 153 88 34 139 78 221 189 228 24 45 128 90 273 84 51 111
157875 46 107 49 196 233 71 20 257 48 64 57 95 278 174 129 111 271 58 31 7 226 194
157937 229 45 170 256 197 169 81 72 41 255 176 44 234 92 145 104 155 114 208 243
1580208 200 259 48 21 108 224 40 80 178 197 127 196 148 237 225 215 78 25 23 23 66
158115 167 124 64 15 210 73 216 99 23 151 130 243 166 34 54 244 145 147 258 112 11
158256 159 268 122 64 58 159 225 19 193 101 219 274 105 49 239 55 223 104 70 126
1583132 201 238 161 225 130 90 230 262 53 27 135 95 39 59 53 69 147 19 278 216 14
158435 75 88 273 127 154 263 32 267 185 117 59 95 235 71 258 27 177 261 117 144 83
158530 267 228 66 211 52 48 22 172 171 39 144 168 145 62 143 36 250 86 120 234 50
1586133 180 70 84 247 277 280 131 137 10 162 161 140 142 14 188 11 141 274 63 164
158734 97 193 16 104 198 63 79 200 21 151 173 192 37 272 148 41 59 10 120 149 216
158857 138 227 45 213 205 68 126 175 150 109 118 38 208 158 93 124 217 78 263 74
1589152 109 75 89 56 201 153 46 149 215 120 191 101 262 96 257 133 52 133 137 248
1590213 9 183 202 217 274 148 279 110 139 163 55 265 270 275 84 8 162 204 89 13 252
15911 89 209 137 206 47 85 98 172 256 154 220 210 115 101 23 108 181 91 209 94 103
1592176 1 4 94 61 10 77 46 64 100 44 149 258 69 62 185 202 174 171 277 195 16 61
1593249 192 122 106 70 83 29 49 67 147 62 100 87 98 129 26 2 136 270 37 33 160 246
159417 40 81 115 144 126 260 138 185 160 8 247 38 165 55 222 40 123 68 211 9 226
1595151 88 77 242 230 24 2 25 219 189 271 254 197 212 30 224 279 195 254 239 97 108
159628 28 156 93 167 166 230 220 168 103 177 65 232 220 125 25 262 138 142 57 137
1597163 98 87 141 78 178 240 76 67 232 177 22 129 68 168 60 74 67 275 280 174 86
1598162 119 255 218 210 158 50 175 65 275 42 277 238 119 59 52 5 73 20 214 99 66
1599254 1 46 106 266 249 107 7 30 28 113 271 15 82 136 269 100 240 34 182 27 92 146
160041 102 240 272 233 156 135 52 90 188 96 129 69 105 134 73 131 265 228 109 160
1601204 132 116 123 85 183 6 51 69 190 122 149 173 235 267 143 232 135 10 205 264
160211 99 108 139 206 4 136 227 88 35 76 25 66 253 218 253 261 202 132 5 72 237 140
1603203 ^
1604620 0 279 262 51 261 30 224 234 244 102 151 3 155 112 161 9 56 112 165 249 105
1605243 77 157 23 44 216 12 140 124 217 33 29 203 62 165 122 19 193 56 116 122 15
1606236 7 268 75 242 183 71 129 220 125 238 70 108 48 46 258 221 15 232 50 84 227
1607195 127 153 45 81 135 121 125 107 27 157 179 241 166 139 99 88 188 53 24 196
1608148 190 272 61 119 79 224 103 201 151 282 198 63 30 97 148 194 229 110 250 126
1609132 156 2 7 137 32 8 31 118 37 138 209 94 60 225 128 47 279 110 94 212 182 177
161043 43 166 12 13 38 32 12 271 167 33 185 117 12 144 81 266 164 76 259 115 101
1611261 157 27 1 265 143 187 32 135 117 168 58 31 245 123 40 230 135 244 254 108 52
16123 24 69 62 140 251 20 83 50 244 98 194 102 24 65 105 91 120 256 27 132 25 242
161356 268 79 199 84 202 41 128 43 39 209 246 17 274 259 242 187 28 178 68 37 11
1614123 192 187 184 92 18 16 253 87 163 207 179 85 252 41 255 129 89 82 4 201 20
1615239 247 59 77 153 66 278 85 248 84 71 281 177 174 86 117 16 101 130 114 76 132
161629 199 105 116 274 255 2 3 180 266 160 119 210 267 54 70 104 91 145 127 26 107
161731 114 80 89 78 47 152 24 44 191 141 141 14 211 161 140 99 63 34 54 197 42 276
161818 168 210 136 11 119 235 138 53 180 110 246 169 231 25 90 99 219 231 152 176 1
1619240 272 188 205 264 245 144 237 180 262 203 218 79 72 146 152 20 87 7 10 229
1620241 10 77 1 109 229 237 53 176 153 197 38 36 117 37 15 80 93 35 96 219 100 109
1621225 280 4 45 106 6 120 100 113 182 181 92 14 59 204 239 251 16 126 1 113 186
1622138 184 223 61 115 122 175 107 6 243 81 114 207 175 128 68 193 208 73 171 146
1623148 63 186 11 98 38 188 74 221 146 275 149 88 32 139 74 217 189 226 18 41 124
162486 273 78 51 109 73 40 103 49 194 233 67 16 257 44 64 55 91 276 170 125 111 267
162558 27 5 222 192 35 227 43 170 252 197 169 79 68 41 251 172 40 234 92 145 102
1626155 108 204 243 208 200 257 48 21 104 222 40 78 178 195 123 196 144 233 223 213
162772 23 23 19 62 13 165 118 62 9 208 69 214 97 17 151 130 241 162 34 50 240 141
1628145 254 112 9 52 155 264 118 58 52 159 221 19 189 99 215 274 103 45 237 49 219
1629104 66 126 128 199 236 159 225 124 90 230 262 47 21 129 93 39 53 49 67 147 17
1630278 216 8 35 75 86 269 121 150 261 26 267 185 113 55 95 233 71 256 23 175 259
1631111 144 77 26 263 228 64 207 48 42 18 172 167 37 142 166 143 56 137 36 248 80
1632114 232 46 127 257 ^
1633605 1 58 76 243 273 280 131 125 6 162 161 132 142 14 184 3 141 270 51 160 26 89
1634189 4 92 198 55 67 192 13 143 173 192 25 268 136 37 55 2 112 137 208 45 130 227
163533 213 201 64 118 167 150 101 106 30 204 150 89 124 209 74 263 70 148 109 63 77
163652 201 141 38 149 215 116 187 89 254 84 253 133 40 129 133 248 209 9 183 194
1637213 266 144 279 102 135 163 47 265 270 271 80 8 154 204 85 9 248 274 89 201 129
1638198 43 85 86 168 256 154 216 210 115 93 19 108 177 87 209 86 103 176 278 281 82
163953 10 69 42 56 96 40 141 258 69 54 181 202 170 171 277 187 12 49 245 188 118
1640102 70 83 29 45 67 139 58 88 83 94 125 18 2 124 262 29 33 160 246 9 28 69 107
1641136 114 260 126 177 152 4 247 38 161 55 222 32 119 273 60 211 1 226 147 80 73
1642234 222 20 279 25 215 181 267 250 189 212 30 216 275 195 254 239 93 96 28 16
1643152 81 167 162 226 212 160 91 169 65 224 220 117 281 17 258 134 134 57 137 155
164490 75 137 78 170 236 72 63 232 177 22 129 68 168 48 74 55 275 272 174 78 158
1645111 251 218 202 158 46 171 57 267 30 269 230 107 59 52 278 61 20 214 87 54 246
1646282 46 106 262 249 95 284 26 24 109 271 15 70 136 269 100 232 22 182 23 80 138
164729 98 240 264 229 156 131 48 86 180 96 117 61 97 134 69 119 261 220 105 156 196
1648128 104 115 81 179 2 47 57 190 110 145 165 235 263 135 228 127 283 205 256 284
164991 104 127 206 132 219 76 23 68 13 66 253 210 245 253 198 120 5 68 233 128 92
1650275 260 49 257 28 224 232 242 102 147 3 153 110 157 5 56 108 165 247 103 241 73
1651157 17 38 214 10 134 122 217 31 25 203 56 161 120 17 193 54 116 122 9 236 7 268
165271 242 179 67 127 218 125 238 64 106 42 44 256 219 11 228 50 78 223 191 127 153
165345 77 129 121 123 103 21 153 175 237 166 133 93 84 188 53 22 194 148 186 268 59
1654117 73 222 97 199 149 280 196 63 24 97 146 194 225 106 250 124 132 154 281 5
1655133 28 4 27 118 37 132 207 94 60 223 126 47 277 110 92 210 180 173 37 43 162 6
16567 36 26 12 269 165 27 183 117 8 142 79 264 164 76 255 113 101 261 155 25 280
1657261 143 185 32 131 113 166 56 31 245 123 38 226 135 240 252 104 50 1 18 67 62
1658138 249 18 79 44 244 94 190 98 20 59 105 91 116 252 27 130 19 238 52 266 79 199
165984 200 35 128 39 35 205 244 17 270 259 240 187 24 174 66 33 5 121 188 183 182
166088 18 14 249 83 159 205 179 79 252 186 ^
1661615 0 255 121 77 82 283 193 8 235 239 47 73 145 54 274 77 240 80 59 273 173 170
166286 113 16 97 122 110 68 124 25 191 93 112 270 247 281 278 172 266 152 119 206
1663263 46 62 92 79 133 119 26 95 27 106 80 81 70 39 148 24 44 191 137 129 2 203
1664157 140 99 59 30 54 189 42 276 14 160 202 124 3 107 227 134 45 180 106 238 165
1665223 17 86 91 219 231 144 172 1 236 272 184 201 264 237 132 237 176 254 195 210
166671 72 134 152 12 87 282 2 225 241 6 77 284 97 229 229 49 168 149 193 30 32 105
166725 11 76 93 27 84 283 215 92 101 217 272 4 33 94 281 120 88 113 174 181 275 88
16686 55 200 231 251 4 118 280 109 186 138 184 223 61 103 110 175 107 6 235 81 114
1669207 167 116 56 189 200 73 167 138 140 55 178 11 98 26 180 62 221 146 267 141 88
167028 139 66 209 189 222 6 33 116 78 273 66 51 105 69 28 95 49 190 233 59 8 257 36
167164 51 83 272 162 117 111 259 58 19 1 214 188 31 223 39 170 244 197 169 75 60 41
1672243 164 32 234 92 145 98 155 96 196 243 208 200 253 48 21 96 218 40 74 178 191
1673115 196 136 225 219 209 60 19 23 11 54 9 161 106 58 284 204 61 210 93 5 151 130
1674237 154 34 42 232 133 141 246 112 5 44 147 256 110 46 40 159 213 19 181 95 207
1675274 99 37 233 37 211 104 58 126 120 195 232 155 225 112 90 230 262 35 9 117 89
167639 41 41 63 147 13 278 216 283 35 75 82 261 109 142 257 14 267 185 105 47 95
1677229 71 252 15 171 255 99 144 65 18 255 228 60 199 40 30 10 172 159 33 138 162
1678139 44 125 36 244 68 102 228 38 115 174 52 72 241 271 280 131 119 4 162 161 128
1679142 14 182 286 141 268 45 158 22 85 187 285 86 198 51 61 188 9 139 173 192 19
1680266 130 35 53 285 108 131 204 39 126 227 27 213 199 62 114 163 150 97 100 26
1681202 146 87 124 205 72 263 68 146 109 57 71 50 201 135 34 149 215 114 185 83 250
168278 251 133 34 127 131 248 207 9 183 190 211 262 142 279 98 133 163 43 265 270
1683269 78 8 150 204 83 7 246 270 89 197 125 194 41 85 80 166 256 154 214 210 115
168489 17 108 175 85 209 82 103 176 276 279 76 49 10 65 40 52 94 38 137 258 69 50
1685179 202 168 171 277 183 10 43 243 186 116 100 70 83 29 43 67 135 56 82 81 92
1686123 14 2 118 258 25 33 160 246 5 22 63 103 132 108 260 120 173 148 2 247 38 159
168755 222 28 117 269 56 211 284 226 145 76 71 230 218 18 277 25 213 177 265 248
1688185 212 30 212 273 195 254 239 91 90 28 10 150 75 167 160 224 175 ^
1689613 0 152 79 161 65 216 220 109 281 9 254 130 126 57 137 147 82 63 133 78 162
1690232 68 59 232 177 22 129 68 168 36 74 43 275 264 174 70 154 103 247 218 194 158
169142 167 49 259 18 261 222 95 59 52 270 49 20 214 75 42 238 282 46 106 258 249 83
1692280 22 20 105 271 15 58 136 269 100 224 10 182 19 68 130 17 94 240 256 225 156
1693127 44 82 172 96 105 53 89 134 65 107 257 212 101 152 188 124 92 107 77 175 287
169443 45 190 98 141 157 235 259 127 224 119 275 205 248 276 83 100 115 206 285 128
1695211 64 11 60 1 66 253 202 237 245 194 108 5 64 229 116 84 267 256 45 249 24 224
1696228 238 102 139 3 149 106 149 286 56 100 165 243 99 237 65 157 5 26 210 6 122
1697118 217 27 17 203 44 153 116 13 193 50 116 122 286 236 7 268 63 242 171 59 123
1698214 125 238 52 102 30 40 252 215 3 220 50 66 215 183 127 153 45 69 117 121 119
169995 9 145 167 229 166 121 81 76 188 53 18 190 148 178 260 55 113 61 218 85 195
1700145 276 192 63 12 97 142 194 217 98 250 120 132 150 273 1 125 20 285 19 118 37
1701120 203 94 60 219 122 47 273 110 88 206 176 165 25 43 154 283 284 32 14 12 265
1702161 15 179 117 138 75 260 164 76 247 109 101 261 151 21 272 253 143 181 32 123
1703105 162 52 31 245 123 34 218 135 232 248 96 46 286 6 63 62 134 245 14 71 32 244
170486 182 90 12 47 105 91 108 244 27 126 7 230 44 262 79 199 84 196 23 128 31 27
1705197 240 17 262 259 236 187 16 166 62 25 282 117 180 175 178 80 18 10 241 75 151
1706201 179 67 252 35 255 117 71 82 281 189 2 233 235 41 71 141 48 272 73 236 78 53
1707269 171 168 86 111 16 95 118 108 64 120 23 187 87 110 268 243 279 274 168 266
1708148 119 204 261 42 58 86 73 127 115 26 89 25 102 80 77 66 35 146 24 44 191 135
1709123 285 199 155 140 99 57 28 54 185 42 276 12 156 198 118 288 101 223 132 41
1710180 104 234 163 219 13 84 87 219 231 140 170 1 234 272 182 199 264 233 126 237
1711174 250 191 206 67 72 128 152 8 87 278 287 223 241 4 77 284 91 229 225 47 164
1712147 191 26 30 99 19 9 74 93 23 78 283 213 88 97 213 268 4 27 88 277 120 82 113
1713170 181 271 86 2 53 198 227 251 287 114 278 107 186 138 184 223 61 97 104 175
1714107 6 231 81 114 207 163 110 50 187 196 73 165 134 136 51 174 11 98 20 176 56
1715221 146 263 137 88 26 139 62 205 189 220 29 112 74 273 60 51 103 67 22 91 49
1716188 233 55 4 257 32 64 49 79 270 158 113 111 255 58 15 288 210 213 ^
1717624 1 28 220 36 170 238 197 169 72 54 41 237 158 26 234 92 145 95 155 87 190
1718243 208 200 250 48 21 90 215 40 71 178 188 109 196 130 219 216 206 51 16 23 5
171948 6 158 97 55 278 201 55 207 90 286 151 130 234 148 34 36 226 127 138 240 112
17202 38 141 250 104 37 31 159 207 19 175 92 201 274 96 31 230 28 205 104 52 126
1721114 192 229 152 225 103 90 230 262 26 108 86 39 32 35 60 147 10 278 216 277 35
172275 79 255 100 136 254 5 267 185 99 41 95 226 71 249 9 168 252 90 144 56 12 249
1723228 57 193 34 21 4 172 153 30 135 159 136 35 116 36 241 59 93 225 32 106 171 43
172466 238 268 280 131 110 1 162 161 122 142 14 179 283 141 265 36 155 16 79 184
1725279 77 198 45 52 182 3 133 173 192 10 263 121 32 50 282 102 122 198 30 120 227
172618 213 196 59 108 157 150 91 91 20 199 140 84 124 199 69 263 65 143 109 48 62
172747 201 126 28 149 215 111 182 74 244 69 248 133 25 124 128 248 204 9 183 184
1728208 256 139 279 92 130 163 37 265 270 266 75 8 144 204 80 4 243 264 89 191 119
1729188 38 85 71 163 256 154 211 210 115 83 14 108 172 82 209 76 103 176 273 276 67
173043 10 59 37 46 91 35 131 258 69 44 176 202 165 171 277 177 7 34 240 183 113 97
173170 83 29 40 67 129 53 73 78 89 120 8 2 109 252 19 33 160 246 289 13 54 97 126
173299 260 111 167 142 289 247 38 156 55 222 22 114 263 50 211 281 226 142 70 68
1733224 212 15 274 25 210 171 262 245 179 212 30 206 270 195 254 239 88 81 28 1 147
173466 167 157 221 202 150 76 159 65 214 220 107 281 7 253 129 124 57 137 145 80 60
1735132 78 160 231 67 58 232 177 22 129 68 168 33 74 40 275 262 174 68 153 101 246
1736218 192 158 41 166 47 257 15 259 220 92 59 52 268 46 20 214 72 39 236 282 46
1737106 257 249 80 279 21 19 104 271 15 55 136 269 100 222 7 182 18 65 128 14 93
1738240 254 224 156 126 43 81 170 96 102 51 87 134 64 104 256 210 100 151 186 123
173989 105 76 174 287 42 42 190 95 140 155 235 258 125 223 117 273 205 246 274 81
174099 112 206 285 127 209 61 8 58 288 66 253 200 235 243 193 105 5 63 228 113 82
1741265 255 44 247 23 224 227 237 102 137 3 148 105 147 285 56 98 165 242 98 236 63
1742157 2 23 209 5 119 117 217 26 15 203 41 151 115 12 193 49 116 122 284 236 7 268
174361 242 169 57 122 213 125 238 49 101 27 39 251 214 1 218 50 63 213 181 127 153
174445 67 114 121 118 93 6 143 165 227 166 118 78 74 188 53 17 189 148 176 258 54
1745112 58 217 82 194 144 275 191 141 ^
1746628 1 3 97 139 194 211 92 250 117 132 147 267 290 119 14 282 13 118 37 111 200
174794 60 216 119 47 270 110 85 203 173 159 16 43 148 277 278 29 5 12 262 158 6 176
1748117 286 135 72 257 164 76 241 106 101 261 148 18 266 247 143 178 32 117 99 159
174949 31 245 123 31 212 135 226 245 90 43 286 289 60 62 131 242 11 65 23 244 80
1750176 84 6 38 105 91 102 238 27 123 290 224 38 259 79 199 84 193 14 128 25 21 191
1751237 17 256 259 233 187 10 160 59 19 276 114 174 169 175 74 18 7 235 69 145 198
1752179 58 252 32 255 111 62 82 278 183 285 230 229 32 68 135 39 269 67 230 75 44
1753263 168 165 86 108 16 92 112 105 58 114 20 181 78 107 265 237 276 268 162 266
1754142 119 201 258 36 52 77 64 118 109 26 80 22 96 80 71 60 29 143 24 44 191 132
1755114 279 193 152 140 99 54 25 54 179 42 276 9 150 192 109 285 92 217 129 35 180
1756101 228 160 213 7 81 81 219 231 134 167 1 231 272 179 196 264 227 117 237 171
1757244 185 200 61 72 119 152 2 87 272 284 220 241 1 77 284 82 229 219 44 158 144
1758188 20 27 90 10 6 71 93 17 69 283 210 82 91 207 262 4 18 79 271 120 73 113 164
1759181 265 83 288 50 195 221 251 281 108 275 104 186 138 184 223 61 88 95 175 107
17606 225 81 114 207 157 101 41 184 190 73 162 128 130 45 168 11 98 11 170 47 221
1761146 257 131 88 23 139 56 199 189 217 283 23 106 68 273 51 51 100 64 13 85 49
1762185 233 49 290 257 26 64 46 73 267 152 107 111 249 58 9 288 204 183 26 218 34
1763170 234 197 169 70 50 41 233 154 22 234 92 145 93 155 81 186 243 208 200 248 48
176421 86 213 40 69 178 186 105 196 126 215 214 204 45 14 23 1 44 4 156 91 53 274
1765199 51 205 88 282 151 130 232 144 34 32 222 123 136 236 112 34 137 246 100 31
176625 159 203 19 171 90 197 274 94 27 228 22 201 104 48 126 110 190 227 150 225 97
176790 230 262 20 286 102 84 39 26 31 58 147 8 278 216 273 35 75 77 251 94 132 252
1768291 267 185 95 37 95 224 71 247 5 166 250 84 144 50 8 245 228 55 189 30 15 172
1769149 28 133 157 134 29 110 36 239 53 87 223 28 100 169 37 62 236 266 280 131 104
1770291 162 161 118 142 14 177 281 141 263 30 153 12 75 182 275 71 198 41 46 178
1771291 129 173 192 4 261 115 30 48 280 98 116 194 24 116 227 12 213 194 57 104 153
1772150 87 85 16 197 136 82 124 195 67 263 63 141 109 42 56 45 201 120 24 149 215
1773109 180 68 240 63 246 133 19 122 126 248 202 9 183 180 206 252 137 279 88 128
1774163 33 265 270 264 73 8 140 204 78 2 241 76 ^
1775622 0 89 183 111 180 34 85 59 159 256 154 207 210 115 75 10 108 168 78 209 68
1776103 176 269 272 55 35 10 51 33 38 87 31 123 258 69 36 172 202 161 171 277 169 3
177722 236 179 109 93 70 83 29 36 67 121 49 61 74 85 116 2 97 244 11 33 160 246 285
17781 42 89 118 87 260 99 159 134 289 247 38 152 55 222 14 110 255 42 211 277 226
1779138 62 64 216 204 11 270 25 206 163 258 241 171 212 30 198 266 195 254 239 84
178069 28 283 143 54 167 153 217 194 142 64 151 65 206 220 99 281 293 249 125 116
178157 137 137 72 48 128 78 152 227 63 54 232 177 22 129 68 168 21 74 28 275 254
1782174 60 149 93 242 218 184 158 37 162 39 249 3 251 212 80 59 52 260 34 20 214 60
178327 228 282 46 106 253 249 68 275 17 15 100 271 15 43 136 269 100 214 289 182 14
178453 120 2 89 240 246 220 156 122 39 77 162 96 90 43 79 134 60 92 252 202 96 147
1785178 119 77 97 72 170 287 38 30 190 83 136 147 235 254 117 219 109 265 205 238
1786266 73 95 100 206 285 123 201 49 290 50 280 66 253 192 227 235 189 93 5 59 224
1787101 74 257 251 40 239 19 224 223 233 102 129 3 144 101 139 281 56 90 165 238 94
1788232 55 157 284 11 205 1 107 113 217 22 7 203 29 143 111 8 193 45 116 122 276
1789236 7 268 53 242 161 49 118 209 125 238 37 97 15 35 247 210 287 210 50 51 205
1790173 127 153 45 59 102 121 114 85 288 135 157 219 166 106 66 66 188 53 13 185
1791148 168 250 50 108 46 213 70 190 140 271 187 63 291 97 137 194 207 88 250 115
1792132 145 263 290 115 10 280 9 118 37 105 198 94 60 214 117 47 268 110 83 201 171
1793155 10 43 144 273 274 27 293 12 260 156 174 117 284 133 70 255 164 76 237 104
1794101 261 146 16 262 243 143 176 32 113 95 157 47 31 245 123 29 208 135 222 243
179586 41 286 285 58 62 129 240 9 61 17 244 76 172 80 2 32 105 91 98 234 27 121 286
1796220 34 257 79 199 84 191 8 128 21 17 187 235 17 252 259 231 187 6 156 57 15 272
1797112 170 165 173 70 18 5 231 65 141 196 179 52 252 30 255 107 56 82 276 179 281
1798228 225 26 66 131 33 267 63 226 73 38 259 166 163 86 106 16 90 108 103 54 110
179918 177 72 105 263 233 274 264 158 266 138 119 199 256 32 48 71 58 112 105 26 74
180020 92 80 67 56 25 141 24 44 191 130 108 275 189 150 140 99 52 23 54 175 42 276
18017 146 188 103 283 86 213 127 31 180 99 224 158 209 3 79 77 219 231 130 165 1
1802229 272 177 194 264 223 111 237 169 240 181 196 57 72 113 152 292 87 268 282
1803218 241 293 77 284 76 229 80 ^
1804635 1 40 150 140 184 12 23 78 294 2 67 93 9 57 283 206 74 83 199 254 4 6 67 263
1805120 61 113 156 181 257 79 284 46 191 213 251 273 100 271 100 186 138 184 223 61
180676 83 175 107 6 217 81 114 207 149 89 29 180 182 73 158 120 122 37 160 11 98
1807295 162 35 221 146 249 123 88 19 139 48 191 189 213 275 15 98 60 273 39 51 96
180860 1 77 49 181 233 41 286 257 18 64 42 65 263 144 99 111 241 58 1 288 196 179
180922 214 30 170 226 197 169 66 42 41 225 146 14 234 92 145 89 155 69 178 243 208
1810200 244 48 21 78 209 40 65 178 182 97 196 118 207 210 200 33 10 23 289 36 152
181179 49 266 195 43 201 84 274 151 130 228 136 34 24 214 115 132 228 112 292 26
1812129 238 92 19 13 159 195 19 163 86 189 274 90 19 224 10 193 104 40 126 102 186
1813223 146 225 85 90 230 262 8 278 90 80 39 14 23 54 147 4 278 216 265 35 75 73
1814243 82 124 248 283 267 185 87 29 95 220 71 243 293 162 246 72 144 38 237 228 51
1815181 22 3 288 172 141 24 129 153 130 17 98 36 235 41 75 219 20 88 165 25 54 232
1816262 280 131 92 291 162 161 110 142 14 173 277 141 259 18 149 4 67 178 267 59
1817198 33 34 170 287 121 173 192 288 257 103 26 44 276 90 104 186 12 108 227 213
1818190 53 96 145 150 79 73 8 193 128 78 124 187 63 263 59 137 109 30 44 41 201 108
181916 149 215 105 176 56 232 51 242 133 7 118 122 248 198 9 183 172 202 244 133
1820279 80 124 163 25 265 270 260 69 8 132 204 74 294 237 252 89 179 107 176 32 85
182153 157 256 154 205 210 115 71 8 108 166 76 209 64 103 176 267 270 49 31 10 47
182231 34 85 29 119 258 69 32 170 202 159 171 277 165 1 16 234 177 107 91 70 83 29
182334 67 117 47 55 72 83 114 292 2 91 240 7 33 160 246 283 291 36 85 114 81 260 93
1824155 130 289 247 38 150 55 222 10 108 251 38 211 275 226 136 58 62 212 200 9 268
182525 204 159 256 239 167 212 30 194 264 195 254 239 82 63 28 279 141 48 167 151
1826215 190 138 58 147 65 202 220 95 281 291 247 123 112 57 137 133 68 42 126 78
1827148 225 61 52 232 177 22 129 68 168 15 74 22 275 250 174 56 147 89 240 218 180
1828158 35 160 35 245 293 247 208 74 59 52 256 28 20 214 54 21 224 282 46 106 251
1829249 62 273 15 13 98 271 15 37 136 269 100 210 285 182 12 47 116 292 87 240 242
1830218 156 120 37 75 158 96 84 39 75 134 58 86 250 198 94 145 174 117 71 93 70 168
1831287 36 24 190 77 134 143 235 252 113 217 105 261 205 234 262 69 93 94 206 285
1832121 197 43 286 46 276 66 253 188 223 231 187 87 5 57 222 95 285 ^
1833636 0 251 248 37 233 16 224 220 230 102 123 3 141 98 133 278 56 84 165 235 91
1834229 49 157 278 2 202 295 98 110 217 19 1 203 20 137 108 5 193 42 116 122 270
1835236 7 268 47 242 155 43 115 206 125 238 28 94 6 32 244 207 284 204 50 42 199
1836167 127 153 45 53 93 121 111 79 282 129 151 213 166 97 57 60 188 53 10 182 148
1837162 244 47 105 37 210 61 187 137 268 184 63 285 97 134 194 201 82 250 112 132
1838142 257 290 109 4 277 3 118 37 96 195 94 60 211 114 47 265 110 80 198 168 149 1
183943 138 267 268 24 287 12 257 153 288 171 117 281 130 67 252 164 76 231 101 101
1840261 143 13 256 237 143 173 32 107 89 154 44 31 245 123 26 202 135 216 240 80 38
1841286 279 55 62 126 237 6 55 8 244 70 166 74 293 23 105 91 92 228 27 118 280 214
184228 254 79 199 84 188 296 128 15 11 181 232 17 246 259 228 187 150 54 9 266 109
1843164 159 170 64 18 2 225 59 135 193 179 43 252 27 255 101 47 82 273 173 275 225
1844219 17 63 125 24 264 57 220 70 29 253 163 160 86 103 16 87 102 100 48 104 15
1845171 63 102 260 227 271 258 152 266 132 119 196 253 26 42 62 49 103 99 26 65 17
184686 80 61 50 19 138 24 44 191 127 99 269 183 147 140 99 49 20 54 169 42 276 4
1847140 182 94 280 77 207 124 25 180 96 218 155 203 294 76 71 219 231 124 162 1 226
1848272 174 191 264 217 102 237 166 234 175 190 51 72 104 152 289 87 262 279 215
1849241 293 77 284 67 229 209 39 148 139 183 10 22 75 292 1 66 93 7 54 283 205 72
185081 197 252 4 3 64 261 120 58 113 154 181 255 78 283 45 190 211 251 271 98 270
185199 186 138 184 223 61 73 80 175 107 6 215 81 114 207 147 86 26 179 180 73 157
1852118 120 35 158 11 98 293 160 32 221 146 247 121 88 18 139 46 189 189 212 273 13
185396 58 273 36 51 95 59 295 75 49 180 233 39 285 257 16 64 41 63 262 142 97 111
1854239 58 296 288 194 178 21 213 29 170 224 197 169 65 40 41 223 144 12 234 92 145
185588 155 66 176 243 208 200 243 48 21 76 208 40 64 178 181 95 196 116 205 209 199
185630 9 23 288 34 296 151 76 48 264 194 41 200 83 272 151 130 227 134 34 22 212
1857113 131 226 112 292 24 127 236 90 16 10 159 193 19 161 85 187 274 89 17 223 7
1858191 104 38 126 100 185 222 145 225 82 90 230 262 5 276 87 79 39 11 21 53 147 3
1859278 216 263 35 75 72 241 79 122 247 281 267 185 85 27 95 219 71 242 292 161 245
186069 144 35 295 235 228 50 179 20 287 172 139 23 128 152 129 14 95 36 234 38 72
1861218 18 85 164 22 52 231 261 280 131 89 291 162 161 108 142 14 172 276 91 ^
1862635 1 256 9 146 297 61 175 261 50 198 27 25 164 284 115 173 192 282 254 94 23
186341 273 84 95 180 3 102 227 290 213 187 50 90 139 150 73 64 2 190 122 75 124 181
186460 263 56 134 109 21 35 38 201 99 10 149 215 102 173 47 226 42 239 133 297 115
1865119 248 195 9 183 166 199 238 130 279 74 121 163 19 265 270 257 66 8 126 204 71
1866294 234 246 89 173 101 170 29 85 44 154 256 154 202 210 115 65 5 108 163 73 209
186758 103 176 264 267 40 25 10 41 28 28 82 26 113 258 69 26 167 202 156 171 277
1868159 297 7 231 174 104 88 70 83 29 31 67 111 44 46 69 80 111 289 2 82 234 1 33
1869160 246 280 285 27 79 108 72 260 84 149 124 289 247 38 147 55 222 4 105 245 32
1870211 272 226 133 52 59 206 194 6 265 25 201 153 253 236 161 212 30 188 261 195
1871254 239 79 54 28 273 138 39 167 148 212 184 132 49 141 65 196 220 89 281 288
1872244 120 106 57 137 127 62 33 123 78 142 222 58 49 232 177 22 129 68 168 6 74 13
1873275 244 174 50 144 83 237 218 174 158 32 157 29 239 287 241 202 65 59 52 250 19
187420 214 45 12 218 282 46 106 248 249 53 270 12 10 95 271 15 28 136 269 100 204
1875279 182 9 38 110 286 84 240 236 215 156 117 34 72 152 96 75 33 69 134 55 77 247
1876192 91 142 168 114 62 87 67 165 287 33 15 190 68 131 137 235 249 107 214 99 255
1877205 228 256 63 90 85 206 285 118 191 34 280 40 270 66 253 182 217 225 184 78 5
187854 219 86 64 247 246 35 229 14 224 218 228 102 119 3 139 96 129 276 56 80 165
1879233 89 227 45 157 274 295 200 295 92 108 217 17 296 203 14 133 106 3 193 40 116
1880122 266 236 7 268 43 242 151 39 113 204 125 238 22 92 30 242 205 282 200 50 36
1881195 163 127 153 45 49 87 121 109 75 278 125 147 209 166 91 51 56 188 53 8 180
1882148 158 240 45 103 31 208 55 185 135 266 182 63 281 97 132 194 197 78 250 110
1883132 140 253 290 105 275 298 118 37 90 193 94 60 209 112 47 263 110 78 196 166
1884145 294 43 134 263 264 22 283 12 255 151 284 169 117 279 128 65 250 164 76 227
188599 101 261 141 11 252 233 143 171 32 103 85 152 42 31 245 123 24 198 135 212
1886238 76 36 286 275 53 62 124 235 4 51 2 244 66 162 70 291 17 105 91 88 224 27
1887116 276 210 24 252 79 199 84 186 292 128 11 7 177 230 17 242 259 226 187 295
1888146 52 5 262 107 160 155 168 60 18 221 55 131 191 179 37 252 25 255 97 41 82
1889271 169 271 223 215 11 61 121 18 262 53 216 68 23 249 161 158 86 101 16 85 98
189098 44 100 13 167 57 100 258 223 269 254 148 266 128 119 194 251 22 38 56 43 275
1891^
1892642 0 91 26 53 13 78 80 53 42 11 134 24 44 191 123 87 261 175 143 140 99 45 16
189354 161 42 276 132 174 82 276 65 199 120 17 180 92 210 151 195 290 72 63 219 231
1894116 158 1 222 272 170 187 264 209 90 237 162 226 167 182 43 72 92 152 285 87
1895254 275 211 241 293 77 284 55 229 201 35 140 135 179 2 18 63 284 298 62 93 300
189642 283 201 64 73 189 244 4 292 52 253 120 46 113 146 181 247 74 279 41 186 203
1897251 263 90 266 95 186 138 184 223 61 61 68 175 107 6 207 81 114 207 139 74 14
1898175 172 73 153 110 112 27 150 11 98 285 152 20 221 146 239 113 88 14 139 38 181
1899189 208 265 5 88 50 273 24 51 91 55 287 67 49 176 233 31 281 257 8 64 37 55 258
1900134 89 111 231 58 292 288 186 174 17 209 25 170 216 197 169 61 32 41 215 136 4
1901234 92 145 84 155 54 168 243 208 200 239 48 21 68 204 40 60 178 177 87 196 108
1902197 205 195 18 5 23 284 26 296 147 64 44 256 190 33 196 79 264 151 130 223 126
190334 14 204 105 127 218 112 292 16 119 228 82 4 299 159 185 19 153 81 179 274 85
19049 219 296 183 104 30 126 92 181 218 141 225 70 90 230 262 294 268 75 75 39 300
190513 49 147 300 278 216 255 35 75 68 233 67 114 243 273 267 185 77 19 95 215 71
1906238 288 157 241 57 144 23 291 227 228 46 171 12 289 283 172 131 19 124 148 125
19072 83 36 230 26 60 214 10 73 160 10 44 227 257 280 131 77 291 162 161 100 142 14
1908168 272 141 254 3 144 295 57 173 257 44 198 23 19 160 282 111 173 192 278 252
190988 21 39 271 80 89 176 298 98 227 286 213 185 48 86 135 150 69 58 299 188 118
191073 124 177 58 263 54 132 109 15 29 36 201 93 6 149 215 100 171 41 222 36 237
1911133 293 113 117 248 193 9 183 162 197 234 128 279 70 119 163 15 265 270 255 64
19128 122 204 69 294 232 242 89 169 97 166 27 85 38 152 256 154 200 210 115 61 3
1913108 161 71 209 54 103 176 262 265 34 21 10 37 26 24 80 24 109 258 69 22 165 202
1914154 171 277 155 297 1 229 172 102 86 70 83 29 29 67 107 42 40 67 78 109 287 2
191576 230 298 33 160 246 278 281 21 75 104 66 260 78 145 120 289 247 38 145 55 222
1916103 241 28 211 270 226 131 48 57 202 190 4 263 25 199 149 251 234 157 212 30
1917184 259 195 254 239 77 48 28 269 136 33 167 146 210 180 128 43 137 65 192 220
191885 281 286 242 118 102 57 137 123 58 27 121 78 138 220 56 47 232 177 22 129 68
1919168 74 7 275 240 174 46 142 79 235 218 170 158 30 155 25 235 283 237 198 59 59
192052 246 13 20 214 39 6 214 282 46 106 246 249 47 268 10 8 93 271 15 22 136 269
1921100 200 275 42 ^
1922644 0 6 29 104 280 81 240 230 212 156 114 31 69 146 96 66 27 63 134 52 68 244
1923186 88 139 162 111 53 81 64 162 287 30 6 190 59 128 131 235 246 101 211 93 249
1924205 222 250 57 87 76 206 285 115 185 25 274 34 264 66 253 176 211 219 181 69 5
192551 216 77 58 241 243 32 223 11 224 215 225 102 113 3 136 93 123 273 56 74 165
1926230 86 224 39 157 268 289 197 295 83 105 217 14 293 203 5 127 103 193 37 116
1927122 260 236 7 268 37 242 145 33 110 201 125 238 13 89 293 27 239 202 279 194 50
192827 189 157 127 153 45 43 78 121 106 69 272 119 141 203 166 82 42 50 188 53 5
1929177 148 152 234 42 100 22 205 46 182 132 263 179 63 275 97 129 194 191 72 250
1930107 132 137 247 290 99 296 272 295 118 37 81 190 94 60 206 109 47 260 110 75
1931193 163 139 288 43 128 257 258 19 277 12 252 148 278 166 117 276 125 62 247 164
193276 221 96 101 261 138 8 246 227 143 168 32 97 79 149 39 31 245 123 21 192 135
1933206 235 70 33 286 269 50 62 121 232 1 45 295 244 60 156 64 288 8 105 91 82 218
193427 113 270 204 18 249 79 199 84 183 286 128 5 1 171 227 17 236 259 223 187 292
1935140 49 301 256 104 154 149 165 54 18 299 215 49 125 188 179 28 252 22 255 91 32
193682 268 163 265 220 209 2 58 115 9 259 47 210 65 14 243 158 155 86 98 16 82 92
193795 38 94 10 161 48 97 255 217 266 248 142 266 122 119 191 248 16 32 47 34 88 89
193826 50 12 76 80 51 40 9 133 24 44 191 122 84 259 173 142 140 99 44 15 54 159 42
1939276 301 130 172 79 275 62 197 119 15 180 91 208 150 193 289 71 61 219 231 114
1940157 1 221 272 169 186 264 207 87 237 161 224 165 180 41 72 89 152 284 87 252
1941274 210 241 293 77 284 52 229 199 34 138 134 178 17 60 282 298 61 93 299 39 283
1942200 62 71 187 242 4 290 49 251 120 43 113 144 181 245 73 278 40 185 201 251 261
194388 265 94 186 138 184 223 61 58 65 175 107 6 205 81 114 207 137 71 11 174 170
194473 152 108 110 25 148 11 98 283 150 17 221 146 237 111 88 13 139 36 179 189 207
1945263 3 86 48 273 21 51 90 54 285 65 49 175 233 29 280 257 6 64 36 53 257 132 87
1946111 229 58 291 288 184 173 16 208 24 170 214 197 169 60 30 41 213 134 2 234 92
1947145 83 155 51 166 243 208 200 238 48 21 66 203 40 59 178 176 85 196 106 195 204
1948194 15 4 23 283 24 296 146 61 43 254 189 31 195 78 262 151 130 222 124 34 12
1949202 103 126 216 112 292 14 117 226 80 1 297 159 183 19 151 80 177 274 84 7 218
1950294 181 104 28 126 90 180 217 140 225 67 90 230 262 292 266 72 74 39 298 11 48
1951147 300 278 216 253 265 ^
1952638 1 75 65 227 58 108 240 267 267 185 71 13 95 212 71 235 285 154 238 48 144
195314 288 221 228 43 165 6 283 280 172 125 16 121 145 122 297 74 36 227 17 51 211
19544 64 157 1 38 224 254 280 131 68 291 162 161 94 142 14 165 269 141 251 298 141
1955292 51 170 251 35 198 17 10 154 279 105 173 192 272 249 79 18 36 268 74 80 170
1956292 92 227 280 213 182 45 80 129 150 63 49 296 185 112 70 124 171 55 263 51 129
1957109 6 20 33 201 84 149 215 97 168 32 216 27 234 133 287 110 114 248 190 9 183
1958156 194 228 125 279 64 116 163 9 265 270 252 61 8 116 204 66 294 229 236 89 163
195991 160 24 85 29 149 256 154 197 210 115 55 108 158 68 209 48 103 176 259 262 25
196015 10 31 23 18 77 21 103 258 69 16 162 202 151 171 277 149 297 296 226 169 99
196183 70 83 29 26 67 101 39 31 64 75 106 284 2 67 224 295 33 160 246 275 275 12 69
196298 57 260 69 139 114 289 247 38 142 55 222 298 100 235 22 211 267 226 128 42 54
1963196 184 1 260 25 196 143 248 231 151 212 30 178 256 195 254 239 74 39 28 263
1964133 24 167 143 207 174 122 34 131 65 186 220 79 281 283 239 115 96 57 137 117
196552 18 118 78 132 217 53 44 232 177 22 129 68 168 295 74 302 275 234 174 40 139
196673 232 218 164 158 27 152 19 229 277 231 192 50 59 52 240 4 20 214 30 301 208
1967282 46 106 243 249 38 265 7 5 90 271 15 13 136 269 100 194 269 182 4 23 100 276
196879 240 226 210 156 112 29 67 142 96 60 23 59 134 50 62 242 182 86 137 158 109
196947 77 62 160 287 28 190 53 126 127 235 244 97 209 89 245 205 218 246 53 85 70
1970206 285 113 181 19 270 30 260 66 253 172 207 215 179 63 5 49 214 71 54 237 241
197130 219 9 224 213 223 102 109 3 134 91 119 271 56 70 165 228 84 222 35 157 264
1972285 195 295 77 103 217 12 291 203 303 123 101 302 193 35 116 122 256 236 7 268
197333 242 141 29 108 199 125 238 7 87 289 25 237 200 277 190 50 21 185 153 127 153
197445 39 72 121 104 65 268 115 137 199 166 76 36 46 188 53 3 175 148 148 230 40 98
197516 203 40 180 130 261 177 63 271 97 127 194 187 68 250 105 132 135 243 290 95
1976294 270 293 118 37 75 188 94 60 204 107 47 258 110 73 191 161 135 284 43 124
1977253 254 17 273 12 250 146 274 164 117 274 123 60 245 164 76 217 94 101 261 136
19786 242 223 143 166 32 93 75 147 37 31 245 123 19 188 135 202 233 66 31 286 265
197948 62 119 230 303 41 291 244 56 152 60 286 2 105 91 78 214 27 111 266 200 14
1980247 79 199 84 181 282 128 1 301 167 225 17 232 259 221 187 290 136 47 299 252
1981102 150 145 163 157 ^
1982653 0 18 299 207 41 117 184 179 16 252 18 255 83 20 82 264 155 257 216 201 296
198354 107 303 255 39 202 61 2 235 154 151 86 94 16 78 84 91 30 86 6 153 36 93 251
1984209 262 240 134 266 114 119 187 244 8 24 35 22 76 81 26 38 8 68 80 43 32 1 129
198524 44 191 118 72 251 165 138 140 99 40 11 54 151 42 276 301 122 164 67 271 50
1986189 115 7 180 87 200 146 185 285 67 53 219 231 106 153 1 217 272 165 182 264
1987199 75 237 157 216 157 172 33 72 77 152 280 87 244 270 206 241 293 77 284 40
1988229 191 30 130 130 174 298 13 48 274 298 57 93 295 27 283 196 54 63 179 234 4
1989282 37 243 120 31 113 136 181 237 69 274 36 181 193 251 253 80 261 90 186 138
1990184 223 61 46 53 175 107 6 197 81 114 207 129 59 305 170 162 73 148 100 102 17
1991140 11 98 275 142 5 221 146 229 103 88 9 139 28 171 189 203 255 301 78 40 273 9
199251 86 50 277 57 49 171 233 21 276 257 304 64 32 45 253 124 79 111 221 58 287
1993288 176 169 12 204 20 170 206 197 169 56 22 41 205 126 300 234 92 145 79 155 39
1994158 243 208 200 234 48 21 58 199 40 55 178 172 77 196 98 187 200 190 3 23 279
199516 296 142 49 39 246 185 23 191 74 254 151 130 218 116 34 4 194 95 122 208 112
1996292 6 109 218 72 295 289 159 175 19 143 76 169 274 80 305 214 286 173 104 20
1997126 82 176 213 136 225 55 90 230 262 284 258 60 70 39 290 3 44 147 300 278 216
1998245 35 75 63 223 52 104 238 263 267 185 67 9 95 210 71 233 283 152 236 42 144 8
1999286 217 228 41 161 2 279 278 172 121 14 119 143 120 293 68 36 225 11 45 209 58
2000155 301 34 222 252 280 131 62 291 162 161 90 142 14 163 267 141 249 294 139 290
200147 168 247 29 198 13 4 150 277 101 173 192 268 247 73 16 34 266 70 74 166 288
200288 227 276 213 180 43 76 125 150 59 43 294 183 108 68 124 167 53 263 49 127 109
200314 31 201 78 302 149 215 95 166 26 212 21 232 133 283 108 112 248 188 9 183 152
2004192 224 123 279 60 114 163 5 265 270 250 59 8 112 204 64 294 227 232 89 159 87
2005156 22 85 23 147 256 154 195 210 115 51 304 108 156 66 209 44 103 176 257 260
200619 11 10 27 21 14 75 19 99 258 69 12 160 202 149 171 277 145 297 292 224 167 97
200781 70 83 29 24 67 97 37 25 62 73 104 282 2 61 220 293 33 160 246 273 271 6 65
200894 51 260 63 135 110 289 247 38 140 55 222 296 98 231 18 211 265 226 126 38 52
2009192 180 305 258 25 194 139 246 229 147 212 30 174 254 195 254 239 72 33 28 259
2010131 18 167 141 205 170 118 28 127 65 182 220 75 281 281 237 113 92 57 137 113
201148 12 116 78 128 215 51 42 232 177 22 129 68 168 291 161 ^
2012653 0 296 275 228 174 34 136 67 229 218 158 158 24 149 13 223 271 225 186 41 59
201352 234 302 20 214 21 295 202 282 46 106 240 249 29 262 4 2 87 271 15 4 136 269
2014100 188 263 182 1 14 94 270 76 240 220 207 156 109 26 64 136 96 51 17 53 134 47
201553 239 176 83 134 152 106 38 71 59 157 287 25 298 190 44 123 121 235 241 91 206
201683 239 205 212 240 47 82 61 206 285 110 175 10 264 24 254 66 253 166 201 209
2017176 54 5 46 211 62 48 231 238 27 213 6 224 210 220 102 103 3 131 88 113 268 56
201864 165 225 81 219 29 157 258 279 192 295 68 100 217 9 288 203 297 117 98 302
2019193 32 116 122 250 236 7 268 27 242 135 23 105 196 125 238 305 84 283 22 234
2020197 274 184 50 12 179 147 127 153 45 33 63 121 101 59 262 109 131 193 166 67 27
202140 188 53 172 148 142 224 37 95 7 200 31 177 127 258 174 63 265 97 124 194 181
202262 250 102 132 132 237 290 89 291 267 290 118 37 66 185 94 60 201 104 47 255
2023110 70 188 158 129 278 43 118 247 248 14 267 12 247 143 268 161 117 271 120 57
2024242 164 76 211 91 101 261 133 3 236 217 143 163 32 87 69 144 34 31 245 123 16
2025182 135 196 230 60 28 286 259 45 62 116 227 303 35 285 244 50 146 54 283 300
2026105 91 72 208 27 108 260 194 8 244 79 199 84 178 276 128 302 298 161 222 17 226
2027259 218 187 287 130 44 296 246 99 144 139 160 44 18 299 205 39 115 183 179 13
2028252 17 255 81 17 82 263 153 255 215 199 294 53 105 301 254 37 200 60 306 233
2029153 150 86 93 16 77 82 90 28 84 5 151 33 92 250 207 261 238 132 266 112 119 186
2030243 6 22 32 19 73 79 26 35 7 66 80 41 30 306 128 24 44 191 117 69 249 163 137
2031140 99 39 10 54 149 42 276 301 120 162 64 270 47 187 114 5 180 86 198 145 183
2032284 66 51 219 231 104 152 1 216 272 164 181 264 197 72 237 156 214 155 170 31
203372 74 152 279 87 242 269 205 241 293 77 284 37 229 189 29 128 129 173 297 12 45
2034272 298 56 93 294 24 283 195 52 61 177 232 4 280 34 241 120 28 113 134 181 235
203568 273 35 180 191 251 251 78 260 89 186 138 184 223 61 43 50 175 107 6 195 81
2036114 207 127 56 303 169 160 73 147 98 100 15 138 11 98 273 140 2 221 146 227 101
203788 8 139 26 169 189 202 253 300 76 38 273 6 51 85 49 275 55 49 170 233 19 275
2038257 303 64 31 43 252 122 77 111 219 58 286 288 174 168 11 203 19 170 204 197
2039169 55 20 41 203 124 299 234 92 145 78 155 36 156 243 208 200 233 48 21 56 198
204040 54 178 171 75 196 96 185 199 189 306 23 278 14 296 141 46 38 244 184 21 190
204173 252 151 130 217 114 34 2 192 93 121 206 112 292 4 107 216 70 293 112 ^
2042646 1 159 169 19 137 73 163 274 77 302 211 280 167 104 14 126 76 173 210 133
2043225 46 90 230 262 278 252 51 67 39 284 306 41 147 300 278 216 239 35 75 60 217
204443 98 235 257 267 185 61 3 95 207 71 230 280 149 233 33 144 308 283 211 228 38
2045155 305 273 275 172 115 11 116 140 117 287 59 36 222 2 36 206 303 49 152 295 28
2046219 249 280 131 53 291 162 161 84 142 14 160 264 141 246 288 136 287 41 165 241
204720 198 7 304 144 274 95 173 192 262 244 64 13 31 263 64 65 160 282 82 227 270
2048213 177 40 70 119 150 53 34 291 180 102 65 124 161 50 263 46 124 109 300 5 28
2049201 69 299 149 215 92 163 17 206 12 229 133 277 105 109 248 185 9 183 146 189
2050218 120 279 54 111 163 308 265 270 247 56 8 106 204 61 294 224 226 89 153 81
2051150 19 85 14 144 256 154 192 210 115 45 304 108 153 63 209 38 103 176 254 257
205210 5 10 21 18 8 72 16 93 258 69 6 157 202 146 171 277 139 297 286 221 164 94 78
205370 83 29 21 67 91 34 16 59 70 101 279 2 52 214 290 33 160 246 270 265 306 59 88
205442 260 54 129 104 289 247 38 137 55 222 293 95 225 12 211 262 226 123 32 49 186
2055174 305 255 25 191 133 243 226 141 212 30 168 251 195 254 239 69 24 28 253 128
20569 167 138 202 164 112 19 121 65 176 220 69 281 278 234 110 86 57 137 107 42 3
2057113 78 122 212 48 39 232 177 22 129 68 168 285 74 292 275 224 174 30 134 63 227
2058218 154 158 22 147 9 219 267 221 182 35 59 52 230 298 20 214 15 291 198 282 46
2059106 238 249 23 260 2 85 271 15 307 136 269 100 184 259 182 308 8 90 266 74 240
2060216 205 156 107 24 62 132 96 45 13 49 134 45 47 237 172 81 132 148 104 32 67 57
2061155 287 23 294 190 38 121 117 235 239 87 204 79 235 205 208 236 43 80 55 206
2062285 108 171 4 260 20 250 66 253 162 197 205 174 48 5 44 209 56 44 227 236 25
2063209 4 224 208 218 102 99 3 129 86 109 266 56 60 165 223 79 217 25 157 254 275
2064190 295 62 98 217 7 286 203 293 113 96 302 193 30 116 122 246 236 7 268 23 242
2065131 19 103 194 125 238 301 82 279 20 232 195 272 180 50 6 175 143 127 153 45 29
206657 121 99 55 258 105 127 189 166 61 21 36 188 53 307 170 148 138 220 35 93 1
2067198 25 175 125 256 172 63 261 97 122 194 177 58 250 100 132 130 233 290 85 289
2068265 288 118 37 60 183 94 60 199 102 47 253 110 68 186 156 125 274 43 114 243
2069244 12 263 12 245 141 264 159 117 269 118 55 240 164 76 207 89 101 261 131 1
2070232 213 143 161 32 83 65 142 32 31 245 123 14 178 135 192 228 56 26 286 255 43
207162 114 225 303 31 281 244 46 142 50 281 296 105 91 238 ^
2072647 0 200 27 104 252 186 240 79 199 84 174 268 128 298 294 153 218 17 218 259
2073214 187 283 122 40 292 238 95 136 131 156 36 18 299 197 31 107 179 179 1 252 13
2074255 73 5 82 259 145 247 211 191 286 49 97 293 250 29 192 56 298 225 149 146 86
207589 16 73 74 86 20 76 1 143 21 88 246 199 257 230 124 266 104 119 182 239 309 14
207620 7 61 71 26 23 3 58 80 33 22 302 124 24 44 191 113 57 241 155 133 140 99 35 6
207754 141 42 276 301 112 154 52 266 35 179 110 308 180 82 190 141 175 280 62 43
2078219 231 96 148 1 212 272 160 177 264 189 60 237 152 206 147 162 23 72 62 152
2079275 87 234 265 201 241 293 77 284 25 229 181 25 120 125 169 293 8 33 264 298 52
208093 290 12 283 191 44 53 169 224 4 272 22 233 120 16 113 126 181 227 64 269 31
2081176 183 251 243 70 256 85 186 138 184 223 61 31 38 175 107 6 187 81 114 207 119
208244 295 165 152 73 143 90 92 7 130 11 98 265 132 301 221 146 219 93 88 4 139 18
2083161 189 198 245 296 68 30 273 305 51 81 45 267 47 49 166 233 11 271 257 299 64
208427 35 248 114 69 111 211 58 282 288 166 164 7 199 15 170 196 197 169 51 12 41
2085195 116 295 234 92 145 74 155 24 148 243 208 200 229 48 21 48 194 40 50 178 167
208667 196 88 177 195 185 299 306 23 274 6 296 137 34 34 236 180 13 186 69 244 151
2087130 213 106 34 305 184 85 117 198 112 292 307 99 208 62 285 279 159 165 19 133
208871 159 274 75 300 209 276 163 104 10 126 72 171 208 131 225 40 90 230 262 274
2089248 45 65 39 280 304 39 147 300 278 216 235 35 75 58 213 37 94 233 253 267 185
209057 310 95 205 71 228 278 147 231 27 144 304 281 207 228 36 151 303 269 273 172
2091111 9 114 138 115 283 53 36 220 307 30 204 301 43 150 291 24 217 247 280 131 47
2092291 162 161 80 142 14 158 262 141 244 284 134 285 37 163 237 14 198 3 300 140
2093272 91 173 192 258 242 58 11 29 261 60 59 156 278 78 227 266 213 175 38 66 115
2094150 49 28 289 178 98 63 124 157 48 263 44 122 109 296 310 26 201 63 297 149 215
209590 161 11 202 6 227 133 273 103 107 248 183 9 183 142 187 214 118 279 50 109
2096163 306 265 270 245 54 8 102 204 59 294 222 222 89 149 77 146 17 85 8 142 256
2097154 190 210 115 41 304 108 151 61 209 34 103 176 252 255 4 1 10 17 16 4 70 14
209889 258 69 2 155 202 144 171 277 135 297 282 219 162 92 76 70 83 29 19 67 87 32
209910 57 68 99 277 2 46 210 288 33 160 246 268 261 302 55 84 36 260 48 125 100 289
2100247 38 135 55 222 291 93 221 8 211 260 226 121 28 47 182 170 305 253 25 189 129
2101241 224 137 212 30 164 249 195 254 239 86 ^
2102665 0 15 28 247 125 167 135 199 158 106 10 115 65 170 220 63 281 275 231 107 80
210357 137 101 36 306 110 78 116 209 45 36 232 177 22 129 68 168 279 74 286 275 218
2104174 24 131 57 224 218 148 158 19 144 3 213 261 215 176 26 59 52 224 292 20 214
21056 285 192 282 46 106 235 249 14 257 311 309 82 271 15 301 136 269 100 178 253
2106182 308 311 84 260 71 240 210 202 156 104 21 59 126 96 36 7 43 134 42 38 234
2107166 78 129 142 101 23 61 54 152 287 20 288 190 29 118 111 235 236 81 201 73 229
2108205 202 230 37 77 46 206 285 105 165 307 254 14 244 66 253 156 191 199 171 39 5
210941 206 47 38 221 233 22 203 1 224 205 215 102 93 3 126 83 103 263 56 54 165 220
211076 214 19 157 248 269 187 295 53 95 217 4 283 203 287 107 93 302 193 27 116 122
2111240 236 7 268 17 242 125 13 100 191 125 238 295 79 273 17 229 192 269 174 50
2112309 169 137 127 153 45 23 48 121 96 49 252 99 121 183 166 52 12 30 188 53 307
2113167 148 132 214 32 90 304 195 16 172 122 253 169 63 255 97 119 194 171 52 250
211497 132 127 227 290 79 286 262 285 118 37 51 180 94 60 196 99 47 250 110 65 183
2115153 119 268 43 108 237 238 9 257 12 242 138 258 156 117 266 115 52 237 164 76
2116201 86 101 261 128 310 226 207 143 158 32 77 59 139 29 31 245 123 11 172 135
2117186 225 50 23 286 249 40 62 111 222 303 25 275 244 40 136 44 278 290 105 91 62
2118198 27 103 250 184 310 239 79 199 84 173 266 128 297 293 151 217 17 216 259 213
2119187 282 120 39 291 236 94 134 129 155 34 18 299 195 29 105 178 179 310 252 12
2120255 71 2 82 258 143 245 210 189 284 48 95 291 249 27 190 55 296 223 148 145 86
212188 16 72 72 85 18 74 141 18 87 245 197 256 228 122 266 102 119 181 238 308 12
212217 4 58 69 26 20 2 56 80 31 20 301 123 24 44 191 112 54 239 153 132 140 99 34 5
212354 139 42 276 301 110 152 49 265 32 177 109 307 180 81 188 140 173 279 61 41
2124219 231 94 147 1 211 272 159 176 264 187 57 237 151 204 145 160 21 72 59 152
2125274 87 232 264 200 241 293 77 284 22 229 179 24 118 124 168 292 7 30 262 298 51
212693 289 9 283 190 42 51 167 222 4 270 19 231 120 13 113 124 181 225 63 268 30
2127175 181 251 241 68 255 84 186 138 184 223 61 28 35 175 107 6 185 81 114 207 117
212841 293 164 150 73 142 88 90 5 128 11 98 263 130 299 221 146 217 91 88 3 139 16
2129159 189 197 243 295 66 28 273 303 51 80 44 265 45 49 165 233 9 270 257 298 64
213026 33 247 112 67 111 209 58 281 288 164 163 6 198 14 170 194 197 169 50 10 41
2131193 114 294 234 92 145 73 155 21 146 243 208 200 228 48 21 46 193 40 49 178 166
213265 196 86 175 194 184 297 306 23 273 206 ^
2133641 0 296 134 25 31 230 177 7 183 66 238 151 130 210 100 34 302 178 79 114 192
2134112 292 304 93 202 56 279 273 159 159 19 127 68 153 274 72 297 206 270 157 104
21354 126 66 168 205 128 225 31 90 230 262 268 242 36 62 39 274 301 36 147 300 278
2136216 229 35 75 55 207 28 88 230 247 267 185 51 307 95 202 71 225 275 144 228 18
2137144 298 278 201 228 33 145 300 263 270 172 105 6 111 135 112 277 44 36 217 301
213821 201 298 34 147 285 18 214 244 280 131 38 291 162 161 74 142 14 155 259 141
2139241 278 131 282 31 160 231 5 198 311 294 134 269 85 173 192 252 239 49 8 26 258
214054 50 150 272 72 227 260 213 172 35 60 109 150 43 19 286 175 92 60 124 151 45
2141263 41 119 109 290 304 23 201 54 294 149 215 87 158 2 196 311 224 133 267 100
2142104 248 180 9 183 136 184 208 115 279 44 106 163 303 265 270 242 51 8 96 204 56
2143294 219 216 89 143 71 140 14 85 313 139 256 154 187 210 115 35 304 108 148 58
2144209 28 103 176 249 252 309 309 10 11 13 312 67 11 83 258 69 310 152 202 141 171
2145277 129 297 276 216 159 89 73 70 83 29 16 67 81 29 1 54 65 96 274 2 37 204 285
214633 160 246 265 255 296 49 78 27 260 39 119 94 289 247 38 132 55 222 288 90 215
21472 211 257 226 118 22 44 176 164 305 250 25 186 123 238 221 131 212 30 158 246
2148195 254 239 64 9 28 243 123 308 167 133 197 154 102 4 111 65 166 220 59 281 273
2149229 105 76 57 137 97 32 302 108 78 112 207 43 34 232 177 22 129 68 168 275 74
2150282 275 214 174 20 129 53 222 218 144 158 17 142 313 209 257 211 172 20 59 52
2151220 288 20 214 281 188 282 46 106 233 249 8 255 311 309 80 271 15 297 136 269
2152100 174 249 182 308 307 80 256 69 240 206 200 156 102 19 57 122 96 30 3 39 134
215340 32 232 162 76 127 138 99 17 57 52 150 287 18 284 190 23 116 107 235 234 77
2154199 69 225 205 198 226 33 75 40 206 285 103 161 303 250 10 240 66 253 152 187
2155195 169 33 5 39 204 41 34 217 231 20 199 313 224 203 213 102 89 3 124 81 99 261
215656 50 165 218 74 212 15 157 244 265 185 295 47 93 217 2 281 203 283 103 91 302
2157193 25 116 122 236 236 7 268 13 242 121 9 98 189 125 238 291 77 269 15 227 190
2158267 170 50 305 165 133 127 153 45 19 42 121 94 45 248 95 117 179 166 46 6 26
2159188 53 307 165 148 128 210 30 88 300 193 10 170 120 251 167 63 251 97 117 194
2160167 48 250 95 132 125 223 290 75 284 260 283 118 37 45 178 94 60 194 97 47 248
2161110 63 181 151 115 264 43 104 233 234 7 253 12 240 136 254 154 117 264 113 50
2162235 164 76 197 84 101 261 126 310 222 203 143 276 ^
2163656 0 32 69 51 135 25 31 245 123 7 164 135 178 221 42 19 286 241 36 62 107 218
2164303 17 267 244 32 128 36 274 282 105 91 54 190 27 99 242 176 306 235 79 199 84
2165169 258 128 293 289 143 213 17 208 259 209 187 278 112 35 287 228 90 126 121
2166151 26 18 299 187 21 97 174 179 302 252 8 255 63 306 82 254 135 237 206 181 276
216744 87 283 245 19 182 51 288 215 144 141 86 84 16 68 64 81 10 66 312 133 6 83
2168241 189 252 220 114 266 94 119 177 234 304 4 5 308 46 61 26 8 314 48 80 23 12
2169297 119 24 44 191 108 42 231 145 128 140 99 30 1 54 131 42 276 301 102 144 37
2170261 20 169 105 303 180 77 180 136 165 275 57 33 219 231 86 143 1 207 272 155
2171172 264 179 45 237 147 196 137 152 13 72 47 152 270 87 224 260 196 241 293 77
2172284 10 229 171 20 110 120 164 288 3 18 254 298 47 93 285 313 283 186 34 43 159
2173214 4 262 7 223 120 1 113 116 181 217 59 264 26 171 173 251 233 60 251 80 186
2174138 184 223 61 16 23 175 107 6 177 81 114 207 109 29 285 160 142 73 138 80 82
2175313 120 11 98 255 122 291 221 146 209 83 88 315 139 8 151 189 193 235 291 58 20
2176273 295 51 76 40 257 37 49 161 233 1 266 257 294 64 22 25 243 104 59 111 201 58
2177277 288 156 159 2 194 10 170 186 197 169 46 2 41 185 106 290 234 92 145 69 155
21789 138 243 208 200 224 48 21 38 189 40 45 178 162 57 196 78 167 190 180 289 306
217923 269 312 296 132 19 29 226 175 3 181 64 234 151 130 208 96 34 300 174 75 112
2180188 112 292 302 89 198 52 275 269 159 155 19 123 66 149 274 70 295 204 266 153
2181104 126 62 166 203 126 225 25 90 230 262 264 238 30 60 39 270 299 34 147 300
2182278 216 225 35 75 53 203 22 84 228 243 267 185 47 305 95 200 71 223 273 142 226
218312 144 294 276 197 228 31 141 298 259 268 172 101 4 109 133 110 273 38 36 215
2184297 15 199 296 28 145 281 14 212 242 280 131 32 291 162 161 70 142 14 153 257
2185141 239 274 129 280 27 158 227 315 198 309 290 130 267 81 173 192 248 237 43 6
218624 256 50 44 146 268 68 227 256 213 170 33 56 105 150 39 13 284 173 88 58 124
2187147 43 263 39 117 109 286 300 21 201 48 292 149 215 85 156 312 192 307 222 133
2188263 98 102 248 178 9 183 132 182 204 113 279 40 104 163 301 265 270 240 49 8 92
2189204 54 294 217 212 89 139 67 136 12 85 309 137 256 154 185 210 115 31 304 108
2190146 56 209 24 103 176 247 250 305 307 10 7 11 310 65 9 79 258 69 308 150 202
2191139 171 277 125 297 272 214 157 87 71 70 83 29 14 67 77 27 311 52 63 94 272 2
219231 200 283 33 160 246 263 251 292 45 74 21 260 33 115 90 289 247 38 130 55 222
2193286 88 211 227 ^
2194668 0 211 254 226 115 16 41 170 158 305 247 25 183 117 235 218 125 212 30 152
2195243 195 254 239 61 28 237 120 302 167 130 194 148 96 312 105 65 160 220 53 281
2196270 226 102 70 57 137 91 26 296 105 78 106 204 40 31 232 177 22 129 68 168 269
219774 276 275 208 174 14 126 47 219 218 138 158 14 139 310 203 251 205 166 11 59
219852 214 282 20 214 308 275 182 282 46 106 230 249 316 252 311 309 77 271 15 291
2199136 269 100 168 243 182 308 301 74 250 66 240 200 197 156 99 16 54 116 96 21
2200314 33 134 37 23 229 156 73 124 132 96 8 51 49 147 287 15 278 190 14 113 101
2201235 231 71 196 63 219 205 192 220 27 72 31 206 285 100 155 297 244 4 234 66 253
2202146 181 189 166 24 5 36 201 32 28 211 228 17 193 313 224 200 210 102 83 3 121
220378 93 258 56 44 165 215 71 209 9 157 238 259 182 295 38 90 217 316 278 203 277
220497 88 302 193 22 116 122 230 236 7 268 7 242 115 3 95 186 125 238 285 74 263 12
2205224 187 264 164 50 299 159 127 127 153 45 13 33 121 91 39 242 89 111 173 166 37
2206314 20 188 53 307 162 148 122 204 27 85 294 190 1 167 117 248 164 63 245 97 114
2207194 161 42 250 92 132 122 217 290 69 281 257 280 118 37 36 175 94 60 191 94 47
2208245 110 60 178 148 109 258 43 98 227 228 4 247 12 237 133 248 151 117 261 110
220947 232 164 76 191 81 101 261 123 310 216 197 143 153 32 67 49 134 24 31 245 123
22106 162 135 176 220 40 18 286 239 35 62 106 217 303 15 265 244 30 126 34 273 280
2211105 91 52 188 27 98 240 174 305 234 79 199 84 168 256 128 292 288 141 212 17
2212206 259 208 187 277 110 34 286 226 89 124 119 150 24 18 299 185 19 95 173 179
2213300 252 7 255 61 304 82 253 133 235 205 179 274 43 85 281 244 17 180 50 286 213
2214143 140 86 83 16 67 62 80 8 64 312 131 3 82 240 187 251 218 112 266 92 119 176
2215233 303 2 2 306 43 59 26 5 314 46 80 21 10 296 118 24 44 191 107 39 229 143 127
2216140 99 29 54 129 42 276 301 100 142 34 260 17 167 104 302 180 76 178 135 163
2217274 56 31 219 231 84 142 1 206 272 154 171 264 177 42 237 146 194 135 150 11 72
221844 152 269 87 222 259 195 241 293 77 284 7 229 169 19 108 119 163 287 2 15 252
2219298 46 93 284 311 283 185 32 41 157 212 4 260 4 221 120 315 113 114 181 215 58
2220263 25 170 171 251 231 58 250 79 186 138 184 223 61 13 20 175 107 6 175 81 114
2221207 107 26 283 159 140 73 137 78 80 312 118 11 98 253 120 289 221 146 207 81 88
2222315 139 6 149 189 192 233 290 56 18 273 293 51 75 39 255 35 49 160 233 316 265
2223257 293 64 21 23 242 102 57 111 199 58 276 288 154 158 1 193 9 170 184 197 169
222445 41 183 104 289 234 92 145 68 155 6 136 243 208 203 ^
2225656 0 221 48 21 32 186 40 42 178 159 51 196 72 161 187 177 283 306 23 266 309
2226296 129 10 26 220 172 316 178 61 228 151 130 205 90 34 297 168 69 109 182 112
2227292 299 83 192 46 269 263 159 149 19 117 63 143 274 67 292 201 260 147 104 313
2228126 56 163 200 123 225 16 90 230 262 258 232 21 57 39 264 296 31 147 300 278
2229216 219 35 75 50 197 13 78 225 237 267 185 41 302 95 197 71 220 270 139 223 3
2230144 288 273 191 228 28 135 295 253 265 172 95 1 106 130 107 267 29 36 212 291 6
2231196 293 19 142 275 8 209 239 280 131 23 291 162 161 64 142 14 150 254 141 236
2232268 126 277 21 155 221 309 198 306 284 124 264 75 173 192 242 234 34 3 21 253
223344 35 140 262 62 227 250 213 167 30 50 99 150 33 4 281 170 82 55 124 141 40 263
223436 114 109 280 294 18 201 39 289 149 215 82 153 306 186 301 219 133 257 95 99
2235248 175 9 183 126 179 198 110 279 34 101 163 298 265 270 237 46 8 86 204 51 294
2236214 206 89 133 61 130 9 85 303 134 256 154 182 210 115 25 304 108 143 53 209 18
2237103 176 244 247 299 304 10 1 8 307 62 6 73 258 69 305 147 202 136 171 277 119
2238297 266 211 154 84 68 70 83 29 11 67 71 24 305 49 60 91 269 2 22 194 280 33 160
2239246 260 245 286 39 68 12 260 24 109 84 289 247 38 127 55 222 283 85 205 311 211
2240252 226 113 12 39 166 154 305 245 25 181 113 233 216 121 212 30 148 241 195 254
2241239 59 313 28 233 118 298 167 128 192 144 92 308 101 65 156 220 49 281 268 224
2242100 66 57 137 87 22 292 103 78 102 202 38 29 232 177 22 129 68 168 265 74 272
2243275 204 174 10 124 43 217 218 134 158 12 137 308 199 247 201 162 5 59 52 210
2244278 20 214 304 271 178 282 46 106 228 249 312 250 311 309 75 271 15 287 136 269
2245100 164 239 182 308 297 70 246 64 240 196 195 156 97 14 52 112 96 15 312 29 134
224635 17 227 152 71 122 128 94 2 47 47 145 287 13 274 190 8 111 97 235 229 67 194
224759 215 205 188 216 23 70 25 206 285 98 151 293 240 230 66 253 142 177 185 164
224818 5 34 199 26 24 207 226 15 189 313 224 198 208 102 79 3 119 76 89 256 56 40
2249165 213 69 207 5 157 234 255 180 295 32 88 217 316 276 203 273 93 86 302 193 20
2250116 122 226 236 7 268 3 242 111 318 93 184 125 238 281 72 259 10 222 185 262
2251160 50 295 155 123 127 153 45 9 27 121 89 35 238 85 107 169 166 31 310 16 188
225253 307 160 148 118 200 25 83 290 188 314 165 115 246 162 63 241 97 112 194 157
225338 250 90 132 120 213 290 65 279 255 278 118 37 30 173 94 60 189 92 47 243 110
225458 176 146 105 254 43 94 223 224 2 243 12 235 131 244 149 117 259 108 45 230
2255164 76 187 79 101 261 109 ^
2256656 0 310 208 189 143 149 32 59 41 130 20 31 245 123 2 154 135 168 216 32 14
2257286 231 31 62 102 213 303 7 257 244 22 118 26 269 272 105 91 44 180 27 94 232
2258166 301 230 79 199 84 164 248 128 288 284 133 208 17 198 259 204 187 273 102 30
2259282 218 85 116 111 146 16 18 299 177 11 87 169 179 292 252 3 255 53 296 82 249
2260125 227 201 171 266 39 77 273 240 9 172 46 278 205 139 136 86 79 16 63 54 76 56
2261312 123 312 78 236 179 247 210 104 266 84 119 172 229 299 315 311 298 31 51 26
2262314 314 38 80 13 2 292 114 24 44 191 103 27 221 135 123 140 99 25 317 54 121 42
2263276 301 92 134 22 256 5 159 100 298 180 72 170 131 155 270 52 23 219 231 76 138
22641 202 272 150 167 264 169 30 237 142 186 127 142 3 72 32 152 265 87 214 255 191
2265241 293 77 284 316 229 161 15 100 115 159 283 319 3 244 298 42 93 280 303 283
2266181 24 33 149 204 4 252 313 213 120 307 113 106 181 207 54 259 21 166 163 251
2267223 50 246 75 186 138 184 223 61 1 8 175 107 6 167 81 114 207 99 14 275 155 132
226873 133 70 72 308 110 11 98 245 112 281 221 146 199 73 88 315 139 319 141 189
2269188 225 286 48 10 273 285 51 71 35 247 27 49 156 233 312 261 257 289 64 17 15
2270238 94 49 111 191 58 272 288 146 154 318 189 5 170 176 197 169 41 313 41 175 96
2271285 234 92 145 64 155 315 128 243 208 200 219 48 21 28 184 40 40 178 157 47 196
227268 157 185 175 279 306 23 264 307 296 127 4 24 216 170 314 176 59 224 151 130
2273203 86 34 295 164 65 107 178 112 292 297 79 188 42 265 259 159 145 19 113 61
2274139 274 65 290 199 256 143 104 311 126 52 161 198 121 225 10 90 230 262 254 228
227515 55 39 260 294 29 147 300 278 216 215 35 75 48 193 7 74 223 233 267 185 37
2276300 95 195 71 218 268 137 221 318 144 284 271 187 228 26 131 293 249 263 172 91
2277320 104 128 105 263 23 36 210 287 194 291 13 140 271 4 207 237 280 131 17 291
2278162 161 60 142 14 148 252 141 234 264 124 275 17 153 217 305 198 304 280 120
2279262 71 173 192 238 232 28 1 19 251 40 29 136 258 58 227 246 213 165 28 46 95
2280150 29 319 279 168 78 53 124 137 38 263 34 112 109 276 290 16 201 33 287 149
2281215 80 151 302 182 297 217 133 253 93 97 248 173 9 183 122 177 194 108 279 30
228299 163 296 265 270 235 44 8 82 204 49 294 212 202 89 129 57 126 7 85 299 132
2283256 154 180 210 115 21 304 108 141 51 209 14 103 176 242 245 295 302 10 318 6
2284305 60 4 69 258 69 303 145 202 134 171 277 115 297 262 209 152 82 66 70 83 29 9
228567 67 22 301 47 58 89 267 2 16 190 278 33 160 246 258 241 282 35 64 6 260 18
2286105 80 289 247 38 125 55 292 ^
2287<D
2288
2289H>SHS Type 3 Strings<H
2290D>
229145 0 14 5 3 1 4 16 12 20 1 6 15 11 18 4 17 16 6 10 3 2 9 9 14 6 2 8 6 7 10 17
229212 20 6 7 5 16 1 4 2 17 10 15 8 20 1 ^
2293<D
diff --git a/src/lib/libssl/src/fips/sha1/standalone.sha1 b/src/lib/libssl/src/fips/sha1/standalone.sha1
new file mode 100644
index 0000000000..7279c82541
--- /dev/null
+++ b/src/lib/libssl/src/fips/sha1/standalone.sha1
@@ -0,0 +1,6 @@
1HMAC-SHA1(fips_sha1dgst.c)= 10575600a9540eb15188a7d3b0b031e60aedbc18
2HMAC-SHA1(fips_sha1_selftest.c)= 98910a0c85eff1688bd7adb23e738dc75b39546e
3HMAC-SHA1(asm/sx86-elf.s)= ae66fb23ab8e1a2287e87a0a2dd30a4b9039fe63
4HMAC-SHA1(fips_standalone_sha1.c)= 93203c569097189b47a0085bc9fc55193867d4ce
5HMAC-SHA1(fips_sha_locl.h)= c1b4c82eec5f0ee119658456690f3ea9d77ed1c5
6HMAC-SHA1(fips_md32_common.h)= 08a057a7b94acf5df4301ea6c894ce14082e1ec4
diff --git a/src/lib/libssl/src/makevms.com b/src/lib/libssl/src/makevms.com
index a739625302..d892fe9f0d 100644
--- a/src/lib/libssl/src/makevms.com
+++ b/src/lib/libssl/src/makevms.com
@@ -480,18 +480,16 @@ $!
480$ EXHEADER := ssl.h,ssl2.h,ssl3.h,ssl23.h,tls1.h,kssl.h 480$ EXHEADER := ssl.h,ssl2.h,ssl3.h,ssl23.h,tls1.h,kssl.h
481$ COPY SYS$DISK:[.SSL]'EXHEADER' SYS$DISK:[.INCLUDE.OPENSSL] 481$ COPY SYS$DISK:[.SSL]'EXHEADER' SYS$DISK:[.INCLUDE.OPENSSL]
482$! 482$!
483$! Copy All The ".H" Files From The [.FIPS-1_0] Directories. 483$! Copy All The ".H" Files From The [.FIPS] Directories.
484$! 484$!
485$ FDIRS := ,SHA,RAND,DES,AES,DSA,RSA,DH,HMAC 485$ FDIRS := ,SHA1,RAND,DES,AES,DSA,RSA
486$ EXHEADER_ := fips.h 486$ EXHEADER_ := fips.h
487$ EXHEADER_SHA := fips_sha.h 487$ EXHEADER_SHA1 :=
488$ EXHEADER_RAND := fips_rand.h 488$ EXHEADER_RAND := fips_rand.h
489$ EXHEADER_DES := 489$ EXHEADER_DES :=
490$ EXHEADER_AES := 490$ EXHEADER_AES :=
491$ EXHEADER_DSA := 491$ EXHEADER_DSA :=
492$ EXHEADER_RSA := 492$ EXHEADER_RSA :=
493$ EXHEADER_DH :=
494$ EXHEADER_HMAC :=
495$ 493$
496$ I = 0 494$ I = 0
497$ LOOP_FDIRS: 495$ LOOP_FDIRS:
@@ -502,9 +500,9 @@ $ tmp = EXHEADER_'D'
502$ IF tmp .EQS. "" THEN GOTO LOOP_FDIRS 500$ IF tmp .EQS. "" THEN GOTO LOOP_FDIRS
503$ IF D .EQS. "" 501$ IF D .EQS. ""
504$ THEN 502$ THEN
505$ COPY [.FIPS-1_0]'tmp' SYS$DISK:[.INCLUDE.OPENSSL] !/LOG 503$ COPY [.FIPS]'tmp' SYS$DISK:[.INCLUDE.OPENSSL] !/LOG
506$ ELSE 504$ ELSE
507$ COPY [.FIPS-1_0.'D']'tmp' SYS$DISK:[.INCLUDE.OPENSSL] !/LOG 505$ COPY [.FIPS.'D']'tmp' SYS$DISK:[.INCLUDE.OPENSSL] !/LOG
508$ ENDIF 506$ ENDIF
509$ GOTO LOOP_FDIRS 507$ GOTO LOOP_FDIRS
510$ LOOP_FDIRS_END: 508$ LOOP_FDIRS_END:
@@ -538,9 +536,9 @@ $! Go Back To The Main Directory.
538$! 536$!
539$ SET DEFAULT [-] 537$ SET DEFAULT [-]
540$! 538$!
541$! Go To The [.FIPS-1_0] Directory. 539$! Go To The [.FIPS] Directory.
542$! 540$!
543$ SET DEFAULT SYS$DISK:[.FIPS-1_0] 541$ SET DEFAULT SYS$DISK:[.FIPS]
544$! 542$!
545$! Build The [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library. 543$! Build The [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library.
546$! 544$!
diff --git a/src/lib/libssl/src/ms/.rnd b/src/lib/libssl/src/ms/.rnd
deleted file mode 100644
index 0566b46dfe..0000000000
--- a/src/lib/libssl/src/ms/.rnd
+++ /dev/null
Binary files differ
diff --git a/src/lib/libssl/src/ms/do_masm.bat b/src/lib/libssl/src/ms/do_masm.bat
index ce22a44305..61c52562f7 100644
--- a/src/lib/libssl/src/ms/do_masm.bat
+++ b/src/lib/libssl/src/ms/do_masm.bat
@@ -1,3 +1,4 @@
1rem use "fips" as the first argument to make a proper FIPS build.
1 2
2@echo off 3@echo off
3echo Generating x86 for MASM assember 4echo Generating x86 for MASM assember
@@ -59,7 +60,7 @@ echo on
59perl util\mkfiles.pl >MINFO 60perl util\mkfiles.pl >MINFO
60rem perl util\mk1mf.pl no-sock %1 VC-MSDOS >ms\msdos.mak 61rem perl util\mk1mf.pl no-sock %1 VC-MSDOS >ms\msdos.mak
61rem perl util\mk1mf.pl %1 VC-W31-32 >ms\w31.mak 62rem perl util\mk1mf.pl %1 VC-W31-32 >ms\w31.mak
62rem perl util\mk1mf.pl dll %1 VC-W31-32 >ms\w31dll.mak 63perl util\mk1mf.pl dll %1 VC-W31-32 >ms\w31dll.mak
63perl util\mk1mf.pl %1 VC-WIN32 >ms\nt.mak 64perl util\mk1mf.pl %1 VC-WIN32 >ms\nt.mak
64perl util\mk1mf.pl dll %1 VC-WIN32 >ms\ntdll.mak 65perl util\mk1mf.pl dll %1 VC-WIN32 >ms\ntdll.mak
65 66
diff --git a/src/lib/libssl/src/ms/do_ms.bat b/src/lib/libssl/src/ms/do_ms.bat
index 4a76921298..72179708bf 100644
--- a/src/lib/libssl/src/ms/do_ms.bat
+++ b/src/lib/libssl/src/ms/do_ms.bat
@@ -2,7 +2,7 @@
2perl util\mkfiles.pl >MINFO 2perl util\mkfiles.pl >MINFO
3rem perl util\mk1mf.pl no-sock %1 VC-MSDOS >ms\msdos.mak 3rem perl util\mk1mf.pl no-sock %1 VC-MSDOS >ms\msdos.mak
4rem perl util\mk1mf.pl %1 VC-W31-32 >ms\w31.mak 4rem perl util\mk1mf.pl %1 VC-W31-32 >ms\w31.mak
5rem perl util\mk1mf.pl dll %1 VC-W31-32 >ms\w31dll.mak 5perl util\mk1mf.pl dll %1 VC-W31-32 >ms\w31dll.mak
6perl util\mk1mf.pl no-asm %1 VC-WIN32 >ms\nt.mak 6perl util\mk1mf.pl no-asm %1 VC-WIN32 >ms\nt.mak
7perl util\mk1mf.pl dll no-asm %1 VC-WIN32 >ms\ntdll.mak 7perl util\mk1mf.pl dll no-asm %1 VC-WIN32 >ms\ntdll.mak
8perl util\mk1mf.pl no-asm %1 VC-CE >ms\ce.mak 8perl util\mk1mf.pl no-asm %1 VC-CE >ms\ce.mak
diff --git a/src/lib/libssl/src/openssl.spec b/src/lib/libssl/src/openssl.spec
index 3dad37d49b..98ef153e3b 100644
--- a/src/lib/libssl/src/openssl.spec
+++ b/src/lib/libssl/src/openssl.spec
@@ -1,8 +1,8 @@
1%define libmaj 0 1%define libmaj 0
2%define libmin 9 2%define libmin 9
3%define librel 7 3%define librel 7
4%define librev j 4%define librev g
5Release: 2 5Release: 1
6 6
7%define openssldir /var/ssl 7%define openssldir /var/ssl
8 8
@@ -121,6 +121,7 @@ rm -rf $RPM_BUILD_ROOT
121 121
122%config %attr(0644,root,root) %{openssldir}/openssl.cnf 122%config %attr(0644,root,root) %{openssldir}/openssl.cnf
123%dir %attr(0755,root,root) %{openssldir}/certs 123%dir %attr(0755,root,root) %{openssldir}/certs
124%dir %attr(0755,root,root) %{openssldir}/lib
124%dir %attr(0755,root,root) %{openssldir}/misc 125%dir %attr(0755,root,root) %{openssldir}/misc
125%dir %attr(0750,root,root) %{openssldir}/private 126%dir %attr(0750,root,root) %{openssldir}/private
126 127
@@ -145,8 +146,6 @@ ldconfig
145ldconfig 146ldconfig
146 147
147%changelog 148%changelog
148* Sun Jun 6 2005 Richard Levitte <richard@levitte.org>
149- Remove the incorrect installation of '%{openssldir}/lib'.
150* Wed May 7 2003 Richard Levitte <richard@levitte.org> 149* Wed May 7 2003 Richard Levitte <richard@levitte.org>
151- Add /usr/lib/pkgconfig/openssl.pc to the development section. 150- Add /usr/lib/pkgconfig/openssl.pc to the development section.
152* Thu Mar 22 2001 Richard Levitte <richard@levitte.org> 151* Thu Mar 22 2001 Richard Levitte <richard@levitte.org>
diff --git a/src/lib/libssl/src/ssl/Makefile.ssl b/src/lib/libssl/src/ssl/Makefile.ssl
new file mode 100644
index 0000000000..3ae3561ac1
--- /dev/null
+++ b/src/lib/libssl/src/ssl/Makefile.ssl
@@ -0,0 +1,1019 @@
1#
2# SSLeay/ssl/Makefile
3#
4
5DIR= ssl
6TOP= ..
7CC= cc
8INCLUDES= -I../crypto -I$(TOP) -I../include $(KRB5_INCLUDES)
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17AR= ar r
18# KRB5 stuff
19KRB5_INCLUDES=
20
21CFLAGS= $(INCLUDES) $(CFLAG)
22
23GENERAL=Makefile README ssl-lib.com install.com
24TEST=ssltest.c
25APPS=
26
27LIB=$(TOP)/libssl.a
28SHARED_LIB= libssl$(SHLIB_EXT)
29LIBSRC= \
30 s2_meth.c s2_srvr.c s2_clnt.c s2_lib.c s2_enc.c s2_pkt.c \
31 s3_meth.c s3_srvr.c s3_clnt.c s3_lib.c s3_enc.c s3_pkt.c s3_both.c \
32 s23_meth.c s23_srvr.c s23_clnt.c s23_lib.c s23_pkt.c \
33 t1_meth.c t1_srvr.c t1_clnt.c t1_lib.c t1_enc.c \
34 ssl_lib.c ssl_err2.c ssl_cert.c ssl_sess.c \
35 ssl_ciph.c ssl_stat.c ssl_rsa.c \
36 ssl_asn1.c ssl_txt.c ssl_algs.c \
37 bio_ssl.c ssl_err.c kssl.c
38LIBOBJ= \
39 s2_meth.o s2_srvr.o s2_clnt.o s2_lib.o s2_enc.o s2_pkt.o \
40 s3_meth.o s3_srvr.o s3_clnt.o s3_lib.o s3_enc.o s3_pkt.o s3_both.o \
41 s23_meth.o s23_srvr.o s23_clnt.o s23_lib.o s23_pkt.o \
42 t1_meth.o t1_srvr.o t1_clnt.o t1_lib.o t1_enc.o \
43 ssl_lib.o ssl_err2.o ssl_cert.o ssl_sess.o \
44 ssl_ciph.o ssl_stat.o ssl_rsa.o \
45 ssl_asn1.o ssl_txt.o ssl_algs.o \
46 bio_ssl.o ssl_err.o kssl.o
47
48SRC= $(LIBSRC)
49
50EXHEADER= ssl.h ssl2.h ssl3.h ssl23.h tls1.h kssl.h
51HEADER= $(EXHEADER) ssl_locl.h kssl_lcl.h
52
53ALL= $(GENERAL) $(SRC) $(HEADER)
54
55top:
56 (cd ..; $(MAKE) DIRS=$(DIR) all)
57
58all: shared
59
60lib: $(LIBOBJ)
61 $(AR) $(LIB) $(LIBOBJ)
62 $(RANLIB) $(LIB) || echo Never mind.
63 @touch lib
64
65shared: lib
66 if [ -n "$(SHARED_LIBS)" ]; then \
67 (cd ..; $(MAKE) $(SHARED_LIB)); \
68 fi
69
70files:
71 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
72
73links:
74 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
75 @$(PERL) $(TOP)/util/mklink.pl ../include/openssl $(EXHEADER)
76 @$(PERL) $(TOP)/util/mklink.pl ../test $(TEST)
77 @$(PERL) $(TOP)/util/mklink.pl ../apps $(APPS)
78
79install:
80 @for i in $(EXHEADER) ; \
81 do \
82 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
83 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
84 done;
85
86tags:
87 ctags $(SRC)
88
89tests:
90
91lint:
92 lint -DLINT $(INCLUDES) $(SRC)>fluff
93
94depend:
95 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC)
96
97dclean:
98 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
99 mv -f Makefile.new $(MAKEFILE)
100
101clean:
102 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
103
104# DO NOT DELETE THIS LINE -- make depend depends on it.
105
106bio_ssl.o: ../include/openssl/aes.h ../include/openssl/asn1.h
107bio_ssl.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
108bio_ssl.o: ../include/openssl/bn.h ../include/openssl/buffer.h
109bio_ssl.o: ../include/openssl/cast.h ../include/openssl/comp.h
110bio_ssl.o: ../include/openssl/crypto.h ../include/openssl/des.h
111bio_ssl.o: ../include/openssl/des_old.h ../include/openssl/dh.h
112bio_ssl.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
113bio_ssl.o: ../include/openssl/err.h ../include/openssl/evp.h
114bio_ssl.o: ../include/openssl/idea.h ../include/openssl/kssl.h
115bio_ssl.o: ../include/openssl/lhash.h ../include/openssl/md2.h
116bio_ssl.o: ../include/openssl/md4.h ../include/openssl/md5.h
117bio_ssl.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
118bio_ssl.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
119bio_ssl.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
120bio_ssl.o: ../include/openssl/pem.h ../include/openssl/pem2.h
121bio_ssl.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
122bio_ssl.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
123bio_ssl.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
124bio_ssl.o: ../include/openssl/safestack.h ../include/openssl/sha.h
125bio_ssl.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
126bio_ssl.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
127bio_ssl.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
128bio_ssl.o: ../include/openssl/tls1.h ../include/openssl/ui.h
129bio_ssl.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
130bio_ssl.o: ../include/openssl/x509_vfy.h bio_ssl.c
131kssl.o: ../include/openssl/aes.h ../include/openssl/asn1.h
132kssl.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
133kssl.o: ../include/openssl/bn.h ../include/openssl/buffer.h
134kssl.o: ../include/openssl/cast.h ../include/openssl/comp.h
135kssl.o: ../include/openssl/crypto.h ../include/openssl/des.h
136kssl.o: ../include/openssl/des_old.h ../include/openssl/dh.h
137kssl.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
138kssl.o: ../include/openssl/evp.h ../include/openssl/idea.h
139kssl.o: ../include/openssl/krb5_asn.h ../include/openssl/kssl.h
140kssl.o: ../include/openssl/lhash.h ../include/openssl/md2.h
141kssl.o: ../include/openssl/md4.h ../include/openssl/md5.h
142kssl.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
143kssl.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
144kssl.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
145kssl.o: ../include/openssl/pem.h ../include/openssl/pem2.h
146kssl.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
147kssl.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
148kssl.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
149kssl.o: ../include/openssl/safestack.h ../include/openssl/sha.h
150kssl.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
151kssl.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
152kssl.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
153kssl.o: ../include/openssl/tls1.h ../include/openssl/ui.h
154kssl.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
155kssl.o: ../include/openssl/x509_vfy.h kssl.c
156s23_clnt.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
157s23_clnt.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
158s23_clnt.o: ../include/openssl/bn.h ../include/openssl/buffer.h
159s23_clnt.o: ../include/openssl/cast.h ../include/openssl/comp.h
160s23_clnt.o: ../include/openssl/crypto.h ../include/openssl/des.h
161s23_clnt.o: ../include/openssl/des_old.h ../include/openssl/dh.h
162s23_clnt.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
163s23_clnt.o: ../include/openssl/err.h ../include/openssl/evp.h
164s23_clnt.o: ../include/openssl/idea.h ../include/openssl/kssl.h
165s23_clnt.o: ../include/openssl/lhash.h ../include/openssl/md2.h
166s23_clnt.o: ../include/openssl/md4.h ../include/openssl/md5.h
167s23_clnt.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
168s23_clnt.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
169s23_clnt.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
170s23_clnt.o: ../include/openssl/pem.h ../include/openssl/pem2.h
171s23_clnt.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
172s23_clnt.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
173s23_clnt.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
174s23_clnt.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
175s23_clnt.o: ../include/openssl/sha.h ../include/openssl/ssl.h
176s23_clnt.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
177s23_clnt.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
178s23_clnt.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
179s23_clnt.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
180s23_clnt.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s23_clnt.c
181s23_clnt.o: ssl_locl.h
182s23_lib.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
183s23_lib.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
184s23_lib.o: ../include/openssl/bn.h ../include/openssl/buffer.h
185s23_lib.o: ../include/openssl/cast.h ../include/openssl/comp.h
186s23_lib.o: ../include/openssl/crypto.h ../include/openssl/des.h
187s23_lib.o: ../include/openssl/des_old.h ../include/openssl/dh.h
188s23_lib.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
189s23_lib.o: ../include/openssl/err.h ../include/openssl/evp.h
190s23_lib.o: ../include/openssl/idea.h ../include/openssl/kssl.h
191s23_lib.o: ../include/openssl/lhash.h ../include/openssl/md2.h
192s23_lib.o: ../include/openssl/md4.h ../include/openssl/md5.h
193s23_lib.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
194s23_lib.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
195s23_lib.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
196s23_lib.o: ../include/openssl/pem.h ../include/openssl/pem2.h
197s23_lib.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
198s23_lib.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
199s23_lib.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
200s23_lib.o: ../include/openssl/safestack.h ../include/openssl/sha.h
201s23_lib.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
202s23_lib.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
203s23_lib.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
204s23_lib.o: ../include/openssl/tls1.h ../include/openssl/ui.h
205s23_lib.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
206s23_lib.o: ../include/openssl/x509_vfy.h s23_lib.c ssl_locl.h
207s23_meth.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
208s23_meth.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
209s23_meth.o: ../include/openssl/bn.h ../include/openssl/buffer.h
210s23_meth.o: ../include/openssl/cast.h ../include/openssl/comp.h
211s23_meth.o: ../include/openssl/crypto.h ../include/openssl/des.h
212s23_meth.o: ../include/openssl/des_old.h ../include/openssl/dh.h
213s23_meth.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
214s23_meth.o: ../include/openssl/err.h ../include/openssl/evp.h
215s23_meth.o: ../include/openssl/idea.h ../include/openssl/kssl.h
216s23_meth.o: ../include/openssl/lhash.h ../include/openssl/md2.h
217s23_meth.o: ../include/openssl/md4.h ../include/openssl/md5.h
218s23_meth.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
219s23_meth.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
220s23_meth.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
221s23_meth.o: ../include/openssl/pem.h ../include/openssl/pem2.h
222s23_meth.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
223s23_meth.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
224s23_meth.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
225s23_meth.o: ../include/openssl/safestack.h ../include/openssl/sha.h
226s23_meth.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
227s23_meth.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
228s23_meth.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
229s23_meth.o: ../include/openssl/tls1.h ../include/openssl/ui.h
230s23_meth.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
231s23_meth.o: ../include/openssl/x509_vfy.h s23_meth.c ssl_locl.h
232s23_pkt.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
233s23_pkt.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
234s23_pkt.o: ../include/openssl/bn.h ../include/openssl/buffer.h
235s23_pkt.o: ../include/openssl/cast.h ../include/openssl/comp.h
236s23_pkt.o: ../include/openssl/crypto.h ../include/openssl/des.h
237s23_pkt.o: ../include/openssl/des_old.h ../include/openssl/dh.h
238s23_pkt.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
239s23_pkt.o: ../include/openssl/err.h ../include/openssl/evp.h
240s23_pkt.o: ../include/openssl/idea.h ../include/openssl/kssl.h
241s23_pkt.o: ../include/openssl/lhash.h ../include/openssl/md2.h
242s23_pkt.o: ../include/openssl/md4.h ../include/openssl/md5.h
243s23_pkt.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
244s23_pkt.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
245s23_pkt.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
246s23_pkt.o: ../include/openssl/pem.h ../include/openssl/pem2.h
247s23_pkt.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
248s23_pkt.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
249s23_pkt.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
250s23_pkt.o: ../include/openssl/safestack.h ../include/openssl/sha.h
251s23_pkt.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
252s23_pkt.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
253s23_pkt.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
254s23_pkt.o: ../include/openssl/tls1.h ../include/openssl/ui.h
255s23_pkt.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
256s23_pkt.o: ../include/openssl/x509_vfy.h s23_pkt.c ssl_locl.h
257s23_srvr.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
258s23_srvr.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
259s23_srvr.o: ../include/openssl/bn.h ../include/openssl/buffer.h
260s23_srvr.o: ../include/openssl/cast.h ../include/openssl/comp.h
261s23_srvr.o: ../include/openssl/crypto.h ../include/openssl/des.h
262s23_srvr.o: ../include/openssl/des_old.h ../include/openssl/dh.h
263s23_srvr.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
264s23_srvr.o: ../include/openssl/err.h ../include/openssl/evp.h
265s23_srvr.o: ../include/openssl/idea.h ../include/openssl/kssl.h
266s23_srvr.o: ../include/openssl/lhash.h ../include/openssl/md2.h
267s23_srvr.o: ../include/openssl/md4.h ../include/openssl/md5.h
268s23_srvr.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
269s23_srvr.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
270s23_srvr.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
271s23_srvr.o: ../include/openssl/pem.h ../include/openssl/pem2.h
272s23_srvr.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
273s23_srvr.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
274s23_srvr.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
275s23_srvr.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
276s23_srvr.o: ../include/openssl/sha.h ../include/openssl/ssl.h
277s23_srvr.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
278s23_srvr.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
279s23_srvr.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
280s23_srvr.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
281s23_srvr.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s23_srvr.c
282s23_srvr.o: ssl_locl.h
283s2_clnt.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
284s2_clnt.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
285s2_clnt.o: ../include/openssl/bn.h ../include/openssl/buffer.h
286s2_clnt.o: ../include/openssl/cast.h ../include/openssl/comp.h
287s2_clnt.o: ../include/openssl/crypto.h ../include/openssl/des.h
288s2_clnt.o: ../include/openssl/des_old.h ../include/openssl/dh.h
289s2_clnt.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
290s2_clnt.o: ../include/openssl/err.h ../include/openssl/evp.h
291s2_clnt.o: ../include/openssl/idea.h ../include/openssl/kssl.h
292s2_clnt.o: ../include/openssl/lhash.h ../include/openssl/md2.h
293s2_clnt.o: ../include/openssl/md4.h ../include/openssl/md5.h
294s2_clnt.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
295s2_clnt.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
296s2_clnt.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
297s2_clnt.o: ../include/openssl/pem.h ../include/openssl/pem2.h
298s2_clnt.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
299s2_clnt.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
300s2_clnt.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
301s2_clnt.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
302s2_clnt.o: ../include/openssl/sha.h ../include/openssl/ssl.h
303s2_clnt.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
304s2_clnt.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
305s2_clnt.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
306s2_clnt.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
307s2_clnt.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s2_clnt.c
308s2_clnt.o: ssl_locl.h
309s2_enc.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
310s2_enc.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
311s2_enc.o: ../include/openssl/bn.h ../include/openssl/buffer.h
312s2_enc.o: ../include/openssl/cast.h ../include/openssl/comp.h
313s2_enc.o: ../include/openssl/crypto.h ../include/openssl/des.h
314s2_enc.o: ../include/openssl/des_old.h ../include/openssl/dh.h
315s2_enc.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
316s2_enc.o: ../include/openssl/err.h ../include/openssl/evp.h
317s2_enc.o: ../include/openssl/idea.h ../include/openssl/kssl.h
318s2_enc.o: ../include/openssl/lhash.h ../include/openssl/md2.h
319s2_enc.o: ../include/openssl/md4.h ../include/openssl/md5.h
320s2_enc.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
321s2_enc.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
322s2_enc.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
323s2_enc.o: ../include/openssl/pem.h ../include/openssl/pem2.h
324s2_enc.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
325s2_enc.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
326s2_enc.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
327s2_enc.o: ../include/openssl/safestack.h ../include/openssl/sha.h
328s2_enc.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
329s2_enc.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
330s2_enc.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
331s2_enc.o: ../include/openssl/tls1.h ../include/openssl/ui.h
332s2_enc.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
333s2_enc.o: ../include/openssl/x509_vfy.h s2_enc.c ssl_locl.h
334s2_lib.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
335s2_lib.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
336s2_lib.o: ../include/openssl/bn.h ../include/openssl/buffer.h
337s2_lib.o: ../include/openssl/cast.h ../include/openssl/comp.h
338s2_lib.o: ../include/openssl/crypto.h ../include/openssl/des.h
339s2_lib.o: ../include/openssl/des_old.h ../include/openssl/dh.h
340s2_lib.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
341s2_lib.o: ../include/openssl/err.h ../include/openssl/evp.h
342s2_lib.o: ../include/openssl/idea.h ../include/openssl/kssl.h
343s2_lib.o: ../include/openssl/lhash.h ../include/openssl/md2.h
344s2_lib.o: ../include/openssl/md4.h ../include/openssl/md5.h
345s2_lib.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
346s2_lib.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
347s2_lib.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
348s2_lib.o: ../include/openssl/pem.h ../include/openssl/pem2.h
349s2_lib.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
350s2_lib.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
351s2_lib.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
352s2_lib.o: ../include/openssl/safestack.h ../include/openssl/sha.h
353s2_lib.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
354s2_lib.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
355s2_lib.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
356s2_lib.o: ../include/openssl/tls1.h ../include/openssl/ui.h
357s2_lib.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
358s2_lib.o: ../include/openssl/x509_vfy.h s2_lib.c ssl_locl.h
359s2_meth.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
360s2_meth.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
361s2_meth.o: ../include/openssl/bn.h ../include/openssl/buffer.h
362s2_meth.o: ../include/openssl/cast.h ../include/openssl/comp.h
363s2_meth.o: ../include/openssl/crypto.h ../include/openssl/des.h
364s2_meth.o: ../include/openssl/des_old.h ../include/openssl/dh.h
365s2_meth.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
366s2_meth.o: ../include/openssl/err.h ../include/openssl/evp.h
367s2_meth.o: ../include/openssl/idea.h ../include/openssl/kssl.h
368s2_meth.o: ../include/openssl/lhash.h ../include/openssl/md2.h
369s2_meth.o: ../include/openssl/md4.h ../include/openssl/md5.h
370s2_meth.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
371s2_meth.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
372s2_meth.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
373s2_meth.o: ../include/openssl/pem.h ../include/openssl/pem2.h
374s2_meth.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
375s2_meth.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
376s2_meth.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
377s2_meth.o: ../include/openssl/safestack.h ../include/openssl/sha.h
378s2_meth.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
379s2_meth.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
380s2_meth.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
381s2_meth.o: ../include/openssl/tls1.h ../include/openssl/ui.h
382s2_meth.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
383s2_meth.o: ../include/openssl/x509_vfy.h s2_meth.c ssl_locl.h
384s2_pkt.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
385s2_pkt.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
386s2_pkt.o: ../include/openssl/bn.h ../include/openssl/buffer.h
387s2_pkt.o: ../include/openssl/cast.h ../include/openssl/comp.h
388s2_pkt.o: ../include/openssl/crypto.h ../include/openssl/des.h
389s2_pkt.o: ../include/openssl/des_old.h ../include/openssl/dh.h
390s2_pkt.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
391s2_pkt.o: ../include/openssl/err.h ../include/openssl/evp.h
392s2_pkt.o: ../include/openssl/idea.h ../include/openssl/kssl.h
393s2_pkt.o: ../include/openssl/lhash.h ../include/openssl/md2.h
394s2_pkt.o: ../include/openssl/md4.h ../include/openssl/md5.h
395s2_pkt.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
396s2_pkt.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
397s2_pkt.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
398s2_pkt.o: ../include/openssl/pem.h ../include/openssl/pem2.h
399s2_pkt.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
400s2_pkt.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
401s2_pkt.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
402s2_pkt.o: ../include/openssl/safestack.h ../include/openssl/sha.h
403s2_pkt.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
404s2_pkt.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
405s2_pkt.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
406s2_pkt.o: ../include/openssl/tls1.h ../include/openssl/ui.h
407s2_pkt.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
408s2_pkt.o: ../include/openssl/x509_vfy.h s2_pkt.c ssl_locl.h
409s2_srvr.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
410s2_srvr.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
411s2_srvr.o: ../include/openssl/bn.h ../include/openssl/buffer.h
412s2_srvr.o: ../include/openssl/cast.h ../include/openssl/comp.h
413s2_srvr.o: ../include/openssl/crypto.h ../include/openssl/des.h
414s2_srvr.o: ../include/openssl/des_old.h ../include/openssl/dh.h
415s2_srvr.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
416s2_srvr.o: ../include/openssl/err.h ../include/openssl/evp.h
417s2_srvr.o: ../include/openssl/idea.h ../include/openssl/kssl.h
418s2_srvr.o: ../include/openssl/lhash.h ../include/openssl/md2.h
419s2_srvr.o: ../include/openssl/md4.h ../include/openssl/md5.h
420s2_srvr.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
421s2_srvr.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
422s2_srvr.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
423s2_srvr.o: ../include/openssl/pem.h ../include/openssl/pem2.h
424s2_srvr.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
425s2_srvr.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
426s2_srvr.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
427s2_srvr.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
428s2_srvr.o: ../include/openssl/sha.h ../include/openssl/ssl.h
429s2_srvr.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
430s2_srvr.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
431s2_srvr.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
432s2_srvr.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
433s2_srvr.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s2_srvr.c
434s2_srvr.o: ssl_locl.h
435s3_both.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
436s3_both.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
437s3_both.o: ../include/openssl/bn.h ../include/openssl/buffer.h
438s3_both.o: ../include/openssl/cast.h ../include/openssl/comp.h
439s3_both.o: ../include/openssl/crypto.h ../include/openssl/des.h
440s3_both.o: ../include/openssl/des_old.h ../include/openssl/dh.h
441s3_both.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
442s3_both.o: ../include/openssl/err.h ../include/openssl/evp.h
443s3_both.o: ../include/openssl/idea.h ../include/openssl/kssl.h
444s3_both.o: ../include/openssl/lhash.h ../include/openssl/md2.h
445s3_both.o: ../include/openssl/md4.h ../include/openssl/md5.h
446s3_both.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
447s3_both.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
448s3_both.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
449s3_both.o: ../include/openssl/pem.h ../include/openssl/pem2.h
450s3_both.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
451s3_both.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
452s3_both.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
453s3_both.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
454s3_both.o: ../include/openssl/sha.h ../include/openssl/ssl.h
455s3_both.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
456s3_both.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
457s3_both.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
458s3_both.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
459s3_both.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s3_both.c
460s3_both.o: ssl_locl.h
461s3_clnt.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
462s3_clnt.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
463s3_clnt.o: ../include/openssl/bn.h ../include/openssl/buffer.h
464s3_clnt.o: ../include/openssl/cast.h ../include/openssl/comp.h
465s3_clnt.o: ../include/openssl/crypto.h ../include/openssl/des.h
466s3_clnt.o: ../include/openssl/des_old.h ../include/openssl/dh.h
467s3_clnt.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
468s3_clnt.o: ../include/openssl/err.h ../include/openssl/evp.h
469s3_clnt.o: ../include/openssl/idea.h ../include/openssl/kssl.h
470s3_clnt.o: ../include/openssl/lhash.h ../include/openssl/md2.h
471s3_clnt.o: ../include/openssl/md4.h ../include/openssl/md5.h
472s3_clnt.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
473s3_clnt.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
474s3_clnt.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
475s3_clnt.o: ../include/openssl/pem.h ../include/openssl/pem2.h
476s3_clnt.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
477s3_clnt.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
478s3_clnt.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
479s3_clnt.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
480s3_clnt.o: ../include/openssl/sha.h ../include/openssl/ssl.h
481s3_clnt.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
482s3_clnt.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
483s3_clnt.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
484s3_clnt.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
485s3_clnt.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h kssl_lcl.h
486s3_clnt.o: s3_clnt.c ssl_locl.h
487s3_enc.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
488s3_enc.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
489s3_enc.o: ../include/openssl/bn.h ../include/openssl/buffer.h
490s3_enc.o: ../include/openssl/cast.h ../include/openssl/comp.h
491s3_enc.o: ../include/openssl/crypto.h ../include/openssl/des.h
492s3_enc.o: ../include/openssl/des_old.h ../include/openssl/dh.h
493s3_enc.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
494s3_enc.o: ../include/openssl/err.h ../include/openssl/evp.h
495s3_enc.o: ../include/openssl/idea.h ../include/openssl/kssl.h
496s3_enc.o: ../include/openssl/lhash.h ../include/openssl/md2.h
497s3_enc.o: ../include/openssl/md4.h ../include/openssl/md5.h
498s3_enc.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
499s3_enc.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
500s3_enc.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
501s3_enc.o: ../include/openssl/pem.h ../include/openssl/pem2.h
502s3_enc.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
503s3_enc.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
504s3_enc.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
505s3_enc.o: ../include/openssl/safestack.h ../include/openssl/sha.h
506s3_enc.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
507s3_enc.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
508s3_enc.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
509s3_enc.o: ../include/openssl/tls1.h ../include/openssl/ui.h
510s3_enc.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
511s3_enc.o: ../include/openssl/x509_vfy.h s3_enc.c ssl_locl.h
512s3_lib.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
513s3_lib.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
514s3_lib.o: ../include/openssl/bn.h ../include/openssl/buffer.h
515s3_lib.o: ../include/openssl/cast.h ../include/openssl/comp.h
516s3_lib.o: ../include/openssl/crypto.h ../include/openssl/des.h
517s3_lib.o: ../include/openssl/des_old.h ../include/openssl/dh.h
518s3_lib.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
519s3_lib.o: ../include/openssl/err.h ../include/openssl/evp.h
520s3_lib.o: ../include/openssl/idea.h ../include/openssl/kssl.h
521s3_lib.o: ../include/openssl/lhash.h ../include/openssl/md2.h
522s3_lib.o: ../include/openssl/md4.h ../include/openssl/md5.h
523s3_lib.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
524s3_lib.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
525s3_lib.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
526s3_lib.o: ../include/openssl/pem.h ../include/openssl/pem2.h
527s3_lib.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
528s3_lib.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
529s3_lib.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
530s3_lib.o: ../include/openssl/safestack.h ../include/openssl/sha.h
531s3_lib.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
532s3_lib.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
533s3_lib.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
534s3_lib.o: ../include/openssl/tls1.h ../include/openssl/ui.h
535s3_lib.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
536s3_lib.o: ../include/openssl/x509_vfy.h kssl_lcl.h s3_lib.c ssl_locl.h
537s3_meth.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
538s3_meth.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
539s3_meth.o: ../include/openssl/bn.h ../include/openssl/buffer.h
540s3_meth.o: ../include/openssl/cast.h ../include/openssl/comp.h
541s3_meth.o: ../include/openssl/crypto.h ../include/openssl/des.h
542s3_meth.o: ../include/openssl/des_old.h ../include/openssl/dh.h
543s3_meth.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
544s3_meth.o: ../include/openssl/err.h ../include/openssl/evp.h
545s3_meth.o: ../include/openssl/idea.h ../include/openssl/kssl.h
546s3_meth.o: ../include/openssl/lhash.h ../include/openssl/md2.h
547s3_meth.o: ../include/openssl/md4.h ../include/openssl/md5.h
548s3_meth.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
549s3_meth.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
550s3_meth.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
551s3_meth.o: ../include/openssl/pem.h ../include/openssl/pem2.h
552s3_meth.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
553s3_meth.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
554s3_meth.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
555s3_meth.o: ../include/openssl/safestack.h ../include/openssl/sha.h
556s3_meth.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
557s3_meth.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
558s3_meth.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
559s3_meth.o: ../include/openssl/tls1.h ../include/openssl/ui.h
560s3_meth.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
561s3_meth.o: ../include/openssl/x509_vfy.h s3_meth.c ssl_locl.h
562s3_pkt.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
563s3_pkt.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
564s3_pkt.o: ../include/openssl/bn.h ../include/openssl/buffer.h
565s3_pkt.o: ../include/openssl/cast.h ../include/openssl/comp.h
566s3_pkt.o: ../include/openssl/crypto.h ../include/openssl/des.h
567s3_pkt.o: ../include/openssl/des_old.h ../include/openssl/dh.h
568s3_pkt.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
569s3_pkt.o: ../include/openssl/err.h ../include/openssl/evp.h
570s3_pkt.o: ../include/openssl/idea.h ../include/openssl/kssl.h
571s3_pkt.o: ../include/openssl/lhash.h ../include/openssl/md2.h
572s3_pkt.o: ../include/openssl/md4.h ../include/openssl/md5.h
573s3_pkt.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
574s3_pkt.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
575s3_pkt.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
576s3_pkt.o: ../include/openssl/pem.h ../include/openssl/pem2.h
577s3_pkt.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
578s3_pkt.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
579s3_pkt.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
580s3_pkt.o: ../include/openssl/safestack.h ../include/openssl/sha.h
581s3_pkt.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
582s3_pkt.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
583s3_pkt.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
584s3_pkt.o: ../include/openssl/tls1.h ../include/openssl/ui.h
585s3_pkt.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
586s3_pkt.o: ../include/openssl/x509_vfy.h s3_pkt.c ssl_locl.h
587s3_srvr.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
588s3_srvr.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
589s3_srvr.o: ../include/openssl/bn.h ../include/openssl/buffer.h
590s3_srvr.o: ../include/openssl/cast.h ../include/openssl/comp.h
591s3_srvr.o: ../include/openssl/crypto.h ../include/openssl/des.h
592s3_srvr.o: ../include/openssl/des_old.h ../include/openssl/dh.h
593s3_srvr.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
594s3_srvr.o: ../include/openssl/err.h ../include/openssl/evp.h
595s3_srvr.o: ../include/openssl/idea.h ../include/openssl/kssl.h
596s3_srvr.o: ../include/openssl/lhash.h ../include/openssl/md2.h
597s3_srvr.o: ../include/openssl/md4.h ../include/openssl/md5.h
598s3_srvr.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
599s3_srvr.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
600s3_srvr.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
601s3_srvr.o: ../include/openssl/pem.h ../include/openssl/pem2.h
602s3_srvr.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
603s3_srvr.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
604s3_srvr.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
605s3_srvr.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
606s3_srvr.o: ../include/openssl/sha.h ../include/openssl/ssl.h
607s3_srvr.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
608s3_srvr.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
609s3_srvr.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
610s3_srvr.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
611s3_srvr.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h kssl_lcl.h
612s3_srvr.o: s3_srvr.c ssl_locl.h
613ssl_algs.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
614ssl_algs.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
615ssl_algs.o: ../include/openssl/bn.h ../include/openssl/buffer.h
616ssl_algs.o: ../include/openssl/cast.h ../include/openssl/comp.h
617ssl_algs.o: ../include/openssl/crypto.h ../include/openssl/des.h
618ssl_algs.o: ../include/openssl/des_old.h ../include/openssl/dh.h
619ssl_algs.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
620ssl_algs.o: ../include/openssl/err.h ../include/openssl/evp.h
621ssl_algs.o: ../include/openssl/idea.h ../include/openssl/kssl.h
622ssl_algs.o: ../include/openssl/lhash.h ../include/openssl/md2.h
623ssl_algs.o: ../include/openssl/md4.h ../include/openssl/md5.h
624ssl_algs.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
625ssl_algs.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
626ssl_algs.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
627ssl_algs.o: ../include/openssl/pem.h ../include/openssl/pem2.h
628ssl_algs.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
629ssl_algs.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
630ssl_algs.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
631ssl_algs.o: ../include/openssl/safestack.h ../include/openssl/sha.h
632ssl_algs.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
633ssl_algs.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
634ssl_algs.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
635ssl_algs.o: ../include/openssl/tls1.h ../include/openssl/ui.h
636ssl_algs.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
637ssl_algs.o: ../include/openssl/x509_vfy.h ssl_algs.c ssl_locl.h
638ssl_asn1.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
639ssl_asn1.o: ../include/openssl/asn1_mac.h ../include/openssl/bio.h
640ssl_asn1.o: ../include/openssl/blowfish.h ../include/openssl/bn.h
641ssl_asn1.o: ../include/openssl/buffer.h ../include/openssl/cast.h
642ssl_asn1.o: ../include/openssl/comp.h ../include/openssl/crypto.h
643ssl_asn1.o: ../include/openssl/des.h ../include/openssl/des_old.h
644ssl_asn1.o: ../include/openssl/dh.h ../include/openssl/dsa.h
645ssl_asn1.o: ../include/openssl/e_os2.h ../include/openssl/err.h
646ssl_asn1.o: ../include/openssl/evp.h ../include/openssl/idea.h
647ssl_asn1.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
648ssl_asn1.o: ../include/openssl/md2.h ../include/openssl/md4.h
649ssl_asn1.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
650ssl_asn1.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
651ssl_asn1.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
652ssl_asn1.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
653ssl_asn1.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
654ssl_asn1.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
655ssl_asn1.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
656ssl_asn1.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
657ssl_asn1.o: ../include/openssl/sha.h ../include/openssl/ssl.h
658ssl_asn1.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
659ssl_asn1.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
660ssl_asn1.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
661ssl_asn1.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
662ssl_asn1.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ssl_asn1.c
663ssl_asn1.o: ssl_locl.h
664ssl_cert.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
665ssl_cert.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
666ssl_cert.o: ../include/openssl/bn.h ../include/openssl/buffer.h
667ssl_cert.o: ../include/openssl/cast.h ../include/openssl/comp.h
668ssl_cert.o: ../include/openssl/conf.h ../include/openssl/crypto.h
669ssl_cert.o: ../include/openssl/des.h ../include/openssl/des_old.h
670ssl_cert.o: ../include/openssl/dh.h ../include/openssl/dsa.h
671ssl_cert.o: ../include/openssl/e_os2.h ../include/openssl/err.h
672ssl_cert.o: ../include/openssl/evp.h ../include/openssl/idea.h
673ssl_cert.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
674ssl_cert.o: ../include/openssl/md2.h ../include/openssl/md4.h
675ssl_cert.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
676ssl_cert.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
677ssl_cert.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
678ssl_cert.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
679ssl_cert.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
680ssl_cert.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
681ssl_cert.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
682ssl_cert.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
683ssl_cert.o: ../include/openssl/sha.h ../include/openssl/ssl.h
684ssl_cert.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
685ssl_cert.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
686ssl_cert.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
687ssl_cert.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
688ssl_cert.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
689ssl_cert.o: ../include/openssl/x509v3.h ssl_cert.c ssl_locl.h
690ssl_ciph.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
691ssl_ciph.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
692ssl_ciph.o: ../include/openssl/bn.h ../include/openssl/buffer.h
693ssl_ciph.o: ../include/openssl/cast.h ../include/openssl/comp.h
694ssl_ciph.o: ../include/openssl/crypto.h ../include/openssl/des.h
695ssl_ciph.o: ../include/openssl/des_old.h ../include/openssl/dh.h
696ssl_ciph.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
697ssl_ciph.o: ../include/openssl/err.h ../include/openssl/evp.h
698ssl_ciph.o: ../include/openssl/idea.h ../include/openssl/kssl.h
699ssl_ciph.o: ../include/openssl/lhash.h ../include/openssl/md2.h
700ssl_ciph.o: ../include/openssl/md4.h ../include/openssl/md5.h
701ssl_ciph.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
702ssl_ciph.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
703ssl_ciph.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
704ssl_ciph.o: ../include/openssl/pem.h ../include/openssl/pem2.h
705ssl_ciph.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
706ssl_ciph.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
707ssl_ciph.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
708ssl_ciph.o: ../include/openssl/safestack.h ../include/openssl/sha.h
709ssl_ciph.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
710ssl_ciph.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
711ssl_ciph.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
712ssl_ciph.o: ../include/openssl/tls1.h ../include/openssl/ui.h
713ssl_ciph.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
714ssl_ciph.o: ../include/openssl/x509_vfy.h ssl_ciph.c ssl_locl.h
715ssl_err.o: ../include/openssl/aes.h ../include/openssl/asn1.h
716ssl_err.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
717ssl_err.o: ../include/openssl/bn.h ../include/openssl/buffer.h
718ssl_err.o: ../include/openssl/cast.h ../include/openssl/comp.h
719ssl_err.o: ../include/openssl/crypto.h ../include/openssl/des.h
720ssl_err.o: ../include/openssl/des_old.h ../include/openssl/dh.h
721ssl_err.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
722ssl_err.o: ../include/openssl/err.h ../include/openssl/evp.h
723ssl_err.o: ../include/openssl/idea.h ../include/openssl/kssl.h
724ssl_err.o: ../include/openssl/lhash.h ../include/openssl/md2.h
725ssl_err.o: ../include/openssl/md4.h ../include/openssl/md5.h
726ssl_err.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
727ssl_err.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
728ssl_err.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
729ssl_err.o: ../include/openssl/pem.h ../include/openssl/pem2.h
730ssl_err.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
731ssl_err.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
732ssl_err.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
733ssl_err.o: ../include/openssl/safestack.h ../include/openssl/sha.h
734ssl_err.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
735ssl_err.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
736ssl_err.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
737ssl_err.o: ../include/openssl/tls1.h ../include/openssl/ui.h
738ssl_err.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
739ssl_err.o: ../include/openssl/x509_vfy.h ssl_err.c
740ssl_err2.o: ../include/openssl/aes.h ../include/openssl/asn1.h
741ssl_err2.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
742ssl_err2.o: ../include/openssl/bn.h ../include/openssl/buffer.h
743ssl_err2.o: ../include/openssl/cast.h ../include/openssl/comp.h
744ssl_err2.o: ../include/openssl/crypto.h ../include/openssl/des.h
745ssl_err2.o: ../include/openssl/des_old.h ../include/openssl/dh.h
746ssl_err2.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
747ssl_err2.o: ../include/openssl/err.h ../include/openssl/evp.h
748ssl_err2.o: ../include/openssl/idea.h ../include/openssl/kssl.h
749ssl_err2.o: ../include/openssl/lhash.h ../include/openssl/md2.h
750ssl_err2.o: ../include/openssl/md4.h ../include/openssl/md5.h
751ssl_err2.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
752ssl_err2.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
753ssl_err2.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
754ssl_err2.o: ../include/openssl/pem.h ../include/openssl/pem2.h
755ssl_err2.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
756ssl_err2.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
757ssl_err2.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
758ssl_err2.o: ../include/openssl/safestack.h ../include/openssl/sha.h
759ssl_err2.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
760ssl_err2.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
761ssl_err2.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
762ssl_err2.o: ../include/openssl/tls1.h ../include/openssl/ui.h
763ssl_err2.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
764ssl_err2.o: ../include/openssl/x509_vfy.h ssl_err2.c
765ssl_lib.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
766ssl_lib.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
767ssl_lib.o: ../include/openssl/bn.h ../include/openssl/buffer.h
768ssl_lib.o: ../include/openssl/cast.h ../include/openssl/comp.h
769ssl_lib.o: ../include/openssl/conf.h ../include/openssl/crypto.h
770ssl_lib.o: ../include/openssl/des.h ../include/openssl/des_old.h
771ssl_lib.o: ../include/openssl/dh.h ../include/openssl/dsa.h
772ssl_lib.o: ../include/openssl/e_os2.h ../include/openssl/err.h
773ssl_lib.o: ../include/openssl/evp.h ../include/openssl/idea.h
774ssl_lib.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
775ssl_lib.o: ../include/openssl/md2.h ../include/openssl/md4.h
776ssl_lib.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
777ssl_lib.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
778ssl_lib.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
779ssl_lib.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
780ssl_lib.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
781ssl_lib.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
782ssl_lib.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
783ssl_lib.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
784ssl_lib.o: ../include/openssl/sha.h ../include/openssl/ssl.h
785ssl_lib.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
786ssl_lib.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
787ssl_lib.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
788ssl_lib.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
789ssl_lib.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
790ssl_lib.o: ../include/openssl/x509v3.h kssl_lcl.h ssl_lib.c ssl_locl.h
791ssl_rsa.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
792ssl_rsa.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
793ssl_rsa.o: ../include/openssl/bn.h ../include/openssl/buffer.h
794ssl_rsa.o: ../include/openssl/cast.h ../include/openssl/comp.h
795ssl_rsa.o: ../include/openssl/crypto.h ../include/openssl/des.h
796ssl_rsa.o: ../include/openssl/des_old.h ../include/openssl/dh.h
797ssl_rsa.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
798ssl_rsa.o: ../include/openssl/err.h ../include/openssl/evp.h
799ssl_rsa.o: ../include/openssl/idea.h ../include/openssl/kssl.h
800ssl_rsa.o: ../include/openssl/lhash.h ../include/openssl/md2.h
801ssl_rsa.o: ../include/openssl/md4.h ../include/openssl/md5.h
802ssl_rsa.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
803ssl_rsa.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
804ssl_rsa.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
805ssl_rsa.o: ../include/openssl/pem.h ../include/openssl/pem2.h
806ssl_rsa.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
807ssl_rsa.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
808ssl_rsa.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
809ssl_rsa.o: ../include/openssl/safestack.h ../include/openssl/sha.h
810ssl_rsa.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
811ssl_rsa.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
812ssl_rsa.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
813ssl_rsa.o: ../include/openssl/tls1.h ../include/openssl/ui.h
814ssl_rsa.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
815ssl_rsa.o: ../include/openssl/x509_vfy.h ssl_locl.h ssl_rsa.c
816ssl_sess.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
817ssl_sess.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
818ssl_sess.o: ../include/openssl/bn.h ../include/openssl/buffer.h
819ssl_sess.o: ../include/openssl/cast.h ../include/openssl/comp.h
820ssl_sess.o: ../include/openssl/crypto.h ../include/openssl/des.h
821ssl_sess.o: ../include/openssl/des_old.h ../include/openssl/dh.h
822ssl_sess.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
823ssl_sess.o: ../include/openssl/err.h ../include/openssl/evp.h
824ssl_sess.o: ../include/openssl/idea.h ../include/openssl/kssl.h
825ssl_sess.o: ../include/openssl/lhash.h ../include/openssl/md2.h
826ssl_sess.o: ../include/openssl/md4.h ../include/openssl/md5.h
827ssl_sess.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
828ssl_sess.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
829ssl_sess.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
830ssl_sess.o: ../include/openssl/pem.h ../include/openssl/pem2.h
831ssl_sess.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
832ssl_sess.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
833ssl_sess.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
834ssl_sess.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
835ssl_sess.o: ../include/openssl/sha.h ../include/openssl/ssl.h
836ssl_sess.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
837ssl_sess.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
838ssl_sess.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
839ssl_sess.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
840ssl_sess.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ssl_locl.h
841ssl_sess.o: ssl_sess.c
842ssl_stat.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
843ssl_stat.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
844ssl_stat.o: ../include/openssl/bn.h ../include/openssl/buffer.h
845ssl_stat.o: ../include/openssl/cast.h ../include/openssl/comp.h
846ssl_stat.o: ../include/openssl/crypto.h ../include/openssl/des.h
847ssl_stat.o: ../include/openssl/des_old.h ../include/openssl/dh.h
848ssl_stat.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
849ssl_stat.o: ../include/openssl/err.h ../include/openssl/evp.h
850ssl_stat.o: ../include/openssl/idea.h ../include/openssl/kssl.h
851ssl_stat.o: ../include/openssl/lhash.h ../include/openssl/md2.h
852ssl_stat.o: ../include/openssl/md4.h ../include/openssl/md5.h
853ssl_stat.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
854ssl_stat.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
855ssl_stat.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
856ssl_stat.o: ../include/openssl/pem.h ../include/openssl/pem2.h
857ssl_stat.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
858ssl_stat.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
859ssl_stat.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
860ssl_stat.o: ../include/openssl/safestack.h ../include/openssl/sha.h
861ssl_stat.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
862ssl_stat.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
863ssl_stat.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
864ssl_stat.o: ../include/openssl/tls1.h ../include/openssl/ui.h
865ssl_stat.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
866ssl_stat.o: ../include/openssl/x509_vfy.h ssl_locl.h ssl_stat.c
867ssl_txt.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
868ssl_txt.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
869ssl_txt.o: ../include/openssl/bn.h ../include/openssl/buffer.h
870ssl_txt.o: ../include/openssl/cast.h ../include/openssl/comp.h
871ssl_txt.o: ../include/openssl/crypto.h ../include/openssl/des.h
872ssl_txt.o: ../include/openssl/des_old.h ../include/openssl/dh.h
873ssl_txt.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
874ssl_txt.o: ../include/openssl/err.h ../include/openssl/evp.h
875ssl_txt.o: ../include/openssl/idea.h ../include/openssl/kssl.h
876ssl_txt.o: ../include/openssl/lhash.h ../include/openssl/md2.h
877ssl_txt.o: ../include/openssl/md4.h ../include/openssl/md5.h
878ssl_txt.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
879ssl_txt.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
880ssl_txt.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
881ssl_txt.o: ../include/openssl/pem.h ../include/openssl/pem2.h
882ssl_txt.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
883ssl_txt.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
884ssl_txt.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
885ssl_txt.o: ../include/openssl/safestack.h ../include/openssl/sha.h
886ssl_txt.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
887ssl_txt.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
888ssl_txt.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
889ssl_txt.o: ../include/openssl/tls1.h ../include/openssl/ui.h
890ssl_txt.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
891ssl_txt.o: ../include/openssl/x509_vfy.h ssl_locl.h ssl_txt.c
892t1_clnt.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
893t1_clnt.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
894t1_clnt.o: ../include/openssl/bn.h ../include/openssl/buffer.h
895t1_clnt.o: ../include/openssl/cast.h ../include/openssl/comp.h
896t1_clnt.o: ../include/openssl/crypto.h ../include/openssl/des.h
897t1_clnt.o: ../include/openssl/des_old.h ../include/openssl/dh.h
898t1_clnt.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
899t1_clnt.o: ../include/openssl/err.h ../include/openssl/evp.h
900t1_clnt.o: ../include/openssl/idea.h ../include/openssl/kssl.h
901t1_clnt.o: ../include/openssl/lhash.h ../include/openssl/md2.h
902t1_clnt.o: ../include/openssl/md4.h ../include/openssl/md5.h
903t1_clnt.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
904t1_clnt.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
905t1_clnt.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
906t1_clnt.o: ../include/openssl/pem.h ../include/openssl/pem2.h
907t1_clnt.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
908t1_clnt.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
909t1_clnt.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
910t1_clnt.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
911t1_clnt.o: ../include/openssl/sha.h ../include/openssl/ssl.h
912t1_clnt.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
913t1_clnt.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
914t1_clnt.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
915t1_clnt.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
916t1_clnt.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ssl_locl.h
917t1_clnt.o: t1_clnt.c
918t1_enc.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
919t1_enc.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
920t1_enc.o: ../include/openssl/bn.h ../include/openssl/buffer.h
921t1_enc.o: ../include/openssl/cast.h ../include/openssl/comp.h
922t1_enc.o: ../include/openssl/crypto.h ../include/openssl/des.h
923t1_enc.o: ../include/openssl/des_old.h ../include/openssl/dh.h
924t1_enc.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
925t1_enc.o: ../include/openssl/err.h ../include/openssl/evp.h
926t1_enc.o: ../include/openssl/hmac.h ../include/openssl/idea.h
927t1_enc.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
928t1_enc.o: ../include/openssl/md2.h ../include/openssl/md4.h
929t1_enc.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
930t1_enc.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
931t1_enc.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
932t1_enc.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
933t1_enc.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
934t1_enc.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
935t1_enc.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
936t1_enc.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
937t1_enc.o: ../include/openssl/sha.h ../include/openssl/ssl.h
938t1_enc.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
939t1_enc.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
940t1_enc.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
941t1_enc.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
942t1_enc.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ssl_locl.h
943t1_enc.o: t1_enc.c
944t1_lib.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
945t1_lib.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
946t1_lib.o: ../include/openssl/bn.h ../include/openssl/buffer.h
947t1_lib.o: ../include/openssl/cast.h ../include/openssl/comp.h
948t1_lib.o: ../include/openssl/crypto.h ../include/openssl/des.h
949t1_lib.o: ../include/openssl/des_old.h ../include/openssl/dh.h
950t1_lib.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
951t1_lib.o: ../include/openssl/err.h ../include/openssl/evp.h
952t1_lib.o: ../include/openssl/idea.h ../include/openssl/kssl.h
953t1_lib.o: ../include/openssl/lhash.h ../include/openssl/md2.h
954t1_lib.o: ../include/openssl/md4.h ../include/openssl/md5.h
955t1_lib.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
956t1_lib.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
957t1_lib.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
958t1_lib.o: ../include/openssl/pem.h ../include/openssl/pem2.h
959t1_lib.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
960t1_lib.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
961t1_lib.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
962t1_lib.o: ../include/openssl/safestack.h ../include/openssl/sha.h
963t1_lib.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
964t1_lib.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
965t1_lib.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
966t1_lib.o: ../include/openssl/tls1.h ../include/openssl/ui.h
967t1_lib.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
968t1_lib.o: ../include/openssl/x509_vfy.h ssl_locl.h t1_lib.c
969t1_meth.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
970t1_meth.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
971t1_meth.o: ../include/openssl/bn.h ../include/openssl/buffer.h
972t1_meth.o: ../include/openssl/cast.h ../include/openssl/comp.h
973t1_meth.o: ../include/openssl/crypto.h ../include/openssl/des.h
974t1_meth.o: ../include/openssl/des_old.h ../include/openssl/dh.h
975t1_meth.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
976t1_meth.o: ../include/openssl/err.h ../include/openssl/evp.h
977t1_meth.o: ../include/openssl/idea.h ../include/openssl/kssl.h
978t1_meth.o: ../include/openssl/lhash.h ../include/openssl/md2.h
979t1_meth.o: ../include/openssl/md4.h ../include/openssl/md5.h
980t1_meth.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
981t1_meth.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
982t1_meth.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
983t1_meth.o: ../include/openssl/pem.h ../include/openssl/pem2.h
984t1_meth.o: ../include/openssl/pkcs7.h ../include/openssl/rc2.h
985t1_meth.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
986t1_meth.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
987t1_meth.o: ../include/openssl/safestack.h ../include/openssl/sha.h
988t1_meth.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
989t1_meth.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
990t1_meth.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
991t1_meth.o: ../include/openssl/tls1.h ../include/openssl/ui.h
992t1_meth.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
993t1_meth.o: ../include/openssl/x509_vfy.h ssl_locl.h t1_meth.c
994t1_srvr.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
995t1_srvr.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
996t1_srvr.o: ../include/openssl/bn.h ../include/openssl/buffer.h
997t1_srvr.o: ../include/openssl/cast.h ../include/openssl/comp.h
998t1_srvr.o: ../include/openssl/crypto.h ../include/openssl/des.h
999t1_srvr.o: ../include/openssl/des_old.h ../include/openssl/dh.h
1000t1_srvr.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
1001t1_srvr.o: ../include/openssl/err.h ../include/openssl/evp.h
1002t1_srvr.o: ../include/openssl/idea.h ../include/openssl/kssl.h
1003t1_srvr.o: ../include/openssl/lhash.h ../include/openssl/md2.h
1004t1_srvr.o: ../include/openssl/md4.h ../include/openssl/md5.h
1005t1_srvr.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
1006t1_srvr.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
1007t1_srvr.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
1008t1_srvr.o: ../include/openssl/pem.h ../include/openssl/pem2.h
1009t1_srvr.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
1010t1_srvr.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
1011t1_srvr.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
1012t1_srvr.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
1013t1_srvr.o: ../include/openssl/sha.h ../include/openssl/ssl.h
1014t1_srvr.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
1015t1_srvr.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
1016t1_srvr.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
1017t1_srvr.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
1018t1_srvr.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ssl_locl.h
1019t1_srvr.o: t1_srvr.c
diff --git a/src/lib/libssl/src/ssl/kssl.c b/src/lib/libssl/src/ssl/kssl.c
index 9a41769e75..3afa95f3fa 100644
--- a/src/lib/libssl/src/ssl/kssl.c
+++ b/src/lib/libssl/src/ssl/kssl.c
@@ -68,11 +68,9 @@
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() */ 71#define _XOPEN_SOURCE /* glibc2 needs this to declare strptime() */
72#include <time.h> 72#include <time.h>
73#if 0 /* Experimental */
74#undef _XOPEN_SOURCE /* To avoid clashes with anything else... */ 73#undef _XOPEN_SOURCE /* To avoid clashes with anything else... */
75#endif
76#include <string.h> 74#include <string.h>
77 75
78#define KRB5_PRIVATE 1 76#define KRB5_PRIVATE 1
@@ -297,7 +295,7 @@ load_krb5_dll(void)
297 HANDLE hKRB5_32; 295 HANDLE hKRB5_32;
298 296
299 krb5_loaded++; 297 krb5_loaded++;
300 hKRB5_32 = LoadLibrary(TEXT("KRB5_32")); 298 hKRB5_32 = LoadLibrary("KRB5_32");
301 if (!hKRB5_32) 299 if (!hKRB5_32)
302 return; 300 return;
303 301
diff --git a/src/lib/libssl/src/ssl/s23_clnt.c b/src/lib/libssl/src/ssl/s23_clnt.c
index 86356731ea..779e94a35c 100644
--- a/src/lib/libssl/src/ssl/s23_clnt.c
+++ b/src/lib/libssl/src/ssl/s23_clnt.c
@@ -106,7 +106,7 @@ SSL_METHOD *SSLv23_client_method(void)
106int ssl23_connect(SSL *s) 106int ssl23_connect(SSL *s)
107 { 107 {
108 BUF_MEM *buf=NULL; 108 BUF_MEM *buf=NULL;
109 unsigned long Time=(unsigned long)time(NULL); 109 unsigned long Time=time(NULL);
110 void (*cb)(const SSL *ssl,int type,int val)=NULL; 110 void (*cb)(const SSL *ssl,int type,int val)=NULL;
111 int ret= -1; 111 int ret= -1;
112 int new_state,state; 112 int new_state,state;
@@ -220,28 +220,9 @@ static int ssl23_client_hello(SSL *s)
220 { 220 {
221 unsigned char *buf; 221 unsigned char *buf;
222 unsigned char *p,*d; 222 unsigned char *p,*d;
223 int i,j,ch_len; 223 int i,ch_len;
224 unsigned long Time,l;
225 int ssl2_compat;
226 int version = 0, version_major, version_minor;
227 SSL_COMP *comp;
228 int ret; 224 int ret;
229 225
230 ssl2_compat = (s->options & SSL_OP_NO_SSLv2) ? 0 : 1;
231
232 if (!(s->options & SSL_OP_NO_TLSv1))
233 {
234 version = TLS1_VERSION;
235 }
236 else if (!(s->options & SSL_OP_NO_SSLv3))
237 {
238 version = SSL3_VERSION;
239 }
240 else if (!(s->options & SSL_OP_NO_SSLv2))
241 {
242 version = SSL2_VERSION;
243 }
244
245 buf=(unsigned char *)s->init_buf->data; 226 buf=(unsigned char *)s->init_buf->data;
246 if (s->state == SSL23_ST_CW_CLNT_HELLO_A) 227 if (s->state == SSL23_ST_CW_CLNT_HELLO_A)
247 { 228 {
@@ -254,15 +235,19 @@ static int ssl23_client_hello(SSL *s)
254#endif 235#endif
255 236
256 p=s->s3->client_random; 237 p=s->s3->client_random;
257 Time=(unsigned long)time(NULL); /* Time */ 238 if(RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE) <= 0)
258 l2n(Time,p); 239 return -1;
259 if (RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE-4) <= 0)
260 return -1;
261 240
262 if (version == TLS1_VERSION) 241 /* Do the message type and length last */
242 d= &(buf[2]);
243 p=d+9;
244
245 *(d++)=SSL2_MT_CLIENT_HELLO;
246 if (!(s->options & SSL_OP_NO_TLSv1))
263 { 247 {
264 version_major = TLS1_VERSION_MAJOR; 248 *(d++)=TLS1_VERSION_MAJOR;
265 version_minor = TLS1_VERSION_MINOR; 249 *(d++)=TLS1_VERSION_MINOR;
250 s->client_version=TLS1_VERSION;
266 } 251 }
267#ifdef OPENSSL_FIPS 252#ifdef OPENSSL_FIPS
268 else if(FIPS_mode()) 253 else if(FIPS_mode())
@@ -272,15 +257,17 @@ static int ssl23_client_hello(SSL *s)
272 return -1; 257 return -1;
273 } 258 }
274#endif 259#endif
275 else if (version == SSL3_VERSION) 260 else if (!(s->options & SSL_OP_NO_SSLv3))
276 { 261 {
277 version_major = SSL3_VERSION_MAJOR; 262 *(d++)=SSL3_VERSION_MAJOR;
278 version_minor = SSL3_VERSION_MINOR; 263 *(d++)=SSL3_VERSION_MINOR;
264 s->client_version=SSL3_VERSION;
279 } 265 }
280 else if (version == SSL2_VERSION) 266 else if (!(s->options & SSL_OP_NO_SSLv2))
281 { 267 {
282 version_major = SSL2_VERSION_MAJOR; 268 *(d++)=SSL2_VERSION_MAJOR;
283 version_minor = SSL2_VERSION_MINOR; 269 *(d++)=SSL2_VERSION_MINOR;
270 s->client_version=SSL2_VERSION;
284 } 271 }
285 else 272 else
286 { 273 {
@@ -288,153 +275,59 @@ static int ssl23_client_hello(SSL *s)
288 return(-1); 275 return(-1);
289 } 276 }
290 277
291 s->client_version = version; 278 /* Ciphers supported */
292 279 i=ssl_cipher_list_to_bytes(s,SSL_get_ciphers(s),p);
293 if (ssl2_compat) 280 if (i == 0)
294 { 281 {
295 /* create SSL 2.0 compatible Client Hello */ 282 /* no ciphers */
296 283 SSLerr(SSL_F_SSL23_CLIENT_HELLO,SSL_R_NO_CIPHERS_AVAILABLE);
297 /* two byte record header will be written last */ 284 return(-1);
298 d = &(buf[2]); 285 }
299 p = d + 9; /* leave space for message type, version, individual length fields */ 286 s2n(i,d);
287 p+=i;
300 288
301 *(d++) = SSL2_MT_CLIENT_HELLO; 289 /* put in the session-id, zero since there is no
302 *(d++) = version_major; 290 * reuse. */
303 *(d++) = version_minor;
304
305 /* Ciphers supported */
306 i=ssl_cipher_list_to_bytes(s,SSL_get_ciphers(s),p,0);
307 if (i == 0)
308 {
309 /* no ciphers */
310 SSLerr(SSL_F_SSL23_CLIENT_HELLO,SSL_R_NO_CIPHERS_AVAILABLE);
311 return -1;
312 }
313 s2n(i,d);
314 p+=i;
315
316 /* put in the session-id length (zero since there is no reuse) */
317#if 0 291#if 0
318 s->session->session_id_length=0; 292 s->session->session_id_length=0;
319#endif 293#endif
320 s2n(0,d); 294 s2n(0,d);
321
322 if (s->options & SSL_OP_NETSCAPE_CHALLENGE_BUG)
323 ch_len=SSL2_CHALLENGE_LENGTH;
324 else
325 ch_len=SSL2_MAX_CHALLENGE_LENGTH;
326
327 /* write out sslv2 challenge */
328 if (SSL3_RANDOM_SIZE < ch_len)
329 i=SSL3_RANDOM_SIZE;
330 else
331 i=ch_len;
332 s2n(i,d);
333 memset(&(s->s3->client_random[0]),0,SSL3_RANDOM_SIZE);
334 if (RAND_pseudo_bytes(&(s->s3->client_random[SSL3_RANDOM_SIZE-i]),i) <= 0)
335 return -1;
336
337 memcpy(p,&(s->s3->client_random[SSL3_RANDOM_SIZE-i]),i);
338 p+=i;
339
340 i= p- &(buf[2]);
341 buf[0]=((i>>8)&0xff)|0x80;
342 buf[1]=(i&0xff);
343
344 /* number of bytes to write */
345 s->init_num=i+2;
346 s->init_off=0;
347
348 ssl3_finish_mac(s,&(buf[2]),i);
349 }
350 else
351 {
352 /* create Client Hello in SSL 3.0/TLS 1.0 format */
353
354 /* do the record header (5 bytes) and handshake message header (4 bytes) last */
355 d = p = &(buf[9]);
356
357 *(p++) = version_major;
358 *(p++) = version_minor;
359
360 /* Random stuff */
361 memcpy(p, s->s3->client_random, SSL3_RANDOM_SIZE);
362 p += SSL3_RANDOM_SIZE;
363 295
364 /* Session ID (zero since there is no reuse) */ 296 if (s->options & SSL_OP_NETSCAPE_CHALLENGE_BUG)
365 *(p++) = 0; 297 ch_len=SSL2_CHALLENGE_LENGTH;
366 298 else
367 /* Ciphers supported (using SSL 3.0/TLS 1.0 format) */ 299 ch_len=SSL2_MAX_CHALLENGE_LENGTH;
368 i=ssl_cipher_list_to_bytes(s,SSL_get_ciphers(s),&(p[2]),ssl3_put_cipher_by_char);
369 if (i == 0)
370 {
371 SSLerr(SSL_F_SSL23_CLIENT_HELLO,SSL_R_NO_CIPHERS_AVAILABLE);
372 return -1;
373 }
374 s2n(i,p);
375 p+=i;
376
377 /* COMPRESSION */
378 if (s->ctx->comp_methods == NULL)
379 j=0;
380 else
381 j=sk_SSL_COMP_num(s->ctx->comp_methods);
382 *(p++)=1+j;
383 for (i=0; i<j; i++)
384 {
385 comp=sk_SSL_COMP_value(s->ctx->comp_methods,i);
386 *(p++)=comp->id;
387 }
388 *(p++)=0; /* Add the NULL method */
389
390 l = p-d;
391 *p = 42;
392 300
393 /* fill in 4-byte handshake header */ 301 /* write out sslv2 challenge */
394 d=&(buf[5]); 302 if (SSL3_RANDOM_SIZE < ch_len)
395 *(d++)=SSL3_MT_CLIENT_HELLO; 303 i=SSL3_RANDOM_SIZE;
396 l2n3(l,d); 304 else
305 i=ch_len;
306 s2n(i,d);
307 memset(&(s->s3->client_random[0]),0,SSL3_RANDOM_SIZE);
308 if(RAND_pseudo_bytes(&(s->s3->client_random[SSL3_RANDOM_SIZE-i]),i) <= 0)
309 return -1;
397 310
398 l += 4; 311 memcpy(p,&(s->s3->client_random[SSL3_RANDOM_SIZE-i]),i);
312 p+=i;
399 313
400 if (l > SSL3_RT_MAX_PLAIN_LENGTH) 314 i= p- &(buf[2]);
401 { 315 buf[0]=((i>>8)&0xff)|0x80;
402 SSLerr(SSL_F_SSL23_CLIENT_HELLO,ERR_R_INTERNAL_ERROR); 316 buf[1]=(i&0xff);
403 return -1;
404 }
405
406 /* fill in 5-byte record header */
407 d=buf;
408 *(d++) = SSL3_RT_HANDSHAKE;
409 *(d++) = version_major;
410 *(d++) = version_minor; /* arguably we should send the *lowest* suported version here
411 * (indicating, e.g., TLS 1.0 in "SSL 3.0 format") */
412 s2n((int)l,d);
413
414 /* number of bytes to write */
415 s->init_num=p-buf;
416 s->init_off=0;
417
418 ssl3_finish_mac(s,&(buf[5]), s->init_num - 5);
419 }
420 317
421 s->state=SSL23_ST_CW_CLNT_HELLO_B; 318 s->state=SSL23_ST_CW_CLNT_HELLO_B;
319 /* number of bytes to write */
320 s->init_num=i+2;
422 s->init_off=0; 321 s->init_off=0;
322
323 ssl3_finish_mac(s,&(buf[2]),i);
423 } 324 }
424 325
425 /* SSL3_ST_CW_CLNT_HELLO_B */ 326 /* SSL3_ST_CW_CLNT_HELLO_B */
426 ret = ssl23_write_bytes(s); 327 ret = ssl23_write_bytes(s);
427 328 if (ret >= 2)
428 if ((ret >= 2) && s->msg_callback) 329 if (s->msg_callback)
429 { 330 s->msg_callback(1, SSL2_VERSION, 0, s->init_buf->data+2, ret-2, s, s->msg_callback_arg); /* CLIENT-HELLO */
430 /* Client Hello has been sent; tell msg_callback */
431
432 if (ssl2_compat)
433 s->msg_callback(1, SSL2_VERSION, 0, s->init_buf->data+2, ret-2, s, s->msg_callback_arg);
434 else
435 s->msg_callback(1, version, SSL3_RT_HANDSHAKE, s->init_buf->data+5, ret-5, s, s->msg_callback_arg);
436 }
437
438 return ret; 331 return ret;
439 } 332 }
440 333
diff --git a/src/lib/libssl/src/ssl/s23_srvr.c b/src/lib/libssl/src/ssl/s23_srvr.c
index b73abc448f..e9edc34328 100644
--- a/src/lib/libssl/src/ssl/s23_srvr.c
+++ b/src/lib/libssl/src/ssl/s23_srvr.c
@@ -158,7 +158,7 @@ SSL_METHOD *SSLv23_server_method(void)
158int ssl23_accept(SSL *s) 158int ssl23_accept(SSL *s)
159 { 159 {
160 BUF_MEM *buf; 160 BUF_MEM *buf;
161 unsigned long Time=(unsigned long)time(NULL); 161 unsigned long Time=time(NULL);
162 void (*cb)(const SSL *ssl,int type,int val)=NULL; 162 void (*cb)(const SSL *ssl,int type,int val)=NULL;
163 int ret= -1; 163 int ret= -1;
164 int new_state,state; 164 int new_state,state;
@@ -268,6 +268,9 @@ int ssl23_get_client_hello(SSL *s)
268 int n=0,j; 268 int n=0,j;
269 int type=0; 269 int type=0;
270 int v[2]; 270 int v[2];
271#ifndef OPENSSL_NO_RSA
272 int use_sslv2_strong=0;
273#endif
271 274
272 if (s->state == SSL23_ST_SR_CLNT_HELLO_A) 275 if (s->state == SSL23_ST_SR_CLNT_HELLO_A)
273 { 276 {
diff --git a/src/lib/libssl/src/ssl/s2_clnt.c b/src/lib/libssl/src/ssl/s2_clnt.c
index eba04c715b..c67829f495 100644
--- a/src/lib/libssl/src/ssl/s2_clnt.c
+++ b/src/lib/libssl/src/ssl/s2_clnt.c
@@ -162,7 +162,7 @@ SSL_METHOD *SSLv2_client_method(void)
162 162
163int ssl2_connect(SSL *s) 163int ssl2_connect(SSL *s)
164 { 164 {
165 unsigned long l=(unsigned long)time(NULL); 165 unsigned long l=time(NULL);
166 BUF_MEM *buf=NULL; 166 BUF_MEM *buf=NULL;
167 int ret= -1; 167 int ret= -1;
168 void (*cb)(const SSL *ssl,int type,int val)=NULL; 168 void (*cb)(const SSL *ssl,int type,int val)=NULL;
@@ -584,7 +584,7 @@ static int client_hello(SSL *s)
584 s2n(SSL2_VERSION,p); /* version */ 584 s2n(SSL2_VERSION,p); /* version */
585 n=j=0; 585 n=j=0;
586 586
587 n=ssl_cipher_list_to_bytes(s,SSL_get_ciphers(s),d,0); 587 n=ssl_cipher_list_to_bytes(s,SSL_get_ciphers(s),d);
588 d+=n; 588 d+=n;
589 589
590 if (n == 0) 590 if (n == 0)
diff --git a/src/lib/libssl/src/ssl/s2_srvr.c b/src/lib/libssl/src/ssl/s2_srvr.c
index 7a4992b7aa..853871f28c 100644
--- a/src/lib/libssl/src/ssl/s2_srvr.c
+++ b/src/lib/libssl/src/ssl/s2_srvr.c
@@ -162,7 +162,7 @@ SSL_METHOD *SSLv2_server_method(void)
162 162
163int ssl2_accept(SSL *s) 163int ssl2_accept(SSL *s)
164 { 164 {
165 unsigned long l=(unsigned long)time(NULL); 165 unsigned long l=time(NULL);
166 BUF_MEM *buf=NULL; 166 BUF_MEM *buf=NULL;
167 int ret= -1; 167 int ret= -1;
168 long num1; 168 long num1;
@@ -797,7 +797,7 @@ static int server_hello(SSL *s)
797 /* lets send out the ciphers we like in the 797 /* lets send out the ciphers we like in the
798 * prefered order */ 798 * prefered order */
799 sk= s->session->ciphers; 799 sk= s->session->ciphers;
800 n=ssl_cipher_list_to_bytes(s,s->session->ciphers,d,0); 800 n=ssl_cipher_list_to_bytes(s,s->session->ciphers,d);
801 d+=n; 801 d+=n;
802 s2n(n,p); /* add cipher length */ 802 s2n(n,p); /* add cipher length */
803 } 803 }
diff --git a/src/lib/libssl/src/ssl/s3_clnt.c b/src/lib/libssl/src/ssl/s3_clnt.c
index 05194fdb31..ebf83b0322 100644
--- a/src/lib/libssl/src/ssl/s3_clnt.c
+++ b/src/lib/libssl/src/ssl/s3_clnt.c
@@ -165,11 +165,11 @@ SSL_METHOD *SSLv3_client_method(void)
165int ssl3_connect(SSL *s) 165int ssl3_connect(SSL *s)
166 { 166 {
167 BUF_MEM *buf=NULL; 167 BUF_MEM *buf=NULL;
168 unsigned long Time=(unsigned long)time(NULL),l; 168 unsigned long Time=time(NULL),l;
169 long num1; 169 long num1;
170 void (*cb)(const SSL *ssl,int type,int val)=NULL; 170 void (*cb)(const SSL *ssl,int type,int val)=NULL;
171 int ret= -1; 171 int ret= -1;
172 int new_state,state,skip=0;; 172 int new_state,state,skip=0;
173 173
174 RAND_add(&Time,sizeof(Time),0); 174 RAND_add(&Time,sizeof(Time),0);
175 ERR_clear_error(); 175 ERR_clear_error();
@@ -533,7 +533,7 @@ static int ssl3_client_hello(SSL *s)
533 /* else use the pre-loaded session */ 533 /* else use the pre-loaded session */
534 534
535 p=s->s3->client_random; 535 p=s->s3->client_random;
536 Time=(unsigned long)time(NULL); /* Time */ 536 Time=time(NULL); /* Time */
537 l2n(Time,p); 537 l2n(Time,p);
538 if(RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE-4) <= 0) 538 if(RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE-4) <= 0)
539 goto err; 539 goto err;
@@ -567,7 +567,7 @@ static int ssl3_client_hello(SSL *s)
567 } 567 }
568 568
569 /* Ciphers supported */ 569 /* Ciphers supported */
570 i=ssl_cipher_list_to_bytes(s,SSL_get_ciphers(s),&(p[2]),0); 570 i=ssl_cipher_list_to_bytes(s,SSL_get_ciphers(s),&(p[2]));
571 if (i == 0) 571 if (i == 0)
572 { 572 {
573 SSLerr(SSL_F_SSL3_CLIENT_HELLO,SSL_R_NO_CIPHERS_AVAILABLE); 573 SSLerr(SSL_F_SSL3_CLIENT_HELLO,SSL_R_NO_CIPHERS_AVAILABLE);
diff --git a/src/lib/libssl/src/ssl/s3_lib.c b/src/lib/libssl/src/ssl/s3_lib.c
index a77588e725..9bf1dbec06 100644
--- a/src/lib/libssl/src/ssl/s3_lib.c
+++ b/src/lib/libssl/src/ssl/s3_lib.c
@@ -835,7 +835,7 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
835 TLS1_TXT_RSA_WITH_AES_128_SHA, 835 TLS1_TXT_RSA_WITH_AES_128_SHA,
836 TLS1_CK_RSA_WITH_AES_128_SHA, 836 TLS1_CK_RSA_WITH_AES_128_SHA,
837 SSL_kRSA|SSL_aRSA|SSL_AES|SSL_SHA |SSL_TLSV1, 837 SSL_kRSA|SSL_aRSA|SSL_AES|SSL_SHA |SSL_TLSV1,
838 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 838 SSL_NOT_EXP|SSL_MEDIUM|SSL_FIPS,
839 0, 839 0,
840 128, 840 128,
841 128, 841 128,
@@ -848,7 +848,7 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
848 TLS1_TXT_DH_DSS_WITH_AES_128_SHA, 848 TLS1_TXT_DH_DSS_WITH_AES_128_SHA,
849 TLS1_CK_DH_DSS_WITH_AES_128_SHA, 849 TLS1_CK_DH_DSS_WITH_AES_128_SHA,
850 SSL_kDHd|SSL_aDH|SSL_AES|SSL_SHA|SSL_TLSV1, 850 SSL_kDHd|SSL_aDH|SSL_AES|SSL_SHA|SSL_TLSV1,
851 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 851 SSL_NOT_EXP|SSL_MEDIUM|SSL_FIPS,
852 0, 852 0,
853 128, 853 128,
854 128, 854 128,
@@ -861,7 +861,7 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
861 TLS1_TXT_DH_RSA_WITH_AES_128_SHA, 861 TLS1_TXT_DH_RSA_WITH_AES_128_SHA,
862 TLS1_CK_DH_RSA_WITH_AES_128_SHA, 862 TLS1_CK_DH_RSA_WITH_AES_128_SHA,
863 SSL_kDHr|SSL_aDH|SSL_AES|SSL_SHA|SSL_TLSV1, 863 SSL_kDHr|SSL_aDH|SSL_AES|SSL_SHA|SSL_TLSV1,
864 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 864 SSL_NOT_EXP|SSL_MEDIUM|SSL_FIPS,
865 0, 865 0,
866 128, 866 128,
867 128, 867 128,
@@ -874,7 +874,7 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
874 TLS1_TXT_DHE_DSS_WITH_AES_128_SHA, 874 TLS1_TXT_DHE_DSS_WITH_AES_128_SHA,
875 TLS1_CK_DHE_DSS_WITH_AES_128_SHA, 875 TLS1_CK_DHE_DSS_WITH_AES_128_SHA,
876 SSL_kEDH|SSL_aDSS|SSL_AES|SSL_SHA|SSL_TLSV1, 876 SSL_kEDH|SSL_aDSS|SSL_AES|SSL_SHA|SSL_TLSV1,
877 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 877 SSL_NOT_EXP|SSL_MEDIUM|SSL_FIPS,
878 0, 878 0,
879 128, 879 128,
880 128, 880 128,
@@ -887,7 +887,7 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
887 TLS1_TXT_DHE_RSA_WITH_AES_128_SHA, 887 TLS1_TXT_DHE_RSA_WITH_AES_128_SHA,
888 TLS1_CK_DHE_RSA_WITH_AES_128_SHA, 888 TLS1_CK_DHE_RSA_WITH_AES_128_SHA,
889 SSL_kEDH|SSL_aRSA|SSL_AES|SSL_SHA|SSL_TLSV1, 889 SSL_kEDH|SSL_aRSA|SSL_AES|SSL_SHA|SSL_TLSV1,
890 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 890 SSL_NOT_EXP|SSL_MEDIUM|SSL_FIPS,
891 0, 891 0,
892 128, 892 128,
893 128, 893 128,
@@ -900,7 +900,7 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
900 TLS1_TXT_ADH_WITH_AES_128_SHA, 900 TLS1_TXT_ADH_WITH_AES_128_SHA,
901 TLS1_CK_ADH_WITH_AES_128_SHA, 901 TLS1_CK_ADH_WITH_AES_128_SHA,
902 SSL_kEDH|SSL_aNULL|SSL_AES|SSL_SHA|SSL_TLSV1, 902 SSL_kEDH|SSL_aNULL|SSL_AES|SSL_SHA|SSL_TLSV1,
903 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 903 SSL_NOT_EXP|SSL_MEDIUM|SSL_FIPS,
904 0, 904 0,
905 128, 905 128,
906 128, 906 128,
diff --git a/src/lib/libssl/src/ssl/s3_srvr.c b/src/lib/libssl/src/ssl/s3_srvr.c
index 36fc39d7f8..c4a1a71523 100644
--- a/src/lib/libssl/src/ssl/s3_srvr.c
+++ b/src/lib/libssl/src/ssl/s3_srvr.c
@@ -173,7 +173,7 @@ SSL_METHOD *SSLv3_server_method(void)
173int ssl3_accept(SSL *s) 173int ssl3_accept(SSL *s)
174 { 174 {
175 BUF_MEM *buf; 175 BUF_MEM *buf;
176 unsigned long l,Time=(unsigned long)time(NULL); 176 unsigned long l,Time=time(NULL);
177 void (*cb)(const SSL *ssl,int type,int val)=NULL; 177 void (*cb)(const SSL *ssl,int type,int val)=NULL;
178 long num1; 178 long num1;
179 int ret= -1; 179 int ret= -1;
@@ -954,7 +954,7 @@ static int ssl3_send_server_hello(SSL *s)
954 { 954 {
955 buf=(unsigned char *)s->init_buf->data; 955 buf=(unsigned char *)s->init_buf->data;
956 p=s->s3->server_random; 956 p=s->s3->server_random;
957 Time=(unsigned long)time(NULL); /* Time */ 957 Time=time(NULL); /* Time */
958 l2n(Time,p); 958 l2n(Time,p);
959 if(RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE-4) <= 0) 959 if(RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE-4) <= 0)
960 return -1; 960 return -1;
diff --git a/src/lib/libssl/src/ssl/ssl-lib.com b/src/lib/libssl/src/ssl/ssl-lib.com
index f0665c6b86..163ade9f7a 100644
--- a/src/lib/libssl/src/ssl/ssl-lib.com
+++ b/src/lib/libssl/src/ssl/ssl-lib.com
@@ -749,7 +749,7 @@ $ CCDEFS = "TCPIP_TYPE_''P4'"
749$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS 749$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS
750$ CCEXTRAFLAGS = "" 750$ CCEXTRAFLAGS = ""
751$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS 751$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS
752$ CCDISABLEWARNINGS = "LONGLONGTYPE,LONGLONGSUFX,FOUNDCR" 752$ CCDISABLEWARNINGS = "LONGLONGTYPE,LONGLONGSUFX"
753$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN - 753$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN -
754 CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS 754 CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS
755$! 755$!
diff --git a/src/lib/libssl/src/ssl/ssl.h b/src/lib/libssl/src/ssl/ssl.h
index 99e188086b..3161f532cf 100644
--- a/src/lib/libssl/src/ssl/ssl.h
+++ b/src/lib/libssl/src/ssl/ssl.h
@@ -467,7 +467,7 @@ typedef struct ssl_session_st
467#define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x00000008L 467#define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x00000008L
468#define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x00000010L 468#define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x00000010L
469#define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x00000020L 469#define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x00000020L
470#define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x00000040L /* no effect since 0.9.7h and 0.9.8b */ 470#define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x00000040L
471#define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x00000080L 471#define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x00000080L
472#define SSL_OP_TLS_D5_BUG 0x00000100L 472#define SSL_OP_TLS_D5_BUG 0x00000100L
473#define SSL_OP_TLS_BLOCK_PADDING_BUG 0x00000200L 473#define SSL_OP_TLS_BLOCK_PADDING_BUG 0x00000200L
@@ -1567,7 +1567,6 @@ void ERR_load_SSL_strings(void);
1567#define SSL_F_SSL_CTRL 232 1567#define SSL_F_SSL_CTRL 232
1568#define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 168 1568#define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 168
1569#define SSL_F_SSL_CTX_NEW 169 1569#define SSL_F_SSL_CTX_NEW 169
1570#define SSL_F_SSL_CTX_SET_CIPHER_LIST 269
1571#define SSL_F_SSL_CTX_SET_PURPOSE 226 1570#define SSL_F_SSL_CTX_SET_PURPOSE 226
1572#define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 219 1571#define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 219
1573#define SSL_F_SSL_CTX_SET_SSL_VERSION 170 1572#define SSL_F_SSL_CTX_SET_SSL_VERSION 170
@@ -1597,7 +1596,6 @@ void ERR_load_SSL_strings(void);
1597#define SSL_F_SSL_SESSION_PRINT_FP 190 1596#define SSL_F_SSL_SESSION_PRINT_FP 190
1598#define SSL_F_SSL_SESS_CERT_NEW 225 1597#define SSL_F_SSL_SESS_CERT_NEW 225
1599#define SSL_F_SSL_SET_CERT 191 1598#define SSL_F_SSL_SET_CERT 191
1600#define SSL_F_SSL_SET_CIPHER_LIST 271
1601#define SSL_F_SSL_SET_FD 192 1599#define SSL_F_SSL_SET_FD 192
1602#define SSL_F_SSL_SET_PKEY 193 1600#define SSL_F_SSL_SET_PKEY 193
1603#define SSL_F_SSL_SET_PURPOSE 227 1601#define SSL_F_SSL_SET_PURPOSE 227
@@ -1676,39 +1674,40 @@ void ERR_load_SSL_strings(void);
1676#define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145 1674#define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145
1677#define SSL_R_DATA_LENGTH_TOO_LONG 146 1675#define SSL_R_DATA_LENGTH_TOO_LONG 146
1678#define SSL_R_DECRYPTION_FAILED 147 1676#define SSL_R_DECRYPTION_FAILED 147
1679#define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 281 1677#define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 1109
1680#define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148 1678#define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148
1681#define SSL_R_DIGEST_CHECK_FAILED 149 1679#define SSL_R_DIGEST_CHECK_FAILED 149
1682#define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150 1680#define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150
1683#define SSL_R_ERROR_GENERATING_TMP_RSA_KEY 282 1681#define SSL_R_ERROR_GENERATING_TMP_RSA_KEY 1092
1684#define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151 1682#define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151
1685#define SSL_R_EXCESSIVE_MESSAGE_SIZE 152 1683#define SSL_R_EXCESSIVE_MESSAGE_SIZE 152
1686#define SSL_R_EXTRA_DATA_IN_MESSAGE 153 1684#define SSL_R_EXTRA_DATA_IN_MESSAGE 153
1687#define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154 1685#define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154
1688#define SSL_R_HTTPS_PROXY_REQUEST 155 1686#define SSL_R_HTTPS_PROXY_REQUEST 155
1689#define SSL_R_HTTP_REQUEST 156 1687#define SSL_R_HTTP_REQUEST 156
1690#define SSL_R_ILLEGAL_PADDING 283 1688#define SSL_R_ILLEGAL_PADDING 1110
1691#define SSL_R_INVALID_CHALLENGE_LENGTH 158 1689#define SSL_R_INVALID_CHALLENGE_LENGTH 158
1692#define SSL_R_INVALID_COMMAND 280 1690#define SSL_R_INVALID_COMMAND 280
1693#define SSL_R_INVALID_PURPOSE 278 1691#define SSL_R_INVALID_PURPOSE 278
1694#define SSL_R_INVALID_TRUST 279 1692#define SSL_R_INVALID_TRUST 279
1695#define SSL_R_KEY_ARG_TOO_LONG 284 1693#define SSL_R_KEY_ARG_TOO_LONG 1112
1696#define SSL_R_KRB5 285 1694#define SSL_R_KRB5 1104
1697#define SSL_R_KRB5_C_CC_PRINC 286 1695#define SSL_R_KRB5_C_CC_PRINC 1094
1698#define SSL_R_KRB5_C_GET_CRED 287 1696#define SSL_R_KRB5_C_GET_CRED 1095
1699#define SSL_R_KRB5_C_INIT 288 1697#define SSL_R_KRB5_C_INIT 1096
1700#define SSL_R_KRB5_C_MK_REQ 289 1698#define SSL_R_KRB5_C_MK_REQ 1097
1701#define SSL_R_KRB5_S_BAD_TICKET 290 1699#define SSL_R_KRB5_S_BAD_TICKET 1098
1702#define SSL_R_KRB5_S_INIT 291 1700#define SSL_R_KRB5_S_INIT 1099
1703#define SSL_R_KRB5_S_RD_REQ 292 1701#define SSL_R_KRB5_S_RD_REQ 1108
1704#define SSL_R_KRB5_S_TKT_EXPIRED 293 1702#define SSL_R_KRB5_S_TKT_EXPIRED 1105
1705#define SSL_R_KRB5_S_TKT_NYV 294 1703#define SSL_R_KRB5_S_TKT_NYV 1106
1706#define SSL_R_KRB5_S_TKT_SKEW 295 1704#define SSL_R_KRB5_S_TKT_SKEW 1107
1707#define SSL_R_LENGTH_MISMATCH 159 1705#define SSL_R_LENGTH_MISMATCH 159
1708#define SSL_R_LENGTH_TOO_SHORT 160 1706#define SSL_R_LENGTH_TOO_SHORT 160
1709#define SSL_R_LIBRARY_BUG 274 1707#define SSL_R_LIBRARY_BUG 274
1710#define SSL_R_LIBRARY_HAS_NO_CIPHERS 161 1708#define SSL_R_LIBRARY_HAS_NO_CIPHERS 161
1711#define SSL_R_MESSAGE_TOO_LONG 296 1709#define SSL_R_MASTER_KEY_TOO_LONG 1112
1710#define SSL_R_MESSAGE_TOO_LONG 1111
1712#define SSL_R_MISSING_DH_DSA_CERT 162 1711#define SSL_R_MISSING_DH_DSA_CERT 162
1713#define SSL_R_MISSING_DH_KEY 163 1712#define SSL_R_MISSING_DH_KEY 163
1714#define SSL_R_MISSING_DH_RSA_CERT 164 1713#define SSL_R_MISSING_DH_RSA_CERT 164
@@ -1745,7 +1744,7 @@ void ERR_load_SSL_strings(void);
1745#define SSL_R_NULL_SSL_CTX 195 1744#define SSL_R_NULL_SSL_CTX 195
1746#define SSL_R_NULL_SSL_METHOD_PASSED 196 1745#define SSL_R_NULL_SSL_METHOD_PASSED 196
1747#define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197 1746#define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197
1748#define SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE 297 1747#define SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE 1115
1749#define SSL_R_PACKET_LENGTH_TOO_LONG 198 1748#define SSL_R_PACKET_LENGTH_TOO_LONG 198
1750#define SSL_R_PATH_TOO_LONG 270 1749#define SSL_R_PATH_TOO_LONG 270
1751#define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199 1750#define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199
@@ -1764,7 +1763,7 @@ void ERR_load_SSL_strings(void);
1764#define SSL_R_READ_WRONG_PACKET_TYPE 212 1763#define SSL_R_READ_WRONG_PACKET_TYPE 212
1765#define SSL_R_RECORD_LENGTH_MISMATCH 213 1764#define SSL_R_RECORD_LENGTH_MISMATCH 213
1766#define SSL_R_RECORD_TOO_LARGE 214 1765#define SSL_R_RECORD_TOO_LARGE 214
1767#define SSL_R_RECORD_TOO_SMALL 298 1766#define SSL_R_RECORD_TOO_SMALL 1093
1768#define SSL_R_REQUIRED_CIPHER_MISSING 215 1767#define SSL_R_REQUIRED_CIPHER_MISSING 215
1769#define SSL_R_REUSE_CERT_LENGTH_NOT_ZERO 216 1768#define SSL_R_REUSE_CERT_LENGTH_NOT_ZERO 216
1770#define SSL_R_REUSE_CERT_TYPE_NOT_ZERO 217 1769#define SSL_R_REUSE_CERT_TYPE_NOT_ZERO 217
@@ -1773,8 +1772,8 @@ void ERR_load_SSL_strings(void);
1773#define SSL_R_SHORT_READ 219 1772#define SSL_R_SHORT_READ 219
1774#define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220 1773#define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220
1775#define SSL_R_SSL23_DOING_SESSION_ID_REUSE 221 1774#define SSL_R_SSL23_DOING_SESSION_ID_REUSE 221
1776#define SSL_R_SSL2_CONNECTION_ID_TOO_LONG 299 1775#define SSL_R_SSL2_CONNECTION_ID_TOO_LONG 1114
1777#define SSL_R_SSL3_SESSION_ID_TOO_LONG 300 1776#define SSL_R_SSL3_SESSION_ID_TOO_LONG 1113
1778#define SSL_R_SSL3_SESSION_ID_TOO_SHORT 222 1777#define SSL_R_SSL3_SESSION_ID_TOO_SHORT 222
1779#define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042 1778#define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042
1780#define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020 1779#define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020
@@ -1785,15 +1784,20 @@ void ERR_load_SSL_strings(void);
1785#define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040 1784#define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040
1786#define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047 1785#define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047
1787#define SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041 1786#define SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041
1787#define SSL_R_SSLV3_ALERT_PEER_ERROR_CERTIFICATE 223
1788#define SSL_R_SSLV3_ALERT_PEER_ERROR_NO_CERTIFICATE 224
1789#define SSL_R_SSLV3_ALERT_PEER_ERROR_NO_CIPHER 225
1790#define SSL_R_SSLV3_ALERT_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE 226
1788#define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010 1791#define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010
1792#define SSL_R_SSLV3_ALERT_UNKNOWN_REMOTE_ERROR_TYPE 227
1789#define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043 1793#define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043
1790#define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION 228 1794#define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION 228
1791#define SSL_R_SSL_HANDSHAKE_FAILURE 229 1795#define SSL_R_SSL_HANDSHAKE_FAILURE 229
1792#define SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS 230 1796#define SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS 230
1793#define SSL_R_SSL_SESSION_ID_CALLBACK_FAILED 301 1797#define SSL_R_SSL_SESSION_ID_CALLBACK_FAILED 1102
1794#define SSL_R_SSL_SESSION_ID_CONFLICT 302 1798#define SSL_R_SSL_SESSION_ID_CONFLICT 1103
1795#define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG 273 1799#define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG 273
1796#define SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH 303 1800#define SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH 1101
1797#define SSL_R_SSL_SESSION_ID_IS_DIFFERENT 231 1801#define SSL_R_SSL_SESSION_ID_IS_DIFFERENT 231
1798#define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049 1802#define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049
1799#define SSL_R_TLSV1_ALERT_DECODE_ERROR 1050 1803#define SSL_R_TLSV1_ALERT_DECODE_ERROR 1050
@@ -1834,6 +1838,7 @@ void ERR_load_SSL_strings(void);
1834#define SSL_R_UNKNOWN_STATE 255 1838#define SSL_R_UNKNOWN_STATE 255
1835#define SSL_R_UNSUPPORTED_CIPHER 256 1839#define SSL_R_UNSUPPORTED_CIPHER 256
1836#define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257 1840#define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257
1841#define SSL_R_UNSUPPORTED_OPTION 1091
1837#define SSL_R_UNSUPPORTED_PROTOCOL 258 1842#define SSL_R_UNSUPPORTED_PROTOCOL 258
1838#define SSL_R_UNSUPPORTED_SSL_VERSION 259 1843#define SSL_R_UNSUPPORTED_SSL_VERSION 259
1839#define SSL_R_WRITE_BIO_NOT_SET 260 1844#define SSL_R_WRITE_BIO_NOT_SET 260
diff --git a/src/lib/libssl/src/ssl/ssl_asn1.c b/src/lib/libssl/src/ssl/ssl_asn1.c
index fc5fcce108..4d5900ad2f 100644
--- a/src/lib/libssl/src/ssl/ssl_asn1.c
+++ b/src/lib/libssl/src/ssl/ssl_asn1.c
@@ -344,7 +344,7 @@ SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char * const *pp,
344 OPENSSL_free(ai.data); ai.data=NULL; ai.length=0; 344 OPENSSL_free(ai.data); ai.data=NULL; ai.length=0;
345 } 345 }
346 else 346 else
347 ret->time=(unsigned long)time(NULL); 347 ret->time=time(NULL);
348 348
349 ai.length=0; 349 ai.length=0;
350 M_ASN1_D2I_get_EXP_opt(aip,d2i_ASN1_INTEGER,2); 350 M_ASN1_D2I_get_EXP_opt(aip,d2i_ASN1_INTEGER,2);
diff --git a/src/lib/libssl/src/ssl/ssl_cert.c b/src/lib/libssl/src/ssl/ssl_cert.c
index b779e6bb4d..b8b9bc2390 100644
--- a/src/lib/libssl/src/ssl/ssl_cert.c
+++ b/src/lib/libssl/src/ssl/ssl_cert.c
@@ -616,13 +616,14 @@ STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file)
616 BIO *in; 616 BIO *in;
617 X509 *x=NULL; 617 X509 *x=NULL;
618 X509_NAME *xn=NULL; 618 X509_NAME *xn=NULL;
619 STACK_OF(X509_NAME) *ret = NULL,*sk; 619 STACK_OF(X509_NAME) *ret,*sk;
620 620
621 ret=sk_X509_NAME_new_null();
621 sk=sk_X509_NAME_new(xname_cmp); 622 sk=sk_X509_NAME_new(xname_cmp);
622 623
623 in=BIO_new(BIO_s_file_internal()); 624 in=BIO_new(BIO_s_file_internal());
624 625
625 if ((sk == NULL) || (in == NULL)) 626 if ((ret == NULL) || (sk == NULL) || (in == NULL))
626 { 627 {
627 SSLerr(SSL_F_SSL_LOAD_CLIENT_CA_FILE,ERR_R_MALLOC_FAILURE); 628 SSLerr(SSL_F_SSL_LOAD_CLIENT_CA_FILE,ERR_R_MALLOC_FAILURE);
628 goto err; 629 goto err;
@@ -635,15 +636,6 @@ STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file)
635 { 636 {
636 if (PEM_read_bio_X509(in,&x,NULL,NULL) == NULL) 637 if (PEM_read_bio_X509(in,&x,NULL,NULL) == NULL)
637 break; 638 break;
638 if (ret == NULL)
639 {
640 ret = sk_X509_NAME_new_null();
641 if (ret == NULL)
642 {
643 SSLerr(SSL_F_SSL_LOAD_CLIENT_CA_FILE,ERR_R_MALLOC_FAILURE);
644 goto err;
645 }
646 }
647 if ((xn=X509_get_subject_name(x)) == NULL) goto err; 639 if ((xn=X509_get_subject_name(x)) == NULL) goto err;
648 /* check for duplicates */ 640 /* check for duplicates */
649 xn=X509_NAME_dup(xn); 641 xn=X509_NAME_dup(xn);
@@ -666,8 +658,6 @@ err:
666 if (sk != NULL) sk_X509_NAME_free(sk); 658 if (sk != NULL) sk_X509_NAME_free(sk);
667 if (in != NULL) BIO_free(in); 659 if (in != NULL) BIO_free(in);
668 if (x != NULL) X509_free(x); 660 if (x != NULL) X509_free(x);
669 if (ret != NULL)
670 ERR_clear_error();
671 return(ret); 661 return(ret);
672 } 662 }
673#endif 663#endif
diff --git a/src/lib/libssl/src/ssl/ssl_ciph.c b/src/lib/libssl/src/ssl/ssl_ciph.c
index 3df5e2fa80..a7ccefa30c 100644
--- a/src/lib/libssl/src/ssl/ssl_ciph.c
+++ b/src/lib/libssl/src/ssl/ssl_ciph.c
@@ -74,7 +74,7 @@
74#define SSL_ENC_NUM_IDX 9 74#define SSL_ENC_NUM_IDX 9
75 75
76static const EVP_CIPHER *ssl_cipher_methods[SSL_ENC_NUM_IDX]={ 76static const EVP_CIPHER *ssl_cipher_methods[SSL_ENC_NUM_IDX]={
77 NULL,NULL,NULL,NULL,NULL,NULL, 77 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
78 }; 78 };
79 79
80static STACK_OF(SSL_COMP) *ssl_comp_methods=NULL; 80static STACK_OF(SSL_COMP) *ssl_comp_methods=NULL;
@@ -253,7 +253,7 @@ int ssl_cipher_get_evp(const SSL_SESSION *s, const EVP_CIPHER **enc,
253 break; 253 break;
254 } 254 }
255 255
256 if ((i < 0) || (i > SSL_ENC_NUM_IDX)) 256 if ((i < 0) || (i >= SSL_ENC_NUM_IDX))
257 *enc=NULL; 257 *enc=NULL;
258 else 258 else
259 { 259 {
@@ -275,7 +275,7 @@ int ssl_cipher_get_evp(const SSL_SESSION *s, const EVP_CIPHER **enc,
275 i= -1; 275 i= -1;
276 break; 276 break;
277 } 277 }
278 if ((i < 0) || (i > SSL_MD_NUM_IDX)) 278 if ((i < 0) || (i >= SSL_MD_NUM_IDX))
279 *md=NULL; 279 *md=NULL;
280 else 280 else
281 *md=ssl_digest_methods[i]; 281 *md=ssl_digest_methods[i];
@@ -700,18 +700,9 @@ static int ssl_cipher_process_rulestr(const char *rule_str,
700 if (!found) 700 if (!found)
701 break; /* ignore this entry */ 701 break; /* ignore this entry */
702 702
703 /* New algorithms: 703 algorithms |= ca_list[j]->algorithms;
704 * 1 - any old restrictions apply outside new mask
705 * 2 - any new restrictions apply outside old mask
706 * 3 - enforce old & new where masks intersect
707 */
708 algorithms = (algorithms & ~ca_list[j]->mask) | /* 1 */
709 (ca_list[j]->algorithms & ~mask) | /* 2 */
710 (algorithms & ca_list[j]->algorithms); /* 3 */
711 mask |= ca_list[j]->mask; 704 mask |= ca_list[j]->mask;
712 algo_strength = (algo_strength & ~ca_list[j]->mask_strength) | 705 algo_strength |= ca_list[j]->algo_strength;
713 (ca_list[j]->algo_strength & ~mask_strength) |
714 (algo_strength & ca_list[j]->algo_strength);
715 mask_strength |= ca_list[j]->mask_strength; 706 mask_strength |= ca_list[j]->mask_strength;
716 707
717 if (!multi) break; 708 if (!multi) break;
@@ -765,7 +756,7 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
765 { 756 {
766 int ok, num_of_ciphers, num_of_alias_max, num_of_group_aliases; 757 int ok, num_of_ciphers, num_of_alias_max, num_of_group_aliases;
767 unsigned long disabled_mask; 758 unsigned long disabled_mask;
768 STACK_OF(SSL_CIPHER) *cipherstack, *tmp_cipher_list; 759 STACK_OF(SSL_CIPHER) *cipherstack;
769 const char *rule_p; 760 const char *rule_p;
770 CIPHER_ORDER *co_list = NULL, *head = NULL, *tail = NULL, *curr; 761 CIPHER_ORDER *co_list = NULL, *head = NULL, *tail = NULL, *curr;
771 SSL_CIPHER **ca_list = NULL; 762 SSL_CIPHER **ca_list = NULL;
@@ -773,8 +764,7 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
773 /* 764 /*
774 * Return with error if nothing to do. 765 * Return with error if nothing to do.
775 */ 766 */
776 if (rule_str == NULL || cipher_list == NULL || cipher_list_by_id == NULL) 767 if (rule_str == NULL) return(NULL);
777 return NULL;
778 768
779 if (init_ciphers) 769 if (init_ciphers)
780 { 770 {
@@ -885,18 +875,46 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
885 } 875 }
886 OPENSSL_free(co_list); /* Not needed any longer */ 876 OPENSSL_free(co_list); /* Not needed any longer */
887 877
888 tmp_cipher_list = sk_SSL_CIPHER_dup(cipherstack); 878 /*
889 if (tmp_cipher_list == NULL) 879 * The following passage is a little bit odd. If pointer variables
880 * were supplied to hold STACK_OF(SSL_CIPHER) return information,
881 * the old memory pointed to is free()ed. Then, however, the
882 * cipher_list entry will be assigned just a copy of the returned
883 * cipher stack. For cipher_list_by_id a copy of the cipher stack
884 * will be created. See next comment...
885 */
886 if (cipher_list != NULL)
887 {
888 if (*cipher_list != NULL)
889 sk_SSL_CIPHER_free(*cipher_list);
890 *cipher_list = cipherstack;
891 }
892
893 if (cipher_list_by_id != NULL)
894 {
895 if (*cipher_list_by_id != NULL)
896 sk_SSL_CIPHER_free(*cipher_list_by_id);
897 *cipher_list_by_id = sk_SSL_CIPHER_dup(cipherstack);
898 }
899
900 /*
901 * Now it is getting really strange. If something failed during
902 * the previous pointer assignment or if one of the pointers was
903 * not requested, the error condition is met. That might be
904 * discussable. The strange thing is however that in this case
905 * the memory "ret" pointed to is "free()ed" and hence the pointer
906 * cipher_list becomes wild. The memory reserved for
907 * cipher_list_by_id however is not "free()ed" and stays intact.
908 */
909 if ( (cipher_list_by_id == NULL) ||
910 (*cipher_list_by_id == NULL) ||
911 (cipher_list == NULL) ||
912 (*cipher_list == NULL))
890 { 913 {
891 sk_SSL_CIPHER_free(cipherstack); 914 sk_SSL_CIPHER_free(cipherstack);
892 return NULL; 915 return(NULL);
893 } 916 }
894 if (*cipher_list != NULL) 917
895 sk_SSL_CIPHER_free(*cipher_list);
896 *cipher_list = cipherstack;
897 if (*cipher_list_by_id != NULL)
898 sk_SSL_CIPHER_free(*cipher_list_by_id);
899 *cipher_list_by_id = tmp_cipher_list;
900 sk_SSL_CIPHER_set_cmp_func(*cipher_list_by_id,ssl_cipher_ptr_id_cmp); 918 sk_SSL_CIPHER_set_cmp_func(*cipher_list_by_id,ssl_cipher_ptr_id_cmp);
901 919
902 return(cipherstack); 920 return(cipherstack);
diff --git a/src/lib/libssl/src/ssl/ssl_err.c b/src/lib/libssl/src/ssl/ssl_err.c
index 4bcf591298..29b8ff4788 100644
--- a/src/lib/libssl/src/ssl/ssl_err.c
+++ b/src/lib/libssl/src/ssl/ssl_err.c
@@ -64,383 +64,384 @@
64 64
65/* BEGIN ERROR CODES */ 65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR 66#ifndef OPENSSL_NO_ERR
67
68#define ERR_FUNC(func) ERR_PACK(ERR_LIB_SSL,func,0)
69#define ERR_REASON(reason) ERR_PACK(ERR_LIB_SSL,0,reason)
70
71static ERR_STRING_DATA SSL_str_functs[]= 67static ERR_STRING_DATA SSL_str_functs[]=
72 { 68 {
73{ERR_FUNC(SSL_F_CLIENT_CERTIFICATE), "CLIENT_CERTIFICATE"}, 69{ERR_PACK(0,SSL_F_CLIENT_CERTIFICATE,0), "CLIENT_CERTIFICATE"},
74{ERR_FUNC(SSL_F_CLIENT_FINISHED), "CLIENT_FINISHED"}, 70{ERR_PACK(0,SSL_F_CLIENT_FINISHED,0), "CLIENT_FINISHED"},
75{ERR_FUNC(SSL_F_CLIENT_HELLO), "CLIENT_HELLO"}, 71{ERR_PACK(0,SSL_F_CLIENT_HELLO,0), "CLIENT_HELLO"},
76{ERR_FUNC(SSL_F_CLIENT_MASTER_KEY), "CLIENT_MASTER_KEY"}, 72{ERR_PACK(0,SSL_F_CLIENT_MASTER_KEY,0), "CLIENT_MASTER_KEY"},
77{ERR_FUNC(SSL_F_D2I_SSL_SESSION), "d2i_SSL_SESSION"}, 73{ERR_PACK(0,SSL_F_D2I_SSL_SESSION,0), "d2i_SSL_SESSION"},
78{ERR_FUNC(SSL_F_DO_SSL3_WRITE), "DO_SSL3_WRITE"}, 74{ERR_PACK(0,SSL_F_DO_SSL3_WRITE,0), "DO_SSL3_WRITE"},
79{ERR_FUNC(SSL_F_GET_CLIENT_FINISHED), "GET_CLIENT_FINISHED"}, 75{ERR_PACK(0,SSL_F_GET_CLIENT_FINISHED,0), "GET_CLIENT_FINISHED"},
80{ERR_FUNC(SSL_F_GET_CLIENT_HELLO), "GET_CLIENT_HELLO"}, 76{ERR_PACK(0,SSL_F_GET_CLIENT_HELLO,0), "GET_CLIENT_HELLO"},
81{ERR_FUNC(SSL_F_GET_CLIENT_MASTER_KEY), "GET_CLIENT_MASTER_KEY"}, 77{ERR_PACK(0,SSL_F_GET_CLIENT_MASTER_KEY,0), "GET_CLIENT_MASTER_KEY"},
82{ERR_FUNC(SSL_F_GET_SERVER_FINISHED), "GET_SERVER_FINISHED"}, 78{ERR_PACK(0,SSL_F_GET_SERVER_FINISHED,0), "GET_SERVER_FINISHED"},
83{ERR_FUNC(SSL_F_GET_SERVER_HELLO), "GET_SERVER_HELLO"}, 79{ERR_PACK(0,SSL_F_GET_SERVER_HELLO,0), "GET_SERVER_HELLO"},
84{ERR_FUNC(SSL_F_GET_SERVER_VERIFY), "GET_SERVER_VERIFY"}, 80{ERR_PACK(0,SSL_F_GET_SERVER_VERIFY,0), "GET_SERVER_VERIFY"},
85{ERR_FUNC(SSL_F_I2D_SSL_SESSION), "i2d_SSL_SESSION"}, 81{ERR_PACK(0,SSL_F_I2D_SSL_SESSION,0), "i2d_SSL_SESSION"},
86{ERR_FUNC(SSL_F_READ_N), "READ_N"}, 82{ERR_PACK(0,SSL_F_READ_N,0), "READ_N"},
87{ERR_FUNC(SSL_F_REQUEST_CERTIFICATE), "REQUEST_CERTIFICATE"}, 83{ERR_PACK(0,SSL_F_REQUEST_CERTIFICATE,0), "REQUEST_CERTIFICATE"},
88{ERR_FUNC(SSL_F_SERVER_FINISH), "SERVER_FINISH"}, 84{ERR_PACK(0,SSL_F_SERVER_FINISH,0), "SERVER_FINISH"},
89{ERR_FUNC(SSL_F_SERVER_HELLO), "SERVER_HELLO"}, 85{ERR_PACK(0,SSL_F_SERVER_HELLO,0), "SERVER_HELLO"},
90{ERR_FUNC(SSL_F_SERVER_VERIFY), "SERVER_VERIFY"}, 86{ERR_PACK(0,SSL_F_SERVER_VERIFY,0), "SERVER_VERIFY"},
91{ERR_FUNC(SSL_F_SSL23_ACCEPT), "SSL23_ACCEPT"}, 87{ERR_PACK(0,SSL_F_SSL23_ACCEPT,0), "SSL23_ACCEPT"},
92{ERR_FUNC(SSL_F_SSL23_CLIENT_HELLO), "SSL23_CLIENT_HELLO"}, 88{ERR_PACK(0,SSL_F_SSL23_CLIENT_HELLO,0), "SSL23_CLIENT_HELLO"},
93{ERR_FUNC(SSL_F_SSL23_CONNECT), "SSL23_CONNECT"}, 89{ERR_PACK(0,SSL_F_SSL23_CONNECT,0), "SSL23_CONNECT"},
94{ERR_FUNC(SSL_F_SSL23_GET_CLIENT_HELLO), "SSL23_GET_CLIENT_HELLO"}, 90{ERR_PACK(0,SSL_F_SSL23_GET_CLIENT_HELLO,0), "SSL23_GET_CLIENT_HELLO"},
95{ERR_FUNC(SSL_F_SSL23_GET_SERVER_HELLO), "SSL23_GET_SERVER_HELLO"}, 91{ERR_PACK(0,SSL_F_SSL23_GET_SERVER_HELLO,0), "SSL23_GET_SERVER_HELLO"},
96{ERR_FUNC(SSL_F_SSL23_PEEK), "SSL23_PEEK"}, 92{ERR_PACK(0,SSL_F_SSL23_PEEK,0), "SSL23_PEEK"},
97{ERR_FUNC(SSL_F_SSL23_READ), "SSL23_READ"}, 93{ERR_PACK(0,SSL_F_SSL23_READ,0), "SSL23_READ"},
98{ERR_FUNC(SSL_F_SSL23_WRITE), "SSL23_WRITE"}, 94{ERR_PACK(0,SSL_F_SSL23_WRITE,0), "SSL23_WRITE"},
99{ERR_FUNC(SSL_F_SSL2_ACCEPT), "SSL2_ACCEPT"}, 95{ERR_PACK(0,SSL_F_SSL2_ACCEPT,0), "SSL2_ACCEPT"},
100{ERR_FUNC(SSL_F_SSL2_CONNECT), "SSL2_CONNECT"}, 96{ERR_PACK(0,SSL_F_SSL2_CONNECT,0), "SSL2_CONNECT"},
101{ERR_FUNC(SSL_F_SSL2_ENC_INIT), "SSL2_ENC_INIT"}, 97{ERR_PACK(0,SSL_F_SSL2_ENC_INIT,0), "SSL2_ENC_INIT"},
102{ERR_FUNC(SSL_F_SSL2_GENERATE_KEY_MATERIAL), "SSL2_GENERATE_KEY_MATERIAL"}, 98{ERR_PACK(0,SSL_F_SSL2_GENERATE_KEY_MATERIAL,0), "SSL2_GENERATE_KEY_MATERIAL"},
103{ERR_FUNC(SSL_F_SSL2_PEEK), "SSL2_PEEK"}, 99{ERR_PACK(0,SSL_F_SSL2_PEEK,0), "SSL2_PEEK"},
104{ERR_FUNC(SSL_F_SSL2_READ), "SSL2_READ"}, 100{ERR_PACK(0,SSL_F_SSL2_READ,0), "SSL2_READ"},
105{ERR_FUNC(SSL_F_SSL2_READ_INTERNAL), "SSL2_READ_INTERNAL"}, 101{ERR_PACK(0,SSL_F_SSL2_READ_INTERNAL,0), "SSL2_READ_INTERNAL"},
106{ERR_FUNC(SSL_F_SSL2_SET_CERTIFICATE), "SSL2_SET_CERTIFICATE"}, 102{ERR_PACK(0,SSL_F_SSL2_SET_CERTIFICATE,0), "SSL2_SET_CERTIFICATE"},
107{ERR_FUNC(SSL_F_SSL2_WRITE), "SSL2_WRITE"}, 103{ERR_PACK(0,SSL_F_SSL2_WRITE,0), "SSL2_WRITE"},
108{ERR_FUNC(SSL_F_SSL3_ACCEPT), "SSL3_ACCEPT"}, 104{ERR_PACK(0,SSL_F_SSL3_ACCEPT,0), "SSL3_ACCEPT"},
109{ERR_FUNC(SSL_F_SSL3_CALLBACK_CTRL), "SSL3_CALLBACK_CTRL"}, 105{ERR_PACK(0,SSL_F_SSL3_CALLBACK_CTRL,0), "SSL3_CALLBACK_CTRL"},
110{ERR_FUNC(SSL_F_SSL3_CHANGE_CIPHER_STATE), "SSL3_CHANGE_CIPHER_STATE"}, 106{ERR_PACK(0,SSL_F_SSL3_CHANGE_CIPHER_STATE,0), "SSL3_CHANGE_CIPHER_STATE"},
111{ERR_FUNC(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM), "SSL3_CHECK_CERT_AND_ALGORITHM"}, 107{ERR_PACK(0,SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,0), "SSL3_CHECK_CERT_AND_ALGORITHM"},
112{ERR_FUNC(SSL_F_SSL3_CLIENT_HELLO), "SSL3_CLIENT_HELLO"}, 108{ERR_PACK(0,SSL_F_SSL3_CLIENT_HELLO,0), "SSL3_CLIENT_HELLO"},
113{ERR_FUNC(SSL_F_SSL3_CONNECT), "SSL3_CONNECT"}, 109{ERR_PACK(0,SSL_F_SSL3_CONNECT,0), "SSL3_CONNECT"},
114{ERR_FUNC(SSL_F_SSL3_CTRL), "SSL3_CTRL"}, 110{ERR_PACK(0,SSL_F_SSL3_CTRL,0), "SSL3_CTRL"},
115{ERR_FUNC(SSL_F_SSL3_CTX_CTRL), "SSL3_CTX_CTRL"}, 111{ERR_PACK(0,SSL_F_SSL3_CTX_CTRL,0), "SSL3_CTX_CTRL"},
116{ERR_FUNC(SSL_F_SSL3_ENC), "SSL3_ENC"}, 112{ERR_PACK(0,SSL_F_SSL3_ENC,0), "SSL3_ENC"},
117{ERR_FUNC(SSL_F_SSL3_GENERATE_KEY_BLOCK), "SSL3_GENERATE_KEY_BLOCK"}, 113{ERR_PACK(0,SSL_F_SSL3_GENERATE_KEY_BLOCK,0), "SSL3_GENERATE_KEY_BLOCK"},
118{ERR_FUNC(SSL_F_SSL3_GET_CERTIFICATE_REQUEST), "SSL3_GET_CERTIFICATE_REQUEST"}, 114{ERR_PACK(0,SSL_F_SSL3_GET_CERTIFICATE_REQUEST,0), "SSL3_GET_CERTIFICATE_REQUEST"},
119{ERR_FUNC(SSL_F_SSL3_GET_CERT_VERIFY), "SSL3_GET_CERT_VERIFY"}, 115{ERR_PACK(0,SSL_F_SSL3_GET_CERT_VERIFY,0), "SSL3_GET_CERT_VERIFY"},
120{ERR_FUNC(SSL_F_SSL3_GET_CLIENT_CERTIFICATE), "SSL3_GET_CLIENT_CERTIFICATE"}, 116{ERR_PACK(0,SSL_F_SSL3_GET_CLIENT_CERTIFICATE,0), "SSL3_GET_CLIENT_CERTIFICATE"},
121{ERR_FUNC(SSL_F_SSL3_GET_CLIENT_HELLO), "SSL3_GET_CLIENT_HELLO"}, 117{ERR_PACK(0,SSL_F_SSL3_GET_CLIENT_HELLO,0), "SSL3_GET_CLIENT_HELLO"},
122{ERR_FUNC(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE), "SSL3_GET_CLIENT_KEY_EXCHANGE"}, 118{ERR_PACK(0,SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,0), "SSL3_GET_CLIENT_KEY_EXCHANGE"},
123{ERR_FUNC(SSL_F_SSL3_GET_FINISHED), "SSL3_GET_FINISHED"}, 119{ERR_PACK(0,SSL_F_SSL3_GET_FINISHED,0), "SSL3_GET_FINISHED"},
124{ERR_FUNC(SSL_F_SSL3_GET_KEY_EXCHANGE), "SSL3_GET_KEY_EXCHANGE"}, 120{ERR_PACK(0,SSL_F_SSL3_GET_KEY_EXCHANGE,0), "SSL3_GET_KEY_EXCHANGE"},
125{ERR_FUNC(SSL_F_SSL3_GET_MESSAGE), "SSL3_GET_MESSAGE"}, 121{ERR_PACK(0,SSL_F_SSL3_GET_MESSAGE,0), "SSL3_GET_MESSAGE"},
126{ERR_FUNC(SSL_F_SSL3_GET_RECORD), "SSL3_GET_RECORD"}, 122{ERR_PACK(0,SSL_F_SSL3_GET_RECORD,0), "SSL3_GET_RECORD"},
127{ERR_FUNC(SSL_F_SSL3_GET_SERVER_CERTIFICATE), "SSL3_GET_SERVER_CERTIFICATE"}, 123{ERR_PACK(0,SSL_F_SSL3_GET_SERVER_CERTIFICATE,0), "SSL3_GET_SERVER_CERTIFICATE"},
128{ERR_FUNC(SSL_F_SSL3_GET_SERVER_DONE), "SSL3_GET_SERVER_DONE"}, 124{ERR_PACK(0,SSL_F_SSL3_GET_SERVER_DONE,0), "SSL3_GET_SERVER_DONE"},
129{ERR_FUNC(SSL_F_SSL3_GET_SERVER_HELLO), "SSL3_GET_SERVER_HELLO"}, 125{ERR_PACK(0,SSL_F_SSL3_GET_SERVER_HELLO,0), "SSL3_GET_SERVER_HELLO"},
130{ERR_FUNC(SSL_F_SSL3_OUTPUT_CERT_CHAIN), "SSL3_OUTPUT_CERT_CHAIN"}, 126{ERR_PACK(0,SSL_F_SSL3_OUTPUT_CERT_CHAIN,0), "SSL3_OUTPUT_CERT_CHAIN"},
131{ERR_FUNC(SSL_F_SSL3_PEEK), "SSL3_PEEK"}, 127{ERR_PACK(0,SSL_F_SSL3_PEEK,0), "SSL3_PEEK"},
132{ERR_FUNC(SSL_F_SSL3_READ_BYTES), "SSL3_READ_BYTES"}, 128{ERR_PACK(0,SSL_F_SSL3_READ_BYTES,0), "SSL3_READ_BYTES"},
133{ERR_FUNC(SSL_F_SSL3_READ_N), "SSL3_READ_N"}, 129{ERR_PACK(0,SSL_F_SSL3_READ_N,0), "SSL3_READ_N"},
134{ERR_FUNC(SSL_F_SSL3_SEND_CERTIFICATE_REQUEST), "SSL3_SEND_CERTIFICATE_REQUEST"}, 130{ERR_PACK(0,SSL_F_SSL3_SEND_CERTIFICATE_REQUEST,0), "SSL3_SEND_CERTIFICATE_REQUEST"},
135{ERR_FUNC(SSL_F_SSL3_SEND_CLIENT_CERTIFICATE), "SSL3_SEND_CLIENT_CERTIFICATE"}, 131{ERR_PACK(0,SSL_F_SSL3_SEND_CLIENT_CERTIFICATE,0), "SSL3_SEND_CLIENT_CERTIFICATE"},
136{ERR_FUNC(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE), "SSL3_SEND_CLIENT_KEY_EXCHANGE"}, 132{ERR_PACK(0,SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,0), "SSL3_SEND_CLIENT_KEY_EXCHANGE"},
137{ERR_FUNC(SSL_F_SSL3_SEND_CLIENT_VERIFY), "SSL3_SEND_CLIENT_VERIFY"}, 133{ERR_PACK(0,SSL_F_SSL3_SEND_CLIENT_VERIFY,0), "SSL3_SEND_CLIENT_VERIFY"},
138{ERR_FUNC(SSL_F_SSL3_SEND_SERVER_CERTIFICATE), "SSL3_SEND_SERVER_CERTIFICATE"}, 134{ERR_PACK(0,SSL_F_SSL3_SEND_SERVER_CERTIFICATE,0), "SSL3_SEND_SERVER_CERTIFICATE"},
139{ERR_FUNC(SSL_F_SSL3_SEND_SERVER_HELLO), "SSL3_SEND_SERVER_HELLO"}, 135{ERR_PACK(0,SSL_F_SSL3_SEND_SERVER_HELLO,0), "SSL3_SEND_SERVER_HELLO"},
140{ERR_FUNC(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE), "SSL3_SEND_SERVER_KEY_EXCHANGE"}, 136{ERR_PACK(0,SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,0), "SSL3_SEND_SERVER_KEY_EXCHANGE"},
141{ERR_FUNC(SSL_F_SSL3_SETUP_BUFFERS), "SSL3_SETUP_BUFFERS"}, 137{ERR_PACK(0,SSL_F_SSL3_SETUP_BUFFERS,0), "SSL3_SETUP_BUFFERS"},
142{ERR_FUNC(SSL_F_SSL3_SETUP_KEY_BLOCK), "SSL3_SETUP_KEY_BLOCK"}, 138{ERR_PACK(0,SSL_F_SSL3_SETUP_KEY_BLOCK,0), "SSL3_SETUP_KEY_BLOCK"},
143{ERR_FUNC(SSL_F_SSL3_WRITE_BYTES), "SSL3_WRITE_BYTES"}, 139{ERR_PACK(0,SSL_F_SSL3_WRITE_BYTES,0), "SSL3_WRITE_BYTES"},
144{ERR_FUNC(SSL_F_SSL3_WRITE_PENDING), "SSL3_WRITE_PENDING"}, 140{ERR_PACK(0,SSL_F_SSL3_WRITE_PENDING,0), "SSL3_WRITE_PENDING"},
145{ERR_FUNC(SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK), "SSL_add_dir_cert_subjects_to_stack"}, 141{ERR_PACK(0,SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK,0), "SSL_add_dir_cert_subjects_to_stack"},
146{ERR_FUNC(SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK), "SSL_add_file_cert_subjects_to_stack"}, 142{ERR_PACK(0,SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK,0), "SSL_add_file_cert_subjects_to_stack"},
147{ERR_FUNC(SSL_F_SSL_BAD_METHOD), "SSL_BAD_METHOD"}, 143{ERR_PACK(0,SSL_F_SSL_BAD_METHOD,0), "SSL_BAD_METHOD"},
148{ERR_FUNC(SSL_F_SSL_BYTES_TO_CIPHER_LIST), "SSL_BYTES_TO_CIPHER_LIST"}, 144{ERR_PACK(0,SSL_F_SSL_BYTES_TO_CIPHER_LIST,0), "SSL_BYTES_TO_CIPHER_LIST"},
149{ERR_FUNC(SSL_F_SSL_CERT_DUP), "SSL_CERT_DUP"}, 145{ERR_PACK(0,SSL_F_SSL_CERT_DUP,0), "SSL_CERT_DUP"},
150{ERR_FUNC(SSL_F_SSL_CERT_INST), "SSL_CERT_INST"}, 146{ERR_PACK(0,SSL_F_SSL_CERT_INST,0), "SSL_CERT_INST"},
151{ERR_FUNC(SSL_F_SSL_CERT_INSTANTIATE), "SSL_CERT_INSTANTIATE"}, 147{ERR_PACK(0,SSL_F_SSL_CERT_INSTANTIATE,0), "SSL_CERT_INSTANTIATE"},
152{ERR_FUNC(SSL_F_SSL_CERT_NEW), "SSL_CERT_NEW"}, 148{ERR_PACK(0,SSL_F_SSL_CERT_NEW,0), "SSL_CERT_NEW"},
153{ERR_FUNC(SSL_F_SSL_CHECK_PRIVATE_KEY), "SSL_check_private_key"}, 149{ERR_PACK(0,SSL_F_SSL_CHECK_PRIVATE_KEY,0), "SSL_check_private_key"},
154{ERR_FUNC(SSL_F_SSL_CIPHER_PROCESS_RULESTR), "SSL_CIPHER_PROCESS_RULESTR"}, 150{ERR_PACK(0,SSL_F_SSL_CIPHER_PROCESS_RULESTR,0), "SSL_CIPHER_PROCESS_RULESTR"},
155{ERR_FUNC(SSL_F_SSL_CIPHER_STRENGTH_SORT), "SSL_CIPHER_STRENGTH_SORT"}, 151{ERR_PACK(0,SSL_F_SSL_CIPHER_STRENGTH_SORT,0), "SSL_CIPHER_STRENGTH_SORT"},
156{ERR_FUNC(SSL_F_SSL_CLEAR), "SSL_clear"}, 152{ERR_PACK(0,SSL_F_SSL_CLEAR,0), "SSL_clear"},
157{ERR_FUNC(SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD), "SSL_COMP_add_compression_method"}, 153{ERR_PACK(0,SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD,0), "SSL_COMP_add_compression_method"},
158{ERR_FUNC(SSL_F_SSL_CREATE_CIPHER_LIST), "SSL_CREATE_CIPHER_LIST"}, 154{ERR_PACK(0,SSL_F_SSL_CREATE_CIPHER_LIST,0), "SSL_CREATE_CIPHER_LIST"},
159{ERR_FUNC(SSL_F_SSL_CTRL), "SSL_ctrl"}, 155{ERR_PACK(0,SSL_F_SSL_CTRL,0), "SSL_ctrl"},
160{ERR_FUNC(SSL_F_SSL_CTX_CHECK_PRIVATE_KEY), "SSL_CTX_check_private_key"}, 156{ERR_PACK(0,SSL_F_SSL_CTX_CHECK_PRIVATE_KEY,0), "SSL_CTX_check_private_key"},
161{ERR_FUNC(SSL_F_SSL_CTX_NEW), "SSL_CTX_new"}, 157{ERR_PACK(0,SSL_F_SSL_CTX_NEW,0), "SSL_CTX_new"},
162{ERR_FUNC(SSL_F_SSL_CTX_SET_CIPHER_LIST), "SSL_CTX_set_cipher_list"}, 158{ERR_PACK(0,SSL_F_SSL_CTX_SET_PURPOSE,0), "SSL_CTX_set_purpose"},
163{ERR_FUNC(SSL_F_SSL_CTX_SET_PURPOSE), "SSL_CTX_set_purpose"}, 159{ERR_PACK(0,SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT,0), "SSL_CTX_set_session_id_context"},
164{ERR_FUNC(SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT), "SSL_CTX_set_session_id_context"}, 160{ERR_PACK(0,SSL_F_SSL_CTX_SET_SSL_VERSION,0), "SSL_CTX_set_ssl_version"},
165{ERR_FUNC(SSL_F_SSL_CTX_SET_SSL_VERSION), "SSL_CTX_set_ssl_version"}, 161{ERR_PACK(0,SSL_F_SSL_CTX_SET_TRUST,0), "SSL_CTX_set_trust"},
166{ERR_FUNC(SSL_F_SSL_CTX_SET_TRUST), "SSL_CTX_set_trust"}, 162{ERR_PACK(0,SSL_F_SSL_CTX_USE_CERTIFICATE,0), "SSL_CTX_use_certificate"},
167{ERR_FUNC(SSL_F_SSL_CTX_USE_CERTIFICATE), "SSL_CTX_use_certificate"}, 163{ERR_PACK(0,SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1,0), "SSL_CTX_use_certificate_ASN1"},
168{ERR_FUNC(SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1), "SSL_CTX_use_certificate_ASN1"}, 164{ERR_PACK(0,SSL_F_SSL_CTX_USE_CERTIFICATE_CHAIN_FILE,0), "SSL_CTX_use_certificate_chain_file"},
169{ERR_FUNC(SSL_F_SSL_CTX_USE_CERTIFICATE_CHAIN_FILE), "SSL_CTX_use_certificate_chain_file"}, 165{ERR_PACK(0,SSL_F_SSL_CTX_USE_CERTIFICATE_FILE,0), "SSL_CTX_use_certificate_file"},
170{ERR_FUNC(SSL_F_SSL_CTX_USE_CERTIFICATE_FILE), "SSL_CTX_use_certificate_file"}, 166{ERR_PACK(0,SSL_F_SSL_CTX_USE_PRIVATEKEY,0), "SSL_CTX_use_PrivateKey"},
171{ERR_FUNC(SSL_F_SSL_CTX_USE_PRIVATEKEY), "SSL_CTX_use_PrivateKey"}, 167{ERR_PACK(0,SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1,0), "SSL_CTX_use_PrivateKey_ASN1"},
172{ERR_FUNC(SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1), "SSL_CTX_use_PrivateKey_ASN1"}, 168{ERR_PACK(0,SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE,0), "SSL_CTX_use_PrivateKey_file"},
173{ERR_FUNC(SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE), "SSL_CTX_use_PrivateKey_file"}, 169{ERR_PACK(0,SSL_F_SSL_CTX_USE_RSAPRIVATEKEY,0), "SSL_CTX_use_RSAPrivateKey"},
174{ERR_FUNC(SSL_F_SSL_CTX_USE_RSAPRIVATEKEY), "SSL_CTX_use_RSAPrivateKey"}, 170{ERR_PACK(0,SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1,0), "SSL_CTX_use_RSAPrivateKey_ASN1"},
175{ERR_FUNC(SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1), "SSL_CTX_use_RSAPrivateKey_ASN1"}, 171{ERR_PACK(0,SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE,0), "SSL_CTX_use_RSAPrivateKey_file"},
176{ERR_FUNC(SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE), "SSL_CTX_use_RSAPrivateKey_file"}, 172{ERR_PACK(0,SSL_F_SSL_DO_HANDSHAKE,0), "SSL_do_handshake"},
177{ERR_FUNC(SSL_F_SSL_DO_HANDSHAKE), "SSL_do_handshake"}, 173{ERR_PACK(0,SSL_F_SSL_GET_NEW_SESSION,0), "SSL_GET_NEW_SESSION"},
178{ERR_FUNC(SSL_F_SSL_GET_NEW_SESSION), "SSL_GET_NEW_SESSION"}, 174{ERR_PACK(0,SSL_F_SSL_GET_PREV_SESSION,0), "SSL_GET_PREV_SESSION"},
179{ERR_FUNC(SSL_F_SSL_GET_PREV_SESSION), "SSL_GET_PREV_SESSION"}, 175{ERR_PACK(0,SSL_F_SSL_GET_SERVER_SEND_CERT,0), "SSL_GET_SERVER_SEND_CERT"},
180{ERR_FUNC(SSL_F_SSL_GET_SERVER_SEND_CERT), "SSL_GET_SERVER_SEND_CERT"}, 176{ERR_PACK(0,SSL_F_SSL_GET_SIGN_PKEY,0), "SSL_GET_SIGN_PKEY"},
181{ERR_FUNC(SSL_F_SSL_GET_SIGN_PKEY), "SSL_GET_SIGN_PKEY"}, 177{ERR_PACK(0,SSL_F_SSL_INIT_WBIO_BUFFER,0), "SSL_INIT_WBIO_BUFFER"},
182{ERR_FUNC(SSL_F_SSL_INIT_WBIO_BUFFER), "SSL_INIT_WBIO_BUFFER"}, 178{ERR_PACK(0,SSL_F_SSL_LOAD_CLIENT_CA_FILE,0), "SSL_load_client_CA_file"},
183{ERR_FUNC(SSL_F_SSL_LOAD_CLIENT_CA_FILE), "SSL_load_client_CA_file"}, 179{ERR_PACK(0,SSL_F_SSL_NEW,0), "SSL_new"},
184{ERR_FUNC(SSL_F_SSL_NEW), "SSL_new"}, 180{ERR_PACK(0,SSL_F_SSL_READ,0), "SSL_read"},
185{ERR_FUNC(SSL_F_SSL_READ), "SSL_read"}, 181{ERR_PACK(0,SSL_F_SSL_RSA_PRIVATE_DECRYPT,0), "SSL_RSA_PRIVATE_DECRYPT"},
186{ERR_FUNC(SSL_F_SSL_RSA_PRIVATE_DECRYPT), "SSL_RSA_PRIVATE_DECRYPT"}, 182{ERR_PACK(0,SSL_F_SSL_RSA_PUBLIC_ENCRYPT,0), "SSL_RSA_PUBLIC_ENCRYPT"},
187{ERR_FUNC(SSL_F_SSL_RSA_PUBLIC_ENCRYPT), "SSL_RSA_PUBLIC_ENCRYPT"}, 183{ERR_PACK(0,SSL_F_SSL_SESSION_NEW,0), "SSL_SESSION_new"},
188{ERR_FUNC(SSL_F_SSL_SESSION_NEW), "SSL_SESSION_new"}, 184{ERR_PACK(0,SSL_F_SSL_SESSION_PRINT_FP,0), "SSL_SESSION_print_fp"},
189{ERR_FUNC(SSL_F_SSL_SESSION_PRINT_FP), "SSL_SESSION_print_fp"}, 185{ERR_PACK(0,SSL_F_SSL_SESS_CERT_NEW,0), "SSL_SESS_CERT_NEW"},
190{ERR_FUNC(SSL_F_SSL_SESS_CERT_NEW), "SSL_SESS_CERT_NEW"}, 186{ERR_PACK(0,SSL_F_SSL_SET_CERT,0), "SSL_SET_CERT"},
191{ERR_FUNC(SSL_F_SSL_SET_CERT), "SSL_SET_CERT"}, 187{ERR_PACK(0,SSL_F_SSL_SET_FD,0), "SSL_set_fd"},
192{ERR_FUNC(SSL_F_SSL_SET_CIPHER_LIST), "SSL_set_cipher_list"}, 188{ERR_PACK(0,SSL_F_SSL_SET_PKEY,0), "SSL_SET_PKEY"},
193{ERR_FUNC(SSL_F_SSL_SET_FD), "SSL_set_fd"}, 189{ERR_PACK(0,SSL_F_SSL_SET_PURPOSE,0), "SSL_set_purpose"},
194{ERR_FUNC(SSL_F_SSL_SET_PKEY), "SSL_SET_PKEY"}, 190{ERR_PACK(0,SSL_F_SSL_SET_RFD,0), "SSL_set_rfd"},
195{ERR_FUNC(SSL_F_SSL_SET_PURPOSE), "SSL_set_purpose"}, 191{ERR_PACK(0,SSL_F_SSL_SET_SESSION,0), "SSL_set_session"},
196{ERR_FUNC(SSL_F_SSL_SET_RFD), "SSL_set_rfd"}, 192{ERR_PACK(0,SSL_F_SSL_SET_SESSION_ID_CONTEXT,0), "SSL_set_session_id_context"},
197{ERR_FUNC(SSL_F_SSL_SET_SESSION), "SSL_set_session"}, 193{ERR_PACK(0,SSL_F_SSL_SET_TRUST,0), "SSL_set_trust"},
198{ERR_FUNC(SSL_F_SSL_SET_SESSION_ID_CONTEXT), "SSL_set_session_id_context"}, 194{ERR_PACK(0,SSL_F_SSL_SET_WFD,0), "SSL_set_wfd"},
199{ERR_FUNC(SSL_F_SSL_SET_TRUST), "SSL_set_trust"}, 195{ERR_PACK(0,SSL_F_SSL_SHUTDOWN,0), "SSL_shutdown"},
200{ERR_FUNC(SSL_F_SSL_SET_WFD), "SSL_set_wfd"}, 196{ERR_PACK(0,SSL_F_SSL_UNDEFINED_CONST_FUNCTION,0), "SSL_UNDEFINED_CONST_FUNCTION"},
201{ERR_FUNC(SSL_F_SSL_SHUTDOWN), "SSL_shutdown"}, 197{ERR_PACK(0,SSL_F_SSL_UNDEFINED_FUNCTION,0), "SSL_UNDEFINED_FUNCTION"},
202{ERR_FUNC(SSL_F_SSL_UNDEFINED_CONST_FUNCTION), "SSL_UNDEFINED_CONST_FUNCTION"}, 198{ERR_PACK(0,SSL_F_SSL_USE_CERTIFICATE,0), "SSL_use_certificate"},
203{ERR_FUNC(SSL_F_SSL_UNDEFINED_FUNCTION), "SSL_UNDEFINED_FUNCTION"}, 199{ERR_PACK(0,SSL_F_SSL_USE_CERTIFICATE_ASN1,0), "SSL_use_certificate_ASN1"},
204{ERR_FUNC(SSL_F_SSL_USE_CERTIFICATE), "SSL_use_certificate"}, 200{ERR_PACK(0,SSL_F_SSL_USE_CERTIFICATE_FILE,0), "SSL_use_certificate_file"},
205{ERR_FUNC(SSL_F_SSL_USE_CERTIFICATE_ASN1), "SSL_use_certificate_ASN1"}, 201{ERR_PACK(0,SSL_F_SSL_USE_PRIVATEKEY,0), "SSL_use_PrivateKey"},
206{ERR_FUNC(SSL_F_SSL_USE_CERTIFICATE_FILE), "SSL_use_certificate_file"}, 202{ERR_PACK(0,SSL_F_SSL_USE_PRIVATEKEY_ASN1,0), "SSL_use_PrivateKey_ASN1"},
207{ERR_FUNC(SSL_F_SSL_USE_PRIVATEKEY), "SSL_use_PrivateKey"}, 203{ERR_PACK(0,SSL_F_SSL_USE_PRIVATEKEY_FILE,0), "SSL_use_PrivateKey_file"},
208{ERR_FUNC(SSL_F_SSL_USE_PRIVATEKEY_ASN1), "SSL_use_PrivateKey_ASN1"}, 204{ERR_PACK(0,SSL_F_SSL_USE_RSAPRIVATEKEY,0), "SSL_use_RSAPrivateKey"},
209{ERR_FUNC(SSL_F_SSL_USE_PRIVATEKEY_FILE), "SSL_use_PrivateKey_file"}, 205{ERR_PACK(0,SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1,0), "SSL_use_RSAPrivateKey_ASN1"},
210{ERR_FUNC(SSL_F_SSL_USE_RSAPRIVATEKEY), "SSL_use_RSAPrivateKey"}, 206{ERR_PACK(0,SSL_F_SSL_USE_RSAPRIVATEKEY_FILE,0), "SSL_use_RSAPrivateKey_file"},
211{ERR_FUNC(SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1), "SSL_use_RSAPrivateKey_ASN1"}, 207{ERR_PACK(0,SSL_F_SSL_VERIFY_CERT_CHAIN,0), "SSL_VERIFY_CERT_CHAIN"},
212{ERR_FUNC(SSL_F_SSL_USE_RSAPRIVATEKEY_FILE), "SSL_use_RSAPrivateKey_file"}, 208{ERR_PACK(0,SSL_F_SSL_WRITE,0), "SSL_write"},
213{ERR_FUNC(SSL_F_SSL_VERIFY_CERT_CHAIN), "SSL_VERIFY_CERT_CHAIN"}, 209{ERR_PACK(0,SSL_F_TLS1_CHANGE_CIPHER_STATE,0), "TLS1_CHANGE_CIPHER_STATE"},
214{ERR_FUNC(SSL_F_SSL_WRITE), "SSL_write"}, 210{ERR_PACK(0,SSL_F_TLS1_ENC,0), "TLS1_ENC"},
215{ERR_FUNC(SSL_F_TLS1_CHANGE_CIPHER_STATE), "TLS1_CHANGE_CIPHER_STATE"}, 211{ERR_PACK(0,SSL_F_TLS1_SETUP_KEY_BLOCK,0), "TLS1_SETUP_KEY_BLOCK"},
216{ERR_FUNC(SSL_F_TLS1_ENC), "TLS1_ENC"}, 212{ERR_PACK(0,SSL_F_WRITE_PENDING,0), "WRITE_PENDING"},
217{ERR_FUNC(SSL_F_TLS1_SETUP_KEY_BLOCK), "TLS1_SETUP_KEY_BLOCK"},
218{ERR_FUNC(SSL_F_WRITE_PENDING), "WRITE_PENDING"},
219{0,NULL} 213{0,NULL}
220 }; 214 };
221 215
222static ERR_STRING_DATA SSL_str_reasons[]= 216static ERR_STRING_DATA SSL_str_reasons[]=
223 { 217 {
224{ERR_REASON(SSL_R_APP_DATA_IN_HANDSHAKE) ,"app data in handshake"}, 218{SSL_R_APP_DATA_IN_HANDSHAKE ,"app data in handshake"},
225{ERR_REASON(SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT),"attempt to reuse session in different context"}, 219{SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT,"attempt to reuse session in different context"},
226{ERR_REASON(SSL_R_BAD_ALERT_RECORD) ,"bad alert record"}, 220{SSL_R_BAD_ALERT_RECORD ,"bad alert record"},
227{ERR_REASON(SSL_R_BAD_AUTHENTICATION_TYPE),"bad authentication type"}, 221{SSL_R_BAD_AUTHENTICATION_TYPE ,"bad authentication type"},
228{ERR_REASON(SSL_R_BAD_CHANGE_CIPHER_SPEC),"bad change cipher spec"}, 222{SSL_R_BAD_CHANGE_CIPHER_SPEC ,"bad change cipher spec"},
229{ERR_REASON(SSL_R_BAD_CHECKSUM) ,"bad checksum"}, 223{SSL_R_BAD_CHECKSUM ,"bad checksum"},
230{ERR_REASON(SSL_R_BAD_DATA_RETURNED_BY_CALLBACK),"bad data returned by callback"}, 224{SSL_R_BAD_DATA_RETURNED_BY_CALLBACK ,"bad data returned by callback"},
231{ERR_REASON(SSL_R_BAD_DECOMPRESSION) ,"bad decompression"}, 225{SSL_R_BAD_DECOMPRESSION ,"bad decompression"},
232{ERR_REASON(SSL_R_BAD_DH_G_LENGTH) ,"bad dh g length"}, 226{SSL_R_BAD_DH_G_LENGTH ,"bad dh g length"},
233{ERR_REASON(SSL_R_BAD_DH_PUB_KEY_LENGTH) ,"bad dh pub key length"}, 227{SSL_R_BAD_DH_PUB_KEY_LENGTH ,"bad dh pub key length"},
234{ERR_REASON(SSL_R_BAD_DH_P_LENGTH) ,"bad dh p length"}, 228{SSL_R_BAD_DH_P_LENGTH ,"bad dh p length"},
235{ERR_REASON(SSL_R_BAD_DIGEST_LENGTH) ,"bad digest length"}, 229{SSL_R_BAD_DIGEST_LENGTH ,"bad digest length"},
236{ERR_REASON(SSL_R_BAD_DSA_SIGNATURE) ,"bad dsa signature"}, 230{SSL_R_BAD_DSA_SIGNATURE ,"bad dsa signature"},
237{ERR_REASON(SSL_R_BAD_HELLO_REQUEST) ,"bad hello request"}, 231{SSL_R_BAD_HELLO_REQUEST ,"bad hello request"},
238{ERR_REASON(SSL_R_BAD_LENGTH) ,"bad length"}, 232{SSL_R_BAD_LENGTH ,"bad length"},
239{ERR_REASON(SSL_R_BAD_MAC_DECODE) ,"bad mac decode"}, 233{SSL_R_BAD_MAC_DECODE ,"bad mac decode"},
240{ERR_REASON(SSL_R_BAD_MESSAGE_TYPE) ,"bad message type"}, 234{SSL_R_BAD_MESSAGE_TYPE ,"bad message type"},
241{ERR_REASON(SSL_R_BAD_PACKET_LENGTH) ,"bad packet length"}, 235{SSL_R_BAD_PACKET_LENGTH ,"bad packet length"},
242{ERR_REASON(SSL_R_BAD_PROTOCOL_VERSION_NUMBER),"bad protocol version number"}, 236{SSL_R_BAD_PROTOCOL_VERSION_NUMBER ,"bad protocol version number"},
243{ERR_REASON(SSL_R_BAD_RESPONSE_ARGUMENT) ,"bad response argument"}, 237{SSL_R_BAD_RESPONSE_ARGUMENT ,"bad response argument"},
244{ERR_REASON(SSL_R_BAD_RSA_DECRYPT) ,"bad rsa decrypt"}, 238{SSL_R_BAD_RSA_DECRYPT ,"bad rsa decrypt"},
245{ERR_REASON(SSL_R_BAD_RSA_ENCRYPT) ,"bad rsa encrypt"}, 239{SSL_R_BAD_RSA_ENCRYPT ,"bad rsa encrypt"},
246{ERR_REASON(SSL_R_BAD_RSA_E_LENGTH) ,"bad rsa e length"}, 240{SSL_R_BAD_RSA_E_LENGTH ,"bad rsa e length"},
247{ERR_REASON(SSL_R_BAD_RSA_MODULUS_LENGTH),"bad rsa modulus length"}, 241{SSL_R_BAD_RSA_MODULUS_LENGTH ,"bad rsa modulus length"},
248{ERR_REASON(SSL_R_BAD_RSA_SIGNATURE) ,"bad rsa signature"}, 242{SSL_R_BAD_RSA_SIGNATURE ,"bad rsa signature"},
249{ERR_REASON(SSL_R_BAD_SIGNATURE) ,"bad signature"}, 243{SSL_R_BAD_SIGNATURE ,"bad signature"},
250{ERR_REASON(SSL_R_BAD_SSL_FILETYPE) ,"bad ssl filetype"}, 244{SSL_R_BAD_SSL_FILETYPE ,"bad ssl filetype"},
251{ERR_REASON(SSL_R_BAD_SSL_SESSION_ID_LENGTH),"bad ssl session id length"}, 245{SSL_R_BAD_SSL_SESSION_ID_LENGTH ,"bad ssl session id length"},
252{ERR_REASON(SSL_R_BAD_STATE) ,"bad state"}, 246{SSL_R_BAD_STATE ,"bad state"},
253{ERR_REASON(SSL_R_BAD_WRITE_RETRY) ,"bad write retry"}, 247{SSL_R_BAD_WRITE_RETRY ,"bad write retry"},
254{ERR_REASON(SSL_R_BIO_NOT_SET) ,"bio not set"}, 248{SSL_R_BIO_NOT_SET ,"bio not set"},
255{ERR_REASON(SSL_R_BLOCK_CIPHER_PAD_IS_WRONG),"block cipher pad is wrong"}, 249{SSL_R_BLOCK_CIPHER_PAD_IS_WRONG ,"block cipher pad is wrong"},
256{ERR_REASON(SSL_R_BN_LIB) ,"bn lib"}, 250{SSL_R_BN_LIB ,"bn lib"},
257{ERR_REASON(SSL_R_CA_DN_LENGTH_MISMATCH) ,"ca dn length mismatch"}, 251{SSL_R_CA_DN_LENGTH_MISMATCH ,"ca dn length mismatch"},
258{ERR_REASON(SSL_R_CA_DN_TOO_LONG) ,"ca dn too long"}, 252{SSL_R_CA_DN_TOO_LONG ,"ca dn too long"},
259{ERR_REASON(SSL_R_CCS_RECEIVED_EARLY) ,"ccs received early"}, 253{SSL_R_CCS_RECEIVED_EARLY ,"ccs received early"},
260{ERR_REASON(SSL_R_CERTIFICATE_VERIFY_FAILED),"certificate verify failed"}, 254{SSL_R_CERTIFICATE_VERIFY_FAILED ,"certificate verify failed"},
261{ERR_REASON(SSL_R_CERT_LENGTH_MISMATCH) ,"cert length mismatch"}, 255{SSL_R_CERT_LENGTH_MISMATCH ,"cert length mismatch"},
262{ERR_REASON(SSL_R_CHALLENGE_IS_DIFFERENT),"challenge is different"}, 256{SSL_R_CHALLENGE_IS_DIFFERENT ,"challenge is different"},
263{ERR_REASON(SSL_R_CIPHER_CODE_WRONG_LENGTH),"cipher code wrong length"}, 257{SSL_R_CIPHER_CODE_WRONG_LENGTH ,"cipher code wrong length"},
264{ERR_REASON(SSL_R_CIPHER_OR_HASH_UNAVAILABLE),"cipher or hash unavailable"}, 258{SSL_R_CIPHER_OR_HASH_UNAVAILABLE ,"cipher or hash unavailable"},
265{ERR_REASON(SSL_R_CIPHER_TABLE_SRC_ERROR),"cipher table src error"}, 259{SSL_R_CIPHER_TABLE_SRC_ERROR ,"cipher table src error"},
266{ERR_REASON(SSL_R_COMPRESSED_LENGTH_TOO_LONG),"compressed length too long"}, 260{SSL_R_COMPRESSED_LENGTH_TOO_LONG ,"compressed length too long"},
267{ERR_REASON(SSL_R_COMPRESSION_FAILURE) ,"compression failure"}, 261{SSL_R_COMPRESSION_FAILURE ,"compression failure"},
268{ERR_REASON(SSL_R_COMPRESSION_LIBRARY_ERROR),"compression library error"}, 262{SSL_R_COMPRESSION_LIBRARY_ERROR ,"compression library error"},
269{ERR_REASON(SSL_R_CONNECTION_ID_IS_DIFFERENT),"connection id is different"}, 263{SSL_R_CONNECTION_ID_IS_DIFFERENT ,"connection id is different"},
270{ERR_REASON(SSL_R_CONNECTION_TYPE_NOT_SET),"connection type not set"}, 264{SSL_R_CONNECTION_TYPE_NOT_SET ,"connection type not set"},
271{ERR_REASON(SSL_R_DATA_BETWEEN_CCS_AND_FINISHED),"data between ccs and finished"}, 265{SSL_R_DATA_BETWEEN_CCS_AND_FINISHED ,"data between ccs and finished"},
272{ERR_REASON(SSL_R_DATA_LENGTH_TOO_LONG) ,"data length too long"}, 266{SSL_R_DATA_LENGTH_TOO_LONG ,"data length too long"},
273{ERR_REASON(SSL_R_DECRYPTION_FAILED) ,"decryption failed"}, 267{SSL_R_DECRYPTION_FAILED ,"decryption failed"},
274{ERR_REASON(SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC),"decryption failed or bad record mac"}, 268{SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC,"decryption failed or bad record mac"},
275{ERR_REASON(SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG),"dh public value length is wrong"}, 269{SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG ,"dh public value length is wrong"},
276{ERR_REASON(SSL_R_DIGEST_CHECK_FAILED) ,"digest check failed"}, 270{SSL_R_DIGEST_CHECK_FAILED ,"digest check failed"},
277{ERR_REASON(SSL_R_ENCRYPTED_LENGTH_TOO_LONG),"encrypted length too long"}, 271{SSL_R_ENCRYPTED_LENGTH_TOO_LONG ,"encrypted length too long"},
278{ERR_REASON(SSL_R_ERROR_GENERATING_TMP_RSA_KEY),"error generating tmp rsa key"}, 272{SSL_R_ERROR_GENERATING_TMP_RSA_KEY ,"error generating tmp rsa key"},
279{ERR_REASON(SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST),"error in received cipher list"}, 273{SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST ,"error in received cipher list"},
280{ERR_REASON(SSL_R_EXCESSIVE_MESSAGE_SIZE),"excessive message size"}, 274{SSL_R_EXCESSIVE_MESSAGE_SIZE ,"excessive message size"},
281{ERR_REASON(SSL_R_EXTRA_DATA_IN_MESSAGE) ,"extra data in message"}, 275{SSL_R_EXTRA_DATA_IN_MESSAGE ,"extra data in message"},
282{ERR_REASON(SSL_R_GOT_A_FIN_BEFORE_A_CCS),"got a fin before a ccs"}, 276{SSL_R_GOT_A_FIN_BEFORE_A_CCS ,"got a fin before a ccs"},
283{ERR_REASON(SSL_R_HTTPS_PROXY_REQUEST) ,"https proxy request"}, 277{SSL_R_HTTPS_PROXY_REQUEST ,"https proxy request"},
284{ERR_REASON(SSL_R_HTTP_REQUEST) ,"http request"}, 278{SSL_R_HTTP_REQUEST ,"http request"},
285{ERR_REASON(SSL_R_ILLEGAL_PADDING) ,"illegal padding"}, 279{SSL_R_ILLEGAL_PADDING ,"illegal padding"},
286{ERR_REASON(SSL_R_INVALID_CHALLENGE_LENGTH),"invalid challenge length"}, 280{SSL_R_INVALID_CHALLENGE_LENGTH ,"invalid challenge length"},
287{ERR_REASON(SSL_R_INVALID_COMMAND) ,"invalid command"}, 281{SSL_R_INVALID_COMMAND ,"invalid command"},
288{ERR_REASON(SSL_R_INVALID_PURPOSE) ,"invalid purpose"}, 282{SSL_R_INVALID_PURPOSE ,"invalid purpose"},
289{ERR_REASON(SSL_R_INVALID_TRUST) ,"invalid trust"}, 283{SSL_R_INVALID_TRUST ,"invalid trust"},
290{ERR_REASON(SSL_R_KEY_ARG_TOO_LONG) ,"key arg too long"}, 284{SSL_R_KEY_ARG_TOO_LONG ,"key arg too long"},
291{ERR_REASON(SSL_R_KRB5) ,"krb5"}, 285{SSL_R_KRB5 ,"krb5"},
292{ERR_REASON(SSL_R_KRB5_C_CC_PRINC) ,"krb5 client cc principal (no tkt?)"}, 286{SSL_R_KRB5_C_CC_PRINC ,"krb5 client cc principal (no tkt?)"},
293{ERR_REASON(SSL_R_KRB5_C_GET_CRED) ,"krb5 client get cred"}, 287{SSL_R_KRB5_C_GET_CRED ,"krb5 client get cred"},
294{ERR_REASON(SSL_R_KRB5_C_INIT) ,"krb5 client init"}, 288{SSL_R_KRB5_C_INIT ,"krb5 client init"},
295{ERR_REASON(SSL_R_KRB5_C_MK_REQ) ,"krb5 client mk_req (expired tkt?)"}, 289{SSL_R_KRB5_C_MK_REQ ,"krb5 client mk_req (expired tkt?)"},
296{ERR_REASON(SSL_R_KRB5_S_BAD_TICKET) ,"krb5 server bad ticket"}, 290{SSL_R_KRB5_S_BAD_TICKET ,"krb5 server bad ticket"},
297{ERR_REASON(SSL_R_KRB5_S_INIT) ,"krb5 server init"}, 291{SSL_R_KRB5_S_INIT ,"krb5 server init"},
298{ERR_REASON(SSL_R_KRB5_S_RD_REQ) ,"krb5 server rd_req (keytab perms?)"}, 292{SSL_R_KRB5_S_RD_REQ ,"krb5 server rd_req (keytab perms?)"},
299{ERR_REASON(SSL_R_KRB5_S_TKT_EXPIRED) ,"krb5 server tkt expired"}, 293{SSL_R_KRB5_S_TKT_EXPIRED ,"krb5 server tkt expired"},
300{ERR_REASON(SSL_R_KRB5_S_TKT_NYV) ,"krb5 server tkt not yet valid"}, 294{SSL_R_KRB5_S_TKT_NYV ,"krb5 server tkt not yet valid"},
301{ERR_REASON(SSL_R_KRB5_S_TKT_SKEW) ,"krb5 server tkt skew"}, 295{SSL_R_KRB5_S_TKT_SKEW ,"krb5 server tkt skew"},
302{ERR_REASON(SSL_R_LENGTH_MISMATCH) ,"length mismatch"}, 296{SSL_R_LENGTH_MISMATCH ,"length mismatch"},
303{ERR_REASON(SSL_R_LENGTH_TOO_SHORT) ,"length too short"}, 297{SSL_R_LENGTH_TOO_SHORT ,"length too short"},
304{ERR_REASON(SSL_R_LIBRARY_BUG) ,"library bug"}, 298{SSL_R_LIBRARY_BUG ,"library bug"},
305{ERR_REASON(SSL_R_LIBRARY_HAS_NO_CIPHERS),"library has no ciphers"}, 299{SSL_R_LIBRARY_HAS_NO_CIPHERS ,"library has no ciphers"},
306{ERR_REASON(SSL_R_MESSAGE_TOO_LONG) ,"message too long"}, 300{SSL_R_MASTER_KEY_TOO_LONG ,"master key too long"},
307{ERR_REASON(SSL_R_MISSING_DH_DSA_CERT) ,"missing dh dsa cert"}, 301{SSL_R_MESSAGE_TOO_LONG ,"message too long"},
308{ERR_REASON(SSL_R_MISSING_DH_KEY) ,"missing dh key"}, 302{SSL_R_MISSING_DH_DSA_CERT ,"missing dh dsa cert"},
309{ERR_REASON(SSL_R_MISSING_DH_RSA_CERT) ,"missing dh rsa cert"}, 303{SSL_R_MISSING_DH_KEY ,"missing dh key"},
310{ERR_REASON(SSL_R_MISSING_DSA_SIGNING_CERT),"missing dsa signing cert"}, 304{SSL_R_MISSING_DH_RSA_CERT ,"missing dh rsa cert"},
311{ERR_REASON(SSL_R_MISSING_EXPORT_TMP_DH_KEY),"missing export tmp dh key"}, 305{SSL_R_MISSING_DSA_SIGNING_CERT ,"missing dsa signing cert"},
312{ERR_REASON(SSL_R_MISSING_EXPORT_TMP_RSA_KEY),"missing export tmp rsa key"}, 306{SSL_R_MISSING_EXPORT_TMP_DH_KEY ,"missing export tmp dh key"},
313{ERR_REASON(SSL_R_MISSING_RSA_CERTIFICATE),"missing rsa certificate"}, 307{SSL_R_MISSING_EXPORT_TMP_RSA_KEY ,"missing export tmp rsa key"},
314{ERR_REASON(SSL_R_MISSING_RSA_ENCRYPTING_CERT),"missing rsa encrypting cert"}, 308{SSL_R_MISSING_RSA_CERTIFICATE ,"missing rsa certificate"},
315{ERR_REASON(SSL_R_MISSING_RSA_SIGNING_CERT),"missing rsa signing cert"}, 309{SSL_R_MISSING_RSA_ENCRYPTING_CERT ,"missing rsa encrypting cert"},
316{ERR_REASON(SSL_R_MISSING_TMP_DH_KEY) ,"missing tmp dh key"}, 310{SSL_R_MISSING_RSA_SIGNING_CERT ,"missing rsa signing cert"},
317{ERR_REASON(SSL_R_MISSING_TMP_RSA_KEY) ,"missing tmp rsa key"}, 311{SSL_R_MISSING_TMP_DH_KEY ,"missing tmp dh key"},
318{ERR_REASON(SSL_R_MISSING_TMP_RSA_PKEY) ,"missing tmp rsa pkey"}, 312{SSL_R_MISSING_TMP_RSA_KEY ,"missing tmp rsa key"},
319{ERR_REASON(SSL_R_MISSING_VERIFY_MESSAGE),"missing verify message"}, 313{SSL_R_MISSING_TMP_RSA_PKEY ,"missing tmp rsa pkey"},
320{ERR_REASON(SSL_R_NON_SSLV2_INITIAL_PACKET),"non sslv2 initial packet"}, 314{SSL_R_MISSING_VERIFY_MESSAGE ,"missing verify message"},
321{ERR_REASON(SSL_R_NO_CERTIFICATES_RETURNED),"no certificates returned"}, 315{SSL_R_NON_SSLV2_INITIAL_PACKET ,"non sslv2 initial packet"},
322{ERR_REASON(SSL_R_NO_CERTIFICATE_ASSIGNED),"no certificate assigned"}, 316{SSL_R_NO_CERTIFICATES_RETURNED ,"no certificates returned"},
323{ERR_REASON(SSL_R_NO_CERTIFICATE_RETURNED),"no certificate returned"}, 317{SSL_R_NO_CERTIFICATE_ASSIGNED ,"no certificate assigned"},
324{ERR_REASON(SSL_R_NO_CERTIFICATE_SET) ,"no certificate set"}, 318{SSL_R_NO_CERTIFICATE_RETURNED ,"no certificate returned"},
325{ERR_REASON(SSL_R_NO_CERTIFICATE_SPECIFIED),"no certificate specified"}, 319{SSL_R_NO_CERTIFICATE_SET ,"no certificate set"},
326{ERR_REASON(SSL_R_NO_CIPHERS_AVAILABLE) ,"no ciphers available"}, 320{SSL_R_NO_CERTIFICATE_SPECIFIED ,"no certificate specified"},
327{ERR_REASON(SSL_R_NO_CIPHERS_PASSED) ,"no ciphers passed"}, 321{SSL_R_NO_CIPHERS_AVAILABLE ,"no ciphers available"},
328{ERR_REASON(SSL_R_NO_CIPHERS_SPECIFIED) ,"no ciphers specified"}, 322{SSL_R_NO_CIPHERS_PASSED ,"no ciphers passed"},
329{ERR_REASON(SSL_R_NO_CIPHER_LIST) ,"no cipher list"}, 323{SSL_R_NO_CIPHERS_SPECIFIED ,"no ciphers specified"},
330{ERR_REASON(SSL_R_NO_CIPHER_MATCH) ,"no cipher match"}, 324{SSL_R_NO_CIPHER_LIST ,"no cipher list"},
331{ERR_REASON(SSL_R_NO_CLIENT_CERT_RECEIVED),"no client cert received"}, 325{SSL_R_NO_CIPHER_MATCH ,"no cipher match"},
332{ERR_REASON(SSL_R_NO_COMPRESSION_SPECIFIED),"no compression specified"}, 326{SSL_R_NO_CLIENT_CERT_RECEIVED ,"no client cert received"},
333{ERR_REASON(SSL_R_NO_METHOD_SPECIFIED) ,"no method specified"}, 327{SSL_R_NO_COMPRESSION_SPECIFIED ,"no compression specified"},
334{ERR_REASON(SSL_R_NO_PRIVATEKEY) ,"no privatekey"}, 328{SSL_R_NO_METHOD_SPECIFIED ,"no method specified"},
335{ERR_REASON(SSL_R_NO_PRIVATE_KEY_ASSIGNED),"no private key assigned"}, 329{SSL_R_NO_PRIVATEKEY ,"no privatekey"},
336{ERR_REASON(SSL_R_NO_PROTOCOLS_AVAILABLE),"no protocols available"}, 330{SSL_R_NO_PRIVATE_KEY_ASSIGNED ,"no private key assigned"},
337{ERR_REASON(SSL_R_NO_PUBLICKEY) ,"no publickey"}, 331{SSL_R_NO_PROTOCOLS_AVAILABLE ,"no protocols available"},
338{ERR_REASON(SSL_R_NO_SHARED_CIPHER) ,"no shared cipher"}, 332{SSL_R_NO_PUBLICKEY ,"no publickey"},
339{ERR_REASON(SSL_R_NO_VERIFY_CALLBACK) ,"no verify callback"}, 333{SSL_R_NO_SHARED_CIPHER ,"no shared cipher"},
340{ERR_REASON(SSL_R_NULL_SSL_CTX) ,"null ssl ctx"}, 334{SSL_R_NO_VERIFY_CALLBACK ,"no verify callback"},
341{ERR_REASON(SSL_R_NULL_SSL_METHOD_PASSED),"null ssl method passed"}, 335{SSL_R_NULL_SSL_CTX ,"null ssl ctx"},
342{ERR_REASON(SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED),"old session cipher not returned"}, 336{SSL_R_NULL_SSL_METHOD_PASSED ,"null ssl method passed"},
343{ERR_REASON(SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE),"only tls allowed in fips mode"}, 337{SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED ,"old session cipher not returned"},
344{ERR_REASON(SSL_R_PACKET_LENGTH_TOO_LONG),"packet length too long"}, 338{SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE ,"only tls allowed in fips mode"},
345{ERR_REASON(SSL_R_PATH_TOO_LONG) ,"path too long"}, 339{SSL_R_PACKET_LENGTH_TOO_LONG ,"packet length too long"},
346{ERR_REASON(SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE),"peer did not return a certificate"}, 340{SSL_R_PATH_TOO_LONG ,"path too long"},
347{ERR_REASON(SSL_R_PEER_ERROR) ,"peer error"}, 341{SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE ,"peer did not return a certificate"},
348{ERR_REASON(SSL_R_PEER_ERROR_CERTIFICATE),"peer error certificate"}, 342{SSL_R_PEER_ERROR ,"peer error"},
349{ERR_REASON(SSL_R_PEER_ERROR_NO_CERTIFICATE),"peer error no certificate"}, 343{SSL_R_PEER_ERROR_CERTIFICATE ,"peer error certificate"},
350{ERR_REASON(SSL_R_PEER_ERROR_NO_CIPHER) ,"peer error no cipher"}, 344{SSL_R_PEER_ERROR_NO_CERTIFICATE ,"peer error no certificate"},
351{ERR_REASON(SSL_R_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE),"peer error unsupported certificate type"}, 345{SSL_R_PEER_ERROR_NO_CIPHER ,"peer error no cipher"},
352{ERR_REASON(SSL_R_PRE_MAC_LENGTH_TOO_LONG),"pre mac length too long"}, 346{SSL_R_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE,"peer error unsupported certificate type"},
353{ERR_REASON(SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS),"problems mapping cipher functions"}, 347{SSL_R_PRE_MAC_LENGTH_TOO_LONG ,"pre mac length too long"},
354{ERR_REASON(SSL_R_PROTOCOL_IS_SHUTDOWN) ,"protocol is shutdown"}, 348{SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS ,"problems mapping cipher functions"},
355{ERR_REASON(SSL_R_PUBLIC_KEY_ENCRYPT_ERROR),"public key encrypt error"}, 349{SSL_R_PROTOCOL_IS_SHUTDOWN ,"protocol is shutdown"},
356{ERR_REASON(SSL_R_PUBLIC_KEY_IS_NOT_RSA) ,"public key is not rsa"}, 350{SSL_R_PUBLIC_KEY_ENCRYPT_ERROR ,"public key encrypt error"},
357{ERR_REASON(SSL_R_PUBLIC_KEY_NOT_RSA) ,"public key not rsa"}, 351{SSL_R_PUBLIC_KEY_IS_NOT_RSA ,"public key is not rsa"},
358{ERR_REASON(SSL_R_READ_BIO_NOT_SET) ,"read bio not set"}, 352{SSL_R_PUBLIC_KEY_NOT_RSA ,"public key not rsa"},
359{ERR_REASON(SSL_R_READ_WRONG_PACKET_TYPE),"read wrong packet type"}, 353{SSL_R_READ_BIO_NOT_SET ,"read bio not set"},
360{ERR_REASON(SSL_R_RECORD_LENGTH_MISMATCH),"record length mismatch"}, 354{SSL_R_READ_WRONG_PACKET_TYPE ,"read wrong packet type"},
361{ERR_REASON(SSL_R_RECORD_TOO_LARGE) ,"record too large"}, 355{SSL_R_RECORD_LENGTH_MISMATCH ,"record length mismatch"},
362{ERR_REASON(SSL_R_RECORD_TOO_SMALL) ,"record too small"}, 356{SSL_R_RECORD_TOO_LARGE ,"record too large"},
363{ERR_REASON(SSL_R_REQUIRED_CIPHER_MISSING),"required cipher missing"}, 357{SSL_R_RECORD_TOO_SMALL ,"record too small"},
364{ERR_REASON(SSL_R_REUSE_CERT_LENGTH_NOT_ZERO),"reuse cert length not zero"}, 358{SSL_R_REQUIRED_CIPHER_MISSING ,"required cipher missing"},
365{ERR_REASON(SSL_R_REUSE_CERT_TYPE_NOT_ZERO),"reuse cert type not zero"}, 359{SSL_R_REUSE_CERT_LENGTH_NOT_ZERO ,"reuse cert length not zero"},
366{ERR_REASON(SSL_R_REUSE_CIPHER_LIST_NOT_ZERO),"reuse cipher list not zero"}, 360{SSL_R_REUSE_CERT_TYPE_NOT_ZERO ,"reuse cert type not zero"},
367{ERR_REASON(SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED),"session id context uninitialized"}, 361{SSL_R_REUSE_CIPHER_LIST_NOT_ZERO ,"reuse cipher list not zero"},
368{ERR_REASON(SSL_R_SHORT_READ) ,"short read"}, 362{SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED ,"session id context uninitialized"},
369{ERR_REASON(SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE),"signature for non signing certificate"}, 363{SSL_R_SHORT_READ ,"short read"},
370{ERR_REASON(SSL_R_SSL23_DOING_SESSION_ID_REUSE),"ssl23 doing session id reuse"}, 364{SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE,"signature for non signing certificate"},
371{ERR_REASON(SSL_R_SSL2_CONNECTION_ID_TOO_LONG),"ssl2 connection id too long"}, 365{SSL_R_SSL23_DOING_SESSION_ID_REUSE ,"ssl23 doing session id reuse"},
372{ERR_REASON(SSL_R_SSL3_SESSION_ID_TOO_LONG),"ssl3 session id too long"}, 366{SSL_R_SSL2_CONNECTION_ID_TOO_LONG ,"ssl2 connection id too long"},
373{ERR_REASON(SSL_R_SSL3_SESSION_ID_TOO_SHORT),"ssl3 session id too short"}, 367{SSL_R_SSL3_SESSION_ID_TOO_LONG ,"ssl3 session id too long"},
374{ERR_REASON(SSL_R_SSLV3_ALERT_BAD_CERTIFICATE),"sslv3 alert bad certificate"}, 368{SSL_R_SSL3_SESSION_ID_TOO_SHORT ,"ssl3 session id too short"},
375{ERR_REASON(SSL_R_SSLV3_ALERT_BAD_RECORD_MAC),"sslv3 alert bad record mac"}, 369{SSL_R_SSLV3_ALERT_BAD_CERTIFICATE ,"sslv3 alert bad certificate"},
376{ERR_REASON(SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED),"sslv3 alert certificate expired"}, 370{SSL_R_SSLV3_ALERT_BAD_RECORD_MAC ,"sslv3 alert bad record mac"},
377{ERR_REASON(SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED),"sslv3 alert certificate revoked"}, 371{SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED ,"sslv3 alert certificate expired"},
378{ERR_REASON(SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN),"sslv3 alert certificate unknown"}, 372{SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED ,"sslv3 alert certificate revoked"},
379{ERR_REASON(SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE),"sslv3 alert decompression failure"}, 373{SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN ,"sslv3 alert certificate unknown"},
380{ERR_REASON(SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE),"sslv3 alert handshake failure"}, 374{SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE ,"sslv3 alert decompression failure"},
381{ERR_REASON(SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER),"sslv3 alert illegal parameter"}, 375{SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE ,"sslv3 alert handshake failure"},
382{ERR_REASON(SSL_R_SSLV3_ALERT_NO_CERTIFICATE),"sslv3 alert no certificate"}, 376{SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER ,"sslv3 alert illegal parameter"},
383{ERR_REASON(SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE),"sslv3 alert unexpected message"}, 377{SSL_R_SSLV3_ALERT_NO_CERTIFICATE ,"sslv3 alert no certificate"},
384{ERR_REASON(SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE),"sslv3 alert unsupported certificate"}, 378{SSL_R_SSLV3_ALERT_PEER_ERROR_CERTIFICATE,"sslv3 alert peer error certificate"},
385{ERR_REASON(SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION),"ssl ctx has no default ssl version"}, 379{SSL_R_SSLV3_ALERT_PEER_ERROR_NO_CERTIFICATE,"sslv3 alert peer error no certificate"},
386{ERR_REASON(SSL_R_SSL_HANDSHAKE_FAILURE) ,"ssl handshake failure"}, 380{SSL_R_SSLV3_ALERT_PEER_ERROR_NO_CIPHER ,"sslv3 alert peer error no cipher"},
387{ERR_REASON(SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS),"ssl library has no ciphers"}, 381{SSL_R_SSLV3_ALERT_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE,"sslv3 alert peer error unsupported certificate type"},
388{ERR_REASON(SSL_R_SSL_SESSION_ID_CALLBACK_FAILED),"ssl session id callback failed"}, 382{SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE ,"sslv3 alert unexpected message"},
389{ERR_REASON(SSL_R_SSL_SESSION_ID_CONFLICT),"ssl session id conflict"}, 383{SSL_R_SSLV3_ALERT_UNKNOWN_REMOTE_ERROR_TYPE,"sslv3 alert unknown remote error type"},
390{ERR_REASON(SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG),"ssl session id context too long"}, 384{SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE,"sslv3 alert unsupported certificate"},
391{ERR_REASON(SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH),"ssl session id has bad length"}, 385{SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION,"ssl ctx has no default ssl version"},
392{ERR_REASON(SSL_R_SSL_SESSION_ID_IS_DIFFERENT),"ssl session id is different"}, 386{SSL_R_SSL_HANDSHAKE_FAILURE ,"ssl handshake failure"},
393{ERR_REASON(SSL_R_TLSV1_ALERT_ACCESS_DENIED),"tlsv1 alert access denied"}, 387{SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS ,"ssl library has no ciphers"},
394{ERR_REASON(SSL_R_TLSV1_ALERT_DECODE_ERROR),"tlsv1 alert decode error"}, 388{SSL_R_SSL_SESSION_ID_CALLBACK_FAILED ,"ssl session id callback failed"},
395{ERR_REASON(SSL_R_TLSV1_ALERT_DECRYPTION_FAILED),"tlsv1 alert decryption failed"}, 389{SSL_R_SSL_SESSION_ID_CONFLICT ,"ssl session id conflict"},
396{ERR_REASON(SSL_R_TLSV1_ALERT_DECRYPT_ERROR),"tlsv1 alert decrypt error"}, 390{SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG ,"ssl session id context too long"},
397{ERR_REASON(SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION),"tlsv1 alert export restriction"}, 391{SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH ,"ssl session id has bad length"},
398{ERR_REASON(SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY),"tlsv1 alert insufficient security"}, 392{SSL_R_SSL_SESSION_ID_IS_DIFFERENT ,"ssl session id is different"},
399{ERR_REASON(SSL_R_TLSV1_ALERT_INTERNAL_ERROR),"tlsv1 alert internal error"}, 393{SSL_R_TLSV1_ALERT_ACCESS_DENIED ,"tlsv1 alert access denied"},
400{ERR_REASON(SSL_R_TLSV1_ALERT_NO_RENEGOTIATION),"tlsv1 alert no renegotiation"}, 394{SSL_R_TLSV1_ALERT_DECODE_ERROR ,"tlsv1 alert decode error"},
401{ERR_REASON(SSL_R_TLSV1_ALERT_PROTOCOL_VERSION),"tlsv1 alert protocol version"}, 395{SSL_R_TLSV1_ALERT_DECRYPTION_FAILED ,"tlsv1 alert decryption failed"},
402{ERR_REASON(SSL_R_TLSV1_ALERT_RECORD_OVERFLOW),"tlsv1 alert record overflow"}, 396{SSL_R_TLSV1_ALERT_DECRYPT_ERROR ,"tlsv1 alert decrypt error"},
403{ERR_REASON(SSL_R_TLSV1_ALERT_UNKNOWN_CA),"tlsv1 alert unknown ca"}, 397{SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION ,"tlsv1 alert export restriction"},
404{ERR_REASON(SSL_R_TLSV1_ALERT_USER_CANCELLED),"tlsv1 alert user cancelled"}, 398{SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY ,"tlsv1 alert insufficient security"},
405{ERR_REASON(SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER),"tls client cert req with anon cipher"}, 399{SSL_R_TLSV1_ALERT_INTERNAL_ERROR ,"tlsv1 alert internal error"},
406{ERR_REASON(SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST),"tls peer did not respond with certificate list"}, 400{SSL_R_TLSV1_ALERT_NO_RENEGOTIATION ,"tlsv1 alert no renegotiation"},
407{ERR_REASON(SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG),"tls rsa encrypted value length is wrong"}, 401{SSL_R_TLSV1_ALERT_PROTOCOL_VERSION ,"tlsv1 alert protocol version"},
408{ERR_REASON(SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER),"tried to use unsupported cipher"}, 402{SSL_R_TLSV1_ALERT_RECORD_OVERFLOW ,"tlsv1 alert record overflow"},
409{ERR_REASON(SSL_R_UNABLE_TO_DECODE_DH_CERTS),"unable to decode dh certs"}, 403{SSL_R_TLSV1_ALERT_UNKNOWN_CA ,"tlsv1 alert unknown ca"},
410{ERR_REASON(SSL_R_UNABLE_TO_EXTRACT_PUBLIC_KEY),"unable to extract public key"}, 404{SSL_R_TLSV1_ALERT_USER_CANCELLED ,"tlsv1 alert user cancelled"},
411{ERR_REASON(SSL_R_UNABLE_TO_FIND_DH_PARAMETERS),"unable to find dh parameters"}, 405{SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER,"tls client cert req with anon cipher"},
412{ERR_REASON(SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS),"unable to find public key parameters"}, 406{SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST,"tls peer did not respond with certificate list"},
413{ERR_REASON(SSL_R_UNABLE_TO_FIND_SSL_METHOD),"unable to find ssl method"}, 407{SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG,"tls rsa encrypted value length is wrong"},
414{ERR_REASON(SSL_R_UNABLE_TO_LOAD_SSL2_MD5_ROUTINES),"unable to load ssl2 md5 routines"}, 408{SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER ,"tried to use unsupported cipher"},
415{ERR_REASON(SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES),"unable to load ssl3 md5 routines"}, 409{SSL_R_UNABLE_TO_DECODE_DH_CERTS ,"unable to decode dh certs"},
416{ERR_REASON(SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES),"unable to load ssl3 sha1 routines"}, 410{SSL_R_UNABLE_TO_EXTRACT_PUBLIC_KEY ,"unable to extract public key"},
417{ERR_REASON(SSL_R_UNEXPECTED_MESSAGE) ,"unexpected message"}, 411{SSL_R_UNABLE_TO_FIND_DH_PARAMETERS ,"unable to find dh parameters"},
418{ERR_REASON(SSL_R_UNEXPECTED_RECORD) ,"unexpected record"}, 412{SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS,"unable to find public key parameters"},
419{ERR_REASON(SSL_R_UNINITIALIZED) ,"uninitialized"}, 413{SSL_R_UNABLE_TO_FIND_SSL_METHOD ,"unable to find ssl method"},
420{ERR_REASON(SSL_R_UNKNOWN_ALERT_TYPE) ,"unknown alert type"}, 414{SSL_R_UNABLE_TO_LOAD_SSL2_MD5_ROUTINES ,"unable to load ssl2 md5 routines"},
421{ERR_REASON(SSL_R_UNKNOWN_CERTIFICATE_TYPE),"unknown certificate type"}, 415{SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES ,"unable to load ssl3 md5 routines"},
422{ERR_REASON(SSL_R_UNKNOWN_CIPHER_RETURNED),"unknown cipher returned"}, 416{SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES ,"unable to load ssl3 sha1 routines"},
423{ERR_REASON(SSL_R_UNKNOWN_CIPHER_TYPE) ,"unknown cipher type"}, 417{SSL_R_UNEXPECTED_MESSAGE ,"unexpected message"},
424{ERR_REASON(SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE),"unknown key exchange type"}, 418{SSL_R_UNEXPECTED_RECORD ,"unexpected record"},
425{ERR_REASON(SSL_R_UNKNOWN_PKEY_TYPE) ,"unknown pkey type"}, 419{SSL_R_UNINITIALIZED ,"uninitialized"},
426{ERR_REASON(SSL_R_UNKNOWN_PROTOCOL) ,"unknown protocol"}, 420{SSL_R_UNKNOWN_ALERT_TYPE ,"unknown alert type"},
427{ERR_REASON(SSL_R_UNKNOWN_REMOTE_ERROR_TYPE),"unknown remote error type"}, 421{SSL_R_UNKNOWN_CERTIFICATE_TYPE ,"unknown certificate type"},
428{ERR_REASON(SSL_R_UNKNOWN_SSL_VERSION) ,"unknown ssl version"}, 422{SSL_R_UNKNOWN_CIPHER_RETURNED ,"unknown cipher returned"},
429{ERR_REASON(SSL_R_UNKNOWN_STATE) ,"unknown state"}, 423{SSL_R_UNKNOWN_CIPHER_TYPE ,"unknown cipher type"},
430{ERR_REASON(SSL_R_UNSUPPORTED_CIPHER) ,"unsupported cipher"}, 424{SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE ,"unknown key exchange type"},
431{ERR_REASON(SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM),"unsupported compression algorithm"}, 425{SSL_R_UNKNOWN_PKEY_TYPE ,"unknown pkey type"},
432{ERR_REASON(SSL_R_UNSUPPORTED_PROTOCOL) ,"unsupported protocol"}, 426{SSL_R_UNKNOWN_PROTOCOL ,"unknown protocol"},
433{ERR_REASON(SSL_R_UNSUPPORTED_SSL_VERSION),"unsupported ssl version"}, 427{SSL_R_UNKNOWN_REMOTE_ERROR_TYPE ,"unknown remote error type"},
434{ERR_REASON(SSL_R_WRITE_BIO_NOT_SET) ,"write bio not set"}, 428{SSL_R_UNKNOWN_SSL_VERSION ,"unknown ssl version"},
435{ERR_REASON(SSL_R_WRONG_CIPHER_RETURNED) ,"wrong cipher returned"}, 429{SSL_R_UNKNOWN_STATE ,"unknown state"},
436{ERR_REASON(SSL_R_WRONG_MESSAGE_TYPE) ,"wrong message type"}, 430{SSL_R_UNSUPPORTED_CIPHER ,"unsupported cipher"},
437{ERR_REASON(SSL_R_WRONG_NUMBER_OF_KEY_BITS),"wrong number of key bits"}, 431{SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM ,"unsupported compression algorithm"},
438{ERR_REASON(SSL_R_WRONG_SIGNATURE_LENGTH),"wrong signature length"}, 432{SSL_R_UNSUPPORTED_OPTION ,"unsupported option"},
439{ERR_REASON(SSL_R_WRONG_SIGNATURE_SIZE) ,"wrong signature size"}, 433{SSL_R_UNSUPPORTED_PROTOCOL ,"unsupported protocol"},
440{ERR_REASON(SSL_R_WRONG_SSL_VERSION) ,"wrong ssl version"}, 434{SSL_R_UNSUPPORTED_SSL_VERSION ,"unsupported ssl version"},
441{ERR_REASON(SSL_R_WRONG_VERSION_NUMBER) ,"wrong version number"}, 435{SSL_R_WRITE_BIO_NOT_SET ,"write bio not set"},
442{ERR_REASON(SSL_R_X509_LIB) ,"x509 lib"}, 436{SSL_R_WRONG_CIPHER_RETURNED ,"wrong cipher returned"},
443{ERR_REASON(SSL_R_X509_VERIFICATION_SETUP_PROBLEMS),"x509 verification setup problems"}, 437{SSL_R_WRONG_MESSAGE_TYPE ,"wrong message type"},
438{SSL_R_WRONG_NUMBER_OF_KEY_BITS ,"wrong number of key bits"},
439{SSL_R_WRONG_SIGNATURE_LENGTH ,"wrong signature length"},
440{SSL_R_WRONG_SIGNATURE_SIZE ,"wrong signature size"},
441{SSL_R_WRONG_SSL_VERSION ,"wrong ssl version"},
442{SSL_R_WRONG_VERSION_NUMBER ,"wrong version number"},
443{SSL_R_X509_LIB ,"x509 lib"},
444{SSL_R_X509_VERIFICATION_SETUP_PROBLEMS ,"x509 verification setup problems"},
444{0,NULL} 445{0,NULL}
445 }; 446 };
446 447
@@ -454,8 +455,8 @@ void ERR_load_SSL_strings(void)
454 { 455 {
455 init=0; 456 init=0;
456#ifndef OPENSSL_NO_ERR 457#ifndef OPENSSL_NO_ERR
457 ERR_load_strings(0,SSL_str_functs); 458 ERR_load_strings(ERR_LIB_SSL,SSL_str_functs);
458 ERR_load_strings(0,SSL_str_reasons); 459 ERR_load_strings(ERR_LIB_SSL,SSL_str_reasons);
459#endif 460#endif
460 461
461 } 462 }
diff --git a/src/lib/libssl/src/ssl/ssl_lib.c b/src/lib/libssl/src/ssl/ssl_lib.c
index 2bd9a5af86..631229558f 100644
--- a/src/lib/libssl/src/ssl/ssl_lib.c
+++ b/src/lib/libssl/src/ssl/ssl_lib.c
@@ -125,7 +125,7 @@
125 125
126const char *SSL_version_str=OPENSSL_VERSION_TEXT; 126const char *SSL_version_str=OPENSSL_VERSION_TEXT;
127 127
128SSL3_ENC_METHOD ssl3_undef_enc_method={ 128OPENSSL_GLOBAL SSL3_ENC_METHOD ssl3_undef_enc_method={
129 /* evil casts, but these functions are only called if there's a library bug */ 129 /* evil casts, but these functions are only called if there's a library bug */
130 (int (*)(SSL *,int))ssl_undefined_function, 130 (int (*)(SSL *,int))ssl_undefined_function,
131 (int (*)(SSL *, unsigned char *, int))ssl_undefined_function, 131 (int (*)(SSL *, unsigned char *, int))ssl_undefined_function,
@@ -1130,21 +1130,8 @@ int SSL_CTX_set_cipher_list(SSL_CTX *ctx, const char *str)
1130 1130
1131 sk=ssl_create_cipher_list(ctx->method,&ctx->cipher_list, 1131 sk=ssl_create_cipher_list(ctx->method,&ctx->cipher_list,
1132 &ctx->cipher_list_by_id,str); 1132 &ctx->cipher_list_by_id,str);
1133 /* ssl_create_cipher_list may return an empty stack if it 1133/* XXXX */
1134 * was unable to find a cipher matching the given rule string 1134 return((sk == NULL)?0:1);
1135 * (for example if the rule string specifies a cipher which
1136 * has been disabled). This is not an error as far as
1137 * ssl_create_cipher_list is concerned, and hence
1138 * ctx->cipher_list and ctx->cipher_list_by_id has been
1139 * updated. */
1140 if (sk == NULL)
1141 return 0;
1142 else if (sk_SSL_CIPHER_num(sk) == 0)
1143 {
1144 SSLerr(SSL_F_SSL_CTX_SET_CIPHER_LIST, SSL_R_NO_CIPHER_MATCH);
1145 return 0;
1146 }
1147 return 1;
1148 } 1135 }
1149 1136
1150/** specify the ciphers to be used by the SSL */ 1137/** specify the ciphers to be used by the SSL */
@@ -1154,15 +1141,8 @@ int SSL_set_cipher_list(SSL *s,const char *str)
1154 1141
1155 sk=ssl_create_cipher_list(s->ctx->method,&s->cipher_list, 1142 sk=ssl_create_cipher_list(s->ctx->method,&s->cipher_list,
1156 &s->cipher_list_by_id,str); 1143 &s->cipher_list_by_id,str);
1157 /* see comment in SSL_CTX_set_cipher_list */ 1144/* XXXX */
1158 if (sk == NULL) 1145 return((sk == NULL)?0:1);
1159 return 0;
1160 else if (sk_SSL_CIPHER_num(sk) == 0)
1161 {
1162 SSLerr(SSL_F_SSL_SET_CIPHER_LIST, SSL_R_NO_CIPHER_MATCH);
1163 return 0;
1164 }
1165 return 1;
1166 } 1146 }
1167 1147
1168/* works well for SSLv2, not so good for SSLv3 */ 1148/* works well for SSLv2, not so good for SSLv3 */
@@ -1201,8 +1181,7 @@ char *SSL_get_shared_ciphers(const SSL *s,char *buf,int len)
1201 return(buf); 1181 return(buf);
1202 } 1182 }
1203 1183
1204int ssl_cipher_list_to_bytes(SSL *s,STACK_OF(SSL_CIPHER) *sk,unsigned char *p, 1184int ssl_cipher_list_to_bytes(SSL *s,STACK_OF(SSL_CIPHER) *sk,unsigned char *p)
1205 int (*put_cb)(const SSL_CIPHER *, unsigned char *))
1206 { 1185 {
1207 int i,j=0; 1186 int i,j=0;
1208 SSL_CIPHER *c; 1187 SSL_CIPHER *c;
@@ -1221,8 +1200,7 @@ int ssl_cipher_list_to_bytes(SSL *s,STACK_OF(SSL_CIPHER) *sk,unsigned char *p,
1221 if ((c->algorithms & SSL_KRB5) && nokrb5) 1200 if ((c->algorithms & SSL_KRB5) && nokrb5)
1222 continue; 1201 continue;
1223#endif /* OPENSSL_NO_KRB5 */ 1202#endif /* OPENSSL_NO_KRB5 */
1224 1203 j=ssl_put_cipher_by_char(s,c,p);
1225 j = put_cb ? put_cb(c,p) : ssl_put_cipher_by_char(s,c,p);
1226 p+=j; 1204 p+=j;
1227 } 1205 }
1228 return(p-q); 1206 return(p-q);
@@ -1716,7 +1694,7 @@ void ssl_update_cache(SSL *s,int mode)
1716 ?s->ctx->stats.sess_connect_good 1694 ?s->ctx->stats.sess_connect_good
1717 :s->ctx->stats.sess_accept_good) & 0xff) == 0xff) 1695 :s->ctx->stats.sess_accept_good) & 0xff) == 0xff)
1718 { 1696 {
1719 SSL_CTX_flush_sessions(s->ctx,(unsigned long)time(NULL)); 1697 SSL_CTX_flush_sessions(s->ctx,time(NULL));
1720 } 1698 }
1721 } 1699 }
1722 } 1700 }
diff --git a/src/lib/libssl/src/ssl/ssl_locl.h b/src/lib/libssl/src/ssl/ssl_locl.h
index 6a0b7595f4..25a144a0d0 100644
--- a/src/lib/libssl/src/ssl/ssl_locl.h
+++ b/src/lib/libssl/src/ssl/ssl_locl.h
@@ -462,7 +462,7 @@ typedef struct ssl3_comp_st
462 COMP_METHOD *method; /* The method :-) */ 462 COMP_METHOD *method; /* The method :-) */
463 } SSL3_COMP; 463 } SSL3_COMP;
464 464
465extern SSL3_ENC_METHOD ssl3_undef_enc_method; 465OPENSSL_EXTERN SSL3_ENC_METHOD ssl3_undef_enc_method;
466OPENSSL_EXTERN SSL_CIPHER ssl2_ciphers[]; 466OPENSSL_EXTERN SSL_CIPHER ssl2_ciphers[];
467OPENSSL_EXTERN SSL_CIPHER ssl3_ciphers[]; 467OPENSSL_EXTERN SSL_CIPHER ssl3_ciphers[];
468 468
@@ -493,8 +493,7 @@ int ssl_cipher_ptr_id_cmp(const SSL_CIPHER * const *ap,
493 const SSL_CIPHER * const *bp); 493 const SSL_CIPHER * const *bp);
494STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s,unsigned char *p,int num, 494STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s,unsigned char *p,int num,
495 STACK_OF(SSL_CIPHER) **skp); 495 STACK_OF(SSL_CIPHER) **skp);
496int ssl_cipher_list_to_bytes(SSL *s,STACK_OF(SSL_CIPHER) *sk,unsigned char *p, 496int ssl_cipher_list_to_bytes(SSL *s,STACK_OF(SSL_CIPHER) *sk,unsigned char *p);
497 int (*put_cb)(const SSL_CIPHER *, unsigned char *));
498STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *meth, 497STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *meth,
499 STACK_OF(SSL_CIPHER) **pref, 498 STACK_OF(SSL_CIPHER) **pref,
500 STACK_OF(SSL_CIPHER) **sorted, 499 STACK_OF(SSL_CIPHER) **sorted,
diff --git a/src/lib/libssl/src/ssl/ssl_sess.c b/src/lib/libssl/src/ssl/ssl_sess.c
index 2ba8b9612e..5f12aa361c 100644
--- a/src/lib/libssl/src/ssl/ssl_sess.c
+++ b/src/lib/libssl/src/ssl/ssl_sess.c
@@ -118,7 +118,7 @@ SSL_SESSION *SSL_SESSION_new(void)
118 ss->verify_result = 1; /* avoid 0 (= X509_V_OK) just in case */ 118 ss->verify_result = 1; /* avoid 0 (= X509_V_OK) just in case */
119 ss->references=1; 119 ss->references=1;
120 ss->timeout=60*5+4; /* 5 minute timeout by default */ 120 ss->timeout=60*5+4; /* 5 minute timeout by default */
121 ss->time=(unsigned long)time(NULL); 121 ss->time=time(NULL);
122 ss->prev=NULL; 122 ss->prev=NULL;
123 ss->next=NULL; 123 ss->next=NULL;
124 ss->compress_meth=0; 124 ss->compress_meth=0;
@@ -377,7 +377,7 @@ int ssl_get_prev_session(SSL *s, unsigned char *session_id, int len)
377 CRYPTO_add(&ret->references,1,CRYPTO_LOCK_SSL_SESSION); 377 CRYPTO_add(&ret->references,1,CRYPTO_LOCK_SSL_SESSION);
378#endif 378#endif
379 379
380 if (ret->timeout < (long)(time(NULL) - ret->time)) /* timeout */ 380 if ((long)(ret->time+ret->timeout) < (long)time(NULL)) /* timeout */
381 { 381 {
382 s->ctx->stats.sess_timeout++; 382 s->ctx->stats.sess_timeout++;
383 /* remove it from the cache */ 383 /* remove it from the cache */
diff --git a/src/lib/libssl/src/ssl/ssltest.c b/src/lib/libssl/src/ssl/ssltest.c
index 9845ef99ed..3a0db0cb51 100644
--- a/src/lib/libssl/src/ssl/ssltest.c
+++ b/src/lib/libssl/src/ssl/ssltest.c
@@ -119,14 +119,12 @@
119#include <stdlib.h> 119#include <stdlib.h>
120#include <string.h> 120#include <string.h>
121#include <time.h> 121#include <time.h>
122#include <inttypes.h>
123#include <ctype.h>
122 124
123#define USE_SOCKETS 125#define USE_SOCKETS
124#include "e_os.h" 126#include "e_os.h"
125 127
126#define _XOPEN_SOURCE 500 /* Or isascii won't be declared properly on
127 VMS (at least with DECompHP C). */
128#include <ctype.h>
129
130#include <openssl/bio.h> 128#include <openssl/bio.h>
131#include <openssl/crypto.h> 129#include <openssl/crypto.h>
132#include <openssl/evp.h> 130#include <openssl/evp.h>
@@ -391,6 +389,7 @@ int main(int argc, char *argv[])
391 COMP_METHOD *cm = NULL; 389 COMP_METHOD *cm = NULL;
392#ifdef OPENSSL_FIPS 390#ifdef OPENSSL_FIPS
393 int fips_mode=0; 391 int fips_mode=0;
392 const char *path=argv[0];
394#endif 393#endif
395 394
396 verbose = 0; 395 verbose = 0;
@@ -593,7 +592,7 @@ bad:
593#ifdef OPENSSL_FIPS 592#ifdef OPENSSL_FIPS
594 if(fips_mode) 593 if(fips_mode)
595 { 594 {
596 if(!FIPS_mode_set(1)) 595 if(!FIPS_mode_set(1,path))
597 { 596 {
598 ERR_load_crypto_strings(); 597 ERR_load_crypto_strings();
599 ERR_print_errors(BIO_new_fp(stderr,BIO_NOCLOSE)); 598 ERR_print_errors(BIO_new_fp(stderr,BIO_NOCLOSE));
@@ -1928,8 +1927,8 @@ static int MS_CALLBACK app_verify_callback(X509_STORE_CTX *ctx, void *arg)
1928 1927
1929 fprintf(stderr, "In app_verify_callback, allowing cert. "); 1928 fprintf(stderr, "In app_verify_callback, allowing cert. ");
1930 fprintf(stderr, "Arg is: %s\n", cb_arg->string); 1929 fprintf(stderr, "Arg is: %s\n", cb_arg->string);
1931 fprintf(stderr, "Finished printing do we have a context? 0x%p a cert? 0x%p\n", 1930 fprintf(stderr, "Finished printing do we have a context? 0x%x a cert? 0x%x\n",
1932 (void *)ctx, (void *)ctx->cert); 1931 (unsigned int)ctx, (unsigned int)ctx->cert);
1933 if (ctx->cert) 1932 if (ctx->cert)
1934 s=X509_NAME_oneline(X509_get_subject_name(ctx->cert),buf,256); 1933 s=X509_NAME_oneline(X509_get_subject_name(ctx->cert),buf,256);
1935 if (s != NULL) 1934 if (s != NULL)
@@ -1977,7 +1976,15 @@ static int MS_CALLBACK app_verify_callback(X509_STORE_CTX *ctx, void *arg)
1977 } 1976 }
1978 1977
1979#ifndef OPENSSL_NO_X509_VERIFY 1978#ifndef OPENSSL_NO_X509_VERIFY
1979# ifdef OPENSSL_FIPS
1980 if(s->version == TLS1_VERSION)
1981 FIPS_allow_md5(1);
1982# endif
1980 ok = X509_verify_cert(ctx); 1983 ok = X509_verify_cert(ctx);
1984# ifdef OPENSSL_FIPS
1985 if(s->version == TLS1_VERSION)
1986 FIPS_allow_md5(0);
1987# endif
1981#endif 1988#endif
1982 1989
1983 if (cb_arg->proxy_auth) 1990 if (cb_arg->proxy_auth)
diff --git a/src/lib/libssl/src/test/Makefile.ssl b/src/lib/libssl/src/test/Makefile.ssl
new file mode 100644
index 0000000000..373f17a929
--- /dev/null
+++ b/src/lib/libssl/src/test/Makefile.ssl
@@ -0,0 +1,796 @@
1#
2# test/Makefile.ssl
3#
4
5DIR= test
6TOP= ..
7CC= cc
8INCLUDES= -I$(TOP) -I../include $(KRB5_INCLUDES)
9CFLAG= -g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP= /usr/local/ssl
13MAKEFILE= Makefile.ssl
14MAKE= make -f $(MAKEFILE)
15MAKEDEPPROG= makedepend
16MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
17PERL= perl
18# KRB5 stuff
19KRB5_INCLUDES=
20LIBKRB5=
21
22PEX_LIBS=
23EX_LIBS= #-lnsl -lsocket
24
25CFLAGS= $(INCLUDES) $(CFLAG)
26
27GENERAL=Makefile.ssl maketests.com \
28 tests.com testenc.com tx509.com trsa.com tcrl.com tsid.com treq.com \
29 tpkcs7.com tpkcs7d.com tverify.com testgen.com testss.com testssl.com \
30 testca.com VMSca-response.1 VMSca-response.2
31
32DLIBCRYPTO= ../libcrypto.a
33DLIBSSL= ../libssl.a
34LIBCRYPTO= -L.. -lcrypto
35LIBSSL= -L.. -lssl
36
37BNTEST= bntest
38ECTEST= ectest
39EXPTEST= exptest
40IDEATEST= ideatest
41SHATEST= shatest
42SHA1TEST= sha1test
43MDC2TEST= mdc2test
44RMDTEST= rmdtest
45MD2TEST= md2test
46MD4TEST= md4test
47MD5TEST= md5test
48HMACTEST= hmactest
49RC2TEST= rc2test
50RC4TEST= rc4test
51RC5TEST= rc5test
52BFTEST= bftest
53CASTTEST= casttest
54DESTEST= destest
55RANDTEST= randtest
56DHTEST= dhtest
57DSATEST= dsatest
58METHTEST= methtest
59SSLTEST= ssltest
60RSATEST= rsa_test
61ENGINETEST= enginetest
62EVPTEST= evp_test
63
64TESTS= alltests
65
66EXE= $(BNTEST) $(ECTEST) $(IDEATEST) $(MD2TEST) $(MD4TEST) $(MD5TEST) $(HMACTEST) \
67 $(RC2TEST) $(RC4TEST) $(RC5TEST) \
68 $(DESTEST) $(SHATEST) $(SHA1TEST) $(MDC2TEST) $(RMDTEST) \
69 $(RANDTEST) $(DHTEST) $(ENGINETEST) \
70 $(BFTEST) $(CASTTEST) $(SSLTEST) $(EXPTEST) $(DSATEST) $(RSATEST) \
71 $(EVPTEST)
72
73# $(METHTEST)
74
75OBJ= $(BNTEST).o $(ECTEST).o $(IDEATEST).o $(MD2TEST).o $(MD4TEST).o $(MD5TEST).o \
76 $(HMACTEST).o \
77 $(RC2TEST).o $(RC4TEST).o $(RC5TEST).o \
78 $(DESTEST).o $(SHATEST).o $(SHA1TEST).o $(MDC2TEST).o $(RMDTEST).o \
79 $(RANDTEST).o $(DHTEST).o $(ENGINETEST).o $(CASTTEST).o \
80 $(BFTEST).o $(SSLTEST).o $(DSATEST).o $(EXPTEST).o $(RSATEST).o \
81 $(EVPTEST).o
82SRC= $(BNTEST).c $(ECTEST).c $(IDEATEST).c $(MD2TEST).c $(MD4TEST).c $(MD5TEST).c \
83 $(HMACTEST).c \
84 $(RC2TEST).c $(RC4TEST).c $(RC5TEST).c \
85 $(DESTEST).c $(SHATEST).c $(SHA1TEST).c $(MDC2TEST).c $(RMDTEST).c \
86 $(RANDTEST).c $(DHTEST).c $(ENGINETEST).c $(CASTTEST).c \
87 $(BFTEST).c $(SSLTEST).c $(DSATEST).c $(EXPTEST).c $(RSATEST).c \
88 $(EVPTEST).c
89
90EXHEADER=
91HEADER= $(EXHEADER)
92
93ALL= $(GENERAL) $(SRC) $(HEADER)
94
95top:
96 (cd ..; $(MAKE) DIRS=$(DIR) TESTS=$(TESTS) all)
97
98all: exe
99
100exe: $(EXE) dummytest
101
102files:
103 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
104
105links:
106 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
107
108generate: $(SRC)
109$(SRC):
110 @sh $(TOP)/util/point.sh dummytest.c $@
111
112errors:
113
114install:
115
116tags:
117 ctags $(SRC)
118
119tests: exe apps $(TESTS)
120
121apps:
122 @(cd ..; $(MAKE) DIRS=apps all)
123
124SET_SO_PATHS=OSSL_LIBPATH="`cd ..; pwd`"; \
125 LD_LIBRARY_PATH="$$OSSL_LIBPATH:$$LD_LIBRARY_PATH"; \
126 DYLD_LIBRARY_PATH="$$OSSL_LIBPATH:$$DYLD_LIBRARY_PATH"; \
127 SHLIB_PATH="$$OSSL_LIBPATH:$$SHLIB_PATH"; \
128 LIBPATH="$$OSSL_LIBPATH:$$LIBPATH"; \
129 if [ "$(PLATFORM)" = "Cygwin" ]; then PATH="$${LIBPATH}:$$PATH"; fi; \
130 export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH PATH
131
132alltests: \
133 test_des test_idea test_sha test_md4 test_md5 test_hmac \
134 test_md2 test_mdc2 \
135 test_rmd test_rc2 test_rc4 test_rc5 test_bf test_cast test_aes \
136 test_rand test_bn test_ec test_enc test_x509 test_rsa test_crl test_sid \
137 test_gen test_req test_pkcs7 test_verify test_dh test_dsa \
138 test_ss test_ca test_engine test_evp test_ssl
139
140test_evp:
141 $(SET_SO_PATHS); ./$(EVPTEST) evptests.txt
142
143test_des:
144 $(SET_SO_PATHS); ./$(DESTEST)
145
146test_idea:
147 $(SET_SO_PATHS); ./$(IDEATEST)
148
149test_sha:
150 $(SET_SO_PATHS); ./$(SHATEST)
151 $(SET_SO_PATHS); ./$(SHA1TEST)
152
153test_mdc2:
154 $(SET_SO_PATHS); ./$(MDC2TEST)
155
156test_md5:
157 $(SET_SO_PATHS); ./$(MD5TEST)
158
159test_md4:
160 $(SET_SO_PATHS); ./$(MD4TEST)
161
162test_hmac:
163 $(SET_SO_PATHS); ./$(HMACTEST)
164
165test_md2:
166 $(SET_SO_PATHS); ./$(MD2TEST)
167
168test_rmd:
169 $(SET_SO_PATHS); ./$(RMDTEST)
170
171test_bf:
172 $(SET_SO_PATHS); ./$(BFTEST)
173
174test_cast:
175 $(SET_SO_PATHS); ./$(CASTTEST)
176
177test_rc2:
178 $(SET_SO_PATHS); ./$(RC2TEST)
179
180test_rc4:
181 $(SET_SO_PATHS); ./$(RC4TEST)
182
183test_rc5:
184 $(SET_SO_PATHS); ./$(RC5TEST)
185
186test_rand:
187 $(SET_SO_PATHS); ./$(RANDTEST)
188
189test_enc:
190 @$(SET_SO_PATHS); sh ./testenc
191
192test_x509:
193 echo test normal x509v1 certificate
194 $(SET_SO_PATHS); sh ./tx509 2>/dev/null
195 echo test first x509v3 certificate
196 $(SET_SO_PATHS); sh ./tx509 v3-cert1.pem 2>/dev/null
197 echo test second x509v3 certificate
198 $(SET_SO_PATHS); sh ./tx509 v3-cert2.pem 2>/dev/null
199
200test_rsa:
201 @$(SET_SO_PATHS); sh ./trsa 2>/dev/null
202 $(SET_SO_PATHS); ./$(RSATEST)
203
204test_crl:
205 @$(SET_SO_PATHS); sh ./tcrl 2>/dev/null
206
207test_sid:
208 @$(SET_SO_PATHS); sh ./tsid 2>/dev/null
209
210test_req:
211 @$(SET_SO_PATHS); sh ./treq 2>/dev/null
212 @$(SET_SO_PATHS); sh ./treq testreq2.pem 2>/dev/null
213
214test_pkcs7:
215 @$(SET_SO_PATHS); sh ./tpkcs7 2>/dev/null
216 @$(SET_SO_PATHS); sh ./tpkcs7d 2>/dev/null
217
218test_bn:
219 @echo starting big number library test, could take a while...
220 @$(SET_SO_PATHS); ./$(BNTEST) >tmp.bntest
221 @echo quit >>tmp.bntest
222 @echo "running bc"
223 @<tmp.bntest sh -c "`sh ./bctest ignore`" | $(PERL) -e '$$i=0; while (<STDIN>) {if (/^test (.*)/) {print STDERR "\nverify $$1";} elsif (!/^0$$/) {die "\nFailed! bc: $$_";} else {print STDERR "."; $$i++;}} print STDERR "\n$$i tests passed\n"'
224 @echo 'test a^b%c implementations'
225 $(SET_SO_PATHS); ./$(EXPTEST)
226
227test_ec:
228 @echo 'test elliptic curves'
229 $(SET_SO_PATHS); ./$(ECTEST)
230
231test_verify:
232 @echo "The following command should have some OK's and some failures"
233 @echo "There are definitly a few expired certificates"
234 -$(SET_SO_PATHS); ../apps/openssl verify -CApath ../certs ../certs/*.pem
235
236test_dh:
237 @echo "Generate a set of DH parameters"
238 $(SET_SO_PATHS); ./$(DHTEST)
239
240test_dsa:
241 @echo "Generate a set of DSA parameters"
242 $(SET_SO_PATHS); ./$(DSATEST)
243 $(SET_SO_PATHS); ./$(DSATEST) -app2_1
244
245test_gen:
246 @echo "Generate and verify a certificate request"
247 @$(SET_SO_PATHS); sh ./testgen
248
249test_ss keyU.ss certU.ss certCA.ss: testss
250 @echo "Generate and certify a test certificate"
251 @$(SET_SO_PATHS); sh ./testss
252
253test_engine:
254 @echo "Manipulate the ENGINE structures"
255 $(SET_SO_PATHS); ./$(ENGINETEST)
256
257test_ssl: keyU.ss certU.ss certCA.ss
258 @echo "test SSL protocol"
259 @$(SET_SO_PATHS); sh ./testssl keyU.ss certU.ss certCA.ss
260
261test_ca:
262 @$(SET_SO_PATHS); if ../apps/openssl no-rsa; then \
263 echo "skipping CA.sh test -- requires RSA"; \
264 else \
265 echo "Generate and certify a test certificate via the 'ca' program"; \
266 sh ./testca; \
267 fi
268
269test_aes: #$(AESTEST)
270# @echo "test Rijndael"
271# $(SET_SO_PATHS); ./$(AESTEST)
272
273lint:
274 lint -DLINT $(INCLUDES) $(SRC)>fluff
275
276depend:
277 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(SRC)
278
279dclean:
280 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
281 mv -f Makefile.new $(MAKEFILE)
282
283clean:
284 rm -f .rnd tmp.bntest tmp.bctest *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff $(EXE) *.ss *.srl log
285
286$(DLIBSSL):
287 (cd ..; $(MAKE) DIRS=ssl all)
288
289$(DLIBCRYPTO):
290 (cd ..; $(MAKE) DIRS=crypto all)
291
292$(RSATEST): $(RSATEST).o $(DLIBCRYPTO)
293 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
294 $(CC) -o $(RSATEST) $(CFLAGS) $(RSATEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
295 else \
296 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
297 $(CC) -o $(RSATEST) $(CFLAGS) $(RSATEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
298 fi
299
300$(BNTEST): $(BNTEST).o $(DLIBCRYPTO)
301 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
302 $(CC) -o $(BNTEST) $(CFLAGS) $(BNTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
303 else \
304 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
305 $(CC) -o $(BNTEST) $(CFLAGS) $(BNTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
306 fi
307
308$(ECTEST): $(ECTEST).o $(DLIBCRYPTO)
309 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
310 $(CC) -o $(ECTEST) $(CFLAGS) $(ECTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
311 else \
312 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
313 $(CC) -o $(ECTEST) $(CFLAGS) $(ECTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
314 fi
315
316$(EXPTEST): $(EXPTEST).o $(DLIBCRYPTO)
317 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
318 $(CC) -o $(EXPTEST) $(CFLAGS) $(EXPTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
319 else \
320 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
321 $(CC) -o $(EXPTEST) $(CFLAGS) $(EXPTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
322 fi
323
324$(IDEATEST): $(IDEATEST).o $(DLIBCRYPTO)
325 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
326 $(CC) -o $(IDEATEST) $(CFLAGS) $(IDEATEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
327 else \
328 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
329 $(CC) -o $(IDEATEST) $(CFLAGS) $(IDEATEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
330 fi
331
332$(MD2TEST): $(MD2TEST).o $(DLIBCRYPTO)
333 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
334 $(CC) -o $(MD2TEST) $(CFLAGS) $(MD2TEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
335 else \
336 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
337 $(CC) -o $(MD2TEST) $(CFLAGS) $(MD2TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
338 fi
339
340$(SHATEST): $(SHATEST).o $(DLIBCRYPTO)
341 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
342 $(CC) -o $(SHATEST) $(CFLAGS) $(SHATEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
343 else \
344 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
345 $(CC) -o $(SHATEST) $(CFLAGS) $(SHATEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
346 fi
347
348$(SHA1TEST): $(SHA1TEST).o $(DLIBCRYPTO)
349 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
350 $(CC) -o $(SHA1TEST) $(CFLAGS) $(SHA1TEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
351 else \
352 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
353 $(CC) -o $(SHA1TEST) $(CFLAGS) $(SHA1TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
354 fi
355
356$(RMDTEST): $(RMDTEST).o $(DLIBCRYPTO)
357 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
358 $(CC) -o $(RMDTEST) $(CFLAGS) $(RMDTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
359 else \
360 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
361 $(CC) -o $(RMDTEST) $(CFLAGS) $(RMDTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
362 fi
363
364$(MDC2TEST): $(MDC2TEST).o $(DLIBCRYPTO)
365 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
366 $(CC) -o $(MDC2TEST) $(CFLAGS) $(MDC2TEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
367 else \
368 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
369 $(CC) -o $(MDC2TEST) $(CFLAGS) $(MDC2TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
370 fi
371
372$(MD4TEST): $(MD4TEST).o $(DLIBCRYPTO)
373 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
374 $(CC) -o $(MD4TEST) $(CFLAGS) $(MD4TEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
375 else \
376 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
377 $(CC) -o $(MD4TEST) $(CFLAGS) $(MD4TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
378 fi
379
380$(MD5TEST): $(MD5TEST).o $(DLIBCRYPTO)
381 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
382 $(CC) -o $(MD5TEST) $(CFLAGS) $(MD5TEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
383 else \
384 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
385 $(CC) -o $(MD5TEST) $(CFLAGS) $(MD5TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
386 fi
387
388$(HMACTEST): $(HMACTEST).o $(DLIBCRYPTO)
389 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
390 $(CC) -o $(HMACTEST) $(CFLAGS) $(HMACTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
391 else \
392 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
393 $(CC) -o $(HMACTEST) $(CFLAGS) $(HMACTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
394 fi
395
396$(RC2TEST): $(RC2TEST).o $(DLIBCRYPTO)
397 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
398 $(CC) -o $(RC2TEST) $(CFLAGS) $(RC2TEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
399 else \
400 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
401 $(CC) -o $(RC2TEST) $(CFLAGS) $(RC2TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
402 fi
403
404$(BFTEST): $(BFTEST).o $(DLIBCRYPTO)
405 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
406 $(CC) -o $(BFTEST) $(CFLAGS) $(BFTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
407 else \
408 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
409 $(CC) -o $(BFTEST) $(CFLAGS) $(BFTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
410 fi
411
412$(CASTTEST): $(CASTTEST).o $(DLIBCRYPTO)
413 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
414 $(CC) -o $(CASTTEST) $(CFLAGS) $(CASTTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
415 else \
416 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
417 $(CC) -o $(CASTTEST) $(CFLAGS) $(CASTTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
418 fi
419
420$(RC4TEST): $(RC4TEST).o $(DLIBCRYPTO)
421 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
422 $(CC) -o $(RC4TEST) $(CFLAGS) $(RC4TEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
423 else \
424 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
425 $(CC) -o $(RC4TEST) $(CFLAGS) $(RC4TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
426 fi
427
428$(RC5TEST): $(RC5TEST).o $(DLIBCRYPTO)
429 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
430 $(CC) -o $(RC5TEST) $(CFLAGS) $(RC5TEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
431 else \
432 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
433 $(CC) -o $(RC5TEST) $(CFLAGS) $(RC5TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
434 fi
435
436$(DESTEST): $(DESTEST).o $(DLIBCRYPTO)
437 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
438 $(CC) -o $(DESTEST) $(CFLAGS) $(DESTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
439 else \
440 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
441 $(CC) -o $(DESTEST) $(CFLAGS) $(DESTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
442 fi
443
444$(RANDTEST): $(RANDTEST).o $(DLIBCRYPTO)
445 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
446 $(CC) -o $(RANDTEST) $(CFLAGS) $(RANDTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
447 else \
448 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
449 $(CC) -o $(RANDTEST) $(CFLAGS) $(RANDTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
450 fi
451
452$(DHTEST): $(DHTEST).o $(DLIBCRYPTO)
453 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
454 $(CC) -o $(DHTEST) $(CFLAGS) $(DHTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
455 else \
456 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
457 $(CC) -o $(DHTEST) $(CFLAGS) $(DHTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
458 fi
459
460$(DSATEST): $(DSATEST).o $(DLIBCRYPTO)
461 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
462 $(CC) -o $(DSATEST) $(CFLAGS) $(DSATEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
463 else \
464 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
465 $(CC) -o $(DSATEST) $(CFLAGS) $(DSATEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
466 fi
467
468$(METHTEST): $(METHTEST).o $(DLIBCRYPTO)
469 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
470 $(CC) -o $(METHTEST) $(CFLAGS) $(METHTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
471 else \
472 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
473 $(CC) -o $(METHTEST) $(CFLAGS) $(METHTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
474 fi
475
476$(SSLTEST): $(SSLTEST).o $(DLIBSSL) $(DLIBCRYPTO)
477 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
478 $(CC) -o $(SSLTEST) $(CFLAGS) $(SSLTEST).o $(PEX_LIBS) $(DLIBSSL) $(LIBKRB5) $(DLIBCRYPTO) $(EX_LIBS) ; \
479 else \
480 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
481 $(CC) -o $(SSLTEST) $(CFLAGS) $(SSLTEST).o $(PEX_LIBS) $(LIBSSL) $(LIBKRB5) $(LIBCRYPTO) $(EX_LIBS) ; \
482 fi
483
484$(ENGINETEST): $(ENGINETEST).o $(DLIBCRYPTO)
485 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
486 $(CC) -o $(ENGINETEST) $(CFLAGS) $(ENGINETEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
487 else \
488 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
489 $(CC) -o $(ENGINETEST) $(CFLAGS) $(ENGINETEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
490 fi
491
492$(EVPTEST): $(EVPTEST).o $(DLIBCRYPTO)
493 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
494 $(CC) -o $(EVPTEST) $(CFLAGS) $(EVPTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
495 else \
496 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
497 $(CC) -o $(EVPTEST) $(CFLAGS) $(EVPTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
498 fi
499
500#$(AESTEST).o: $(AESTEST).c
501# $(CC) -c $(CFLAGS) -DINTERMEDIATE_VALUE_KAT -DTRACE_KAT_MCT $(AESTEST).c
502
503#$(AESTEST): $(AESTEST).o $(DLIBCRYPTO)
504# if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
505# $(CC) -o $(AESTEST) $(CFLAGS) $(AESTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
506# else \
507# LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
508# $(CC) -o $(AESTEST) $(CFLAGS) $(AESTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
509# fi
510
511dummytest: dummytest.o $(DLIBCRYPTO)
512 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
513 $(CC) -o dummytest $(CFLAGS) dummytest.o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
514 else \
515 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
516 $(CC) -o dummytest $(CFLAGS) dummytest.o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
517 fi
518
519# DO NOT DELETE THIS LINE -- make depend depends on it.
520
521bftest.o: ../e_os.h ../include/openssl/blowfish.h ../include/openssl/e_os2.h
522bftest.o: ../include/openssl/opensslconf.h bftest.c
523bntest.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
524bntest.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
525bntest.o: ../include/openssl/bn.h ../include/openssl/buffer.h
526bntest.o: ../include/openssl/cast.h ../include/openssl/crypto.h
527bntest.o: ../include/openssl/des.h ../include/openssl/des_old.h
528bntest.o: ../include/openssl/dh.h ../include/openssl/dsa.h
529bntest.o: ../include/openssl/e_os2.h ../include/openssl/err.h
530bntest.o: ../include/openssl/evp.h ../include/openssl/idea.h
531bntest.o: ../include/openssl/lhash.h ../include/openssl/md2.h
532bntest.o: ../include/openssl/md4.h ../include/openssl/md5.h
533bntest.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
534bntest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
535bntest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
536bntest.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
537bntest.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
538bntest.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
539bntest.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
540bntest.o: ../include/openssl/sha.h ../include/openssl/stack.h
541bntest.o: ../include/openssl/symhacks.h ../include/openssl/ui.h
542bntest.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
543bntest.o: ../include/openssl/x509_vfy.h bntest.c
544casttest.o: ../e_os.h ../include/openssl/cast.h ../include/openssl/e_os2.h
545casttest.o: ../include/openssl/opensslconf.h casttest.c
546destest.o: ../include/openssl/crypto.h ../include/openssl/des.h
547destest.o: ../include/openssl/des_old.h ../include/openssl/e_os2.h
548destest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
549destest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
550destest.o: ../include/openssl/symhacks.h ../include/openssl/ui.h
551destest.o: ../include/openssl/ui_compat.h destest.c
552dhtest.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/bn.h
553dhtest.o: ../include/openssl/crypto.h ../include/openssl/dh.h
554dhtest.o: ../include/openssl/e_os2.h ../include/openssl/err.h
555dhtest.o: ../include/openssl/lhash.h ../include/openssl/opensslconf.h
556dhtest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
557dhtest.o: ../include/openssl/rand.h ../include/openssl/safestack.h
558dhtest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h dhtest.c
559dsatest.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/bn.h
560dsatest.o: ../include/openssl/crypto.h ../include/openssl/dh.h
561dsatest.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
562dsatest.o: ../include/openssl/err.h ../include/openssl/lhash.h
563dsatest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
564dsatest.o: ../include/openssl/ossl_typ.h ../include/openssl/rand.h
565dsatest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
566dsatest.o: ../include/openssl/symhacks.h dsatest.c
567ectest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
568ectest.o: ../include/openssl/bn.h ../include/openssl/crypto.h
569ectest.o: ../include/openssl/dh.h ../include/openssl/dsa.h
570ectest.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
571ectest.o: ../include/openssl/engine.h ../include/openssl/err.h
572ectest.o: ../include/openssl/lhash.h ../include/openssl/opensslconf.h
573ectest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
574ectest.o: ../include/openssl/rand.h ../include/openssl/rsa.h
575ectest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
576ectest.o: ../include/openssl/symhacks.h ../include/openssl/ui.h ectest.c
577enginetest.o: ../include/openssl/asn1.h ../include/openssl/bio.h
578enginetest.o: ../include/openssl/bn.h ../include/openssl/buffer.h
579enginetest.o: ../include/openssl/crypto.h ../include/openssl/dh.h
580enginetest.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
581enginetest.o: ../include/openssl/engine.h ../include/openssl/err.h
582enginetest.o: ../include/openssl/lhash.h ../include/openssl/opensslconf.h
583enginetest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
584enginetest.o: ../include/openssl/rand.h ../include/openssl/rsa.h
585enginetest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
586enginetest.o: ../include/openssl/symhacks.h ../include/openssl/ui.h
587enginetest.o: enginetest.c
588evp_test.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
589evp_test.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
590evp_test.o: ../include/openssl/bn.h ../include/openssl/cast.h
591evp_test.o: ../include/openssl/conf.h ../include/openssl/crypto.h
592evp_test.o: ../include/openssl/des.h ../include/openssl/des_old.h
593evp_test.o: ../include/openssl/dh.h ../include/openssl/dsa.h
594evp_test.o: ../include/openssl/e_os2.h ../include/openssl/engine.h
595evp_test.o: ../include/openssl/err.h ../include/openssl/evp.h
596evp_test.o: ../include/openssl/idea.h ../include/openssl/lhash.h
597evp_test.o: ../include/openssl/md2.h ../include/openssl/md4.h
598evp_test.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
599evp_test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
600evp_test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
601evp_test.o: ../include/openssl/ossl_typ.h ../include/openssl/rand.h
602evp_test.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
603evp_test.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
604evp_test.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
605evp_test.o: ../include/openssl/sha.h ../include/openssl/stack.h
606evp_test.o: ../include/openssl/symhacks.h ../include/openssl/ui.h
607evp_test.o: ../include/openssl/ui_compat.h evp_test.c
608exptest.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/bn.h
609exptest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
610exptest.o: ../include/openssl/err.h ../include/openssl/lhash.h
611exptest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
612exptest.o: ../include/openssl/ossl_typ.h ../include/openssl/rand.h
613exptest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
614exptest.o: ../include/openssl/symhacks.h exptest.c
615hmactest.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
616hmactest.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
617hmactest.o: ../include/openssl/bn.h ../include/openssl/cast.h
618hmactest.o: ../include/openssl/crypto.h ../include/openssl/des.h
619hmactest.o: ../include/openssl/des_old.h ../include/openssl/dh.h
620hmactest.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
621hmactest.o: ../include/openssl/evp.h ../include/openssl/hmac.h
622hmactest.o: ../include/openssl/idea.h ../include/openssl/md2.h
623hmactest.o: ../include/openssl/md4.h ../include/openssl/md5.h
624hmactest.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
625hmactest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
626hmactest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
627hmactest.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
628hmactest.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
629hmactest.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
630hmactest.o: ../include/openssl/sha.h ../include/openssl/stack.h
631hmactest.o: ../include/openssl/symhacks.h ../include/openssl/ui.h
632hmactest.o: ../include/openssl/ui_compat.h hmactest.c
633ideatest.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/idea.h
634ideatest.o: ../include/openssl/opensslconf.h ideatest.c
635md2test.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
636md2test.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
637md2test.o: ../include/openssl/bn.h ../include/openssl/cast.h
638md2test.o: ../include/openssl/crypto.h ../include/openssl/des.h
639md2test.o: ../include/openssl/des_old.h ../include/openssl/dh.h
640md2test.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
641md2test.o: ../include/openssl/evp.h ../include/openssl/idea.h
642md2test.o: ../include/openssl/md2.h ../include/openssl/md4.h
643md2test.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
644md2test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
645md2test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
646md2test.o: ../include/openssl/ossl_typ.h ../include/openssl/rc2.h
647md2test.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
648md2test.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
649md2test.o: ../include/openssl/safestack.h ../include/openssl/sha.h
650md2test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
651md2test.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h md2test.c
652md4test.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
653md4test.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
654md4test.o: ../include/openssl/bn.h ../include/openssl/cast.h
655md4test.o: ../include/openssl/crypto.h ../include/openssl/des.h
656md4test.o: ../include/openssl/des_old.h ../include/openssl/dh.h
657md4test.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
658md4test.o: ../include/openssl/evp.h ../include/openssl/idea.h
659md4test.o: ../include/openssl/md2.h ../include/openssl/md4.h
660md4test.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
661md4test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
662md4test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
663md4test.o: ../include/openssl/ossl_typ.h ../include/openssl/rc2.h
664md4test.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
665md4test.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
666md4test.o: ../include/openssl/safestack.h ../include/openssl/sha.h
667md4test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
668md4test.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h md4test.c
669md5test.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
670md5test.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
671md5test.o: ../include/openssl/bn.h ../include/openssl/cast.h
672md5test.o: ../include/openssl/crypto.h ../include/openssl/des.h
673md5test.o: ../include/openssl/des_old.h ../include/openssl/dh.h
674md5test.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
675md5test.o: ../include/openssl/evp.h ../include/openssl/idea.h
676md5test.o: ../include/openssl/md2.h ../include/openssl/md4.h
677md5test.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
678md5test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
679md5test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
680md5test.o: ../include/openssl/ossl_typ.h ../include/openssl/rc2.h
681md5test.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
682md5test.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
683md5test.o: ../include/openssl/safestack.h ../include/openssl/sha.h
684md5test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
685md5test.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h md5test.c
686mdc2test.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
687mdc2test.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
688mdc2test.o: ../include/openssl/bn.h ../include/openssl/cast.h
689mdc2test.o: ../include/openssl/crypto.h ../include/openssl/des.h
690mdc2test.o: ../include/openssl/des_old.h ../include/openssl/dh.h
691mdc2test.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
692mdc2test.o: ../include/openssl/evp.h ../include/openssl/idea.h
693mdc2test.o: ../include/openssl/md2.h ../include/openssl/md4.h
694mdc2test.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
695mdc2test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
696mdc2test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
697mdc2test.o: ../include/openssl/ossl_typ.h ../include/openssl/rc2.h
698mdc2test.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
699mdc2test.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
700mdc2test.o: ../include/openssl/safestack.h ../include/openssl/sha.h
701mdc2test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
702mdc2test.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h mdc2test.c
703randtest.o: ../e_os.h ../include/openssl/e_os2.h
704randtest.o: ../include/openssl/opensslconf.h ../include/openssl/ossl_typ.h
705randtest.o: ../include/openssl/rand.h randtest.c
706rc2test.o: ../e_os.h ../include/openssl/e_os2.h
707rc2test.o: ../include/openssl/opensslconf.h ../include/openssl/rc2.h rc2test.c
708rc4test.o: ../e_os.h ../include/openssl/e_os2.h
709rc4test.o: ../include/openssl/opensslconf.h ../include/openssl/rc4.h rc4test.c
710rc5test.o: ../e_os.h ../include/openssl/e_os2.h
711rc5test.o: ../include/openssl/opensslconf.h ../include/openssl/rc5.h rc5test.c
712rmdtest.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
713rmdtest.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
714rmdtest.o: ../include/openssl/bn.h ../include/openssl/cast.h
715rmdtest.o: ../include/openssl/crypto.h ../include/openssl/des.h
716rmdtest.o: ../include/openssl/des_old.h ../include/openssl/dh.h
717rmdtest.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
718rmdtest.o: ../include/openssl/evp.h ../include/openssl/idea.h
719rmdtest.o: ../include/openssl/md2.h ../include/openssl/md4.h
720rmdtest.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
721rmdtest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
722rmdtest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
723rmdtest.o: ../include/openssl/ossl_typ.h ../include/openssl/rc2.h
724rmdtest.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
725rmdtest.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
726rmdtest.o: ../include/openssl/safestack.h ../include/openssl/sha.h
727rmdtest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
728rmdtest.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h rmdtest.c
729rsa_test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
730rsa_test.o: ../include/openssl/bn.h ../include/openssl/crypto.h
731rsa_test.o: ../include/openssl/e_os2.h ../include/openssl/err.h
732rsa_test.o: ../include/openssl/lhash.h ../include/openssl/opensslconf.h
733rsa_test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
734rsa_test.o: ../include/openssl/rand.h ../include/openssl/rsa.h
735rsa_test.o: ../include/openssl/safestack.h ../include/openssl/stack.h
736rsa_test.o: ../include/openssl/symhacks.h rsa_test.c
737sha1test.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
738sha1test.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
739sha1test.o: ../include/openssl/bn.h ../include/openssl/cast.h
740sha1test.o: ../include/openssl/crypto.h ../include/openssl/des.h
741sha1test.o: ../include/openssl/des_old.h ../include/openssl/dh.h
742sha1test.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
743sha1test.o: ../include/openssl/evp.h ../include/openssl/idea.h
744sha1test.o: ../include/openssl/md2.h ../include/openssl/md4.h
745sha1test.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
746sha1test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
747sha1test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
748sha1test.o: ../include/openssl/ossl_typ.h ../include/openssl/rc2.h
749sha1test.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
750sha1test.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
751sha1test.o: ../include/openssl/safestack.h ../include/openssl/sha.h
752sha1test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
753sha1test.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h sha1test.c
754shatest.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
755shatest.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
756shatest.o: ../include/openssl/bn.h ../include/openssl/cast.h
757shatest.o: ../include/openssl/crypto.h ../include/openssl/des.h
758shatest.o: ../include/openssl/des_old.h ../include/openssl/dh.h
759shatest.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
760shatest.o: ../include/openssl/evp.h ../include/openssl/idea.h
761shatest.o: ../include/openssl/md2.h ../include/openssl/md4.h
762shatest.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
763shatest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
764shatest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
765shatest.o: ../include/openssl/ossl_typ.h ../include/openssl/rc2.h
766shatest.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
767shatest.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
768shatest.o: ../include/openssl/safestack.h ../include/openssl/sha.h
769shatest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
770shatest.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h shatest.c
771ssltest.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
772ssltest.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
773ssltest.o: ../include/openssl/bn.h ../include/openssl/buffer.h
774ssltest.o: ../include/openssl/cast.h ../include/openssl/comp.h
775ssltest.o: ../include/openssl/crypto.h ../include/openssl/des.h
776ssltest.o: ../include/openssl/des_old.h ../include/openssl/dh.h
777ssltest.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
778ssltest.o: ../include/openssl/engine.h ../include/openssl/err.h
779ssltest.o: ../include/openssl/evp.h ../include/openssl/idea.h
780ssltest.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
781ssltest.o: ../include/openssl/md2.h ../include/openssl/md4.h
782ssltest.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
783ssltest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
784ssltest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
785ssltest.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
786ssltest.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
787ssltest.o: ../include/openssl/rand.h ../include/openssl/rc2.h
788ssltest.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
789ssltest.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
790ssltest.o: ../include/openssl/safestack.h ../include/openssl/sha.h
791ssltest.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
792ssltest.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
793ssltest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
794ssltest.o: ../include/openssl/tls1.h ../include/openssl/ui.h
795ssltest.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
796ssltest.o: ../include/openssl/x509_vfy.h ssltest.c
diff --git a/src/lib/libssl/src/test/enginetest.c b/src/lib/libssl/src/test/enginetest.c
new file mode 100644
index 0000000000..87fa8c57b7
--- /dev/null
+++ b/src/lib/libssl/src/test/enginetest.c
@@ -0,0 +1,274 @@
1/* crypto/engine/enginetest.c */
2/* Written by Geoff Thorpe (geoff@geoffthorpe.net) for the OpenSSL
3 * project 2000.
4 */
5/* ====================================================================
6 * Copyright (c) 1999-2001 The OpenSSL Project. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 *
12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 *
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in
17 * the documentation and/or other materials provided with the
18 * distribution.
19 *
20 * 3. All advertising materials mentioning features or use of this
21 * software must display the following acknowledgment:
22 * "This product includes software developed by the OpenSSL Project
23 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
24 *
25 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
26 * endorse or promote products derived from this software without
27 * prior written permission. For written permission, please contact
28 * licensing@OpenSSL.org.
29 *
30 * 5. Products derived from this software may not be called "OpenSSL"
31 * nor may "OpenSSL" appear in their names without prior written
32 * permission of the OpenSSL Project.
33 *
34 * 6. Redistributions of any form whatsoever must retain the following
35 * acknowledgment:
36 * "This product includes software developed by the OpenSSL Project
37 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
38 *
39 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
40 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
43 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
46 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
48 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50 * OF THE POSSIBILITY OF SUCH DAMAGE.
51 * ====================================================================
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 */
58
59#include <openssl/e_os2.h>
60#include <stdio.h>
61#include <string.h>
62#include <openssl/buffer.h>
63#include <openssl/crypto.h>
64#include <openssl/engine.h>
65#include <openssl/err.h>
66
67static void display_engine_list()
68 {
69 ENGINE *h;
70 int loop;
71
72 h = ENGINE_get_first();
73 loop = 0;
74 printf("listing available engine types\n");
75 while(h)
76 {
77 printf("engine %i, id = \"%s\", name = \"%s\"\n",
78 loop++, ENGINE_get_id(h), ENGINE_get_name(h));
79 h = ENGINE_get_next(h);
80 }
81 printf("end of list\n");
82 /* ENGINE_get_first() increases the struct_ref counter, so we
83 must call ENGINE_free() to decrease it again */
84 ENGINE_free(h);
85 }
86
87int main(int argc, char *argv[])
88 {
89 ENGINE *block[512];
90 char buf[256];
91 const char *id, *name;
92 ENGINE *ptr;
93 int loop;
94 int to_return = 1;
95 ENGINE *new_h1 = NULL;
96 ENGINE *new_h2 = NULL;
97 ENGINE *new_h3 = NULL;
98 ENGINE *new_h4 = NULL;
99
100 /* enable memory leak checking unless explicitly disabled */
101 if (!((getenv("OPENSSL_DEBUG_MEMORY") != NULL) && (0 == strcmp(getenv("OPENSSL_DEBUG_MEMORY"), "off"))))
102 {
103 CRYPTO_malloc_debug_init();
104 CRYPTO_set_mem_debug_options(V_CRYPTO_MDEBUG_ALL);
105 }
106 else
107 {
108 /* OPENSSL_DEBUG_MEMORY=off */
109 CRYPTO_set_mem_debug_functions(0, 0, 0, 0, 0);
110 }
111 CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
112 ERR_load_crypto_strings();
113
114 memset(block, 0, 512 * sizeof(ENGINE *));
115 if(((new_h1 = ENGINE_new()) == NULL) ||
116 !ENGINE_set_id(new_h1, "test_id0") ||
117 !ENGINE_set_name(new_h1, "First test item") ||
118 ((new_h2 = ENGINE_new()) == NULL) ||
119 !ENGINE_set_id(new_h2, "test_id1") ||
120 !ENGINE_set_name(new_h2, "Second test item") ||
121 ((new_h3 = ENGINE_new()) == NULL) ||
122 !ENGINE_set_id(new_h3, "test_id2") ||
123 !ENGINE_set_name(new_h3, "Third test item") ||
124 ((new_h4 = ENGINE_new()) == NULL) ||
125 !ENGINE_set_id(new_h4, "test_id3") ||
126 !ENGINE_set_name(new_h4, "Fourth test item"))
127 {
128 printf("Couldn't set up test ENGINE structures\n");
129 goto end;
130 }
131 printf("\nenginetest beginning\n\n");
132 display_engine_list();
133 if(!ENGINE_add(new_h1))
134 {
135 printf("Add failed!\n");
136 goto end;
137 }
138 display_engine_list();
139 ptr = ENGINE_get_first();
140 if(!ENGINE_remove(ptr))
141 {
142 printf("Remove failed!\n");
143 goto end;
144 }
145 if (ptr)
146 ENGINE_free(ptr);
147 display_engine_list();
148 if(!ENGINE_add(new_h3) || !ENGINE_add(new_h2))
149 {
150 printf("Add failed!\n");
151 goto end;
152 }
153 display_engine_list();
154 if(!ENGINE_remove(new_h2))
155 {
156 printf("Remove failed!\n");
157 goto end;
158 }
159 display_engine_list();
160 if(!ENGINE_add(new_h4))
161 {
162 printf("Add failed!\n");
163 goto end;
164 }
165 display_engine_list();
166 if(ENGINE_add(new_h3))
167 {
168 printf("Add *should* have failed but didn't!\n");
169 goto end;
170 }
171 else
172 printf("Add that should fail did.\n");
173 ERR_clear_error();
174 if(ENGINE_remove(new_h2))
175 {
176 printf("Remove *should* have failed but didn't!\n");
177 goto end;
178 }
179 else
180 printf("Remove that should fail did.\n");
181 ERR_clear_error();
182 if(!ENGINE_remove(new_h3))
183 {
184 printf("Remove failed!\n");
185 goto end;
186 }
187 display_engine_list();
188 if(!ENGINE_remove(new_h4))
189 {
190 printf("Remove failed!\n");
191 goto end;
192 }
193 display_engine_list();
194 /* Depending on whether there's any hardware support compiled
195 * in, this remove may be destined to fail. */
196 ptr = ENGINE_get_first();
197 if(ptr)
198 if(!ENGINE_remove(ptr))
199 printf("Remove failed!i - probably no hardware "
200 "support present.\n");
201 if (ptr)
202 ENGINE_free(ptr);
203 display_engine_list();
204 if(!ENGINE_add(new_h1) || !ENGINE_remove(new_h1))
205 {
206 printf("Couldn't add and remove to an empty list!\n");
207 goto end;
208 }
209 else
210 printf("Successfully added and removed to an empty list!\n");
211 printf("About to beef up the engine-type list\n");
212 for(loop = 0; loop < 512; loop++)
213 {
214 sprintf(buf, "id%i", loop);
215 id = BUF_strdup(buf);
216 sprintf(buf, "Fake engine type %i", loop);
217 name = BUF_strdup(buf);
218 if(((block[loop] = ENGINE_new()) == NULL) ||
219 !ENGINE_set_id(block[loop], id) ||
220 !ENGINE_set_name(block[loop], name))
221 {
222 printf("Couldn't create block of ENGINE structures.\n"
223 "I'll probably also core-dump now, damn.\n");
224 goto end;
225 }
226 }
227 for(loop = 0; loop < 512; loop++)
228 {
229 if(!ENGINE_add(block[loop]))
230 {
231 printf("\nAdding stopped at %i, (%s,%s)\n",
232 loop, ENGINE_get_id(block[loop]),
233 ENGINE_get_name(block[loop]));
234 goto cleanup_loop;
235 }
236 else
237 printf("."); fflush(stdout);
238 }
239cleanup_loop:
240 printf("\nAbout to empty the engine-type list\n");
241 while((ptr = ENGINE_get_first()) != NULL)
242 {
243 if(!ENGINE_remove(ptr))
244 {
245 printf("\nRemove failed!\n");
246 goto end;
247 }
248 ENGINE_free(ptr);
249 printf("."); fflush(stdout);
250 }
251 for(loop = 0; loop < 512; loop++)
252 {
253 OPENSSL_free((void *)ENGINE_get_id(block[loop]));
254 OPENSSL_free((void *)ENGINE_get_name(block[loop]));
255 }
256 printf("\nTests completed happily\n");
257 to_return = 0;
258end:
259 if(to_return)
260 ERR_print_errors_fp(stderr);
261 if(new_h1) ENGINE_free(new_h1);
262 if(new_h2) ENGINE_free(new_h2);
263 if(new_h3) ENGINE_free(new_h3);
264 if(new_h4) ENGINE_free(new_h4);
265 for(loop = 0; loop < 512; loop++)
266 if(block[loop])
267 ENGINE_free(block[loop]);
268 ENGINE_cleanup();
269 CRYPTO_cleanup_all_ex_data();
270 ERR_free_strings();
271 ERR_remove_state(0);
272 CRYPTO_mem_leaks_fp(stderr);
273 return to_return;
274 }
diff --git a/src/lib/libssl/src/test/maketests.com b/src/lib/libssl/src/test/maketests.com
index 94621a655b..dfbfef7b1b 100644
--- a/src/lib/libssl/src/test/maketests.com
+++ b/src/lib/libssl/src/test/maketests.com
@@ -586,7 +586,7 @@ $ CCDEFS = "TCPIP_TYPE_''P3'"
586$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS 586$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS
587$ CCEXTRAFLAGS = "" 587$ CCEXTRAFLAGS = ""
588$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS 588$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS
589$ CCDISABLEWARNINGS = "LONGLONGTYPE,LONGLONGSUFX,FOUNDCR" 589$ CCDISABLEWARNINGS = "LONGLONGTYPE,LONGLONGSUFX"
590$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN - 590$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN -
591 CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS 591 CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS
592$! 592$!
diff --git a/src/lib/libssl/src/test/md4test.c b/src/lib/libssl/src/test/md4test.c
new file mode 100644
index 0000000000..e0fdc42282
--- /dev/null
+++ b/src/lib/libssl/src/test/md4test.c
@@ -0,0 +1,134 @@
1/* crypto/md4/md4test.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include <string.h>
61#include <stdlib.h>
62
63#ifdef OPENSSL_NO_MD4
64int main(int argc, char *argv[])
65{
66 printf("No MD4 support\n");
67 return(0);
68}
69#else
70#include <openssl/evp.h>
71#include <openssl/md4.h>
72
73static char *test[]={
74 "",
75 "a",
76 "abc",
77 "message digest",
78 "abcdefghijklmnopqrstuvwxyz",
79 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
80 "12345678901234567890123456789012345678901234567890123456789012345678901234567890",
81 NULL,
82 };
83
84static char *ret[]={
85"31d6cfe0d16ae931b73c59d7e0c089c0",
86"bde52cb31de33e46245e05fbdbd6fb24",
87"a448017aaf21d8525fc10ae87aa6729d",
88"d9130a8164549fe818874806e1c7014b",
89"d79e1c308aa5bbcdeea8ed63df412da9",
90"043f8582f241db351ce627e153e7f0e4",
91"e33b4ddc9c38f2199c3e7b164fcc0536",
92};
93
94static char *pt(unsigned char *md);
95int main(int argc, char *argv[])
96 {
97 int i,err=0;
98 unsigned char **P,**R;
99 char *p;
100 unsigned char md[MD4_DIGEST_LENGTH];
101
102 P=(unsigned char **)test;
103 R=(unsigned char **)ret;
104 i=1;
105 while (*P != NULL)
106 {
107 EVP_Digest(&(P[0][0]),(unsigned long)strlen((char *)*P),md,NULL,EVP_md4(), NULL);
108 p=pt(md);
109 if (strcmp(p,(char *)*R) != 0)
110 {
111 printf("error calculating MD4 on '%s'\n",*P);
112 printf("got %s instead of %s\n",p,*R);
113 err++;
114 }
115 else
116 printf("test %d ok\n",i);
117 i++;
118 R++;
119 P++;
120 }
121 exit(err);
122 return(0);
123 }
124
125static char *pt(unsigned char *md)
126 {
127 int i;
128 static char buf[80];
129
130 for (i=0; i<MD4_DIGEST_LENGTH; i++)
131 sprintf(&(buf[i*2]),"%02x",md[i]);
132 return(buf);
133 }
134#endif
diff --git a/src/lib/libssl/src/test/rsa_test.c b/src/lib/libssl/src/test/rsa_test.c
new file mode 100644
index 0000000000..b8b462d33b
--- /dev/null
+++ b/src/lib/libssl/src/test/rsa_test.c
@@ -0,0 +1,318 @@
1/* test vectors from p1ovect1.txt */
2
3#include <stdio.h>
4#include <string.h>
5
6#include "e_os.h"
7
8#include <openssl/crypto.h>
9#include <openssl/err.h>
10#include <openssl/rand.h>
11#ifdef OPENSSL_NO_RSA
12int main(int argc, char *argv[])
13{
14 printf("No RSA support\n");
15 return(0);
16}
17#else
18#include <openssl/rsa.h>
19#include <openssl/engine.h>
20
21#define SetKey \
22 key->n = BN_bin2bn(n, sizeof(n)-1, key->n); \
23 key->e = BN_bin2bn(e, sizeof(e)-1, key->e); \
24 key->d = BN_bin2bn(d, sizeof(d)-1, key->d); \
25 key->p = BN_bin2bn(p, sizeof(p)-1, key->p); \
26 key->q = BN_bin2bn(q, sizeof(q)-1, key->q); \
27 key->dmp1 = BN_bin2bn(dmp1, sizeof(dmp1)-1, key->dmp1); \
28 key->dmq1 = BN_bin2bn(dmq1, sizeof(dmq1)-1, key->dmq1); \
29 key->iqmp = BN_bin2bn(iqmp, sizeof(iqmp)-1, key->iqmp); \
30 memcpy(c, ctext_ex, sizeof(ctext_ex) - 1); \
31 return (sizeof(ctext_ex) - 1);
32
33static int key1(RSA *key, unsigned char *c)
34 {
35 static unsigned char n[] =
36"\x00\xAA\x36\xAB\xCE\x88\xAC\xFD\xFF\x55\x52\x3C\x7F\xC4\x52\x3F"
37"\x90\xEF\xA0\x0D\xF3\x77\x4A\x25\x9F\x2E\x62\xB4\xC5\xD9\x9C\xB5"
38"\xAD\xB3\x00\xA0\x28\x5E\x53\x01\x93\x0E\x0C\x70\xFB\x68\x76\x93"
39"\x9C\xE6\x16\xCE\x62\x4A\x11\xE0\x08\x6D\x34\x1E\xBC\xAC\xA0\xA1"
40"\xF5";
41
42 static unsigned char e[] = "\x11";
43
44 static unsigned char d[] =
45"\x0A\x03\x37\x48\x62\x64\x87\x69\x5F\x5F\x30\xBC\x38\xB9\x8B\x44"
46"\xC2\xCD\x2D\xFF\x43\x40\x98\xCD\x20\xD8\xA1\x38\xD0\x90\xBF\x64"
47"\x79\x7C\x3F\xA7\xA2\xCD\xCB\x3C\xD1\xE0\xBD\xBA\x26\x54\xB4\xF9"
48"\xDF\x8E\x8A\xE5\x9D\x73\x3D\x9F\x33\xB3\x01\x62\x4A\xFD\x1D\x51";
49
50 static unsigned char p[] =
51"\x00\xD8\x40\xB4\x16\x66\xB4\x2E\x92\xEA\x0D\xA3\xB4\x32\x04\xB5"
52"\xCF\xCE\x33\x52\x52\x4D\x04\x16\xA5\xA4\x41\xE7\x00\xAF\x46\x12"
53"\x0D";
54
55 static unsigned char q[] =
56"\x00\xC9\x7F\xB1\xF0\x27\xF4\x53\xF6\x34\x12\x33\xEA\xAA\xD1\xD9"
57"\x35\x3F\x6C\x42\xD0\x88\x66\xB1\xD0\x5A\x0F\x20\x35\x02\x8B\x9D"
58"\x89";
59
60 static unsigned char dmp1[] =
61"\x59\x0B\x95\x72\xA2\xC2\xA9\xC4\x06\x05\x9D\xC2\xAB\x2F\x1D\xAF"
62"\xEB\x7E\x8B\x4F\x10\xA7\x54\x9E\x8E\xED\xF5\xB4\xFC\xE0\x9E\x05";
63
64 static unsigned char dmq1[] =
65"\x00\x8E\x3C\x05\x21\xFE\x15\xE0\xEA\x06\xA3\x6F\xF0\xF1\x0C\x99"
66"\x52\xC3\x5B\x7A\x75\x14\xFD\x32\x38\xB8\x0A\xAD\x52\x98\x62\x8D"
67"\x51";
68
69 static unsigned char iqmp[] =
70"\x36\x3F\xF7\x18\x9D\xA8\xE9\x0B\x1D\x34\x1F\x71\xD0\x9B\x76\xA8"
71"\xA9\x43\xE1\x1D\x10\xB2\x4D\x24\x9F\x2D\xEA\xFE\xF8\x0C\x18\x26";
72
73 static unsigned char ctext_ex[] =
74"\x1b\x8f\x05\xf9\xca\x1a\x79\x52\x6e\x53\xf3\xcc\x51\x4f\xdb\x89"
75"\x2b\xfb\x91\x93\x23\x1e\x78\xb9\x92\xe6\x8d\x50\xa4\x80\xcb\x52"
76"\x33\x89\x5c\x74\x95\x8d\x5d\x02\xab\x8c\x0f\xd0\x40\xeb\x58\x44"
77"\xb0\x05\xc3\x9e\xd8\x27\x4a\x9d\xbf\xa8\x06\x71\x40\x94\x39\xd2";
78
79 SetKey;
80 }
81
82static int key2(RSA *key, unsigned char *c)
83 {
84 static unsigned char n[] =
85"\x00\xA3\x07\x9A\x90\xDF\x0D\xFD\x72\xAC\x09\x0C\xCC\x2A\x78\xB8"
86"\x74\x13\x13\x3E\x40\x75\x9C\x98\xFA\xF8\x20\x4F\x35\x8A\x0B\x26"
87"\x3C\x67\x70\xE7\x83\xA9\x3B\x69\x71\xB7\x37\x79\xD2\x71\x7B\xE8"
88"\x34\x77\xCF";
89
90 static unsigned char e[] = "\x3";
91
92 static unsigned char d[] =
93"\x6C\xAF\xBC\x60\x94\xB3\xFE\x4C\x72\xB0\xB3\x32\xC6\xFB\x25\xA2"
94"\xB7\x62\x29\x80\x4E\x68\x65\xFC\xA4\x5A\x74\xDF\x0F\x8F\xB8\x41"
95"\x3B\x52\xC0\xD0\xE5\x3D\x9B\x59\x0F\xF1\x9B\xE7\x9F\x49\xDD\x21"
96"\xE5\xEB";
97
98 static unsigned char p[] =
99"\x00\xCF\x20\x35\x02\x8B\x9D\x86\x98\x40\xB4\x16\x66\xB4\x2E\x92"
100"\xEA\x0D\xA3\xB4\x32\x04\xB5\xCF\xCE\x91";
101
102 static unsigned char q[] =
103"\x00\xC9\x7F\xB1\xF0\x27\xF4\x53\xF6\x34\x12\x33\xEA\xAA\xD1\xD9"
104"\x35\x3F\x6C\x42\xD0\x88\x66\xB1\xD0\x5F";
105
106 static unsigned char dmp1[] =
107"\x00\x8A\x15\x78\xAC\x5D\x13\xAF\x10\x2B\x22\xB9\x99\xCD\x74\x61"
108"\xF1\x5E\x6D\x22\xCC\x03\x23\xDF\xDF\x0B";
109
110 static unsigned char dmq1[] =
111"\x00\x86\x55\x21\x4A\xC5\x4D\x8D\x4E\xCD\x61\x77\xF1\xC7\x36\x90"
112"\xCE\x2A\x48\x2C\x8B\x05\x99\xCB\xE0\x3F";
113
114 static unsigned char iqmp[] =
115"\x00\x83\xEF\xEF\xB8\xA9\xA4\x0D\x1D\xB6\xED\x98\xAD\x84\xED\x13"
116"\x35\xDC\xC1\x08\xF3\x22\xD0\x57\xCF\x8D";
117
118 static unsigned char ctext_ex[] =
119"\x14\xbd\xdd\x28\xc9\x83\x35\x19\x23\x80\xe8\xe5\x49\xb1\x58\x2a"
120"\x8b\x40\xb4\x48\x6d\x03\xa6\xa5\x31\x1f\x1f\xd5\xf0\xa1\x80\xe4"
121"\x17\x53\x03\x29\xa9\x34\x90\x74\xb1\x52\x13\x54\x29\x08\x24\x52"
122"\x62\x51";
123
124 SetKey;
125 }
126
127static int key3(RSA *key, unsigned char *c)
128 {
129 static unsigned char n[] =
130"\x00\xBB\xF8\x2F\x09\x06\x82\xCE\x9C\x23\x38\xAC\x2B\x9D\xA8\x71"
131"\xF7\x36\x8D\x07\xEE\xD4\x10\x43\xA4\x40\xD6\xB6\xF0\x74\x54\xF5"
132"\x1F\xB8\xDF\xBA\xAF\x03\x5C\x02\xAB\x61\xEA\x48\xCE\xEB\x6F\xCD"
133"\x48\x76\xED\x52\x0D\x60\xE1\xEC\x46\x19\x71\x9D\x8A\x5B\x8B\x80"
134"\x7F\xAF\xB8\xE0\xA3\xDF\xC7\x37\x72\x3E\xE6\xB4\xB7\xD9\x3A\x25"
135"\x84\xEE\x6A\x64\x9D\x06\x09\x53\x74\x88\x34\xB2\x45\x45\x98\x39"
136"\x4E\xE0\xAA\xB1\x2D\x7B\x61\xA5\x1F\x52\x7A\x9A\x41\xF6\xC1\x68"
137"\x7F\xE2\x53\x72\x98\xCA\x2A\x8F\x59\x46\xF8\xE5\xFD\x09\x1D\xBD"
138"\xCB";
139
140 static unsigned char e[] = "\x11";
141
142 static unsigned char d[] =
143"\x00\xA5\xDA\xFC\x53\x41\xFA\xF2\x89\xC4\xB9\x88\xDB\x30\xC1\xCD"
144"\xF8\x3F\x31\x25\x1E\x06\x68\xB4\x27\x84\x81\x38\x01\x57\x96\x41"
145"\xB2\x94\x10\xB3\xC7\x99\x8D\x6B\xC4\x65\x74\x5E\x5C\x39\x26\x69"
146"\xD6\x87\x0D\xA2\xC0\x82\xA9\x39\xE3\x7F\xDC\xB8\x2E\xC9\x3E\xDA"
147"\xC9\x7F\xF3\xAD\x59\x50\xAC\xCF\xBC\x11\x1C\x76\xF1\xA9\x52\x94"
148"\x44\xE5\x6A\xAF\x68\xC5\x6C\x09\x2C\xD3\x8D\xC3\xBE\xF5\xD2\x0A"
149"\x93\x99\x26\xED\x4F\x74\xA1\x3E\xDD\xFB\xE1\xA1\xCE\xCC\x48\x94"
150"\xAF\x94\x28\xC2\xB7\xB8\x88\x3F\xE4\x46\x3A\x4B\xC8\x5B\x1C\xB3"
151"\xC1";
152
153 static unsigned char p[] =
154"\x00\xEE\xCF\xAE\x81\xB1\xB9\xB3\xC9\x08\x81\x0B\x10\xA1\xB5\x60"
155"\x01\x99\xEB\x9F\x44\xAE\xF4\xFD\xA4\x93\xB8\x1A\x9E\x3D\x84\xF6"
156"\x32\x12\x4E\xF0\x23\x6E\x5D\x1E\x3B\x7E\x28\xFA\xE7\xAA\x04\x0A"
157"\x2D\x5B\x25\x21\x76\x45\x9D\x1F\x39\x75\x41\xBA\x2A\x58\xFB\x65"
158"\x99";
159
160 static unsigned char q[] =
161"\x00\xC9\x7F\xB1\xF0\x27\xF4\x53\xF6\x34\x12\x33\xEA\xAA\xD1\xD9"
162"\x35\x3F\x6C\x42\xD0\x88\x66\xB1\xD0\x5A\x0F\x20\x35\x02\x8B\x9D"
163"\x86\x98\x40\xB4\x16\x66\xB4\x2E\x92\xEA\x0D\xA3\xB4\x32\x04\xB5"
164"\xCF\xCE\x33\x52\x52\x4D\x04\x16\xA5\xA4\x41\xE7\x00\xAF\x46\x15"
165"\x03";
166
167 static unsigned char dmp1[] =
168"\x54\x49\x4C\xA6\x3E\xBA\x03\x37\xE4\xE2\x40\x23\xFC\xD6\x9A\x5A"
169"\xEB\x07\xDD\xDC\x01\x83\xA4\xD0\xAC\x9B\x54\xB0\x51\xF2\xB1\x3E"
170"\xD9\x49\x09\x75\xEA\xB7\x74\x14\xFF\x59\xC1\xF7\x69\x2E\x9A\x2E"
171"\x20\x2B\x38\xFC\x91\x0A\x47\x41\x74\xAD\xC9\x3C\x1F\x67\xC9\x81";
172
173 static unsigned char dmq1[] =
174"\x47\x1E\x02\x90\xFF\x0A\xF0\x75\x03\x51\xB7\xF8\x78\x86\x4C\xA9"
175"\x61\xAD\xBD\x3A\x8A\x7E\x99\x1C\x5C\x05\x56\xA9\x4C\x31\x46\xA7"
176"\xF9\x80\x3F\x8F\x6F\x8A\xE3\x42\xE9\x31\xFD\x8A\xE4\x7A\x22\x0D"
177"\x1B\x99\xA4\x95\x84\x98\x07\xFE\x39\xF9\x24\x5A\x98\x36\xDA\x3D";
178
179 static unsigned char iqmp[] =
180"\x00\xB0\x6C\x4F\xDA\xBB\x63\x01\x19\x8D\x26\x5B\xDB\xAE\x94\x23"
181"\xB3\x80\xF2\x71\xF7\x34\x53\x88\x50\x93\x07\x7F\xCD\x39\xE2\x11"
182"\x9F\xC9\x86\x32\x15\x4F\x58\x83\xB1\x67\xA9\x67\xBF\x40\x2B\x4E"
183"\x9E\x2E\x0F\x96\x56\xE6\x98\xEA\x36\x66\xED\xFB\x25\x79\x80\x39"
184"\xF7";
185
186 static unsigned char ctext_ex[] =
187"\xb8\x24\x6b\x56\xa6\xed\x58\x81\xae\xb5\x85\xd9\xa2\x5b\x2a\xd7"
188"\x90\xc4\x17\xe0\x80\x68\x1b\xf1\xac\x2b\xc3\xde\xb6\x9d\x8b\xce"
189"\xf0\xc4\x36\x6f\xec\x40\x0a\xf0\x52\xa7\x2e\x9b\x0e\xff\xb5\xb3"
190"\xf2\xf1\x92\xdb\xea\xca\x03\xc1\x27\x40\x05\x71\x13\xbf\x1f\x06"
191"\x69\xac\x22\xe9\xf3\xa7\x85\x2e\x3c\x15\xd9\x13\xca\xb0\xb8\x86"
192"\x3a\x95\xc9\x92\x94\xce\x86\x74\x21\x49\x54\x61\x03\x46\xf4\xd4"
193"\x74\xb2\x6f\x7c\x48\xb4\x2e\xe6\x8e\x1f\x57\x2a\x1f\xc4\x02\x6a"
194"\xc4\x56\xb4\xf5\x9f\x7b\x62\x1e\xa1\xb9\xd8\x8f\x64\x20\x2f\xb1";
195
196 SetKey;
197 }
198
199static int pad_unknown(void)
200{
201 unsigned long l;
202 while ((l = ERR_get_error()) != 0)
203 if (ERR_GET_REASON(l) == RSA_R_UNKNOWN_PADDING_TYPE)
204 return(1);
205 return(0);
206}
207
208static const char rnd_seed[] = "string to make the random number generator think it has entropy";
209
210int main(int argc, char *argv[])
211 {
212 int err=0;
213 int v;
214 RSA *key;
215 unsigned char ptext[256];
216 unsigned char ctext[256];
217 static unsigned char ptext_ex[] = "\x54\x85\x9b\x34\x2c\x49\xea\x2a";
218 unsigned char ctext_ex[256];
219 int plen;
220 int clen = 0;
221 int num;
222
223 CRYPTO_malloc_debug_init();
224 CRYPTO_dbg_set_options(V_CRYPTO_MDEBUG_ALL);
225 CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
226
227 RAND_seed(rnd_seed, sizeof rnd_seed); /* or OAEP may fail */
228
229 plen = sizeof(ptext_ex) - 1;
230
231 for (v = 0; v < 3; v++)
232 {
233 key = RSA_new();
234 switch (v) {
235 case 0:
236 clen = key1(key, ctext_ex);
237 break;
238 case 1:
239 clen = key2(key, ctext_ex);
240 break;
241 case 2:
242 clen = key3(key, ctext_ex);
243 break;
244 }
245
246 num = RSA_public_encrypt(plen, ptext_ex, ctext, key,
247 RSA_PKCS1_PADDING);
248 if (num != clen)
249 {
250 printf("PKCS#1 v1.5 encryption failed!\n");
251 err=1;
252 goto oaep;
253 }
254
255 num = RSA_private_decrypt(num, ctext, ptext, key,
256 RSA_PKCS1_PADDING);
257 if (num != plen || memcmp(ptext, ptext_ex, num) != 0)
258 {
259 printf("PKCS#1 v1.5 decryption failed!\n");
260 err=1;
261 }
262 else
263 printf("PKCS #1 v1.5 encryption/decryption ok\n");
264
265 oaep:
266 ERR_clear_error();
267 num = RSA_public_encrypt(plen, ptext_ex, ctext, key,
268 RSA_PKCS1_OAEP_PADDING);
269 if (num == -1 && pad_unknown())
270 {
271 printf("No OAEP support\n");
272 goto next;
273 }
274 if (num != clen)
275 {
276 printf("OAEP encryption failed!\n");
277 err=1;
278 goto next;
279 }
280
281 num = RSA_private_decrypt(num, ctext, ptext, key,
282 RSA_PKCS1_OAEP_PADDING);
283 if (num != plen || memcmp(ptext, ptext_ex, num) != 0)
284 {
285 printf("OAEP decryption (encrypted data) failed!\n");
286 err=1;
287 }
288 else if (memcmp(ctext, ctext_ex, num) == 0)
289 {
290 printf("OAEP test vector %d passed!\n", v);
291 goto next;
292 }
293
294 /* Different ciphertexts (rsa_oaep.c without -DPKCS_TESTVECT).
295 Try decrypting ctext_ex */
296
297 num = RSA_private_decrypt(clen, ctext_ex, ptext, key,
298 RSA_PKCS1_OAEP_PADDING);
299
300 if (num != plen || memcmp(ptext, ptext_ex, num) != 0)
301 {
302 printf("OAEP decryption (test vector data) failed!\n");
303 err=1;
304 }
305 else
306 printf("OAEP encryption/decryption ok\n");
307 next:
308 RSA_free(key);
309 }
310
311 CRYPTO_cleanup_all_ex_data();
312 ERR_remove_state(0);
313
314 CRYPTO_mem_leaks_fp(stderr);
315
316 return err;
317 }
318#endif
diff --git a/src/lib/libssl/src/test/sha1hashes.txt b/src/lib/libssl/src/test/sha1hashes.txt
new file mode 100644
index 0000000000..4adfa197e9
--- /dev/null
+++ b/src/lib/libssl/src/test/sha1hashes.txt
@@ -0,0 +1,342 @@
1# Configuration information for "SHA-1 Test"
2# SHA tests are configured for BYTE oriented implementations
3H>SHS Type 1 Hashes<H
4D>
5DA39A3EE5E6B4B0D3255BFEF95601890AFD80709 ^
63CDF2936DA2FC556BFA533AB1EB59CE710AC80E5 ^
719C1E2048FA7393CFBF2D310AD8209EC11D996E5 ^
8CA775D8C80FAA6F87FA62BECA6CA6089D63B56E5 ^
971AC973D0E4B50AE9E5043FF4D615381120A25A0 ^
10A6B5B9F854CFB76701C3BDDBF374B3094EA49CBA ^
11D87A0EE74E4B9AD72E6847C87BDEEB3D07844380 ^
121976B8DD509FE66BF09C9A8D33534D4EF4F63BFD ^
135A78F439B6DB845BB8A558E4CEB106CD7B7FF783 ^
14F871BCE62436C1E280357416695EE2EF9B83695C ^
1562B243D1B780E1D31CF1BA2DE3F01C72AEEA0E47 ^
161698994A273404848E56E7FDA4457B5900DE1342 ^
17056F4CDC02791DA7ED1EB2303314F7667518DEEF ^
189FE2DA967BD8441EEA1C32DF68DDAA9DC1FC8E4B ^
1973A31777B4ACE9384EFA8BBEAD45C51A71ABA6DD ^
203F9D7C4E2384EDDABFF5DD8A31E23DE3D03F42AC ^
214814908F72B93FFD011135BEE347DE9A08DA838F ^
220978374B67A412A3102C5AA0B10E1A6596FC68EB ^
2344AD6CB618BD935460D46D3F921D87B99AB91C1E ^
2402DC989AF265B09CF8485640842128DCF95E9F39 ^
2567507B8D497B35D6E99FC01976D73F54AECA75CF ^
261EAE0373C1317CB60C36A42A867B716039D441F5 ^
279C3834589E5BFFAC9F50950E0199B3EC2620BEC8 ^
28209F7ABC7F3B878EE46CDF3A1FBB9C21C3474F32 ^
2905FC054B00D97753A9B3E2DA8FBBA3EE808CEF22 ^
300C4980EA3A46C757DFBFC5BAA38AC6C8E72DDCE7 ^
3196A460D2972D276928B69864445BEA353BDCFFD2 ^
32F3EF04D8FA8C6FA9850F394A4554C080956FA64B ^
33F2A31D875D1D7B30874D416C4D2EA6BAF0FFBAFE ^
34F4942D3B9E9588DCFDC6312A84DF75D05F111C20 ^
35310207DF35B014E4676D30806FA34424813734DD ^
364DA1955B2FA7C7E74E3F47D7360CE530BBF57CA3 ^
3774C4BC5B26FB4A08602D40CCEC6C6161B6C11478 ^
380B103CE297338DFC7395F7715EE47539B556DDB6 ^
39EFC72D99E3D2311CE14190C0B726BDC68F4B0821 ^
40660EDAC0A8F4CE33DA0D8DBAE597650E97687250 ^
41FE0A55A988B3B93946A63EB36B23785A5E6EFC3E ^
420CBDF2A5781C59F907513147A0DE3CC774B54BF3 ^
43663E40FEE5A44BFCB1C99EA5935A6B5BC9F583B0 ^
4400162134256952DD9AE6B51EFB159B35C3C138C7 ^
45CEB88E4736E354416E2010FC1061B3B53B81664B ^
46A6A2C4B6BCC41DDC67278F3DF4D8D0B9DD7784EF ^
47C23D083CD8820B57800A869F5F261D45E02DC55D ^
48E8AC31927B78DDEC41A31CA7A44EB7177165E7AB ^
49E864EC5DBAB0F9FF6984AB6AD43A8C9B81CC9F9C ^
50CFED6269069417A84D6DE2347220F4B858BCD530 ^
51D9217BFB46C96348722C3783D29D4B1A3FEDA38C ^
52DEC24E5554F79697218D317315FA986229CE3350 ^
5383A099DF7071437BA5495A5B0BFBFEFE1C0EF7F3 ^
54AA3198E30891A83E33CE3BFA0587D86A197D4F80 ^
559B6ACBEB4989CBEE7015C7D515A75672FFDE3442 ^
56B021EB08A436B02658EAA7BA3C88D49F1219C035 ^
57CAE36DAB8AEA29F62E0855D9CB3CD8E7D39094B1 ^
5802DE8BA699F3C1B0CB5AD89A01F2346E630459D7 ^
5988021458847DD39B4495368F7254941859FAD44B ^
6091A165295C666FE85C2ADBC5A10329DAF0CB81A0 ^
614B31312EAF8B506811151A9DBD162961F7548C4B ^
623FE70971B20558F7E9BAC303ED2BC14BDE659A62 ^
6393FB769D5BF49D6C563685954E2AECC024DC02D6 ^
64BC8827C3E614D515E83DEA503989DEA4FDA6EA13 ^
65E83868DBE4A389AB48E61CFC4ED894F32AE112AC ^
6655C95459CDE4B33791B4B2BCAAF840930AF3F3BD ^
6736BB0E2BA438A3E03214D9ED2B28A4D5C578FCAA ^
683ACBF874199763EBA20F3789DFC59572ACA4CF33 ^
6986BE037C4D509C9202020767D860DAB039CADACE ^
7051B57D7080A87394EEC3EB2E0B242E553F2827C9 ^
711EFBFA78866315CE6A71E457F3A750A38FACAB41 ^
7257D6CB41AEEC20236F365B3A490C61D0CFA39611 ^
73C532CB64B4BA826372BCCF2B4B5793D5B88BB715 ^
7415833B5631032663E783686A209C6A2B47A1080E ^
75D04F2043C96E10CD83B574B1E1C217052CD4A6B2 ^
76E8882627C64DB743F7DB8B4413DD033FC63BEB20 ^
77CD2D32286B8867BC124A0AF2236FC74BE3622199 ^
78019B70D745375091ED5C7B218445EC986D0F5A82 ^
79E5FF5FEC1DADBAED02BF2DAD4026BE6A96B3F2AF ^
806F4E23B3F2E2C068D13921FE4E5E053FFED4E146 ^
8125E179602A575C915067566FBA6DA930E97F8678 ^
8267DED0E68E235C8A523E051E86108EEB757EFBFD ^
83AF78536EA83C822796745556D62A3EE82C7BE098 ^
8464D7AC52E47834BE72455F6C64325F9C358B610D ^
859D4866BAA3639C13E541F250FFA3D8BC157A491F ^
862E258811961D3EB876F30E7019241A01F9517BEC ^
878E0EBC487146F83BC9077A1630E0FB3AB3C89E63 ^
88CE8953741FFF3425D2311FBBF4AB481B669DEF70 ^
89789D1D2DAB52086BD90C0E137E2515ED9C6B59B5 ^
90B76CE7472700DD68D6328B7AA8437FB051D15745 ^
91F218669B596C5FFB0B1C14BD03C467FC873230A0 ^
921FF3BDBE0D504CB0CDFAB17E6C37ABA6B3CFFDED ^
932F3CBACBB14405A4652ED52793C1814FD8C4FCE0 ^
94982C8AB6CE164F481915AF59AAED9FFF2A391752 ^
955CD92012D488A07ECE0E47901D0E083B6BD93E3F ^
9669603FEC02920851D4B3B8782E07B92BB2963009 ^
973E90F76437B1EA44CF98A08D83EA24CECF6E6191 ^
9834C09F107C42D990EB4881D4BF2DDDCAB01563AE ^
99474BE0E5892EB2382109BFC5E3C8249A9283B03D ^
100A04B4F75051786682483252438F6A75BF4705EC6 ^
101BE88A6716083EB50ED9416719D6A247661299383 ^
102C67E38717FEE1A5F65EC6C7C7C42AFC00CD37F04 ^
103959AC4082388E19E9BE5DE571C047EF10C174A8D ^
104BAA7AA7B7753FA0ABDC4A541842B5D238D949F0A ^
105351394DCEBC08155D100FCD488578E6AE71D0E9C ^
106AB8BE94C5AF60D9477EF1252D604E58E27B2A9EE ^
1073429EC74A695FDD3228F152564952308AFE0680A ^
108907FA46C029BC67EAA8E4F46E3C2A232F85BD122 ^
1092644C87D1FBBBC0FC8D65F64BCA2492DA15BAAE4 ^
110110A3EEB408756E2E81ABAF4C5DCD4D4C6AFCF6D ^
111CD4FDC35FAC7E1ADB5DE40F47F256EF74D584959 ^
1128E6E273208AC256F9ECCF296F3F5A37BC8A0F9F7 ^
113FE0606100BDBC268DB39B503E0FDFE3766185828 ^
1146C63C3E58047BCDB35A17F74EEBA4E9B14420809 ^
115BCC2BD305F0BCDA8CF2D478EF9FE080486CB265F ^
116CE5223FD3DD920A3B666481D5625B16457DCB5E8 ^
117948886776E42E4F5FAE1B2D0C906AC3759E3F8B0 ^
1184C12A51FCFE242F832E3D7329304B11B75161EFB ^
119C54BDD2050504D92F551D378AD5FC72C9ED03932 ^
1208F53E8FA79EA09FD1B682AF5ED1515ECA965604C ^
1212D7E17F6294524CE78B33EAB72CDD08E5FF6E313 ^
12264582B4B57F782C9302BFE7D07F74AA176627A3A ^
1236D88795B71D3E386BBD1EB830FB9F161BA98869F ^
12486AD34A6463F12CEE6DE9596ABA72F0DF1397FD1 ^
1257EB46685A57C0D466152DC339C8122548C757ED1 ^
126E7A98FB0692684054407CC221ABC60C199D6F52A ^
12734DF1306662206FD0A5FC2969A4BEEC4EB0197F7 ^
12856CF7EBF08D10F0CB9FE7EE3B63A5C3A02BCB450 ^
1293BAE5CB8226642088DA760A6F78B0CF8EDDEA9F1 ^
1306475DF681E061FA506672C27CBABFA9AA6DDFF62 ^
13179D81991FA4E4957C8062753439DBFD47BBB277D ^
132BAE224477B20302E881F5249F52EC6C34DA8ECEF ^
133EDE4DEB4293CFE4138C2C056B7C46FF821CC0ACC ^
134<D
135
136H>SHS Type 2 Hashes<H
137D>
138A771FA5C812BD0C9596D869EC99E4F4AC988B13F ^
139E99D566212BBBCEEE903946F6100C9C96039A8F4 ^
140B48CE6B1D13903E3925AE0C88CB931388C013F9C ^
141E647D5BAF670D4BF3AFC0A6B72A2424B0C64F194 ^
14265C1CD932A06B05CD0B43AFB3BC7891F6BCEF45C ^
14370FFAE353A5CD0F8A65A8B2746D0F16281B25EC7 ^
144CC8221F2B829B8CF39646BF46888317C3EB378EA ^
14526ACCC2D6D51FF7BF3E5895588907765111BB69B ^
14601072915B8E868D9B28E759CF2BC1AEA4BB92165 ^
1473016115711D74236ADF0C371E47992F87A428598 ^
148BF30417999C1368F008C1F19FECA4D18A5E1C3C9 ^
14962BA49087185F2742C26E1C1F4844112178BF673 ^
150E1F6B9536F384DD3098285BBFD495A474140DC5A ^
151B522DAE1D67726EBA7C4136D4E2F6D6D645AC43E ^
152E9A021C3EB0B9F2C710554D4BF21B19F78E09478 ^
153DF13573188F3BF705E697A3E1F580145F2183377 ^
154188835CFE52ECFA0C4135C2825F245DC29973970 ^
15541B615A34EE2CEC9D84A91B141CFAB115821950B ^
156AB3DD6221D2AFE6613B815DA1C389EEC74AA0337 ^
1570706D414B4AA7FB4A9051AA70D6856A7264054FB ^
1583CBF8151F3A00B1D5A809CBB8C4F3135055A6BD1 ^
159DA5D6A0319272BBCCEA63ACFA6799756FFDA6840 ^
160FB4429C95F6277B346D3B389413758DFFFEEDC98 ^
1612C6E30D9C895B42DCCCFC84C906EC88C09B20DE1 ^
1623DE3189A5E19F225CDCE254DFF23DACD22C61363 ^
16393530A9BC9A817F6922518A73A1505C411D05DA2 ^
164E31354345F832D31E05C1B842D405D4BD4588EC8 ^
1653FF76957E80B60CF74D015AD431FCA147B3AF232 ^
16634AE3B806BE143A84DCE82E4B830EB7D3D2BAC69 ^
167D7447E53D66BB5E4C26E8B41F83EFD107BF4ADDA ^
16877DD2A4482705BC2E9DC96EC0A13395771AC850C ^
169EAA1465DB1F59DE3F25EB8629602B568E693BB57 ^
1709329D5B40E0DC43AA25FED69A0FA9C211A948411 ^
171E94C0B6AA62AA08C625FAF817DDF8F51EC645273 ^
1727FF02B909D82AD668E31E547E0FB66CB8E213771 ^
1735BB3570858FA1744123BAC2873B0BB9810F53FA1 ^
174905F43940B3591CE39D1145ACB1ECA80AB5E43CD ^
175336C79FBD82F33E490C577E3F791C3CBFE842AFF ^
1765C6D07A6B44F7A75A64F6CE592F3BAE91E022210 ^
1777E0D3E9D33127F4A30EB8D9C134A58409FA8695B ^
1789A5F50DFCFB19286206C229019F0ABF25283028C ^
179DCA737E269F9D8626D488988C996E06B352C0708 ^
180B8FFC1D4972FCE63241E0E77850AC46DDE75DBFA ^
181E9C9BF41C8549354151B977003CE1D830BE667DB ^
1820942908960B54F96CB43452E583F4F9CB66E398A ^
183FCE34051C34D4B81B85DDC4B543CDE8007E284B3 ^
18461E8916532503627F4024D13884640A46F1D61D4 ^
185F008D5D7853B6A17B7466CD9E18BD135E520FAF4 ^
186BD8D2E873CF659B5C77AAC1616827EF8A3B1A3B3 ^
187B25A04DD425302ED211A1C2412D2410FA10C63B6 ^
188A404E21588123E0893718B4B44E91414A785B91F ^
189A1E13BC55BF6DAD83CF3AABDA3287AD68681EA64 ^
190D5FD35FFABED6733C92365929DF0FB4CAE864D15 ^
191C12E9C280EE9C079E0506FF89F9B20536E0A83EF ^
192E22769DC00748A9BBD6C05BBC8E81F2CD1DC4E2D ^
193F29835A93475740E888E8C14318F3CA45A3C8606 ^
1941A1D77C6D0F97C4B620FAA90F3F8644408E4B13D ^
1954EC84870E9BDD25F523C6DFB6EDD605052CA4EAA ^
196D689513FED08B80C39B67371959BC4E3FECB0537 ^
197C4FED58F209FC3C34AD19F86A6DACADC86C04D33 ^
198051888C6D00029C176DE792B84DECE2DC1C74B00 ^
1991A3540BEE05518505827954F58B751C475AEECE0 ^
200DFA19180359D5A7A38E842F172359CAF4208FC05 ^
2017B0FA84EBBCFF7D7F4500F73D79660C4A3431B67 ^
2029E886081C9ACAAD0F97B10810D1DE6FCDCE6B5F4 ^
203A4D46E4BA0AE4B012F75B1B50D0534D578AE9CB6 ^
2046342B199EE64C7B2C9CBCD4F2DCB65ACEF51516F ^
205AABFD63688EB678357869130083E1B52F6EA861D ^
206F732B7372DAF44801F81EFFE3108726239837936 ^
2075E9347FE4574CDCB80281ED092191199BADD7B42 ^
208D5776B7DFFF75C1358ABDBBB3F27A20BB6CA7C55 ^
209022B7ADA472FB7A9DA9219621C9C5F563D3792F6 ^
2107F1DE4ECA20362DA624653D225A5B3F7964A9FF2 ^
211CA0F2B1BFB4469C11ED006A994734F0F2F5EFD17 ^
212833D63F5C2EA0CD43EC15F2B9DD97FF12B030479 ^
21314FD356190416C00592B86FF7CA50B622F85593A ^
2144AB6B57EDDEF1CE935622F935C1619AE7C1667D6 ^
215B456A6A968ACD66CAA974F96A9A916E700AA3C5D ^
216FD1C257FE046B2A27E2F0CD55ED2DECA845F01D7 ^
21766E0D01780F1063E2929EAAD74826BC64060E38C ^
218A8478DF406F179FD4EF97F4574D7F99EA1CE9EB8 ^
219248E58CF09A372114FC2F93B09C5FC14F3D0059E ^
220F15767DE91796A6816977EFA4FCED4B7FD9B8A57 ^
22136A6BC5E680E15675D9696338C88B36248BBBAF4 ^
2224DEA6251B2A6DF017A8093AB066EE3863A4EC369 ^
223D30E70E357D57E3D82CA554B8A3D58DFF528FA94 ^
22470CA84D827F7FD61446233F88CF2F990B0F3E2AA ^
2258D500C9CFDE0288530A2106B70BED39326C52C3C ^
226F3D4D139EDFC24596377BC97A96FB7621F27FFC7 ^
2275509BAFFAC6D507860CEFC5AB5832CB63CD4B687 ^
2280C0AEA0C2FD7A620C77866B1A177481E26B4F592 ^
229149176007FEE58A591E3F00F8DB658B605F8390C ^
23017C0D7B0256159F3626786FFDB20237AE154FA84 ^
231741A58618ABEB1D983D67AFDCBC49AA397A3B8E0 ^
232B738D6B3409EB9ED2F1719B84D13F7C36169CDEC ^
2333D33DE31F64055D3B128AC9A6AA3F92DFD4F5330 ^
234B6925F4DF94949B8844C867428BA3DEDF4CF2B51 ^
235CF5E7256292ABEC431D8E8B9CBEAF22AF072377E ^
236975DCE94902923977F129C0E4ACF40AD28DDB9AA ^
237333B0259B18CE64D6B52CF563DD3041E5F63A516 ^
238<D
239
240H>SHS Type 3 Hashes<H
241D>
24280E044703A880C20EC41F645120A8A5B5D194ECE ^
243E142829CA08FC9787F17AA16CE727396169B2713 ^
2446A2BAF62469D311F9257A0727F52C7EAA87CCEB4 ^
245362E3E7136CA611D7FBF687D3BBDC54CDA64843F ^
246F5900ADC6223A5D24A7526ABFC60FA8E2D59A5AB ^
247AD0CAC6A21D5B10833DDE7FA85927D74EDA142A9 ^
24847AD337EAFFDC177AAF7CBD035BE6F398B9D0536 ^
2499CF58595DF80872535BCC7C056E223546F0BB4EE ^
2507151CEB1918278CED2902B1D663D596F8D1B986F ^
251ADDC9F09AA4026EF6C4B7F1A84D3A13B4CDC65B3 ^
252921FE78A863A317B1FA1FB3CA3BE1948DE7EF754 ^
25364BE10732D71D52CE8A486DA23E6B453DF7C6FBD ^
2544A450659470DD759ABFAE1D73972A6D2E63AC16C ^
2550D665E4BBF30B7EAB955BDE84759E185EECAB4CB ^
2560C1B8EE94D61CDD0837EAED9FE33DE4A8334B596 ^
257D93BFE2A6227A4BF9B7C61EBCE4A8CDE131593FE ^
258BDA883F804B470C90BD6AC490DFC34EBC27F9648 ^
25946A0969373552213632591C52030C38E5DBDC49E ^
2604781289E48B910C550DC23CA7D3AF5324C03532D ^
261693A34CFCDDED0F3AC72E7197FCE9BB66A8E3981 ^
262AE088AF1D8865140963B3ABFB63E32E04CD1506F ^
263ADF0F8F1D85CA97586F5DC6DC5FD11FA39270F55 ^
264E484F5AD86C5F4D09E366ADF6E0DE73449F97B28 ^
26581C49842BA3D7072FB42288E03CE737A2672C091 ^
266F6CC71AD897C23A16835490DED289BFD45500AB0 ^
26723E71AED62FE8E28F34F58E7FE5594EC5EB0486C ^
26892BA7934AA5867EE52960F4E0EDFB90AA7B69305 ^
269C3D1CC8CBD1B6FFEE0D90CE962CD9C09AB1548AA ^
2703CE37A583B71A6A77BE325066A0F00C5D11DFC3E ^
27176EF5D236E1042D356A3234A422C092F86003064 ^
2728C3F703436C6C882E60263540A8E4C3E5646DC15 ^
2736138F9F3AB43B988DD3857422CCB304352459F40 ^
274B812DE98775B4690B4FC2ECFCAB61C73C7271DC7 ^
27506660985CD80D48E7B9F88455B4233924C3B64BB ^
27676AB4B6378D6F63499A94EB67EB1CB31AFF8D775 ^
277F31F6B0BE7AB059A1F59A46481967E88392979E6 ^
2780C1638498FBB7DB9600B98B4B22EF85E0FE245FB ^
2795607C6AF600939736795AC523FA43B736F41A118 ^
2808A03244866BDD21B9D8A82E98436C894FAD86ECC ^
2818A75BFD911AF87303B9B8FB7A1A47CCA52D3D98A ^
28216F0F3B5D37411236A1E3D6B1EDAB74CDA25ED4B ^
283AC72BF45477481F58A302628DC5299FFA32E7C9F ^
28474CFFD5881F75AC20726E1447DCF7F47024380EF ^
2855BFBECEECBC27DA05729C4D1AC8C1286EA6DCEC9 ^
286012AACBC0579FA4CB4F107E9A9AD1A86AD2F6A4D ^
287F7D552CBC5EF90F1A579388B5A8A9EC71EB67681 ^
28810C70115C4C34753274BFED477DF01440A67A361 ^
289078D2FACD293B6B6219D89899C16AA1AA8E3DE82 ^
29083C6BF9FB0D3091ADF374EBFA0A69916F17E6D26 ^
2912CDB1924DA62AB64C007C6505FF657E4ADDEA9C1 ^
292E95D209BCB9864B076FF4DFCA8F8BD75D62D1B48 ^
293632824CF5025F8F90AD2923BDDF449550D64C0F5 ^
29402B1C0B41FC27EC5A32E586F1AC480BF0061E56A ^
29528156BC6769AE390BF32C6512C46169181E1536D ^
296F730E6E287D992E7F3E013B6F1E088F0B9C41598 ^
297B056A6A832FA5FE964EF77FF3E0BE1C32E0D58C0 ^
298D5B3D19AFBB48FB56BA6D44A82DE6BD08DB208DE ^
2990215AD79BD6B8023C05FD2F8966211897DF6337A ^
300EC4CF38C244EB6526A44F70570925247145DA8CA ^
301C0D931262ECE93DA5A6ABC89CD6AD3162EA6B09E ^
3026BB48FAC26AA2B4859BBDEFCFB53AE4D1D9A0340 ^
30358611D43741E67A7F0DA9CB337A59DCD1EBE758E ^
3047C2AEC216AF231509E47B7EED06BB17859812B7E ^
305F60EE5DBF4A7A676EC98B3DDB1CDD6CDF3CDA33B ^
3060492E59B1F4C94E97F29A26C3EE7D57E1B0FDD72 ^
3074FCF549D902D9BE1101A756DB9E45415FB61BCD2 ^
30895C71D26AD6B38CC771376B4A4F962F12E1E3D4F ^
309F6A2449E773C72FB886B3C43E2B30EC2A1B7454A ^
310CDE86695E00AEC9A5DB6FDDB5D5A5934448D58E0 ^
311502318A758FABFF6AC53844E9E2BCD159C678510 ^
312589D295148F95F75DAE964DD743FE981FA236D4E ^
3137973DD33AE3599A556BACC77E8656E782E029EFF ^
3149F5BE43AADD43C6DB3883C9DA4B52E1A50257AEE ^
315454289D8FFB237A56D5214EAE88F0A9D328FEA1A ^
3167E686B36595BEB4C0D4528FF960EDB55088A028D ^
317F9789D1EF19A0084AC0E9F43A4BC0EE0478939EF ^
3182F32B0E7CC8BE19C325545C816E77056D7BBE70F ^
3196B1617746F073CFCD2CEBCAFBBE6FD0E28ED2D56 ^
320CF8D2EA3888AD76761799383E5A15979F6DB7A88 ^
321557AF6D9D5947203C60E98C9A79B92B8BD085E2B ^
322C61A217423DE68ED6CD34C91756C8DD3A650A2A2 ^
32373F3F79C151B6C1BD9369EDB26B932C2362B0593 ^
324364141E5FBCDE83F210C5BBBEB6810F6299DE14B ^
325F806BECD025D264FD59E93D9E3606A674C40F216 ^
326E0C761A57F00CBFB07D49BCB034C36A7122F4C5B ^
3275D3831044B9E0032FBE3C3425FFD13698F413B33 ^
3287EB1AB41E9997753C5D530DF118E71E72D7B86FC ^
329CC053EA1556269D7E8BCBA30B208FCBF0EE2EE64 ^
330A57739B1DD41E7DC0C40D6B6159A7E73CE2748AA ^
33190DA527C9DB9ACC2FD530D560A2F1191A80D0567 ^
3326AC1F2A0B8CA0E5ABC9FDF1ADCE588FBDF5CC53E ^
33343C1A0A0EE4163EC929726989F92B03639B233AB ^
3348927F299462413AC29A74080E54D8EE2DB7165E7 ^
3350C8D7E22226D91B423E781B508F31517EAAB607B ^
3367286E20D7F08D18A893254FBD3CC833F7973DCAF ^
3370CB8C235928B8E936C43B8F29EF3758B9FD54A7B ^
338F67C24CC23E440CA3F206CEEB5504ECA54CD5CA3 ^
339D78A25DEAA1E7ADADDB3C145ED0E5263BA4F2910 ^
34000AA68174D29492C578AC853FFCD55908292D41A ^
341D5570EEDB09A62A5948F7F311F7ED5EF247F9AD9 ^
342<D
diff --git a/src/lib/libssl/src/test/sha1vectors.txt b/src/lib/libssl/src/test/sha1vectors.txt
new file mode 100644
index 0000000000..c2ea186603
--- /dev/null
+++ b/src/lib/libssl/src/test/sha1vectors.txt
@@ -0,0 +1,2293 @@
1# Configuration information for "SHA-1 Test"
2# SHA tests are configured for BYTE oriented implementations
3H>SHS Type 1 Strings<H
4D>
50 1 ^
65 0 2 1 2 1 2 ^
75 0 1 3 4 4 4 ^
87 0 4 3 4 4 1 4 4 ^
910 0 4 1 5 3 4 4 3 1 3 4 ^
1010 0 3 1 6 5 5 1 3 6 6 4 ^
1113 1 3 2 5 3 3 3 4 6 6 1 4 6 2 ^
1216 1 3 5 5 1 2 1 3 3 6 3 5 2 3 5 7 2 ^
1315 1 8 1 5 3 2 7 4 5 6 7 3 3 1 6 3 ^
1415 1 4 6 8 2 1 4 2 5 1 6 8 8 6 4 7 ^
1518 1 1 2 7 3 8 6 7 5 4 3 4 3 5 3 3 2 6 8 ^
1616 0 9 8 1 8 1 7 6 7 7 1 2 6 9 5 4 7 ^
1718 0 7 1 7 3 9 4 7 7 5 2 8 1 7 8 2 7 2 9 ^
1819 1 2 3 1 8 8 6 9 10 3 10 8 9 2 4 1 5 1 5 9 ^
1919 1 8 5 4 8 1 3 9 5 7 7 2 7 2 7 8 7 4 8 10 ^
2020 1 1 9 7 4 1 4 5 1 10 8 6 4 4 9 9 9 8 2 9 10 ^
2119 1 11 6 7 7 2 6 2 6 10 6 9 10 5 11 1 6 8 11 4 ^
2222 0 10 5 10 3 7 8 9 9 1 1 1 10 2 1 5 10 2 9 9 9 7 8 ^
2321 0 1 10 1 6 9 4 2 5 2 11 8 12 12 9 8 1 3 10 7 11 12 ^
2424 1 3 9 5 12 3 4 2 9 12 11 6 6 1 1 9 5 9 1 4 9 4 10 8 9 ^
2525 1 3 2 3 11 1 12 5 6 2 7 8 4 8 8 9 9 8 4 9 1 4 8 10 9 9 ^
2623 0 11 10 7 10 10 6 10 9 4 5 10 5 8 4 1 10 12 4 6 1 8 11 6 ^
2722 0 12 8 10 4 3 8 5 5 7 11 13 11 12 11 4 12 3 6 5 11 10 5 ^
2826 1 10 9 6 9 7 2 10 4 4 5 5 2 12 13 5 3 1 10 1 4 7 8 13 13 12 9 ^
2931 0 2 6 5 4 7 3 10 6 13 6 3 9 6 2 10 5 3 8 4 1 11 3 5 3 7 11 1 12 9 12 5 ^
3027 1 14 5 1 3 7 2 3 9 3 4 14 4 4 10 8 5 14 1 11 12 12 10 4 13 7 11 9 ^
3130 1 4 9 5 5 8 9 5 10 4 2 4 7 9 9 6 3 5 1 8 3 2 13 3 14 9 8 9 10 14 10 ^
3227 0 12 9 5 8 7 2 14 12 3 8 14 6 6 4 7 5 7 10 7 11 10 1 9 6 7 12 14 ^
3324 0 12 9 9 2 11 13 12 11 11 6 14 13 10 5 6 8 10 4 3 11 11 14 5 14 ^
3424 0 15 4 5 3 8 12 15 8 14 15 9 12 12 3 10 13 6 11 10 4 13 14 8 8 ^
3528 1 1 8 1 5 11 4 9 12 4 13 15 5 9 11 7 14 11 1 11 7 8 8 11 1 13 15 12 13 ^
3632 1 5 8 3 8 10 7 8 1 5 13 12 14 5 3 6 4 12 15 6 6 10 11 13 9 1 11 6 10 3 7 14
372 ^
3831 0 10 3 5 1 14 11 11 16 1 2 2 11 6 13 15 12 6 5 16 2 14 2 10 12 2 5 5 6 10 13
3915 ^
4034 0 3 10 8 16 9 5 12 15 4 11 13 3 6 5 10 8 1 3 9 3 11 1 2 16 12 10 6 1 9 1 16
415 6 14 ^
4230 1 1 12 4 4 2 15 13 15 11 15 5 11 9 7 15 16 6 16 12 3 2 10 16 5 5 7 1 7 11 16
43^
4434 0 7 9 11 2 5 5 5 4 13 13 14 4 7 12 6 4 8 2 9 9 13 13 3 3 6 7 16 7 6 15 5 8
4515 14 ^
4636 1 4 6 16 15 11 14 14 4 7 10 3 4 10 3 6 7 14 4 6 6 5 2 7 8 16 2 12 16 10 14 3
472 3 7 14 3 ^
4832 0 15 10 9 1 14 10 14 6 6 16 3 2 3 8 3 12 8 11 17 3 9 7 16 14 4 11 15 5 13 9
495 17 ^
5030 0 17 17 13 8 2 6 8 16 1 12 5 17 2 9 8 10 13 14 11 17 12 5 14 9 11 9 11 4 11
5112 ^
5230 1 16 6 10 5 8 3 17 16 14 1 15 15 15 6 13 2 11 6 13 11 13 4 6 7 11 11 12 16
5313 16 ^
5433 1 16 16 14 16 2 4 16 11 6 15 7 4 17 6 5 7 6 3 14 16 5 17 11 13 1 1 14 13 3 6
5514 5 16 ^
5639 1 2 16 13 7 8 6 2 15 1 9 12 4 4 11 13 7 2 11 9 18 4 5 4 8 2 14 9 9 1 8 13 11
5715 8 5 9 10 16 7 ^
5834 0 2 7 1 1 17 13 6 11 10 8 5 12 15 6 15 10 12 4 18 1 2 8 11 12 16 10 12 18 11
5916 12 11 17 6 ^
6034 1 4 7 13 7 10 7 10 6 1 12 7 18 11 18 2 10 15 10 14 8 18 9 9 12 12 3 13 12 6
614 9 17 13 17 ^
6240 0 5 7 3 2 1 17 14 4 16 6 13 1 13 6 6 10 1 3 18 3 11 7 9 5 7 11 17 1 9 16 5
6315 10 17 3 8 15 17 8 12 ^
6440 0 11 3 15 17 11 1 1 4 3 14 18 4 2 18 8 15 6 4 6 3 15 11 16 10 17 17 9 6 3 2
656 16 4 9 12 6 8 1 11 17 ^
6637 1 2 19 12 8 16 14 2 9 16 2 6 6 7 9 10 9 11 9 14 11 15 5 16 9 2 17 2 8 15 8 4
673 14 14 16 16 12 ^
6837 1 11 10 16 12 11 7 14 14 14 6 10 10 1 6 13 19 5 6 4 7 12 12 10 5 10 15 15 8
695 13 17 13 5 6 14 1 19 ^
7038 1 2 6 5 17 9 11 18 18 8 6 13 15 3 3 15 5 13 18 3 2 5 5 14 7 13 4 17 7 2 17 3
7118 15 7 15 16 18 11 ^
7238 1 12 8 6 3 17 12 13 19 15 9 7 17 16 15 3 11 11 5 2 13 19 16 2 4 16 7 8 1 2 9
7317 12 3 5 18 19 11 9 ^
7439 1 14 16 14 8 9 16 5 1 6 3 17 18 16 9 1 15 9 10 9 19 1 3 3 20 11 13 17 1 19 8
753 4 3 7 1 14 19 19 19 ^
7637 1 18 13 11 5 18 4 19 10 6 19 11 17 10 10 7 9 13 16 9 10 18 4 12 5 16 5 20 12
773 8 10 1 18 1 6 20 14 ^
7836 0 8 9 6 12 11 7 7 3 17 13 6 20 17 9 20 16 10 12 17 8 11 8 11 10 5 10 14 18 8
7919 9 12 12 2 20 19 ^
8039 0 12 16 20 3 9 9 19 17 13 13 4 17 2 11 7 14 3 6 16 13 10 13 5 16 10 2 8 2 17
8119 4 17 7 19 6 9 15 15 6 ^
8243 0 7 2 18 5 7 18 5 2 15 7 11 10 9 3 2 14 19 3 11 8 18 15 5 3 5 12 15 16 10 17
837 19 16 2 1 16 6 3 19 12 5 18 16 ^
8449 1 9 11 2 1 12 11 14 12 14 10 4 11 6 8 16 7 5 11 20 8 17 4 14 4 15 3 2 2 4 3
852 3 14 15 10 2 12 7 3 7 20 20 19 10 2 3 1 10 20 ^
8636 0 19 20 12 5 19 21 5 21 11 14 19 1 17 8 9 4 19 3 17 1 14 21 14 7 6 5 20 14
8721 20 4 6 21 7 11 12 ^
8841 0 12 9 11 6 16 18 18 10 11 20 6 12 11 5 7 21 19 18 6 15 21 10 4 14 9 19 10 3
893 5 13 1 8 12 3 13 9 7 10 17 14 ^
9045 0 10 6 8 3 17 18 3 21 19 6 17 15 4 9 15 9 15 14 4 7 14 8 10 13 4 11 10 7 6
9121 1 14 5 11 7 7 2 13 13 3 9 13 8 14 20 ^
9239 1 3 7 18 4 9 9 5 15 13 17 10 15 16 20 8 19 9 10 9 1 19 14 21 2 18 13 10 4 18
9316 4 21 15 10 18 19 3 12 18 ^
9441 0 14 4 13 11 1 11 1 10 2 12 4 21 10 21 18 9 2 16 7 20 6 7 12 19 20 1 13 12
9510 8 21 15 7 19 13 6 8 19 20 18 19 ^
9637 0 11 18 1 17 14 15 20 16 20 8 2 17 10 4 21 5 19 19 14 22 21 18 13 14 1 3 12
9711 11 4 22 13 5 18 7 21 21 ^
9848 0 9 22 19 12 8 16 5 17 5 9 1 2 9 6 12 6 1 7 4 3 15 1 14 1 12 3 10 2 10 14 21
9913 17 6 6 17 1 21 2 14 16 17 9 11 20 21 11 18 ^
10050 1 12 8 20 13 2 9 20 9 14 10 1 16 2 22 6 4 16 14 15 1 12 4 14 9 21 3 3 9 8 21
10115 14 8 4 14 4 2 3 8 12 8 6 1 2 18 20 15 3 19 10 ^
10244 0 10 20 14 6 3 4 21 1 12 4 18 2 6 7 6 9 20 14 10 10 19 17 21 12 15 17 7 10
10311 8 10 12 1 19 19 9 18 21 4 18 11 9 22 5 ^
10447 0 15 8 15 3 5 6 2 19 12 17 4 20 8 11 20 2 18 4 16 20 12 9 9 6 16 21 16 3 16
10518 3 19 5 16 2 4 2 12 11 15 11 14 17 2 10 18 8 ^
10648 1 5 13 3 21 5 3 6 18 18 10 1 21 21 7 1 13 12 19 1 14 6 8 21 19 21 11 19 13 2
10713 4 1 10 22 16 4 9 4 10 16 3 7 15 11 9 13 17 12 ^
10845 0 14 7 6 2 20 3 6 19 19 10 2 22 12 17 12 1 20 7 7 15 20 6 18 8 3 14 23 18 15
1094 7 5 23 15 7 14 10 10 19 17 2 4 15 17 21 ^
11045 1 15 11 8 9 17 5 12 18 14 6 20 17 21 12 16 9 22 9 20 15 2 22 11 2 6 11 9 8 2
1114 14 19 3 21 21 23 8 2 11 4 8 4 20 22 11 ^
11238 0 21 18 22 10 19 9 14 17 23 21 10 7 15 13 16 5 4 10 13 14 20 23 12 20 23 18
11310 12 8 21 11 6 12 7 19 14 18 17 ^
11440 0 18 22 6 9 22 5 23 13 6 8 23 20 22 5 22 15 19 20 9 9 1 13 13 10 14 13 5 22
11514 21 9 21 19 14 14 4 18 13 12 14 ^
11648 1 7 3 15 5 17 14 23 14 5 17 22 11 1 8 13 23 6 21 3 6 11 7 23 8 6 21 4 4 22
11719 13 8 5 19 7 5 23 1 4 19 11 23 11 21 14 1 3 21 ^
11843 0 22 14 11 7 18 16 17 24 12 12 3 13 19 16 22 4 16 4 6 23 8 18 11 2 3 20 22 9
11921 8 23 1 23 20 7 16 13 23 4 13 3 7 22 ^
12047 1 23 6 13 19 2 3 7 2 9 9 15 6 13 4 22 6 19 20 1 9 7 14 1 15 3 23 24 22 18 12
12112 17 19 10 8 11 22 12 10 2 20 15 18 17 18 7 19 ^
12247 1 12 21 6 12 4 7 18 17 3 2 14 24 14 1 23 1 11 15 10 6 18 20 7 1 8 1 16 6 20
12323 23 21 10 10 12 24 10 11 23 2 12 23 9 3 24 24 10 ^
12452 0 14 10 18 15 14 5 16 11 22 2 15 24 8 22 1 4 24 9 10 15 3 9 5 4 17 15 9 12
12519 19 1 3 10 6 8 3 17 8 18 24 19 3 4 15 4 9 2 24 5 20 13 13 ^
12642 0 20 17 19 22 13 8 10 19 15 11 1 14 17 20 22 10 7 11 16 9 21 22 17 23 12 15
1274 24 7 21 18 2 21 16 1 19 18 20 11 3 15 17 ^
12850 0 18 1 6 14 5 5 5 19 13 10 24 19 16 24 15 13 2 19 15 24 21 17 4 13 17 1 1 9
1291 10 2 18 1 21 19 5 18 12 2 22 16 23 15 19 6 18 9 1 23 5 ^
13051 0 21 13 14 11 18 12 13 3 19 9 20 22 20 2 11 12 6 1 12 16 18 2 9 8 4 3 11 17
13111 5 4 19 16 11 23 13 18 1 20 8 2 16 16 21 4 19 5 5 20 24 16 ^
13253 1 20 25 17 11 8 4 19 25 17 7 16 21 6 4 8 2 15 9 2 9 19 3 6 3 3 10 25 13 15 7
1338 20 21 12 10 12 5 24 11 20 3 13 13 16 9 13 10 3 9 16 3 7 25 ^
13449 1 9 9 14 2 13 17 25 2 18 5 19 23 9 25 9 10 23 12 12 7 13 8 15 7 1 6 21 2 8 7
1356 16 14 14 12 15 13 24 10 15 11 10 8 14 15 21 25 21 25 ^
13647 0 9 18 20 22 21 20 11 14 23 22 10 13 14 8 19 12 2 11 20 23 13 4 10 6 5 7 23
13711 3 16 8 21 4 8 18 5 12 14 8 6 20 19 24 8 23 17 23 ^
13848 1 7 19 1 18 1 14 22 13 14 5 8 22 18 14 25 17 11 12 22 2 12 12 16 12 13 18 17
13912 17 14 18 8 25 9 23 5 3 8 14 24 17 7 3 3 23 17 22 19 ^
14051 1 19 17 16 22 24 14 16 20 23 20 9 19 16 7 12 16 5 8 9 7 10 21 24 10 11 19 1
14121 14 14 19 3 22 8 12 20 1 18 5 6 5 12 14 1 1 11 9 22 3 24 4 ^
14252 1 6 1 11 16 1 12 8 11 11 17 10 22 7 3 10 2 6 4 24 16 24 19 4 5 18 11 12 9 20
14321 25 2 21 18 10 20 25 21 3 17 17 5 8 22 25 19 8 10 19 7 11 18 ^
14444 0 26 14 21 25 25 4 9 13 5 8 9 21 8 12 26 24 9 24 15 1 23 22 16 14 8 22 15 19
14524 20 7 8 15 24 12 4 4 23 21 13 19 15 21 12 ^
14659 1 15 7 3 21 20 8 22 14 23 26 19 2 10 18 3 5 3 1 9 15 15 3 7 13 23 9 7 1 13
14717 14 25 9 16 2 2 6 13 7 19 25 17 1 5 21 2 7 22 5 6 25 3 12 19 6 2 4 24 17 ^
14860 0 9 18 20 19 4 11 14 1 6 8 26 6 9 22 4 10 2 7 21 9 8 24 25 14 22 12 22 3 23
1493 3 20 6 11 23 6 1 7 5 18 5 15 25 26 1 1 10 11 11 4 12 11 20 3 14 2 3 2 23 15 ^
15049 0 12 17 24 11 8 6 24 16 15 22 21 14 6 12 20 19 5 5 12 11 6 23 2 16 23 7 24 6
15121 2 17 17 5 25 11 25 20 25 24 18 6 12 19 25 7 6 5 2 25 ^
15254 1 12 16 1 15 7 1 26 19 19 13 20 11 17 6 20 5 24 24 1 21 11 9 20 21 15 10 19
15326 3 2 6 7 12 9 10 8 14 10 15 5 17 8 21 1 20 25 6 19 8 3 22 16 16 20 ^
15463 0 17 13 11 10 17 15 12 6 13 14 17 4 12 10 24 5 13 24 3 5 2 5 11 14 8 5 10 17
15516 8 4 14 21 15 3 6 17 25 8 2 3 3 19 10 13 22 22 8 2 13 25 17 2 1 19 1 14 20 2
1565 4 15 24 ^
15749 0 14 20 7 25 20 26 20 16 7 17 17 22 1 13 6 5 1 18 14 15 23 15 10 5 19 18 18
15826 12 13 3 25 12 21 16 24 4 16 3 6 26 26 10 20 13 1 20 24 15 ^
15956 0 3 8 14 5 5 7 11 13 11 26 11 4 26 17 20 19 11 10 3 10 14 9 6 9 7 16 10 4 4
16019 19 2 26 13 19 17 15 24 15 4 21 22 13 13 12 22 2 14 20 5 18 7 17 24 20 20 ^
16158 1 6 17 9 20 2 10 19 3 22 4 1 11 3 5 3 21 11 15 12 23 26 5 2 27 6 5 16 6 3 2
16223 5 3 20 20 4 24 2 18 21 7 14 10 27 23 6 24 6 19 23 3 9 22 16 21 17 19 23 ^
16358 1 17 7 21 19 6 16 15 15 20 14 2 25 19 14 18 19 7 9 1 14 11 10 16 3 23 14 26
16410 11 1 18 1 12 24 19 19 1 7 2 3 24 7 12 9 2 8 16 20 24 5 26 26 4 9 2 7 25 17 ^
16554 1 8 12 18 14 26 7 17 18 4 20 1 16 14 21 26 4 6 8 24 11 25 15 24 16 23 4 10
16623 21 24 15 10 9 26 7 14 24 21 6 20 5 17 16 17 1 3 12 1 4 13 3 9 21 26 ^
16756 1 7 18 11 1 19 20 23 12 12 27 13 13 15 16 13 1 16 15 12 26 3 16 16 8 17 13
16821 4 6 5 19 14 16 4 16 11 14 18 18 27 9 13 21 3 26 22 3 7 6 4 26 3 15 8 25 21 ^
16950 1 20 13 9 11 20 6 11 21 27 25 20 7 4 18 26 16 27 5 12 19 7 23 6 25 25 2 11
17013 25 21 18 17 6 12 14 13 24 11 14 19 26 27 25 6 1 15 4 7 27 15 ^
17151 0 15 16 26 27 23 14 12 28 22 15 8 19 2 20 13 1 24 2 25 1 6 19 19 8 11 24 24
17221 13 27 5 11 28 17 7 25 6 23 24 14 25 12 5 13 26 2 5 8 10 16 17 ^
17358 1 5 26 18 19 21 3 12 11 13 4 14 22 22 14 16 13 3 22 16 23 5 19 6 13 10 26 17
17427 26 4 3 25 6 14 2 3 5 7 23 11 22 8 25 2 9 25 18 17 8 2 14 4 19 1 5 27 13 24 ^
17553 0 2 27 28 2 17 23 10 27 18 26 7 22 16 3 27 1 26 21 28 10 3 6 2 2 10 17 13 16
1766 17 21 23 13 20 22 5 6 11 12 12 8 23 13 17 9 23 20 3 28 27 12 17 22 ^
17759 0 28 19 5 21 4 27 8 1 19 14 20 6 7 9 1 6 22 3 19 26 14 8 6 7 19 15 23 1 17
17816 6 26 14 5 22 25 4 7 10 16 21 10 18 19 24 16 23 8 3 17 28 18 10 2 5 3 21 21
17915 ^
18058 0 6 24 1 4 24 18 10 22 1 21 12 5 4 4 20 25 24 26 8 25 11 2 7 27 22 19 4 18
18127 10 28 4 12 24 8 16 12 11 16 17 25 8 12 16 1 9 9 10 5 24 23 18 5 14 18 8 4 28
182^
18361 0 5 17 8 28 1 22 4 11 3 2 17 3 14 9 27 13 18 24 9 8 7 28 25 14 21 27 24 6 18
18416 2 12 15 9 14 10 1 8 17 4 6 15 26 11 15 2 28 20 26 16 3 7 5 8 9 26 10 12 25
18511 22 ^
18653 0 9 13 24 15 20 2 4 8 2 22 20 19 4 15 14 28 13 25 10 10 12 28 24 22 26 28 15
1879 11 26 19 22 27 2 21 8 20 23 26 12 10 21 9 15 13 25 7 26 1 13 5 9 20 ^
18858 0 3 9 21 22 7 1 23 28 1 2 8 22 12 18 28 5 18 14 7 11 17 20 20 7 21 13 8 28
18921 22 2 16 20 15 28 9 3 22 13 10 23 4 16 11 14 1 10 8 14 14 15 18 13 12 21 18
19025 28 ^
19160 1 29 20 2 29 22 8 16 20 4 12 9 6 12 16 16 7 9 20 29 11 9 4 1 15 25 16 29 10
19222 7 2 8 5 18 14 23 24 4 6 26 3 11 6 12 1 7 14 24 14 6 10 21 16 23 29 25 6 14
19317 24 ^
19464 0 12 10 5 10 15 25 8 15 3 7 13 25 16 14 1 29 22 26 15 27 9 1 8 8 28 6 13 5
19513 3 15 5 23 8 23 2 5 5 4 17 13 14 7 17 12 27 3 18 5 7 5 26 18 15 22 28 16 13 7
1962 23 19 25 15 ^
19756 1 17 7 16 25 23 11 11 15 2 13 9 26 2 24 26 7 28 11 2 29 7 22 23 5 28 19 1 27
19829 1 24 11 18 20 3 13 11 7 3 15 17 24 1 18 13 6 3 25 27 16 28 18 24 8 23 22 ^
19951 1 29 28 6 28 14 12 28 27 22 4 14 25 1 3 9 7 11 14 15 16 10 19 12 19 11 20 13
20028 4 27 28 7 27 12 4 28 21 17 22 20 17 15 15 23 22 13 12 21 22 21 29 ^
20164 1 12 14 12 18 27 8 7 4 9 14 16 15 8 11 21 20 10 10 21 23 20 2 11 23 1 11 1 5
2023 23 16 15 27 14 5 16 3 22 2 3 24 3 19 29 4 4 10 8 20 14 15 1 26 12 27 25 4 28
20322 11 19 19 24 9 ^
20460 1 20 8 9 5 25 19 17 19 15 7 24 24 21 3 20 16 8 3 17 28 18 29 9 23 9 10 29 4
20512 24 15 5 8 22 17 29 12 3 8 29 15 21 21 4 7 20 7 10 7 26 10 16 24 6 7 12 8 12
20615 17 ^
20760 0 9 17 11 28 12 26 26 6 29 13 10 20 6 23 10 4 3 26 26 14 20 20 25 14 13 15
20824 14 11 4 23 27 24 20 9 16 17 24 13 12 6 1 14 26 25 7 8 21 1 19 3 2 2 17 21 13
2095 9 21 11 ^
21054 0 25 1 27 24 6 23 16 5 1 20 29 22 25 9 25 10 3 28 28 25 19 18 16 24 14 15 5
21128 12 28 26 29 2 15 15 9 5 18 19 22 12 15 4 6 15 24 16 9 4 26 25 18 27 12 ^
21261 1 20 4 26 12 3 22 1 22 30 3 28 10 9 24 14 29 6 30 3 10 20 14 6 3 19 21 21 28
21316 18 11 30 11 20 30 1 9 8 11 5 19 10 24 4 22 4 2 26 5 15 20 8 3 13 30 18 8 1
21425 28 19 ^
21556 1 20 15 21 18 18 12 16 13 24 9 21 2 28 6 1 23 9 18 27 27 4 9 13 10 8 14 16
21615 12 11 14 21 14 10 11 25 17 17 30 21 13 27 26 26 22 14 13 17 21 19 9 9 20 23
21713 28 ^
21859 1 10 28 24 10 22 27 23 27 8 17 14 6 4 21 26 15 1 8 29 27 6 28 15 3 27 25 25
21914 19 13 29 8 24 2 8 2 4 12 19 11 10 6 26 14 22 24 30 10 11 12 2 12 17 23 8 8
22012 28 12 ^
22156 0 14 28 2 17 4 8 3 26 9 23 21 30 30 20 4 13 28 29 9 3 17 7 19 30 28 1 2 20 9
22212 24 15 30 20 27 3 23 11 6 29 25 23 26 17 20 10 22 15 23 6 25 5 4 30 2 29 ^
22363 1 23 15 27 14 26 1 1 7 19 12 7 6 20 18 14 4 15 17 28 7 11 7 8 9 22 17 12 5
22423 18 25 18 6 12 26 30 12 30 14 3 1 18 10 20 27 21 8 6 24 26 20 11 24 7 2 4 18
22515 14 30 16 19 14 ^
22652 0 27 15 4 19 25 29 29 7 14 18 9 11 9 27 11 15 29 9 28 20 2 30 26 21 17 8 28
22717 22 29 24 8 11 18 29 15 6 7 27 27 17 24 18 23 11 19 8 30 5 24 22 24 ^
22866 1 25 15 28 23 5 10 21 5 8 7 3 10 19 17 6 9 15 29 10 7 4 1 16 21 16 29 13 18
2295 3 8 15 8 21 29 20 5 27 2 13 27 7 7 30 2 18 26 10 2 5 29 21 15 25 26 24 8 12
23020 3 9 10 30 7 12 29 ^
23153 1 30 26 20 11 22 19 27 2 16 10 6 4 24 17 20 25 20 15 8 23 23 20 30 18 16 3
23230 15 26 23 28 7 21 8 7 31 31 14 26 18 3 1 26 28 15 25 11 31 3 25 9 21 30 ^
23367 0 2 6 14 4 9 5 28 8 17 22 1 4 8 7 10 14 19 10 14 8 27 9 24 26 4 30 11 8 19 5
23421 7 2 27 20 16 20 20 22 14 13 16 26 14 10 3 25 22 25 23 21 10 15 15 29 8 13 4
2352 13 22 20 7 4 20 31 23 ^
23665 0 2 2 28 13 19 14 12 23 27 6 2 14 2 22 6 25 30 29 31 13 14 16 31 12 16 30 5
23714 31 11 4 1 1 25 21 13 26 22 21 5 22 14 29 1 21 3 14 30 4 2 29 12 15 23 3 15 5
2381 6 23 22 13 1 14 23 ^
23959 1 25 5 15 6 13 3 22 11 23 31 24 6 5 20 4 14 3 29 8 29 19 7 29 23 25 28 19 11
24015 27 21 14 1 19 20 26 12 7 12 1 18 13 29 28 23 29 14 23 7 1 9 29 24 5 30 18 5
24125 30 ^
24255 1 31 25 13 7 24 25 24 1 12 19 9 7 6 28 20 14 28 21 19 31 20 20 6 24 18 27 24
2434 18 21 1 31 15 1 15 2 27 4 26 25 4 23 19 2 31 22 30 21 22 5 27 12 30 28 31 ^
24462 0 27 15 18 14 25 15 17 7 28 11 28 29 30 1 17 12 10 2 18 20 21 2 11 12 5 4 12
24525 14 5 5 24 22 18 31 15 22 29 11 3 21 31 21 27 3 28 7 10 25 2 15 30 9 30 7 22
24615 9 3 20 24 14 ^
24760 0 28 14 18 9 27 14 22 27 31 10 8 14 7 15 7 20 5 26 1 29 7 17 17 8 3 13 27 18
2488 31 27 28 22 22 17 19 18 18 11 19 13 25 10 19 6 28 4 31 23 10 18 26 31 5 10 13
24912 8 15 27 ^
25060 1 24 22 4 29 22 31 28 20 4 16 21 3 1 15 5 15 6 30 3 29 29 7 27 20 2 20 31 22
25126 9 29 16 4 26 32 17 20 14 28 17 19 6 24 11 26 28 5 18 15 8 16 20 21 4 9 12 4
2528 17 29 ^
253<D
254
255H>SHS Type 2 Strings<H
256D>
25769 1 5 3 11 15 12 24 31 23 1 6 28 2 8 31 6 7 30 5 19 23 12 6 9 31 19 17 24 25
25822 6 12 16 3 7 9 9 11 29 4 11 2 5 13 29 10 12 30 32 18 28 18 27 3 30 4 4 26 6
25913 31 13 2 11 7 24 4 17 29 12 ^
26095 0 21 19 21 23 11 42 36 2 13 4 1 33 22 16 27 9 4 33 16 3 30 15 11 32 13 17 38
26132 9 38 4 36 15 32 27 19 42 18 6 36 22 10 29 12 25 40 15 29 23 28 30 4 8 11 24
2629 10 31 28 43 23 16 29 33 5 40 26 3 19 12 36 43 5 35 37 5 14 11 45 35 16 10 8
26332 4 15 35 26 2 39 22 37 22 30 29 ^
264106 1 18 14 51 2 6 32 51 9 32 50 44 46 51 8 11 53 45 55 16 10 3 52 8 20 20 46
26546 13 32 2 46 50 43 25 54 9 31 29 2 47 15 29 24 45 44 18 37 14 28 39 36 44 47
26616 50 10 44 24 53 35 22 40 20 15 51 22 18 22 42 6 54 49 38 21 7 13 30 16 7 52
26716 22 13 38 7 11 44 33 9 25 13 37 42 14 45 53 30 38 5 25 5 35 38 22 28 53 ^
268127 0 58 35 43 28 5 28 63 8 12 25 9 47 53 29 62 7 37 2 3 48 5 12 55 56 28 35 12
26963 6 58 27 27 48 44 35 14 17 22 56 10 8 1 16 15 42 63 14 51 57 19 41 7 8 56 47
27034 52 22 48 60 43 9 1 52 4 21 49 61 18 50 23 13 46 62 23 45 62 9 56 18 23 31 8
27130 27 36 13 38 4 58 53 47 24 18 41 58 19 12 18 52 42 29 44 45 26 63 34 32 41 64
27215 26 55 19 2 49 6 30 53 13 54 12 53 37 12 37 43 ^
273148 0 60 4 51 47 58 38 17 63 33 23 28 43 12 69 70 33 17 12 50 18 18 36 45 2 67
2744 45 20 4 33 38 29 45 8 22 58 39 71 38 32 53 35 19 53 31 29 51 35 4 63 18 33 26
27547 70 9 64 62 63 30 15 1 35 28 16 40 20 14 50 33 19 38 30 27 55 10 16 46 47 7
27655 12 53 26 56 33 29 55 25 17 48 43 21 43 18 24 63 27 68 46 38 33 35 10 18 11
27727 5 9 58 35 70 36 36 39 47 2 10 66 47 5 18 21 44 71 51 57 3 22 7 56 55 28 25
27814 40 16 24 48 37 66 50 24 45 18 39 53 55 ^
279165 1 15 62 35 29 15 40 19 76 67 4 5 71 46 61 26 8 77 48 1 23 12 60 40 24 44 33
28029 42 73 66 49 61 20 30 1 54 52 42 39 64 23 65 37 24 20 11 26 66 22 77 22 57 7
28138 57 33 61 73 7 64 1 49 35 76 14 27 21 45 68 38 58 73 13 72 47 73 33 8 66 23
28238 4 56 77 47 10 71 13 20 31 41 6 51 3 18 17 61 47 14 48 76 46 28 34 43 1 56 4
28325 7 65 41 1 34 37 23 59 59 27 26 13 15 14 75 60 14 1 28 59 26 65 61 16 23 17
28428 6 19 2 35 49 30 29 48 2 63 73 59 1 3 76 41 11 19 18 43 54 63 67 51 4 9 78 60
28566 ^
286181 0 18 19 84 17 12 10 57 18 77 51 52 16 39 74 49 52 63 38 72 2 15 64 83 62 49
28756 11 26 68 58 83 33 23 50 63 71 53 27 84 22 39 41 52 58 11 64 7 60 45 70 22 5
28873 38 30 30 48 21 75 80 40 21 8 53 9 26 30 34 81 71 71 51 23 75 33 41 23 32 5 8
28966 40 72 40 16 66 45 14 48 34 21 41 27 3 55 27 37 23 41 65 4 57 51 74 22 19 75
29042 16 19 46 16 10 48 20 19 37 41 14 57 9 17 55 38 5 60 7 46 20 43 36 39 52 20
29110 62 45 23 46 7 35 75 29 70 35 36 34 25 12 15 84 26 10 6 71 29 79 33 32 25 59
29276 82 64 58 7 8 19 41 74 2 53 65 24 1 55 51 36 21 79 7 ^
293184 1 60 66 66 6 3 9 73 12 7 40 70 18 71 70 65 51 14 14 27 50 9 87 81 50 22 19
29440 37 16 79 12 34 37 76 82 10 61 7 81 49 67 26 45 82 50 81 63 45 69 31 31 76 51
2959 59 34 51 54 34 83 10 33 51 86 81 82 69 18 8 22 64 19 86 62 58 33 37 17 34 5
29629 83 42 76 50 54 66 39 9 1 36 43 17 65 6 35 56 72 71 83 88 10 1 8 87 22 6 21
29778 25 89 43 62 40 55 85 31 89 74 63 46 28 24 26 31 17 7 8 27 19 12 85 17 20 27
29877 10 2 54 80 17 52 74 76 69 78 11 20 80 4 29 24 85 75 18 39 23 70 83 29 57 67
29972 70 33 4 15 46 42 2 69 13 53 33 69 64 33 64 14 40 69 59 78 54 ^
300193 1 68 43 95 53 38 58 55 28 20 16 67 48 17 86 32 44 68 67 28 16 14 79 25 15
30172 67 50 80 18 30 10 75 1 60 45 87 78 28 95 49 63 70 59 26 6 51 73 60 65 18 26
3028 87 5 58 31 25 57 40 46 78 57 34 78 61 36 66 57 38 80 22 32 68 71 30 74 37 81
30366 77 66 55 2 51 24 93 61 40 68 45 61 12 63 24 89 59 52 72 43 20 20 69 36 40 88
30446 9 62 55 77 84 20 18 6 77 15 52 39 75 3 26 4 85 17 62 29 11 92 46 58 29 59 28
30542 80 71 96 2 49 85 37 63 4 61 14 2 53 87 25 86 6 75 76 93 41 39 93 92 42 56 41
30663 26 28 18 77 11 50 78 79 1 12 12 91 29 13 58 5 56 92 66 59 4 39 47 95 5 5 62
30733 13 80 27 ^
308203 1 35 28 11 7 20 7 17 3 3 30 89 13 65 56 66 63 22 82 16 31 55 56 77 91 91 71
309101 13 10 85 101 95 17 99 98 91 33 14 20 48 32 7 64 29 38 35 25 4 95 23 34 1 85
31081 23 31 96 71 84 50 15 79 47 25 51 45 35 66 19 61 60 9 31 93 64 70 30 42 86 53
3111 71 46 42 22 38 96 10 99 34 76 26 55 73 63 63 97 23 92 81 64 46 1 30 31 35 86
31291 88 64 87 16 37 69 84 94 60 100 3 47 52 8 71 87 57 29 76 43 18 45 46 15 65 12
31344 42 66 60 15 68 19 58 39 62 76 9 92 101 57 32 4 34 15 41 62 32 89 71 43 35 31
31441 21 17 82 33 96 27 62 29 82 57 46 62 15 24 99 37 83 40 52 46 56 80 98 3 91 74
3156 27 7 58 94 10 41 79 97 84 77 74 26 99 35 ^
316212 1 26 101 17 91 45 97 80 59 102 30 68 4 85 9 4 39 16 18 85 70 11 87 62 72 78
31738 3 41 53 82 82 35 18 13 94 64 52 39 77 59 26 9 65 46 64 98 32 29 86 79 16 63
31854 76 56 98 16 98 78 22 72 33 103 104 52 84 12 65 15 85 101 97 84 31 51 26 100
319100 38 80 13 2 78 7 24 44 84 103 27 7 28 16 33 99 25 103 54 14 42 62 87 92 27
32022 42 5 52 100 84 73 72 63 24 48 56 52 23 5 17 76 31 1 95 58 43 60 50 62 30 23
32135 79 20 35 3 72 32 45 51 87 41 84 27 79 77 70 102 15 54 15 100 8 52 69 105 3
32230 84 42 93 66 89 69 74 24 33 42 97 4 38 99 106 13 93 6 106 74 100 54 45 21 59
32356 37 9 50 32 75 79 31 77 9 61 1 8 68 6 60 81 7 100 99 14 61 48 25 73 26 70 72
32494 34 ^
325233 0 11 98 110 88 35 110 35 64 49 88 93 28 85 6 78 65 90 52 24 97 51 39 51 59
32623 1 3 49 33 11 78 27 35 55 64 5 102 4 70 25 56 58 38 66 11 31 96 66 104 59 41
32786 58 29 79 41 40 72 51 12 92 34 52 44 69 104 21 97 89 96 48 21 4 61 40 28 67
32834 23 85 44 22 62 52 33 84 23 30 73 74 4 79 12 81 47 80 53 47 89 40 19 80 62 34
32961 29 41 95 43 1 70 63 55 53 18 19 13 48 10 19 89 49 4 52 53 56 76 10 8 104 77
33015 28 38 75 109 3 85 90 8 40 8 93 90 43 39 14 60 17 36 78 56 105 80 35 75 36 58
33182 50 100 98 45 74 13 66 95 72 71 95 34 14 98 72 33 38 37 52 6 14 107 59 3 29
33261 67 98 92 5 93 17 98 36 87 41 75 71 57 88 17 25 91 84 3 58 20 92 69 51 50 36
33331 14 25 18 30 18 1 41 104 30 82 59 87 70 34 96 28 47 62 81 103 48 ^
334234 1 63 90 108 108 102 64 82 88 4 111 76 97 22 1 108 41 34 91 33 20 25 24 26 8
33583 11 31 7 85 109 106 4 105 85 68 28 33 99 53 8 16 12 11 74 17 83 66 70 16 30 9
33667 68 34 24 81 47 92 72 47 37 33 38 92 17 8 28 88 22 62 69 32 89 75 3 72 96 85
33713 105 24 38 37 94 115 83 72 108 114 24 93 76 103 60 99 102 9 43 10 59 95 46 33
33893 15 26 69 44 2 86 107 55 45 61 65 92 66 9 55 39 70 83 29 98 67 13 111 15 20
33931 62 8 2 51 20 19 33 44 14 115 71 112 97 10 41 28 53 51 26 57 15 38 98 55 106
34022 56 31 50 95 107 110 84 70 10 108 96 73 100 25 36 55 88 71 63 96 30 90 96 79
34122 7 30 23 28 59 89 8 51 99 47 86 34 18 43 65 98 104 107 49 7 79 71 8 57 21 29
34280 2 74 78 44 57 9 61 22 13 68 52 91 74 98 43 30 58 68 95 101 72 102 76 42 99
34361 ^
344249 0 27 117 45 119 80 2 59 52 8 76 20 94 102 69 96 42 46 106 67 9 110 89 71 69
34534 31 15 85 16 29 100 82 37 62 68 95 108 44 23 114 34 36 56 93 11 30 96 12 31
34667 14 114 14 66 70 30 81 46 53 119 85 6 104 47 92 72 70 5 70 15 115 68 105 33
34797 13 85 106 14 61 29 22 86 45 57 69 91 38 38 28 66 13 60 95 103 3 15 5 113 38
34823 62 5 65 94 107 73 104 37 47 102 117 3 78 35 7 95 56 78 45 52 28 46 43 37 32
34953 19 55 29 47 97 76 115 83 71 11 45 62 73 99 116 2 24 116 7 28 41 2 29 37 52
35023 5 118 79 31 57 89 61 24 101 78 50 93 73 41 7 33 45 47 24 1 48 73 36 3 25 87
35146 28 108 54 68 53 67 119 28 36 118 104 42 88 27 112 4 74 85 1 63 39 97 71 74
35275 76 10 49 12 79 11 50 103 118 94 117 118 37 27 12 94 60 28 51 47 82 110 17 15
353105 23 52 43 12 21 22 81 41 12 74 90 42 108 117 98 67 4 69 85 ^
354243 0 76 81 26 101 13 68 62 106 87 19 98 32 81 63 79 93 31 121 123 75 52 11 66
35541 54 87 38 5 104 62 51 38 55 29 31 120 44 16 48 94 46 105 91 66 78 27 43 6 64
3562 55 79 75 84 113 22 4 113 109 31 33 17 96 11 29 63 98 103 107 116 34 14 9 95
35738 18 51 75 33 109 118 55 66 4 76 7 75 70 82 74 23 1 26 69 40 112 99 47 65 31
35870 119 52 103 88 85 86 28 16 12 76 25 22 78 64 21 86 27 61 77 72 108 2 18 106
359119 121 54 16 85 72 2 73 26 88 66 60 80 35 24 117 63 24 44 67 52 122 119 33 72
36016 99 98 69 54 19 42 28 53 114 32 117 81 100 57 49 123 56 21 68 80 53 95 1 45
36195 107 98 87 1 27 24 99 116 16 67 1 113 91 84 25 40 25 72 3 28 90 87 112 80 16
362117 45 77 36 90 105 59 88 122 64 108 108 71 98 18 50 115 93 105 77 35 6 46 55
36347 102 4 26 87 111 120 81 113 4 57 105 3 84 94 115 61 73 ^
364255 1 91 47 51 9 57 9 55 94 61 61 68 46 107 6 35 81 114 78 96 74 14 89 73 67 67
36569 113 107 11 98 113 109 20 92 17 67 70 88 57 10 124 9 60 122 93 91 45 7 15 24
36651 5 98 115 24 49 90 104 117 66 128 94 64 80 12 43 91 46 111 59 58 77 30 14 88
36760 123 68 41 44 68 40 104 118 41 43 93 90 105 92 16 127 26 54 125 114 79 71 24
36848 21 25 118 40 103 49 91 44 67 65 25 119 109 18 48 23 69 112 38 61 64 87 84
369104 119 110 122 92 22 1 8 83 34 100 32 62 41 46 112 34 102 76 56 39 4 127 30 13
37019 110 124 7 16 128 95 4 124 11 104 116 126 49 95 3 55 96 70 90 101 4 122 96 75
371118 39 128 99 92 18 42 20 87 83 35 75 111 61 67 71 28 101 9 56 34 105 95 71 23
37273 71 26 57 15 23 76 55 99 89 128 98 117 68 43 88 62 38 62 39 2 83 36 15 26 60
373128 96 73 74 10 1 12 42 22 2 77 33 33 32 57 13 14 82 57 12 39 3 58 80 14 87 85
37444 69 109 119 ^
375283 0 102 55 53 41 60 88 25 67 58 76 44 22 68 118 108 40 95 96 81 90 85 28 77
37618 11 37 72 93 60 110 124 119 95 131 91 37 109 126 8 73 69 72 80 17 83 5 76 20
37732 15 10 1 103 18 22 116 98 9 51 104 102 44 33 15 12 24 31 89 1 6 28 101 8 64
37872 106 30 5 52 89 111 39 108 64 85 17 57 124 22 105 78 115 3 40 108 66 108 77
379128 103 44 35 38 13 95 10 111 63 98 117 61 51 126 69 96 70 70 59 39 13 97 33
380112 2 77 7 123 70 83 29 66 67 49 79 19 104 115 14 60 2 55 40 71 33 28 114 51 91
38117 46 45 128 57 87 62 25 115 38 50 55 90 74 8 51 102 79 43 94 36 122 94 12 41
38236 25 104 91 24 7 99 80 30 126 32 63 122 107 114 27 28 79 41 12 35 51 115 122
38370 22 79 65 2 88 27 17 59 15 23 44 57 5 65 6 26 78 80 125 93 84 100 45 22 129
38468 36 111 74 118 11 50 42 120 47 21 8 86 112 26 67 60 99 45 93 47 8 38 59 52 56
385124 20 82 18 117 24 18 46 106 19 117 26 41 47 45 130 7 15 1 4 5 100 10 85 50 44
38611 48 92 119 108 42 118 125 ^
387272 0 8 61 99 70 96 20 87 123 134 82 22 2 110 118 33 86 5 7 5 94 56 15 60 96 54
38813 22 55 99 4 25 105 17 37 69 10 38 117 117 30 70 13 9 109 115 62 94 52 66 117
389100 135 7 75 23 5 81 110 31 118 29 1 62 11 41 88 109 119 102 37 3 30 123 47 31
39056 134 29 124 116 118 99 21 56 77 91 23 37 135 81 44 51 67 95 51 133 30 57 67
391116 122 48 100 7 132 97 106 69 93 4 95 125 102 103 119 81 57 133 96 37 118 50
392117 113 81 127 17 45 103 32 121 129 60 43 65 127 30 36 132 110 52 53 35 71 12
39376 22 72 130 112 99 76 26 21 73 63 63 97 23 58 115 132 114 1 132 31 35 18 23 54
39430 53 118 37 35 84 94 60 100 3 47 18 110 105 87 57 63 76 43 52 45 46 49 65 12
39510 42 66 60 117 34 19 92 5 28 76 9 126 101 125 32 38 34 15 7 62 32 21 3 43 69
39631 109 123 51 116 135 130 129 130 63 14 57 80 62 15 126 31 105 83 108 120 80
397124 46 98 105 91 6 6 27 7 58 128 78 7 79 63 84 77 74 128 65 61 95 121 17 24 123
398117 51 122 ^
399284 0 44 71 43 20 126 58 53 47 98 18 19 119 93 29 70 39 94 112 44 115 135 98 82
40010 67 29 102 113 68 80 19 75 1 91 114 87 80 7 40 37 86 120 16 104 136 117 82
401138 32 65 114 119 137 121 8 12 46 126 26 119 73 130 60 76 113 100 14 133 26 116
40234 120 80 95 84 53 15 24 44 51 4 10 23 77 24 99 66 37 54 63 42 136 21 34 76 5
40317 128 101 1 59 40 113 112 32 97 31 93 105 79 91 18 39 1 103 132 51 68 124 111
40413 97 43 128 69 84 85 72 15 12 26 87 16 16 92 101 13 77 4 118 89 103 56 42 16
40560 44 39 126 46 18 83 93 41 105 3 82 106 115 91 6 4 54 115 15 120 109 113 48 41
4069 95 20 62 67 105 111 25 132 7 116 46 138 44 83 61 124 131 35 107 6 109 81 114
40767 41 137 77 56 74 73 34 12 14 69 52 11 98 47 54 83 81 6 1 15 88 35 139 80 83
40849 89 27 47 130 92 133 87 51 112 76 49 109 49 57 93 73 22 117 50 64 58 97 139
40936 131 111 133 58 33 8 88 55 38 90 46 30 118 57 29 82 74 41 117 38 46 94 92 5
410105 15 117 70 103 68 60 120 48 21 110 85 40 81 66 ^
411291 0 46 113 52 134 79 74 64 57 18 23 9 52 8 16 103 57 138 59 59 65 92 2 7 130
41292 8 34 40 86 131 140 100 112 4 42 1 110 108 43 37 15 67 19 35 94 61 130 98 35
41388 34 65 104 56 126 118 50 87 10 81 109 90 86 118 32 6 114 88 39 38 39 62 3 12
414134 72 137 35 75 81 115 106 140 112 11 123 41 103 45 95 84 71 107 13 26 110 96
41562 16 109 84 59 53 38 27 8 28 13 32 137 17 138 41 122 36 99 65 99 83 36 112 29
41649 70 96 126 136 131 116 3 18 17 126 142 14 37 141 141 123 42 13 20 83 42 139
41783 54 49 58 42 7 137 29 48 16 121 127 34 52 140 106 128 58 36 124 83 24 69 54
41861 112 17 6 95 97 24 57 86 124 59 71 119 67 1 109 54 68 49 57 132 32 5 71 113
41940 80 104 75 106 133 31 126 130 104 62 9 39 44 66 116 141 135 96 132 19 41 121
420126 124 77 8 4 60 82 6 101 124 89 51 123 48 40 85 77 21 112 10 69 66 115 87 16
421108 30 84 65 80 103 32 131 134 73 47 10 63 39 50 93 37 135 114 69 48 34 58 23
42227 133 37 9 40 98 41 115 99 70 83 29 42 67 133 55 79 80 91 122 12 2 115 112 47 ^
423293 1 33 13 99 138 1 42 89 118 87 113 99 12 134 142 100 38 5 55 75 14 110 108
42442 64 130 79 138 62 64 69 57 11 123 25 59 16 111 94 24 65 30 51 119 48 107 92
42584 69 28 136 143 54 20 6 70 47 142 64 4 65 59 73 99 134 146 102 125 116 57 137
426137 72 48 128 78 5 80 63 54 85 30 22 129 68 21 21 74 28 128 107 27 60 2 93 95
42771 37 11 37 15 39 102 3 104 65 80 59 52 113 34 20 67 60 27 81 135 46 106 106
428102 68 128 17 15 100 124 15 43 136 122 100 67 142 35 14 53 120 2 89 93 99 73 9
429122 39 77 15 96 90 43 79 134 60 92 105 55 96 31 119 77 97 72 23 140 38 30 43 83
430136 88 107 117 72 109 118 58 91 119 73 95 100 59 138 123 54 49 143 50 133 66
431106 45 80 88 42 93 5 59 77 101 74 110 104 40 92 19 77 76 86 102 129 3 144 101
432139 134 56 90 18 91 94 85 55 10 137 11 58 1 107 113 70 22 7 56 29 143 111 8 46
43345 116 122 129 89 7 121 53 95 14 49 118 62 125 91 37 97 15 35 100 63 140 63 50
43451 58 26 127 6 45 59 102 121 114 85 141 135 10 72 19 106 66 66 41 53 13 38 1 21
435103 50 108 46 119 ^
436297 1 46 31 132 112 28 63 124 97 129 43 40 72 99 107 132 137 96 139 99 145 121
437144 118 37 81 39 94 60 55 109 47 109 110 75 42 12 139 137 43 128 106 107 19 126
43812 101 148 127 15 117 125 125 62 96 13 76 70 96 101 110 138 8 95 76 143 17 32
43997 79 149 39 31 94 123 21 41 135 55 84 70 33 135 118 50 62 121 81 1 45 144 93
44060 5 64 137 8 105 91 82 67 27 113 119 53 18 98 79 48 84 32 135 128 5 1 20 76 17
44185 108 72 36 141 140 49 150 105 104 3 149 14 54 18 148 64 49 125 37 28 28 101
44222 104 91 32 82 117 12 114 69 58 2 58 115 9 108 47 59 65 14 92 7 4 86 98 16 82
44392 95 38 94 10 10 48 97 104 66 115 97 142 115 122 119 40 97 16 32 47 34 88 89
44426 50 12 76 80 51 40 9 133 24 44 40 122 84 108 22 142 140 99 44 15 54 8 42 125
445150 130 21 79 124 62 46 119 15 29 91 57 150 42 138 71 61 68 80 114 6 1 70 121
44618 35 113 56 87 86 10 73 14 29 41 72 89 1 133 87 101 123 59 90 142 77 133 52 78
44748 34 138 134 27 17 60 131 147 61 93 148 39 132 49 62 71 36 91 4 139 49 100 120
44843 113 144 30 94 73 127 40 125 ^
449313 1 35 97 95 76 105 88 32 138 30 69 61 40 47 21 107 6 39 81 114 53 125 53 147
45014 4 73 146 96 98 13 136 11 98 117 138 153 67 146 71 99 88 7 139 24 13 35 47 97
451145 74 36 119 3 51 84 48 119 53 49 15 79 17 120 103 148 64 30 41 97 120 75 111
45263 58 131 134 18 13 10 48 18 16 48 43 15 54 18 41 47 122 144 80 92 145 77 1 33
45389 54 46 78 48 21 54 43 40 53 24 16 73 42 94 29 44 34 151 152 23 123 12 142 140
45443 37 88 29 19 35 72 96 151 130 62 112 34 36 91 120 50 112 138 2 105 60 68 137
455131 5 17 19 139 74 11 120 78 149 58 128 15 104 16 126 78 20 57 134 71 49 90 76
456108 126 100 54 68 39 132 153 42 147 146 124 62 87 35 75 61 65 46 100 82 105 113
45731 63 5 95 54 71 77 127 150 80 36 144 2 130 59 74 39 3 152 121 122 18 117 12
458117 141 118 135 62 36 69 5 39 53 150 52 153 143 30 66 96 126 131 56 137 8 7 86
459142 14 7 111 141 93 136 137 134 43 12 89 23 44 9 152 146 121 97 19 38 110 91 67
46014 32 110 66 68 8 130 84 73 118 59 24 41 72 121 150 55 37 138 27 104 66 124 9
46151 109 47 125 109 148 8 29 47 72 146 149 61 93 10 20 54 15 76 133 125 106 110
46267 ^
463330 0 23 9 26 136 27 51 115 122 44 106 6 146 108 113 85 51 8 96 47 56 137 62 59
46489 143 71 140 14 85 156 139 99 154 30 53 115 35 147 108 148 58 52 28 103 19 92
46595 152 152 10 11 13 155 67 11 83 101 69 153 152 45 141 14 120 129 140 119 59 2
46689 73 70 83 29 16 67 81 29 1 54 65 96 117 2 37 47 128 33 3 89 108 98 139 49 78
46727 103 39 119 94 132 90 38 132 55 65 131 90 58 2 54 100 69 118 22 44 19 7 148
46893 25 29 123 81 64 131 55 30 1 89 38 97 82 64 9 28 86 123 151 10 133 40 154 102
4694 111 65 9 63 59 124 116 72 105 76 57 137 97 32 145 108 78 112 50 43 34 75 20
47022 129 68 11 118 74 125 118 57 17 20 129 53 65 61 144 1 17 142 156 52 100 54 15
47120 59 52 63 131 20 57 124 31 125 46 106 76 92 8 98 154 152 80 114 15 140 136
472112 100 17 92 25 151 150 80 99 69 83 49 43 156 102 19 57 122 96 30 3 39 134 40
47332 75 5 76 127 138 99 17 57 52 150 130 18 127 33 23 116 107 78 77 77 42 69 68
47448 41 69 33 75 40 49 128 103 4 146 93 10 83 66 96 152 30 38 12 33 5 39 47 41 34
47560 74 20 42 156 67 46 56 102 89 3 124 81 99 104 56 50 8 61 74 55 15 87 108 28
476138 47 93 60 2 124 46 126 103 91 145 36 25 116 122 51 ^
477322 0 75 7 107 158 81 105 154 90 20 125 77 114 69 92 7 58 21 98 154 50 128 149
478117 127 153 45 3 18 121 86 29 71 79 101 2 5 22 143 10 27 53 146 157 148 112 33
47922 80 123 24 147 1 112 82 159 63 74 97 109 33 151 32 89 87 132 117 46 129 59
480115 91 114 118 37 21 9 94 60 25 89 47 79 110 55 12 143 99 87 43 88 56 57 160 76
48112 71 128 77 146 117 95 105 42 66 3 76 20 76 101 100 118 149 45 26 143 148 32
48257 39 129 19 31 84 123 1 152 135 5 54 30 13 125 68 30 62 101 51 142 5 94 83 20
483116 24 107 109 105 91 42 17 27 93 69 3 139 68 79 38 84 2 85 128 126 122 131 46
48417 35 98 42 26 111 100 29 120 55 84 114 109 145 14 18 138 14 9 85 7 18 129 91 2
48594 51 133 82 87 123 64 39 8 103 38 75 110 78 7 9 45 115 42 138 135 86 78 16 62
48652 75 159 54 151 121 149 77 74 16 85 47 102 105 82 119 10 67 137 153 148 135 28
48749 26 151 153 36 80 11 130 113 24 44 30 102 24 58 133 122 140 99 24 156 54 119
48842 115 140 90 132 19 94 2 157 99 136 19 71 7 130 153 108 51 21 58 70 74 137 1
48940 111 149 5 103 6 27 76 141 23 125 140 1 72 29 152 103 87 51 93 29 80 132 77
490123 153 68 159 14 98 114 158 121 158 81 131 ^
491322 0 35 93 109 125 119 10 10 19 135 26 4 74 135 35 120 129 113 92 17 29 47 88
49214 159 149 87 45 36 75 68 22 138 20 59 61 144 151 11 107 6 153 81 114 43 85 157
49397 148 118 73 126 56 58 137 96 11 98 67 98 103 57 146 21 59 88 151 139 148 127
49425 17 47 115 34 160 109 107 51 64 28 69 13 49 149 69 141 90 93 118 64 10 1 67
49580 35 111 13 58 101 124 132 147 154 18 162 6 162 33 5 34 142 41 161 82 114 70
49692 145 57 155 137 114 79 44 36 48 48 21 14 13 40 33 14 150 33 32 54 143 14 4
497101 142 23 93 136 132 120 147 17 38 163 143 5 52 46 151 130 32 72 34 124 150 51
498100 112 128 126 65 10 28 87 81 159 131 19 99 54 125 110 58 119 28 78 129 104
499140 126 38 154 27 114 61 153 90 66 98 76 50 158 48 39 82 123 22 147 136 114 52
50037 35 75 41 15 150 60 52 55 103 21 23 129 95 24 71 47 97 130 50 140 144 106 100
5019 64 19 117 122 71 92 8 77 156 97 121 98 85 2 36 39 109 143 23 120 156 133 93
502154 36 66 116 131 160 127 162 161 46 142 14 141 81 141 63 86 117 104 3 146 39
503127 34 133 102 106 91 57 9 28 60 61 7 158 12 80 26 8 122 80 44 63 68 49 158 21
50432 81 150 15 141 108 161 64 46 124 123 31 99 27 105 109 98 112 144 ^
505336 1 34 161 107 149 48 67 138 109 156 104 37 133 60 80 84 81 160 9 16 96 164 1
50695 112 4 86 163 116 98 103 55 31 8 56 37 36 127 32 9 89 103 31 100 161 85 106
507119 89 154 43 115 162 137 108 128 38 42 155 103 9 62 65 102 122 10 138 160 125
50847 158 43 91 69 123 132 35 121 4 110 89 130 69 29 139 69 53 70 83 29 163 67 41
5099 108 34 45 76 87 2 144 164 98 33 160 79 78 48 89 9 38 134 93 146 79 54 122 80
51038 112 55 55 101 70 8 129 44 70 59 98 149 24 136 124 138 63 25 166 83 51 34 91
51145 30 118 59 28 87 72 44 116 28 36 103 101 113 10 114 62 111 71 65 126 53 19
512114 86 42 85 36 57 137 57 159 95 88 78 72 20 23 14 65 10 22 129 68 1 68 74 75
513108 7 7 147 109 13 35 51 104 158 164 122 126 2 50 4 132 127 59 52 13 81 20 47
514107 74 148 115 46 106 46 82 115 68 144 142 60 104 15 90 136 102 100 134 42 15
515141 100 40 49 49 73 166 13 156 82 166 37 82 96 137 130 166 134 20 139 45 122 56
516107 98 79 124 17 32 130 120 165 77 23 130 96 67 68 47 37 12 29 18 38 158 19 160
51755 147 39 118 83 121 96 43 137 33 66 86 112 147 155 149 140 5 19 17 148 161 10
51844 159 146 57 16 26 102 49 3 104 61 59 74 56 10 165 31 54 25 142 157 37 58 165
519128 154 73 50 149 94 137 ^
520330 1 61 51 65 132 23 169 116 122 14 66 7 98 131 72 69 127 72 163 125 68 69 51
52147 159 31 164 71 118 50 83 113 81 127 153 45 137 134 121 68 163 26 43 65 127
522166 138 98 144 18 53 137 139 148 76 158 4 62 78 167 102 144 94 55 141 63 29 97
52391 24 115 166 80 69 132 99 1 120 23 88 64 87 118 37 137 152 94 60 168 71 47 52
524110 37 155 125 63 42 43 52 11 12 151 31 12 44 110 32 128 117 68 87 24 39 164 76
525145 58 101 91 100 140 151 143 130 32 21 3 111 1 31 75 123 153 116 135 130 27
526164 165 116 23 12 62 83 24 133 139 49 74 154 80 158 80 64 105 91 6 142 27 75 24
527128 112 41 79 29 84 145 40 128 99 95 95 19 17 160 89 15 17 84 64 11 93 10 66 78
52873 127 148 18 129 139 143 49 150 9 84 82 154 85 15 88 82 60 87 19 12 133 58 20
52939 65 51 141 134 27 70 167 120 117 86 60 16 44 16 57 132 18 142 85 104 59 47
530141 58 2 66 96 46 119 153 40 110 126 103 90 144 13 26 106 144 80 145 134 103 95
53124 44 21 84 140 13 97 104 140 99 6 147 54 83 42 106 131 54 96 135 67 118 121 81
532109 10 53 132 112 117 81 33 155 49 61 38 119 1 13 102 131 148 94 131 143 67 123
533148 89 104 135 72 145 152 76 87 6 66 2 71 123 77 114 108 59 123 166 62 96 140
53494 149 116 169 ^
535349 0 125 17 93 82 80 110 156 147 156 99 154 4 29 90 163 120 84 113 56 8 157 29
53661 169 141 113 78 48 50 13 138 11 50 61 99 106 2 107 6 117 81 114 34 49 112 52
537130 82 73 108 20 22 110 60 11 98 22 62 58 48 146 149 23 88 142 139 121 91 16
538163 2 88 171 133 100 62 51 46 10 24 150 49 131 60 114 63 84 91 64 165 138 40 44
539172 111 141 58 74 115 96 129 145 164 153 170 126 24 169 16 115 41 125 46 87 61
54092 145 39 155 92 78 70 35 27 21 48 21 151 159 40 15 5 132 170 23 18 107 160 150
54156 133 23 66 109 123 102 102 172 166 145 116 151 34 1 151 130 5 36 34 97 114 15
54282 128 112 119 99 29 138 165 42 36 159 95 19 63 36 89 101 40 92 1 33 93 104 113
543126 2 136 96 52 108 90 57 89 31 5 113 30 39 37 96 4 147 127 105 43 165 35 75 23
544143 105 24 25 10 94 12 160 102 95 170 71 20 70 112 23 95 144 61 73 137 55 1 81
54595 26 65 172 41 147 79 103 80 40 121 36 12 64 98 169 93 111 115 48 127 9 39 107
546131 115 118 162 161 10 142 14 123 54 141 36 41 99 77 140 128 167 82 25 106 57
54770 64 21 19 15 34 126 149 167 53 163 127 86 35 8 54 23 40 140 3 169 45 150 152
54896 81 143 28 28 124 87 13 90 9 87 109 53 67 164 28 131 89 149 42 55 126 79 132
54974 19 133 30 68 72 75 148 9 10 72 152 144 83 106 153 74 163 98 152 ^
550375 1 94 28 13 8 20 28 18 118 5 140 89 67 171 64 152 85 61 101 80 154 149 34
551115 135 128 108 110 20 33 128 103 35 38 57 95 10 111 151 98 29 149 7 82 69 96
552114 26 103 171 101 53 121 24 2 121 51 35 70 83 29 154 67 5 167 63 16 27 58 60 2
55399 128 71 33 160 70 51 3 44 149 2 89 84 101 43 18 113 71 38 94 55 46 74 52 139
554102 35 43 50 80 122 6 100 88 129 36 25 148 47 24 7 55 36 30 82 32 19 78 63 26
55571 28 167 85 56 167 95 159 78 26 66 35 65 90 44 159 105 59 15 67 57 137 21 132
55650 70 78 36 169 5 172 56 1 22 129 68 168 23 74 30 99 138 174 120 91 153 8 42 68
557158 155 104 99 133 5 135 96 82 59 52 144 36 20 38 62 29 112 106 46 106 19 73 70
55841 135 133 42 95 15 45 136 93 100 98 173 6 132 55 4 4 31 64 130 162 156 64 157
55919 46 96 92 103 139 134 2 94 18 86 38 89 62 61 79 157 14 112 111 156 32 14 85
56078 31 59 20 1 161 169 149 29 122 150 133 37 102 30 109 65 85 51 174 110 164 66
56177 76 111 119 131 95 5 1 166 103 134 141 17 158 123 137 48 165 175 102 13 3 86
56243 23 47 56 150 165 4 36 174 115 157 168 13 147 119 109 55 41 140 67 27 31 27
56353 126 17 163 116 122 160 60 7 92 113 66 45 109 60 151 125 62 39 39 17 153 13
564152 53 94 50 53 89 57 127 153 45 119 104 121 56 145 172 19 41 103 166 108 68
565126 12 53 131 127 148 52 134 168 50 48 155 72 132 82 37 129 63 175 160 ^
566366 1 73 15 79 139 71 51 132 81 135 111 166 61 37 60 118 37 92 134 94 60 150 53
56747 25 110 19 137 107 27 176 43 16 145 146 142 165 12 17 92 166 110 117 41 69 6
56812 164 76 109 40 101 82 82 131 134 115 143 112 32 164 146 93 162 31 66 123 144
56980 135 94 137 156 107 157 173 62 65 176 124 112 4 65 127 44 131 53 19 105 91
570149 106 27 57 158 92 85 14 79 20 84 127 174 128 72 68 59 171 17 124 80 167 8 57
57128 172 66 144 48 42 37 109 121 18 120 103 116 13 132 39 73 145 76 158 43 82 33
57251 153 164 97 13 2 3 20 24 114 98 9 25 131 102 99 86 42 16 26 159 39 105 161
573133 49 59 41 20 105 31 136 30 87 10 119 135 13 83 99 58 45 99 156 26 61 135 143
57480 118 107 76 77 24 44 12 66 95 147 61 86 140 99 167 138 54 47 42 97 122 18 60
57590 40 73 85 63 82 1 35 96 94 81 54 15 128 40 52 2 101 1 165 93 113 130 85 95 98
57658 105 112 53 68 108 72 100 152 49 87 140 39 154 62 114 77 105 63 50 87 157 26
57778 122 67 140 71 170 119 5 93 64 50 104 144 129 138 75 130 4 178 60 139 120 54
578113 32 2 133 17 43 163 129 89 72 149 155 30 38 7 138 5 44 61 69 76 175 107 6 93
57981 114 28 25 82 22 118 58 73 96 175 177 92 36 11 98 171 38 28 42 146 125 178 88
580136 139 103 67 10 151 151 70 153 115 94 32 51 34 177 173 132 49 119 54 96 45 78
58173 64 159 120 22 20 154 111 117 58 56 109 72 143 ^
582372 1 136 146 144 170 90 15 169 180 88 41 89 10 60 52 92 145 21 155 47 42 61 26
58318 176 48 21 124 141 40 179 178 114 143 14 164 71 142 132 11 124 23 39 82 114
58484 57 163 130 127 89 133 16 138 151 130 160 34 70 78 161 64 92 112 110 72 175
585102 138 179 173 159 59 19 27 18 53 92 22 65 156 170 57 104 86 126 148 118 155
58678 43 63 90 48 80 168 142 68 12 39 174 69 168 147 118 96 34 129 35 75 5 107 60
587170 180 147 85 3 133 75 95 152 71 175 43 94 178 50 144 16 46 101 46 165 45 68
588163 38 172 5 138 61 85 62 177 76 36 167 19 53 151 66 66 97 3 100 164 12 98 131
58970 109 162 161 156 142 14 105 27 141 9 178 81 50 113 110 131 37 16 79 12 34 37
590167 173 10 152 7 81 140 158 26 136 82 50 172 154 45 160 31 122 167 142 9 150
591125 51 54 125 174 10 124 51 177 81 173 69 109 8 22 155 19 86 62 149 33 37 108
59234 96 29 174 133 167 50 54 66 130 9 1 36 134 108 65 97 126 56 163 71 83 88 10 1
5938 178 22 6 112 169 116 89 43 153 40 146 85 31 89 74 154 137 28 115 117 122 108
59498 8 27 110 103 176 17 20 27 77 10 93 145 80 17 143 165 76 69 78 102 20 91 171
59595 29 115 176 166 109 39 23 70 83 29 148 67 163 161 33 4 15 46 42 2 69 104 53
59633 160 64 33 155 14 131 160 59 78 71 19 176 107 65 38 82 55 40 56 40 115 84 29
59725 44 68 104 176 76 64 123 18 25 136 23 6 171 31 30 30 58 14 13 72 57 14 41 177
598^
599363 0 135 69 16 167 79 143 46 178 26 3 65 58 36 135 97 35 175 51 152 57 137 173
600108 10 54 78 4 153 173 164 48 177 22 129 68 168 167 74 174 91 106 174 96 75 129
601168 34 36 158 147 88 75 101 149 103 64 42 59 52 112 180 20 30 22 173 80 98 46
602106 179 65 30 17 127 125 26 87 15 5 136 85 100 66 141 182 124 15 156 148 15 56
60398 146 156 48 149 3 14 96 52 79 115 134 170 54 178 54 22 73 30 45 39 133 182 96
604103 148 176 6 45 62 183 51 180 153 145 145 117 21 90 118 109 21 62 22 101 49 53
60511 142 86 132 66 69 44 79 87 115 55 5 169 150 63 110 109 177 150 91 129 40 149
606159 102 165 3 70 27 175 23 56 126 165 164 20 158 91 157 136 157 131 111 69 39
60733 132 43 19 175 179 37 118 9 155 116 122 128 52 7 84 89 58 13 85 44 135 125 54
608183 23 161 145 173 136 29 62 50 13 57 25 127 153 45 95 64 121 40 121 140 171 9
60971 166 68 28 102 4 53 123 111 148 20 102 160 34 8 139 32 116 66 13 113 63 143
61097 63 10 59 124 66 41 132 71 115 106 151 46 22 45 118 37 67 124 94 60 140 43 47
61110 110 9 127 97 7 156 43 180 125 126 137 145 12 2 82 146 100 117 26 59 180 181
612164 76 89 30 101 77 72 126 114 95 143 102 32 149 131 83 157 31 61 123 139 60
613135 74 169 122 151 102 137 168 62 55 166 119 97 163 60 112 24 116 38 178 105 91
614134 86 27 47 138 72 70 183 79 15 84 117 154 128 57 53 39 161 88 ^
615393 1 92 72 151 33 183 164 42 112 32 10 5 93 97 18 112 71 92 168 116 179 186 65
616137 68 134 3 82 9 19 121 148 65 160 173 158 167 90 66 180 172 99 86 83 86 26 16
61710 135 23 81 137 125 17 19 25 183 73 7 104 185 79 165 119 119 176 59 75 18 5 59
618132 26 21 127 119 80 94 83 52 61 24 44 4 50 55 115 29 70 140 99 159 130 54 15
61942 89 114 173 28 50 16 33 53 47 58 180 19 64 78 49 30 186 104 32 44 157 85 1
620149 85 97 114 77 63 58 50 89 80 21 36 84 72 60 152 25 87 108 15 138 54 106 77
62197 23 42 55 149 181 62 106 43 132 31 138 111 176 93 40 10 96 128 105 114 43 98
6224 146 20 107 120 14 113 181 101 1 19 155 113 57 64 117 131 6 22 186 138 184 36
62361 29 36 175 107 6 61 81 114 20 180 42 169 102 26 73 80 151 153 68 4 11 98 139
6246 175 34 146 93 154 88 128 139 79 35 2 135 119 46 129 91 86 179 51 18 169 141
625108 49 103 46 72 21 70 49 64 151 96 185 175 130 111 85 58 32 101 40 101 131 136
626139 170 70 10 169 175 73 41 69 177 45 47 92 145 11 155 22 22 56 21 13 166 48 21
627109 131 40 174 178 104 128 9 149 51 132 122 173 119 23 24 67 109 74 32 158 110
628117 74 123 6 118 151 130 150 167 34 55 58 146 54 72 112 105 57 160 82 123 159
629153 159 39 19 7 8 33 87 12 50 146 150 37 104 71 126 133 108 145 68 38 38 90 43
63075 148 122 43 2 39 154 54 163 147 113 91 29 109 35 75 182 87 35 155 170 127 80
631185 118 60 95 142 71 165 28 84 168 25 144 178 31 81 41 160 25 53 143 ^
632381 1 14 172 163 130 45 69 46 145 36 36 151 169 13 135 42 26 81 153 76 148 178
63390 131 30 101 162 161 132 142 14 89 3 141 175 146 65 26 89 94 99 187 8 55 162 2
63413 143 173 2 120 173 41 132 150 2 112 42 18 140 130 37 128 23 106 159 118 167
635150 101 11 30 109 150 184 124 19 169 73 165 53 109 158 172 147 11 46 38 149 25
63621 92 184 64 179 158 133 135 34 38 58 114 9 183 4 118 76 49 89 102 40 163 47 75
63780 176 175 8 154 14 180 104 153 84 89 11 129 8 138 85 181 73 66 154 121 20 115
63893 114 108 82 182 19 86 103 176 183 186 177 53 10 69 137 56 1 135 141 68 69 54
63986 12 75 171 87 187 107 144 150 93 23 7 70 83 29 140 67 139 153 183 178 189 30
64018 2 29 72 29 33 160 56 9 123 164 107 136 19 70 31 177 152 99 57 38 66 55 32 32
64124 83 60 21 1 36 52 80 168 44 32 115 184 25 120 181 172 155 189 22 30 26 180 5
64264 49 188 1 28 111 57 176 167 67 131 22 160 186 169 65 34 30 117 91 17 163 39
643134 57 137 155 90 170 42 78 170 141 167 158 42 177 22 129 68 168 143 74 150 85
64482 174 78 63 111 156 28 12 158 141 76 57 77 125 79 40 12 59 52 88 156 20 24 182
645149 56 92 46 106 167 59 189 121 119 14 81 15 165 136 79 100 42 117 182 118 175
646138 124 3 50 74 134 156 36 143 181 180 96 22 61 97 134 164 24 166 30 10 61 6 33
6479 115 176 84 97 142 152 15 50 165 45 168 135 133 127 93 15 66 94 91 9 32 16 95
64837 29 171 118 68 108 66 63 20 55 186 ^
649396 1 97 10 5 160 132 18 83 73 159 141 55 120 31 131 141 102 138 3 52 9 148 189
65056 99 165 146 2 140 64 157 100 121 113 102 24 21 24 123 16 10 139 152 19 109
651146 116 122 92 43 7 75 62 49 170 58 26 117 125 45 147 5 125 136 155 118 2 26 50
652161 21 182 127 153 45 68 19 121 22 94 104 144 166 35 166 23 176 75 188 53 114
65393 148 177 66 151 16 156 121 180 98 48 179 95 63 107 97 45 1 23 97 57 23 132 53
65479 97 124 19 188 18 118 37 22 106 94 60 122 25 47 176 110 184 109 79 164 120 43
655153 89 90 128 109 12 168 64 110 82 117 192 41 171 163 164 76 53 12 101 68 54
656117 78 59 143 84 32 122 104 65 148 31 52 123 130 24 135 38 151 95 142 93 101
657159 62 37 148 110 70 127 51 85 181 89 11 142 105 91 107 50 27 29 102 36 43 165
65879 6 84 99 118 128 30 26 3 143 17 68 66 139 187 15 165 158 24 88 20 179 174 81
65979 18 106 47 74 150 104 179 162 59 131 62 116 166 82 184 188 97 136 41 136 167
660140 143 175 72 42 174 148 75 74 71 86 14 16 191 117 11 63 119 119 186 182 13
661171 49 182 80 167 73 147 119 107 164 41 57 181 168 29 114 26 184 121 101 80 76
66265 34 49 24 44 191 38 25 91 5 58 140 99 153 124 54 184 42 83 108 155 4 20 191 3
66329 35 40 180 7 40 66 25 12 180 86 26 38 139 73 1 137 79 85 102 71 39 28 44 77
66456 190 12 66 72 30 152 7 87 84 190 126 48 100 77 91 186 36 31 143 163 50 94 25
665126 1 114 105 170 93 22 173 90 116 87 96 19 74 4 122 183 83 120 177 113 169 181
66677 182 1 149 186 ^
667384 1 25 56 85 107 177 6 186 138 184 28 61 184 191 175 107 6 29 81 114 12 156 2
668137 86 189 73 64 127 129 44 167 11 98 107 169 143 26 146 61 130 88 120 139 55 3
669189 119 87 22 105 67 78 147 51 2 161 109 84 49 87 38 48 192 62 25 64 143 72 169
670151 106 111 53 58 8 93 8 85 123 120 131 170 38 2 169 167 49 41 37 153 21 39 92
671145 190 155 177 185 48 13 5 150 48 21 85 115 40 166 178 88 104 1 125 19 116 106
672141 111 23 43 101 58 187 150 78 101 50 107 185 86 151 130 134 143 34 31 26 122
67338 40 112 97 33 136 50 99 127 121 159 7 19 170 187 1 79 191 26 130 118 5 104 47
674126 109 92 129 52 30 193 90 35 67 116 90 3 181 39 122 30 155 147 105 83 21 77
67535 75 174 55 190 131 154 95 72 185 94 36 95 126 71 149 4 68 152 180 144 146 7
67649 33 152 188 29 111 194 172 148 125 35 59 36 125 11 36 141 149 183 125 27 1 71
677133 61 138 168 85 131 5 96 162 161 117 142 14 79 183 141 165 126 55 11 74 84 79
678167 3 40 142 177 193 128 173 192 100 163 16 127 145 182 97 17 193 120 115 32
679108 18 96 154 103 152 150 86 181 15 99 135 179 124 194 164 68 160 43 109 138
680152 142 6 21 23 149 20 11 82 164 44 159 148 133 115 24 28 53 104 9 183 179 108
68156 39 84 87 30 163 32 70 75 166 170 8 139 9 175 99 143 64 89 186 114 183 133 85
682161 63 61 154 111 15 115 78 109 108 72 177 14 71 103 176 173 176 157 38 10 54
683132 41 186 130 126 63 69 39 76 7 65 171 82 172 102 124 140 83 113 ^
684396 1 189 70 83 29 132 67 115 145 151 170 181 14 192 2 187 40 5 33 160 48 183
68591 132 83 112 177 62 189 153 128 91 49 38 50 55 24 8 8 51 36 13 175 28 36 56
686160 12 107 168 25 104 157 156 139 165 14 30 192 164 195 56 41 180 159 28 79 41
687144 167 51 115 188 136 154 145 65 2 22 93 83 191 147 23 110 57 137 131 66 138
68826 78 146 125 159 150 34 177 22 129 68 168 111 74 118 77 50 174 54 47 87 140 20
689178 158 133 60 33 45 93 47 8 170 59 52 56 124 20 16 150 117 24 84 46 106 151 51
690158 173 113 111 196 73 15 133 136 71 100 10 85 182 110 143 114 92 185 42 42 118
691156 20 135 173 156 96 180 37 73 134 156 182 150 196 192 45 172 17 167 91 168 68
69289 134 120 190 173 34 141 37 152 111 117 103 61 7 34 62 67 191 190 8 87 21 195
693139 86 44 76 66 55 186 23 31 87 183 5 155 122 191 68 53 149 136 35 115 26 121
694131 102 123 3 42 197 133 179 56 84 165 136 190 130 49 157 80 101 103 97 197 11
69519 118 1 5 119 137 9 104 193 141 116 122 72 38 7 70 47 44 155 43 16 107 125 40
696127 193 105 131 145 108 185 6 50 141 1 167 127 153 45 53 192 121 12 79 84 129
697151 15 166 196 156 60 188 53 109 83 148 162 46 146 6 136 111 160 88 38 169 85
69863 87 97 35 194 3 82 52 13 132 43 59 92 109 4 178 3 118 37 195 96 94 60 112 15
69947 166 110 179 99 69 149 100 43 138 69 70 123 89 12 158 54 90 72 117 182 31 166
700153 164 76 33 2 101 63 44 112 58 39 143 74 32 107 89 55 143 31 47 123 125 4 135
70118 141 80 137 88 81 154 187 ^
702406 0 23 134 103 49 99 44 64 160 68 190 114 105 91 86 22 27 15 74 8 22 151 79
703199 84 85 90 128 9 5 175 129 17 40 59 125 187 194 144 151 3 60 6 158 153 67 58
70418 99 19 53 129 90 179 134 52 124 55 95 138 82 170 167 69 122 13 108 160 119
705115 161 51 14 167 120 47 60 57 86 16 184 96 197 42 98 112 165 154 199 157 21
706168 52 146 66 126 119 93 150 20 36 153 140 194 93 26 156 114 80 80 55 44 13 35
70724 44 191 24 190 63 177 44 140 99 146 117 54 163 42 76 101 134 176 185 177 168
7081 21 19 180 193 12 52 197 191 173 65 19 31 118 59 1 123 72 71 88 64 11 193 37
70963 28 169 184 45 72 195 152 186 87 56 176 112 41 93 77 84 158 29 3 136 142 36
71080 4 119 166 86 98 163 93 1 145 83 102 66 75 191 46 4 94 155 55 120 149 113 148
711181 49 175 180 142 87 5 51 65 92 167 196 186 138 184 23 61 164 171 175 107 6 9
71281 114 7 141 177 117 76 174 73 54 112 114 29 152 11 98 87 154 123 21 146 41 115
71388 115 139 40 183 189 109 67 7 90 52 73 127 51 192 156 89 69 49 77 33 33 182 57
71410 64 138 57 159 136 91 111 33 58 193 88 188 75 118 110 126 170 18 197 169 162
71534 41 17 138 6 34 92 145 185 155 157 170 43 8 140 48 21 70 105 40 161 178 78 89
716196 110 199 106 96 121 106 23 185 28 96 48 167 145 58 91 35 97 180 66 151 130
717124 128 34 16 6 107 28 20 112 92 18 121 30 84 107 101 159 187 19 155 182 181 74
718186 11 120 98 185 104 32 126 94 82 119 42 25 173 90 30 62 96 70 178 176 39 102
71915 150 147 100 78 16 57 35 75 169 35 170 116 144 75 146 ^
720409 1 185 70 12 95 110 71 133 183 52 136 148 144 114 186 17 25 144 164 5 79 178
721172 124 117 19 43 20 93 174 36 125 117 151 109 3 164 55 101 37 122 152 77 131
722168 88 162 161 93 142 14 63 167 141 149 94 39 190 50 68 47 135 198 16 110 153
723177 104 173 192 68 147 179 119 137 166 73 180 169 88 91 24 76 10 80 146 79 128
724150 62 149 194 83 111 171 124 170 156 60 152 27 109 106 120 134 201 184 202 149
72512 198 66 132 12 127 132 133 83 8 12 45 88 9 183 155 92 24 23 76 63 14 163 8 62
72667 150 162 8 115 1 167 91 127 32 89 162 90 159 125 85 129 47 53 154 95 7 115 54
727101 108 56 169 6 47 103 176 157 160 125 14 10 30 124 17 178 122 102 55 69 15 60
728202 49 171 74 148 94 92 124 67 200 184 70 83 29 127 67 100 140 131 165 176 4
729182 2 167 20 193 33 160 43 173 71 112 68 97 157 57 169 138 113 86 44 38 40 55
73019 196 201 31 21 8 165 23 26 41 155 195 183 102 158 25 94 142 146 129 150 9 30
731177 154 195 51 36 175 139 28 59 31 124 167 41 105 173 121 134 130 65 185 17 78
73278 181 137 13 95 57 137 116 51 118 16 78 131 115 154 145 29 177 22 129 68 168
73391 74 98 72 30 174 39 37 72 130 15 163 158 128 50 18 25 73 27 191 150 59 52 36
734104 20 11 130 97 4 79 46 106 141 46 138 163 108 106 191 68 15 113 136 66 100
735193 65 182 105 123 99 72 180 37 22 108 156 10 130 168 141 96 160 22 58 134 151
736162 140 181 187 35 157 7 147 76 163 58 84 129 100 190 153 24 126 32 142 96 107
73788 41 2 14 42 52 186 170 3 82 11 180 119 66 29 56 66 50 171 3 11 77 163 5 150
738112 128 ^
739413 1 47 25 135 129 7 108 19 107 117 102 102 3 28 190 112 165 56 63 165 122 183
740116 28 157 52 73 89 90 169 202 12 111 185 203 91 116 200 97 193 134 116 122 44
74131 7 63 26 37 134 22 2 93 125 33 99 186 77 124 131 94 171 183 50 113 178 146
742127 153 45 32 164 121 203 58 56 108 130 192 166 168 128 39 188 53 102 69 148
743141 18 139 197 108 97 132 74 24 155 71 63 59 97 21 194 180 61 45 204 132 29 31
74485 88 188 164 187 118 37 167 82 94 60 98 1 47 152 110 172 85 55 128 72 43 117
74541 42 116 61 12 144 40 62 58 117 168 17 159 139 164 76 5 193 101 56 30 105 30
74611 143 60 32 86 68 41 136 31 40 123 118 181 135 195 127 59 130 81 53 147 62 13
747124 98 34 79 39 49 145 53 180 94 105 91 71 2 27 5 54 193 7 141 79 199 84 75 70
748128 199 195 160 119 17 20 54 115 187 184 129 146 193 40 201 143 138 57 43 18 94
749204 38 114 80 179 114 47 119 50 80 118 82 160 152 49 112 198 88 155 104 95 151
75036 199 162 100 27 50 47 86 195 16 179 81 192 27 83 107 150 134 194 147 1 158 32
751131 61 111 119 83 140 5 21 133 120 174 78 26 136 109 65 80 40 29 203 25 24 44
752191 14 170 43 162 34 140 99 141 112 54 148 42 71 96 119 161 165 167 148 186 11
7534 180 188 197 42 182 181 168 50 14 26 103 49 1 113 67 61 78 59 196 173 32 53 8
754154 169 30 72 175 152 176 87 36 166 102 36 88 77 79 138 24 188 131 127 26 70
755194 114 146 66 93 158 93 191 125 78 92 51 60 176 26 4 74 135 35 120 129 113 133
756181 29 170 170 137 77 190 46 45 77 157 191 186 138 184 18 61 144 151 175 107 6
757194 81 114 2 126 110 ^
758427 1 85 60 150 73 38 88 90 5 128 11 98 55 130 91 13 146 9 91 88 107 139 16 159
759189 93 35 191 66 28 65 95 51 184 148 57 45 49 61 25 9 166 49 194 64 130 33 143
760112 67 111 1 58 177 80 164 59 110 94 118 170 194 197 169 154 10 41 193 114 190
76126 92 145 177 155 125 146 35 200 124 48 21 46 89 40 153 178 62 65 196 86 175 90
76280 89 98 23 169 4 88 32 135 137 26 75 11 81 172 34 151 130 108 104 34 200 182
76383 12 196 112 84 202 97 206 60 75 69 159 163 19 131 174 157 66 178 195 104 66
764161 104 8 126 70 66 103 26 17 141 90 22 54 64 38 146 168 39 70 199 142 147 92
76570 8 25 35 75 161 3 138 92 128 43 59 185 55 205 95 100 71 123 173 42 126 128
766144 94 176 205 20 139 149 198 59 168 172 109 112 9 33 10 73 154 36 115 97 131
76799 196 144 45 81 22 112 142 72 131 148 83 162 161 78 142 14 53 157 141 139 74
76829 180 35 58 27 115 198 1 90 138 167 89 173 192 48 137 159 114 132 156 58 160
769154 68 76 19 56 5 70 141 64 113 150 47 129 184 73 96 166 124 155 151 55 147 17
770109 86 100 129 201 164 192 149 7 193 56 112 200 107 122 133 63 206 2 40 78 9
771183 140 82 4 13 71 48 4 163 201 57 62 140 157 8 100 204 162 86 117 12 89 147 75
772144 120 85 109 37 48 154 85 2 115 39 96 108 46 164 1 32 103 176 147 150 105 207
77310 15 119 2 173 117 87 50 69 50 202 39 171 69 133 89 72 114 57 195 179 70 83 29
774122 67 85 135 111 160 171 202 172 2 147 183 33 160 38 163 51 92 53 82 137 52
775149 123 98 81 39 38 30 55 14 186 196 11 6 3 155 18 16 26 150 180 168 97 148 25
77684 127 136 119 135 4 30 162 144 195 46 31 170 119 28 190 ^
777443 1 17 96 167 27 91 152 100 106 109 65 164 10 57 71 167 123 209 74 57 137 95
77830 90 2 78 110 101 147 138 22 177 22 129 68 168 63 74 70 65 2 174 18 23 51 116
7798 142 158 121 36 207 207 45 209 170 122 59 52 8 76 20 4 102 69 186 72 46 106
780127 39 110 149 101 99 184 61 15 85 136 59 100 172 37 182 98 95 78 44 173 30 204
78194 156 206 123 161 120 96 132 1 37 134 144 134 126 160 180 21 136 203 119 55
782156 44 77 122 72 190 125 10 105 25 128 75 93 67 13 205 196 14 31 179 142 206 75
783207 159 91 38 8 28 66 43 150 185 193 63 135 5 143 98 143 32 5 125 124 197 103
78414 97 107 102 87 3 18 185 97 155 56 48 165 112 178 106 13 157 32 53 79 85 149
785197 7 106 175 203 71 101 195 92 193 129 116 122 24 26 7 58 11 32 119 7 202 83
786125 28 79 181 57 119 121 84 161 168 50 93 163 131 127 153 45 17 144 121 198 43
78736 93 115 177 166 148 108 24 188 53 97 59 148 126 208 134 192 88 87 112 64 14
788145 61 63 39 97 11 194 165 46 40 199 132 19 11 80 73 178 154 177 118 37 147 72
78994 60 88 201 47 142 110 167 75 45 113 52 43 102 21 22 111 41 12 134 30 42 48
790117 158 7 154 129 164 76 195 188 101 51 20 100 10 201 143 50 32 71 53 31 131 31
79135 123 113 166 135 180 117 44 125 76 33 142 62 3 114 93 19 59 34 34 130 38 170
79274 105 91 56 192 27 205 34 178 202 131 79 199 84 65 50 128 189 185 145 109 17
79349 105 187 174 114 141 183 20 196 128 123 47 28 18 89 189 23 99 70 179 94 42
794114 45 65 98 82 150 137 29 102 183 68 150 89 75 141 21 184 157 80 7 40 37 86
795190 16 174 66 187 12 68 102 135 114 189 137 191 148 12 116 56 96 119 73 130 200
7966 113 100 154 63 26 116 104 50 80 25 14 193 83 ^
797436 1 24 44 191 211 138 11 138 18 140 99 133 104 54 124 42 63 88 95 137 133 151
798116 162 208 193 180 180 173 26 158 165 160 26 6 18 79 33 1 97 59 45 62 51 172
799141 24 37 189 130 145 6 72 143 152 160 87 4 150 86 28 80 77 71 106 16 164 123
800103 10 54 178 106 114 34 85 150 93 175 93 70 76 27 36 152 207 4 42 103 3 120 97
801113 109 181 210 162 154 129 61 166 38 13 53 141 183 186 138 184 10 61 112 119
802175 107 6 170 81 114 207 102 125 65 50 135 73 28 73 75 203 113 11 98 35 115 71
8038 146 202 76 88 102 139 1 144 189 83 15 181 51 13 60 75 51 179 143 37 30 49 51
80420 207 156 44 184 64 125 18 133 97 52 111 194 58 167 75 149 49 105 84 113 170
805179 197 169 149 208 41 178 99 180 21 92 145 172 155 105 131 30 208 200 114 48
80621 31 79 40 148 178 52 50 196 71 160 80 70 69 93 23 159 202 83 22 115 132 6 65
807209 71 167 14 151 130 98 89 34 190 167 68 2 181 112 79 192 82 191 45 55 49 159
808148 19 116 169 142 61 173 185 94 46 146 104 206 126 55 56 93 16 12 121 90 17 49
80944 18 126 163 39 50 189 137 147 87 65 3 5 35 75 156 196 118 77 118 23 54 185 40
810195 95 90 71 113 163 32 116 108 144 74 166 190 15 134 134 188 39 158 172 94 107
811212 23 53 134 36 105 77 111 89 186 124 35 61 7 102 132 67 131 128 78 162 161 63
812142 14 43 147 141 129 54 19 170 20 48 7 95 198 199 70 123 157 74 173 192 28 127
813139 109 127 146 43 140 139 48 61 14 36 60 136 49 98 150 32 109 174 63 81 161
814124 140 146 50 142 7 109 66 80 124 201 144 182 149 2 188 46 92 185 87 112 133
81543 201 205 35 68 9 183 125 72 197 3 66 33 207 163 191 52 57 130 152 8 85 204
816157 81 107 205 187 ^
817462 1 126 54 123 113 85 81 23 41 154 71 210 115 18 89 108 32 157 209 11 103 176
818133 136 77 193 10 209 112 196 166 110 66 43 69 194 36 202 25 171 62 112 82 44
819100 43 188 172 70 83 29 115 67 64 128 83 153 164 195 158 2 119 187 169 33 160
82031 149 23 64 32 61 109 45 121 102 77 74 32 38 16 55 7 172 189 198 200 211 141
82111 2 5 143 159 147 90 134 25 70 106 122 105 114 212 30 141 130 195 39 24 163 91
82228 11 7 76 167 17 81 137 85 86 94 65 149 5 42 66 157 113 204 59 57 137 80 15 70
823207 78 95 91 142 133 17 177 22 129 68 168 43 74 50 60 197 174 3 13 36 106 3 127
824158 116 26 197 192 25 194 155 102 59 52 203 56 20 214 82 49 171 67 46 106 117
82534 90 139 96 94 179 56 15 65 136 54 100 157 17 182 93 75 63 24 168 25 189 84
826156 201 118 156 105 96 112 201 22 134 139 114 116 145 175 11 121 198 99 40 151
82734 72 117 52 190 105 90 20 118 60 83 52 208 205 181 209 16 174 122 206 70 202
828144 71 18 208 8 66 38 135 170 178 53 115 5 138 88 123 17 200 115 119 182 98 9
82987 97 102 72 3 8 180 82 145 56 33 165 102 173 96 213 157 12 33 69 80 129 192 2
830101 165 203 51 86 190 87 193 124 116 122 4 21 7 53 211 27 104 207 197 73 125 23
83159 176 37 114 111 74 151 153 50 73 148 116 127 153 45 2 124 121 193 28 16 78
832100 162 166 128 88 9 188 53 92 49 148 111 193 129 187 68 77 92 54 4 135 51 63
83319 97 1 194 150 31 35 194 132 9 206 75 58 168 144 167 118 37 127 62 94 60 78
834196 47 132 110 162 65 35 98 32 43 87 1 2 106 21 12 124 20 22 38 117 148 212 149
835119 164 76 180 183 101 46 10 95 205 186 143 40 32 56 38 21 126 31 30 123 108
836151 135 165 107 29 120 71 13 137 62 208 104 88 4 39 29 19 115 23 160 54 105 91
83741 177 27 200 14 163 124 ^
838453 0 115 79 199 84 49 18 128 173 169 121 93 17 186 41 89 187 158 90 133 167
839206 188 104 99 31 4 18 81 165 217 75 54 179 62 34 106 37 41 66 82 134 113 215
84086 159 36 142 65 43 125 215 160 149 48 193 24 21 86 182 16 166 42 179 206 44 94
841111 82 181 121 167 132 198 92 48 72 119 57 114 184 200 81 68 122 39 26 84 96 26
84280 1 208 177 217 24 44 191 206 118 209 123 8 140 99 128 99 54 109 42 58 83 80
843122 113 141 96 147 203 183 180 175 158 16 143 155 155 11 1 13 64 23 1 87 54 35
84452 46 157 121 19 27 174 115 130 209 72 123 152 150 87 202 140 76 23 75 77 66 86
84511 149 118 88 44 168 101 94 14 80 145 93 165 73 65 66 12 21 137 192 4 22 83 201
846120 77 113 94 181 195 157 144 124 51 151 33 211 38 131 178 186 138 184 5 61 92
84799 175 107 6 155 81 114 207 87 105 45 40 120 73 18 58 60 193 98 11 98 15 100 51
8483 146 187 61 88 97 139 204 129 189 73 213 171 36 216 55 55 51 174 138 17 15 49
84941 15 197 146 39 174 64 120 3 123 82 37 111 179 58 157 70 134 39 100 74 108 170
850164 197 169 144 198 41 163 84 170 16 92 145 167 155 85 116 25 208 200 104 48 21
85116 69 40 143 178 42 35 196 56 145 70 60 49 88 23 149 192 78 12 95 127 204 55
852199 61 162 212 151 130 88 74 34 180 152 53 210 166 112 74 182 67 176 30 35 29
853159 133 19 101 164 127 56 168 175 84 26 131 104 196 126 40 46 83 6 7 101 90 12
85444 24 216 106 158 39 30 179 132 147 82 60 216 203 35 75 151 181 98 62 108 3 49
855185 25 185 95 80 71 103 153 22 106 88 144 54 156 175 10 129 119 178 19 148 172
85679 102 207 13 208 33 114 36 95 57 91 79 176 104 25 41 210 92 122 62 131 108 73
857162 161 48 142 14 33 137 141 119 34 9 160 5 38 205 75 198 189 50 108 112 ^
858454 1 53 173 192 113 111 102 120 132 22 112 118 20 40 7 8 213 46 129 28 77 150
85911 81 160 49 60 154 124 119 139 43 135 213 109 38 52 117 201 116 168 149 215
860181 32 64 164 59 98 133 15 194 198 28 54 9 183 104 58 176 209 59 12 200 163 177
86145 50 116 145 8 64 204 150 74 93 184 89 111 39 108 108 85 61 13 36 154 61 210
862115 3 84 108 22 152 209 216 103 176 123 126 57 183 10 199 107 186 161 105 51 38
86369 184 26 202 15 171 57 97 77 24 90 33 183 167 70 83 29 110 67 49 123 63 148
864159 190 148 2 99 172 159 33 160 26 139 3 44 17 46 89 40 101 87 62 69 27 38 6 55
8652 162 184 183 190 211 131 6 212 210 138 144 132 85 124 25 60 91 112 95 99 212
86630 126 120 195 34 19 158 71 28 211 217 56 167 7 71 122 70 66 79 65 134 27 61
867147 103 199 44 57 137 65 50 202 78 80 81 137 128 12 177 22 129 68 168 23 74 30
86855 182 174 208 3 21 96 218 112 158 111 16 187 177 5 179 140 82 59 52 188 36 20
869214 62 29 156 62 46 106 107 29 70 129 91 89 174 51 15 45 136 49 100 142 217 182
87088 55 48 4 163 20 174 74 156 196 113 151 90 96 92 191 7 134 134 94 106 130 170
8711 106 193 79 25 146 24 67 112 32 190 85 210 75 15 108 45 73 37 193 205 166 194
8721 169 102 206 65 197 129 51 218 198 208 66 33 120 155 163 43 95 5 133 78 103 2
873185 105 114 167 93 4 77 87 102 57 3 218 175 67 135 56 18 165 92 168 86 203 157
874212 13 59 75 109 187 217 96 155 203 31 71 185 82 193 119 116 122 204 16 7 48
875201 22 89 197 192 63 125 18 39 171 17 109 101 64 141 138 50 53 133 101 127 153
87645 207 104 121 188 13 216 63 85 147 166 108 68 214 188 53 87 39 148 96 178 124
877182 48 67 72 44 214 125 41 63 219 97 211 194 135 16 30 189 132 219 191 70 43
878158 181 ^
879475 0 153 118 37 99 48 94 60 64 189 47 118 110 155 51 21 77 4 43 66 195 196 99
880215 12 110 6 216 24 117 134 205 142 105 164 76 159 176 101 39 218 88 184 165
881143 26 32 35 17 7 119 31 23 123 101 130 135 144 93 8 113 64 207 130 62 201 90
88281 205 11 22 220 94 2 146 26 105 91 20 156 27 193 208 142 178 107 79 199 84 41
8832 128 165 161 109 85 17 174 37 81 187 150 78 129 159 194 184 92 87 23 214 18 77
884153 209 63 46 179 46 30 102 33 29 50 82 126 101 203 78 147 20 138 53 27 117 207
885148 145 32 181 16 13 86 178 16 162 30 175 198 32 90 99 66 177 113 155 124 186
88680 44 60 119 49 106 176 192 65 52 106 27 26 68 92 14 80 211 200 169 213 24 44
887191 202 102 197 111 140 99 124 95 54 97 42 54 79 68 110 97 133 80 135 199 175
888180 171 146 8 131 147 151 221 219 9 52 15 1 79 50 27 44 42 145 105 15 19 162
889103 118 201 72 107 152 142 87 190 132 68 19 71 77 62 70 7 137 114 76 214 36 160
89097 78 220 76 141 93 157 57 61 58 9 125 180 4 6 67 189 120 61 113 82 181 183 153
891136 120 43 139 29 199 26 123 174 186 138 184 1 61 76 83 175 107 6 143 81 114
892207 75 89 29 32 108 73 10 46 48 185 86 11 98 221 88 35 221 146 175 49 88 93 139
893196 117 189 65 201 163 24 208 51 39 51 170 134 1 3 49 33 11 189 138 35 166 64
894116 213 115 70 25 111 167 58 149 66 122 31 96 66 104 170 152 197 169 140 190 41
895151 72 162 12 92 145 163 155 69 104 21 208 200 96 48 21 4 61 40 139 178 34 23
896196 44 133 62 52 33 84 23 141 184 74 4 79 123 192 47 191 53 158 200 151 130 80
89762 34 172 140 41 206 154 112 70 174 55 164 18 19 13 159 121 19 89 160 115 52
898164 167 76 10 119 104 188 126 28 38 75 220 3 85 90 8 40 8 204 90 154 39 14 171
899128 147 78 56 216 191 35 75 147 169 82 50 100 209 45 185 13 177 95 150 ^
900471 0 71 89 139 8 92 60 144 26 142 154 3 122 98 164 216 134 172 58 95 200 224
901201 5 86 36 81 29 63 65 162 76 11 13 196 78 108 55 131 80 66 162 161 27 142 14
90219 123 141 105 6 220 146 209 24 184 47 198 175 22 87 133 38 173 192 205 103 91
90397 115 122 7 92 103 25 2 213 213 36 124 13 62 150 221 61 150 39 45 149 124 104
904134 38 130 208 109 18 32 112 201 96 158 149 215 176 22 44 149 39 88 133 220 189
905193 23 44 9 183 89 48 161 204 54 222 195 163 167 40 45 106 140 8 49 204 145 69
90683 169 89 96 24 93 103 85 41 3 31 154 51 210 115 213 79 108 12 147 209 206 103
907176 113 116 37 173 10 189 102 176 156 100 36 33 69 174 16 202 5 171 52 82 72 4
90880 23 178 162 70 83 29 105 67 34 118 43 143 154 185 138 2 79 157 149 33 160 21
909129 208 24 2 31 69 35 81 72 47 64 22 38 221 55 222 152 179 168 180 211 121 1
910207 200 133 129 117 80 114 25 50 76 102 85 84 212 30 111 110 195 29 14 153 51
91128 196 212 36 167 222 61 107 55 46 64 65 119 220 12 56 137 93 194 29 57 137 50
912210 30 197 78 65 71 132 123 7 177 22 129 68 168 3 74 10 50 167 174 198 218 6 86
913218 97 158 106 6 177 162 210 164 125 62 59 52 173 16 20 214 42 9 141 57 46 106
91497 24 50 119 86 84 169 46 15 25 136 44 100 127 202 182 83 35 33 209 158 15 159
91564 156 191 108 146 75 96 72 181 217 134 129 74 96 115 165 216 91 188 59 10 141
91614 62 107 12 190 65 205 60 10 98 30 63 22 178 205 151 179 211 164 82 206 60 192
917114 31 203 188 193 66 28 105 140 148 33 75 5 128 68 83 212 170 95 109 152 88
918224 67 77 102 42 3 213 170 52 125 56 3 165 82 163 76 193 157 197 218 49 70 89
919182 217 91 145 203 11 56 180 77 193 114 116 122 189 11 7 43 191 17 74 187 187
92053 125 13 19 166 222 104 91 54 131 123 50 33 118 86 127 167 ^
921480 1 45 193 76 121 181 219 195 42 64 126 166 80 40 200 188 53 80 25 148 75 157
922117 175 20 53 44 30 207 111 27 63 198 97 204 194 114 222 23 182 132 212 170 63
92322 144 120 143 118 37 79 38 94 60 54 184 47 108 110 150 41 11 62 211 43 51 180
924181 94 200 12 100 223 201 14 117 124 200 137 95 164 76 144 171 101 34 213 83
925169 150 143 16 32 20 2 224 114 31 18 123 96 115 135 129 83 220 108 59 192 125
92662 196 80 76 195 218 17 210 79 214 136 6 105 91 5 141 27 188 193 127 168 97 79
927199 84 31 209 128 155 151 94 75 17 159 32 71 187 140 63 124 149 179 179 77 72
92813 204 18 72 138 199 48 36 179 26 25 97 28 14 30 82 116 86 188 68 132 133 38 7
929107 197 133 140 12 166 6 3 86 173 16 157 15 170 188 17 85 84 46 172 103 140 114
930171 65 39 45 119 39 96 166 182 45 32 86 12 26 48 87 226 80 201 190 159 208 24
93144 191 197 82 182 96 217 140 99 119 90 54 82 42 49 74 53 95 77 123 60 120 194
932165 180 166 131 225 116 137 146 211 219 4 37 5 1 69 45 17 34 37 130 85 10 9 147
93388 103 191 72 87 152 132 87 175 122 58 14 66 77 57 50 2 122 109 61 209 26 150
93492 58 205 71 136 93 147 37 56 48 212 221 110 165 4 213 47 174 120 41 113 67 181
935168 148 126 115 33 124 24 184 11 113 169 186 138 184 223 61 56 63 175 107 6 128
93681 114 207 60 69 9 22 93 73 31 33 175 71 11 98 206 73 15 221 146 160 34 88 88
937139 186 102 189 55 186 153 9 198 46 19 51 165 129 208 215 49 23 6 179 128 30
938156 64 111 203 105 55 10 111 152 58 139 61 107 21 91 56 99 170 137 197 169 135
939180 41 136 57 152 7 92 145 158 155 49 89 16 208 200 86 48 21 216 51 40 134 178
94024 8 196 29 118 52 42 13 79 23 131 174 69 221 59 118 177 37 181 43 153 185 151
941130 70 47 34 162 125 26 201 139 112 65 164 40 149 3 226 220 159 106 19 74 155
942100 47 159 157 193 ^
943471 0 211 98 104 174 126 7 24 61 213 225 57 90 1 33 209 183 62 147 39 215 157
944121 147 71 49 216 170 35 75 140 148 54 29 86 188 38 185 221 163 95 58 71 81 131
94584 44 144 10 134 142 228 118 86 156 204 126 172 46 91 196 220 197 218 70 36 73
94613 47 57 154 60 3 226 188 70 100 51 131 64 62 162 161 15 142 14 11 115 141 97
947219 216 138 201 16 172 31 198 167 6 75 125 26 173 192 193 95 75 93 111 114 224
94876 91 213 13 227 201 213 28 120 1 50 150 213 45 142 31 33 145 124 92 130 34 126
949204 109 2 16 108 201 80 150 149 215 172 14 28 137 23 80 133 208 185 189 19 36 9
950183 77 40 149 200 50 214 191 163 159 36 41 98 136 8 37 204 141 65 75 157 89 84
95112 81 99 85 25 224 27 154 43 210 115 205 75 108 4 143 209 198 103 176 105 108
95221 165 10 181 98 168 152 96 24 29 69 166 8 202 226 171 48 70 68 217 72 15 174
953158 70 83 29 101 67 22 114 27 139 150 181 130 2 63 145 141 33 160 17 121 196 8
954219 19 53 31 65 60 35 60 18 38 217 55 222 144 175 156 172 211 113 226 203 192
955129 117 105 76 106 25 42 64 94 77 72 212 30 99 102 195 25 10 149 35 28 184 208
95620 167 218 53 95 43 30 52 65 107 220 52 129 85 190 17 57 137 38 202 14 193 78
95753 63 128 119 3 177 22 129 68 168 216 74 223 46 155 174 190 214 223 78 218 85
958158 102 227 169 150 198 152 113 46 59 52 161 20 214 26 222 129 53 46 106 89 20
95934 111 82 80 165 42 15 9 136 40 100 115 190 182 79 19 21 197 154 11 147 56 156
960187 104 142 63 96 56 173 209 134 125 58 88 103 161 212 79 184 43 227 137 6 58
961103 225 190 49 201 48 6 90 18 55 10 166 205 139 167 203 160 66 206 56 188 102
96215 191 180 181 66 24 93 128 136 25 59 5 124 60 67 204 158 87 105 140 84 224 59
96369 102 30 3 209 166 40 117 56 220 165 74 159 68 185 157 185 206 41 66 167 ^
964490 1 176 217 85 133 203 218 38 174 71 193 108 116 122 171 5 7 37 179 11 56 175
965181 41 125 7 226 160 204 98 79 42 119 105 50 9 100 68 127 153 45 185 60 121 177
966211 183 30 52 114 166 64 24 192 188 53 76 17 148 63 145 113 171 4 45 28 22 203
967103 19 63 186 97 200 194 102 214 19 178 132 208 158 59 10 136 112 135 118 37 63
96830 94 60 46 180 47 100 110 146 33 3 50 199 43 39 168 169 90 188 12 92 219 189 6
969117 116 196 133 87 164 76 132 167 101 30 209 79 157 138 143 8 32 8 221 220 110
97031 14 123 92 103 135 117 75 212 104 55 180 121 62 192 72 72 187 206 13 202 67
971206 128 221 105 91 224 129 27 184 181 115 160 89 79 199 84 23 197 128 147 143
97282 67 17 147 28 63 187 132 51 120 141 167 175 65 60 5 196 18 68 126 191 36 28
973179 10 21 93 24 2 14 82 108 74 176 60 120 215 129 26 222 99 189 121 136 227 154
974229 226 86 169 16 153 3 166 180 5 81 72 30 168 95 128 106 159 53 35 33 119 31
97588 158 174 29 16 70 26 32 83 218 80 193 182 151 204 24 44 191 193 66 170 84 213
976140 99 115 86 54 70 42 45 70 41 83 61 115 44 108 190 157 180 162 119 221 104
977129 142 203 219 25 228 1 61 41 9 26 33 118 69 6 1 135 76 91 183 72 71 152 124
97887 163 114 50 10 62 77 53 34 229 110 105 49 205 18 142 88 42 193 67 132 93 139
97921 52 40 204 213 98 153 4 201 31 162 120 25 113 55 181 156 144 118 111 25 112
98020 172 230 105 165 186 138 184 223 61 40 47 175 107 6 116 81 114 207 48 53 224
98114 81 73 223 19 21 167 59 11 98 194 61 230 221 146 148 22 88 84 139 178 90 189
98247 174 145 228 190 42 3 51 161 125 196 207 49 15 2 171 120 26 148 64 107 195 97
98343 229 111 140 58 131 57 95 13 87 48 95 170 125 197 169 131 172 41 124 45 144 3
98492 145 154 155 33 77 12 208 200 78 48 21 208 43 40 130 178 16 227 196 17 106 44
98534 228 75 23 123 166 65 217 43 114 165 29 173 35 200 ^
986479 0 167 151 130 58 29 34 150 107 8 195 121 112 59 152 22 131 218 208 202 159
98788 19 56 149 82 41 153 145 54 199 86 104 166 126 228 16 53 209 225 41 90 230 29
988197 171 46 143 39 203 149 117 147 67 45 216 158 35 75 136 136 38 17 78 176 34
989185 213 155 95 50 71 73 123 225 76 28 144 227 126 130 228 114 74 148 192 118
990172 34 87 192 216 193 206 54 36 65 230 31 49 146 44 228 214 180 62 92 47 131 48
99158 162 161 3 142 14 3 107 141 89 207 212 130 193 8 160 15 198 159 223 63 117 14
992173 192 181 87 59 89 107 106 216 60 79 201 1 227 189 213 20 116 222 38 150 205
99329 134 23 21 141 124 80 126 30 122 200 109 219 104 201 64 142 149 215 168 6 12
994125 7 72 133 196 181 185 15 28 9 183 65 32 137 196 46 206 187 163 151 32 37 90
995132 8 25 204 137 61 67 145 89 72 69 95 85 9 220 23 154 35 210 115 197 71 108
996229 139 209 190 103 176 97 100 5 157 10 173 94 160 148 92 12 25 69 158 202 222
997171 44 58 64 205 64 7 170 154 70 83 29 97 67 10 110 11 135 146 177 122 2 47 133
998133 33 160 13 113 184 225 211 7 37 27 49 48 23 56 14 38 213 55 222 136 171 144
999164 211 105 226 199 184 125 105 93 72 98 25 34 52 86 69 60 212 30 87 94 195 21
10006 145 19 28 172 204 4 167 214 45 83 31 14 40 65 95 220 221 48 121 77 186 5 57
1001137 26 194 231 189 78 41 55 124 115 232 177 22 129 68 168 204 74 211 42 143 174
1002182 210 215 70 218 73 158 98 223 161 138 186 140 101 30 59 52 149 217 20 214 10
1003210 117 49 46 106 81 16 18 103 78 76 161 38 15 226 136 36 100 103 178 182 75 3
10049 185 150 7 135 48 156 183 100 138 51 96 40 165 201 134 121 42 80 91 157 208 67
1005180 27 219 133 231 54 99 213 190 33 197 36 2 82 6 47 231 154 205 127 155 195
1006156 50 206 52 184 90 232 179 172 169 66 20 81 116 124 17 43 5 120 52 51 196 146
100779 101 128 80 224 65 ^
1008503 1 55 102 9 3 202 159 19 103 56 206 165 60 152 54 171 157 164 185 27 59 45
1009171 217 80 123 203 203 23 169 66 193 103 116 122 156 7 32 169 6 41 165 176 31
1010125 2 211 155 189 93 69 32 109 90 50 225 85 53 127 153 45 175 40 121 172 201
1011168 15 37 99 166 44 4 182 188 53 71 7 148 48 130 108 166 220 35 8 12 198 93 9
101263 171 97 195 194 87 204 14 173 132 203 143 54 231 126 102 125 118 37 43 20 94
101360 36 175 47 90 110 141 23 229 35 184 43 24 153 154 85 173 12 82 214 174 232
1014117 106 191 128 77 164 76 117 162 101 25 204 74 142 123 143 234 32 229 211 215
1015105 31 9 123 87 88 135 102 65 202 99 50 165 116 62 187 62 67 177 191 8 192 52
1016196 118 206 105 91 214 114 27 179 166 100 150 79 79 199 84 13 182 128 137 133
101767 57 17 132 23 53 187 122 36 115 131 152 170 50 45 231 186 18 63 111 181 21 18
1018179 226 16 88 19 223 230 82 98 59 161 50 105 200 124 11 207 89 179 106 131 212
1019139 224 221 86 164 16 148 224 161 170 226 76 57 10 163 85 113 96 144 38 30 18
1020119 21 78 148 164 9 232 50 221 26 12 78 208 80 183 172 141 199 24 44 191 188 46
1021155 69 208 140 99 110 81 54 55 42 40 65 26 68 41 105 24 93 185 147 180 157 104
1022216 89 119 137 193 219 231 10 223 1 51 36 235 16 28 103 49 1 227 120 61 76 173
102372 51 152 114 87 148 104 40 5 57 77 48 14 229 95 100 34 200 8 132 83 22 178 62
1024127 93 129 1 47 30 194 203 83 138 4 186 11 147 120 5 113 40 181 141 139 108 106
102515 97 15 157 220 95 160 186 138 184 223 61 20 27 175 107 6 101 81 114 207 33 33
1026209 4 66 73 218 4 6 157 44 11 98 179 46 215 221 146 133 7 88 79 139 168 75 189
102737 159 135 218 180 37 219 51 156 120 181 197 49 5 233 161 110 21 138 64 102 185
102887 28 219 111 125 58 121 52 80 3 82 38 90 170 110 197 169 126 162 41 109 30 134
1029234 92 145 149 155 13 62 7 208 200 68 48 21 198 33 40 125 178 6 217 196 2 91 34
103024 213 70 23 113 161 ^
1031470 0 58 210 15 107 144 15 159 21 142 152 151 130 48 14 34 140 92 231 190 106
1032112 54 142 7 116 208 193 187 159 73 19 41 144 67 36 148 135 44 184 71 104 156
1033126 218 6 43 204 225 21 90 230 24 182 156 26 138 39 188 139 112 147 62 40 216
1034143 35 75 131 121 18 2 68 161 29 185 203 145 95 40 71 63 113 220 66 8 144 212
1035116 115 228 109 59 138 177 108 172 19 82 187 211 188 191 34 36 55 215 11 39 136
103624 223 199 170 52 82 42 131 28 53 162 161 226 142 14 231 97 141 79 192 207 120
1037183 236 145 233 198 149 208 48 107 237 173 192 166 77 39 84 102 96 206 40 64
1038186 224 227 174 213 10 111 212 23 150 195 9 124 13 6 136 124 65 121 25 117 195
1039109 204 218 99 201 44 132 149 215 163 234 230 110 225 62 133 181 176 180 10 18
10409 183 50 22 122 191 41 196 182 163 141 27 32 80 127 8 10 204 132 56 57 130 89
104157 223 54 90 85 227 215 18 154 25 210 115 187 66 108 224 134 209 180 103 176 87
104290 223 147 10 163 89 150 143 87 235 20 69 148 228 202 217 171 39 43 59 190 54
1043235 165 149 70 83 29 92 67 233 105 229 130 141 172 112 2 27 118 123 33 160 8
1044103 169 210 201 230 17 22 29 33 8 51 9 38 208 55 222 126 166 129 154 211 95 226
1045194 174 120 90 78 67 88 25 24 37 76 59 45 212 30 72 84 195 16 1 140 237 28 157
1046199 222 167 209 35 68 16 232 25 65 80 220 211 43 111 67 181 228 57 137 11 184
1047216 184 78 26 45 119 110 232 177 22 129 68 168 189 74 196 37 128 174 172 205
1048205 60 218 58 158 93 218 151 123 171 125 86 10 59 52 134 202 20 214 228 195 102
104944 46 106 71 11 236 93 73 71 156 33 15 211 136 31 100 88 163 182 70 221 232 170
1050145 2 120 38 156 178 95 133 36 96 20 155 191 134 116 22 70 76 152 203 52 175 7
1051209 128 226 49 94 198 190 13 192 21 235 72 229 37 221 139 205 112 140 185 151
105230 206 47 179 75 217 101 ^
1053502 0 158 148 66 13 60 95 103 3 15 5 113 38 23 182 125 65 94 107 73 224 37 47
1054102 237 3 198 155 7 95 56 198 165 52 148 46 163 157 152 173 19 55 29 167 217 76
1055115 203 191 11 165 62 193 99 116 122 144 236 7 28 161 2 29 157 172 23 125 238
1056199 151 177 89 61 24 101 78 50 213 73 41 127 153 45 167 24 121 168 193 156 3 25
105787 166 28 228 174 188 53 67 239 148 36 118 104 162 208 27 232 4 194 85 1 63 159
105897 191 194 75 196 10 169 132 199 131 50 223 118 94 117 118 37 27 12 94 60 28
1059171 47 82 110 137 15 225 23 172 43 12 141 142 81 161 12 74 210 162 228 117 98
1060187 124 69 164 76 105 158 101 21 200 70 130 111 143 230 32 221 203 211 101 31 5
1061123 83 76 135 90 57 194 95 46 153 112 62 183 54 63 169 179 4 184 40 188 110 194
1062105 91 206 102 27 175 154 88 142 71 79 199 84 5 170 128 129 125 55 49 17 120 19
106345 187 114 24 111 123 140 166 38 33 227 178 18 59 99 173 9 10 179 214 12 84 15
1064215 218 82 90 47 149 42 93 188 120 239 195 81 171 94 127 200 127 220 217 86 160
106516 144 216 157 162 218 72 45 234 159 77 101 88 132 26 26 6 119 13 70 140 156
1066233 220 34 213 26 236 74 200 80 175 164 133 195 24 44 191 184 30 143 57 204 140
106799 106 77 54 43 42 36 61 14 56 25 97 8 81 181 139 180 153 92 212 77 111 133 185
1068219 231 238 219 1 43 32 231 8 24 91 33 237 223 108 49 64 165 72 35 152 106 87
1069136 96 32 1 53 77 44 238 229 83 96 22 196 124 79 6 166 58 123 93 121 225 43 22
1070186 195 71 126 4 174 235 135 120 229 113 28 181 129 135 100 102 7 85 11 145 212
107187 156 186 138 184 223 61 4 11 175 107 6 89 81 114 207 21 17 197 236 54 73 214
1072232 234 149 32 11 98 167 34 203 221 146 121 235 88 75 139 160 63 189 29 147 127
1073210 172 33 207 51 152 116 169 189 49 237 233 153 102 17 130 64 98 177 79 16 211
1074111 113 58 113 48 68 235 78 30 86 170 98 197 169 122 154 41 97 18 126 234 92
1075145 145 155 237 50 209 ^
1076481 1 208 200 56 48 21 186 21 40 119 178 236 205 196 226 73 22 12 195 64 23 101
1077144 54 206 241 103 132 7 151 13 138 140 151 130 40 2 34 132 80 223 186 94 112
107850 134 237 104 200 181 175 159 61 19 29 140 55 32 144 127 36 172 59 104 148 126
1079210 240 35 200 225 5 90 230 20 170 144 10 134 39 176 131 108 147 58 36 216 131
108035 75 127 109 2 232 60 149 25 185 195 137 95 32 71 55 105 216 58 234 144 200
1081108 103 228 105 47 130 165 100 172 7 78 183 207 184 179 18 36 47 203 237 31 128
10828 219 187 162 44 74 38 131 12 49 162 161 218 142 14 227 89 141 71 180 203 112
1083175 232 133 221 198 141 196 36 99 229 173 192 154 69 23 80 98 88 198 24 52 174
1084216 227 162 213 2 107 204 11 150 187 235 116 5 236 132 124 53 117 21 113 191
1085109 192 206 95 201 28 124 149 215 159 230 218 98 213 54 133 169 172 176 6 10 9
1086183 38 14 110 187 37 188 178 163 133 23 28 72 123 8 240 204 128 52 49 118 89 45
1087215 42 86 85 215 211 14 154 17 210 115 179 62 108 220 130 209 172 103 176 79 82
1088211 139 10 155 85 142 139 83 227 16 69 140 224 202 213 171 35 31 55 178 46 231
1089161 145 70 83 29 88 67 225 101 217 126 137 168 104 2 11 106 115 33 160 4 95 157
1090198 193 222 1 18 13 21 238 47 5 38 204 55 222 118 162 117 146 211 87 226 190
1091166 116 78 66 63 80 25 16 25 68 51 33 212 30 60 76 195 12 239 136 225 28 145
1092195 210 167 205 27 56 4 220 13 65 68 220 203 39 103 59 177 220 57 137 241 176
1093204 180 78 14 37 115 106 232 177 22 129 68 168 177 74 184 33 116 174 164 201
1094197 52 218 46 158 89 214 143 111 159 113 74 236 59 52 122 190 20 214 216 183 90
109540 46 106 63 7 224 85 69 67 152 29 15 199 136 27 100 76 151 182 66 209 224 158
1096141 240 108 30 156 174 91 129 24 96 4 147 183 134 112 6 62 64 148 199 40 171
1097233 201 124 222 45 90 186 190 239 188 9 235 64 221 29 213 127 178 ^
1098508 1 94 122 173 145 6 206 41 173 57 199 146 150 136 66 9 48 83 91 239 243 5
1099109 30 7 174 113 57 90 95 69 224 29 39 102 229 3 194 151 239 87 56 190 165 44
1100144 38 155 157 140 161 11 51 13 163 217 72 107 203 179 243 161 58 193 95 116
1101122 132 236 7 24 153 242 17 149 168 15 125 238 187 147 165 85 53 16 93 66 50
1102201 61 29 127 153 45 159 8 121 164 185 144 235 13 75 166 12 216 166 188 53 63
1103235 148 24 106 100 158 196 19 220 240 190 77 237 63 147 97 187 194 63 188 6 165
1104132 195 119 46 215 110 86 109 118 37 11 4 94 60 20 167 47 74 110 133 7 221 11
1105160 43 129 130 77 149 12 66 206 150 224 117 90 183 120 61 164 76 93 154 101 17
1106196 66 118 99 143 226 32 213 195 207 97 31 1 123 79 64 135 78 49 186 91 42 141
1107108 62 179 46 59 161 167 176 28 180 102 182 105 91 198 90 27 171 142 76 134 63
110879 199 84 241 158 128 121 117 43 41 17 108 15 37 187 106 12 107 115 128 162 26
110921 223 170 18 55 87 165 241 2 179 202 8 80 11 207 206 82 82 35 137 34 81 176
1110116 231 183 73 163 82 123 188 115 216 213 86 156 16 140 208 153 154 210 68 33
1111222 155 69 89 80 120 14 22 238 119 5 62 132 148 221 208 18 205 26 224 70 192 80
1112167 156 125 191 24 44 191 180 14 131 45 200 140 99 102 73 54 31 42 32 57 2 44 9
111389 236 69 177 131 180 149 80 208 65 103 129 177 219 231 230 215 1 35 28 227 20
111479 17 237 219 96 37 52 157 72 19 152 98 87 124 88 24 241 49 77 40 226 229 71 92
111510 192 236 116 75 234 154 54 119 93 113 213 39 14 178 187 59 114 4 162 223 123
1116120 217 113 16 181 117 131 92 98 243 73 7 133 204 79 152 186 138 184 223 61 232
1117239 175 107 6 77 81 114 207 9 1 185 232 42 73 210 224 226 141 20 11 98 155 22
1118191 221 146 109 227 88 71 139 152 51 189 21 135 119 202 164 29 195 51 148 112
1119157 181 49 233 233 145 94 13 122 64 94 169 71 4 203 111 101 58 105 44 56 231 74
112022 82 170 86 197 169 118 146 41 85 6 118 234 92 145 141 149 ^
1121484 1 219 32 243 208 200 48 48 21 178 13 40 115 178 232 197 196 218 61 14 4 183
112260 23 93 136 50 202 229 99 120 245 143 5 134 128 151 130 32 236 34 124 68 215
1123182 82 112 46 126 229 92 192 169 163 159 49 19 17 136 43 28 140 119 28 160 47
1124104 140 126 202 236 27 196 225 235 90 230 16 158 132 240 130 39 164 123 104 147
112554 32 216 119 35 75 123 97 232 224 52 137 21 185 187 129 95 24 71 47 97 212 50
1126222 144 188 100 91 228 101 35 122 153 92 172 241 74 179 203 180 167 2 36 39 191
1127225 23 120 238 215 175 154 36 66 34 131 242 45 162 161 210 142 14 223 81 141 63
1128168 199 104 167 228 121 209 198 133 184 24 91 221 173 192 142 61 7 76 94 80 190
11298 40 162 208 227 150 213 240 103 196 245 150 179 223 108 243 228 128 124 41 113
113017 109 187 109 180 194 91 201 12 116 149 215 155 226 206 86 201 46 133 157 168
1131172 2 2 9 183 26 6 98 183 33 180 174 163 125 19 24 64 119 8 232 204 124 48 41
1132106 89 33 207 30 82 85 203 207 10 154 9 210 115 171 58 108 216 126 209 164 103
1133176 71 74 199 131 10 147 81 134 135 79 219 12 69 132 220 202 209 171 31 19 51
1134166 38 227 157 141 70 83 29 84 67 217 97 205 122 133 164 96 2 241 94 107 33 160
113587 145 186 185 214 231 14 243 9 230 43 1 38 200 55 222 110 158 105 138 211 79
1136226 186 158 112 66 54 59 72 25 8 13 60 43 21 212 30 48 68 195 8 239 132 213 28
1137133 191 198 167 201 19 44 238 208 1 65 56 220 195 35 95 51 173 212 57 137 233
1138168 192 176 78 2 29 111 102 232 177 22 129 68 168 165 74 172 29 104 174 156 197
1139189 44 218 34 158 85 210 135 99 147 101 62 224 59 52 110 178 20 214 204 171 78
114036 46 106 55 3 212 77 65 63 148 25 15 187 136 23 100 64 139 182 62 197 216 146
1141137 240 96 22 156 170 87 125 12 96 234 139 175 134 108 236 54 52 144 195 28 167
1142221 193 120 218 41 86 174 190 227 184 243 235 56 213 21 205 115 205 71 ^
1143506 0 110 165 141 238 206 37 169 45 187 134 142 124 66 5 36 71 79 235 231 5 105
114422 239 166 101 49 86 83 65 224 21 31 102 221 3 190 147 231 79 56 182 165 36 140
114530 147 157 128 149 3 47 245 159 217 68 99 203 167 235 157 54 193 91 116 122 120
1146236 7 20 145 242 5 141 164 7 125 238 175 143 153 81 45 8 85 54 50 189 49 17 127
1147153 45 151 240 121 160 177 132 227 1 63 166 244 204 158 188 53 59 231 148 12 94
114896 154 184 11 208 236 186 69 233 63 135 97 183 194 51 180 2 161 132 191 107 42
1149207 102 78 101 118 37 243 244 94 60 12 163 47 66 110 129 247 217 247 148 43 236
1150117 118 73 137 12 58 202 138 220 117 82 179 116 53 164 76 81 150 101 13 192 62
1151106 87 143 222 32 205 187 203 93 31 245 123 75 52 135 66 41 178 87 38 129 104
115262 175 38 55 153 155 244 168 16 172 94 170 105 91 190 78 27 167 130 64 126 55
115379 199 84 237 146 128 113 109 31 33 17 96 11 29 187 98 103 107 116 158 14 9 219
1154162 18 51 75 157 233 242 179 190 4 76 7 199 194 82 74 23 125 26 69 164 112 223
1155171 65 155 70 119 176 103 212 209 86 152 16 136 200 149 146 202 64 21 210 151
115661 77 72 108 2 18 230 119 245 54 124 140 209 196 2 197 26 212 66 184 80 159 148
1157117 187 24 44 191 176 246 119 33 196 140 99 98 69 54 19 42 28 53 238 32 241 81
1158224 57 173 123 180 145 68 204 53 95 125 169 219 231 222 211 1 27 24 223 240 16
115967 1 237 215 84 25 40 149 72 3 152 90 87 112 80 16 241 45 77 36 214 229 59 88
1160246 188 232 108 71 222 142 50 115 93 105 201 35 6 170 179 47 102 4 150 211 111
1161120 205 113 4 181 105 127 84 94 239 61 3 121 196 71 148 186 138 184 223 61 220
1162227 175 107 6 65 81 114 207 245 233 173 228 30 73 206 216 218 133 8 11 98 143
116310 179 221 146 97 219 88 67 139 144 39 189 13 123 111 194 156 25 183 51 144 108
1164145 173 49 229 233 137 86 9 114 64 90 161 63 240 195 111 89 58 97 40 44 227 70
116514 78 170 74 197 169 114 138 41 73 242 110 234 177 ^
1166491 0 145 135 155 207 20 243 208 200 40 48 21 170 5 40 111 178 228 189 196 210
116749 6 246 171 56 23 85 128 46 198 217 95 108 241 135 247 130 116 151 130 24 228
116834 116 56 207 178 70 112 42 118 221 80 184 157 151 159 37 19 5 132 31 24 136
1169111 20 148 35 104 132 126 194 232 19 192 225 223 90 230 12 146 120 228 126 39
1170152 115 100 147 50 28 216 107 35 75 119 85 220 216 44 125 17 185 179 121 95 16
117171 39 89 208 42 210 144 176 92 79 228 97 23 114 141 84 172 233 70 175 199 176
1172155 236 36 31 179 213 15 112 226 211 163 146 28 58 30 131 230 41 162 161 202
1173142 14 219 73 141 55 156 195 96 159 224 109 197 198 125 172 12 83 213 173 192
1174130 53 241 72 90 72 182 242 28 150 200 227 138 213 236 99 188 237 150 171 211
1175100 239 220 124 124 29 109 13 105 183 109 168 182 87 201 246 108 149 215 151
1176222 194 74 189 38 133 145 164 168 248 244 9 183 14 248 86 179 29 172 170 163
1177117 15 20 56 115 8 224 204 120 44 33 94 89 21 199 18 78 85 191 203 6 154 1 210
1178115 163 54 108 212 122 209 156 103 176 63 66 187 123 10 139 77 126 131 75 211 8
117969 124 216 202 205 171 27 7 47 154 30 223 153 137 70 83 29 80 67 209 93 193 118
1180129 160 88 2 229 82 99 33 160 246 79 133 174 177 206 219 10 231 247 222 39 247
118138 196 55 222 102 154 93 130 211 71 226 182 150 108 54 42 55 64 25 1 52 35 9
1182212 30 36 60 195 4 239 128 201 28 121 187 186 167 197 11 32 230 196 239 65 44
1183220 187 31 87 43 169 204 57 137 225 160 180 172 78 240 21 107 98 232 177 22 129
118468 168 153 74 160 25 92 174 148 193 181 36 218 22 158 81 206 127 87 135 89 50
1185212 59 52 98 166 20 214 192 159 66 32 46 106 47 249 200 69 61 59 144 21 15 175
1186136 19 100 52 127 182 58 185 208 134 133 240 84 14 156 166 83 121 96 222 131
1187167 134 104 224 46 40 140 191 16 163 209 185 116 214 37 82 162 190 215 180 235
1188235 48 205 13 197 103 205 76 104 161 139 232 146 ^
1189516 0 33 165 33 175 122 134 112 66 1 24 59 67 231 219 5 101 14 227 158 89 41 82
119071 61 224 13 23 102 213 3 186 143 223 71 56 174 165 28 136 22 139 157 116 137
1191247 43 233 155 217 64 91 203 155 227 153 50 193 87 116 122 108 236 7 16 137 242
1192245 133 160 251 125 238 163 139 141 77 37 77 42 50 177 37 5 127 153 45 143 228
1193121 156 169 120 219 241 51 166 232 192 150 188 53 55 227 148 82 92 150 172 3
1194196 232 182 61 229 63 123 97 179 194 39 172 250 157 132 187 95 38 199 94 70 93
1195118 37 231 240 94 60 4 159 47 58 110 125 243 213 239 136 43 228 105 106 69 125
119612 50 198 126 216 117 74 175 112 45 164 76 69 146 101 9 188 58 94 75 143 218 32
1197197 179 199 89 31 245 123 71 40 135 54 33 170 83 34 117 100 62 171 30 51 145
1198143 244 160 4 164 86 158 105 91 182 66 27 163 118 52 118 47 79 199 84 233 134
1199128 105 101 19 25 17 84 7 21 187 90 240 99 99 104 154 2 249 215 154 18 47 63
1200149 225 238 179 178 72 3 191 182 82 66 11 113 18 57 152 108 215 159 57 147 58
1201115 164 91 208 205 86 148 16 132 192 145 138 194 60 9 198 147 53 65 64 96 242
120214 222 119 241 46 116 132 197 184 238 189 26 200 62 176 80 151 140 109 183 24
120344 191 172 234 107 21 192 140 99 94 65 54 7 42 24 49 230 20 229 73 212 45 169
1204115 180 141 56 200 41 87 121 161 219 231 214 207 1 19 20 219 236 12 55 237 237
1205211 72 13 28 141 72 239 152 82 87 100 72 8 241 41 77 32 202 229 47 84 238 184
1206228 100 67 210 130 46 111 93 97 189 31 250 162 171 35 90 4 138 199 99 120 193
1207113 244 181 93 123 76 90 235 49 251 109 188 63 144 186 138 184 223 61 208 215
1208175 107 6 53 81 114 207 237 221 161 224 18 73 202 208 210 125 248 11 98 131 250
1209167 221 146 85 211 88 63 139 136 27 189 5 111 103 186 148 21 171 51 140 104 133
1210165 49 225 233 129 78 5 106 64 86 153 55 232 187 111 77 58 89 36 32 223 66 6 74
1211170 62 197 169 110 130 41 61 234 102 234 92 145 133 155 201 14 243 208 200 36
121248 21 166 1 40 109 178 147 ^
1213522 0 179 196 200 34 251 241 156 51 23 75 118 41 193 202 90 93 236 125 242 125
1214101 151 130 14 218 34 106 41 197 173 55 112 37 108 211 65 174 142 136 159 22 19
1215245 127 16 19 131 101 10 133 20 104 122 126 184 227 9 187 225 208 90 230 7 131
1216105 213 121 39 137 105 95 147 45 23 216 92 35 75 114 70 205 206 34 110 12 185
1217169 111 95 6 71 29 79 203 32 195 144 161 82 64 228 92 8 104 126 74 172 223 65
1218170 194 171 140 221 36 21 164 198 5 102 211 206 148 136 18 48 25 131 215 36 162
1219161 192 142 14 214 63 141 45 141 190 86 149 219 94 182 198 115 157 252 73 203
1220173 192 115 43 226 67 85 62 172 227 13 135 190 227 123 213 231 94 178 227 150
1221161 196 90 234 210 119 124 14 104 8 100 178 109 153 167 82 201 231 98 149 215
1222146 217 179 59 174 28 133 130 159 163 248 239 9 183 254 243 71 174 24 162 165
1223163 107 10 15 46 110 8 214 204 115 39 23 79 89 6 189 3 73 85 176 198 1 154 246
1224210 115 153 49 108 207 117 209 146 103 176 53 56 172 113 10 129 72 116 126 70
1225201 3 69 114 211 202 200 171 22 247 42 139 20 218 148 132 70 83 29 75 67 199 88
1226178 113 124 155 78 2 214 67 89 33 160 246 69 118 159 167 196 204 5 216 237 212
122734 247 38 191 55 222 92 149 78 120 211 61 226 177 140 103 39 27 50 54 25 245
1228241 42 25 249 212 30 21 50 195 254 239 123 186 28 106 182 171 167 192 1 17 220
1229181 229 65 29 220 177 26 77 33 164 194 57 137 215 150 165 167 78 230 11 102 93
1230232 177 22 129 68 168 138 74 145 20 77 174 138 188 171 26 218 7 158 76 201 117
123172 120 74 35 197 59 52 83 151 20 214 177 144 51 27 46 106 37 249 185 59 56 54
1232139 16 15 160 136 14 100 37 112 182 53 170 198 119 128 240 69 4 156 161 78 116
1233240 96 207 121 157 134 99 209 36 25 135 186 1 158 194 175 111 209 32 77 147 190
1234200 175 225 235 38 195 3 187 88 205 61 89 151 134 217 206 30 162 24 166 113 128
1235103 66 253 15 50 58 228 210 5 98 8 218 152 80 35 79 62 58 224 7 17 102 207 3
1236183 140 217 65 56 168 165 22 133 16 133 157 107 128 244 12 ^
1237517 1 218 150 217 59 81 203 140 217 148 45 193 82 116 122 93 236 7 11 127 242
1238235 123 155 246 125 238 148 134 126 72 27 247 67 27 50 162 22 247 127 153 45
1239133 213 121 151 159 105 209 231 36 166 217 177 140 188 53 50 222 148 242 67 87
1240145 157 250 181 227 177 51 224 63 108 97 174 194 24 162 250 152 132 182 80 33
1241189 84 60 83 118 37 216 235 94 60 251 154 47 48 110 120 238 208 229 121 43 218
124290 91 64 110 12 40 193 111 211 117 64 170 107 35 164 76 54 141 101 4 183 53 79
124360 143 213 32 187 169 194 84 31 245 123 66 25 135 39 23 160 78 29 102 95 62 166
124420 46 135 128 244 150 246 154 76 143 105 91 172 51 27 158 103 37 108 37 79 199
124584 228 119 128 95 91 4 15 17 69 2 11 187 80 230 94 89 89 149 244 239 210 144 18
124642 48 139 215 233 179 163 252 67 255 181 167 82 56 253 98 8 42 137 103 205 144
124747 137 43 110 149 76 203 200 86 143 16 127 182 140 128 184 55 251 183 142 43 50
124854 81 232 9 212 119 236 36 106 122 182 169 223 179 26 185 57 166 80 141 130 99
1249178 24 44 191 167 219 92 6 187 140 99 89 60 54 249 42 19 44 220 5 214 63 197 30
1250164 105 180 136 41 195 26 77 116 151 219 231 204 202 1 9 15 214 231 7 40 222
1251237 206 57 255 13 131 72 224 152 72 87 85 62 255 241 36 77 27 187 229 32 79 228
1252179 223 90 62 195 115 41 106 93 87 174 26 245 152 161 20 75 4 123 184 84 120
1253178 113 234 181 78 118 66 85 230 34 251 94 178 53 139 186 138 184 223 61 193
1254200 175 107 6 38 81 114 207 227 206 146 219 3 73 197 198 200 115 238 11 98 116
1255240 152 221 146 70 201 88 58 139 126 12 189 252 96 93 176 138 16 156 51 135 99
1256118 155 49 220 233 119 68 96 64 81 143 45 222 177 111 62 58 79 31 17 218 61 253
125769 170 47 197 169 105 120 41 46 224 92 234 92 145 128 155 186 256 243 208 200
125826 48 21 156 248 40 104 178 221 175 196 196 28 249 239 150 49 23 71 114 39 191
1259196 88 87 234 121 240 123 95 151 130 10 214 34 102 35 193 171 49 112 35 104 207
126059 170 136 130 159 16 19 241 125 213 ^
1261529 1 15 127 93 2 121 8 104 114 126 176 223 1 183 225 196 90 230 3 119 93 201
1262117 39 125 97 91 147 41 19 216 80 35 75 110 58 193 198 26 98 8 185 161 103 95
1263257 71 21 71 199 24 183 144 149 74 52 228 88 255 96 114 66 172 215 61 166 190
1264167 128 209 36 13 152 186 256 94 199 202 136 128 10 40 21 131 203 32 162 161
1265184 142 14 210 55 141 37 129 186 78 141 215 82 170 198 107 145 244 65 195 173
1266192 103 35 214 63 81 54 164 215 1 123 182 227 111 213 227 90 170 219 150 153
1267184 82 230 202 115 124 2 100 4 96 174 109 141 155 78 201 219 90 149 215 142 213
1268167 47 162 20 133 118 155 159 248 235 9 183 246 239 59 170 20 154 161 163 99 6
126911 38 106 8 206 204 111 35 15 67 89 253 181 250 69 85 164 194 256 154 242 210
1270115 145 45 108 203 113 209 138 103 176 45 48 160 105 10 121 68 108 122 66 193
1271258 69 106 207 202 196 171 18 239 38 127 12 214 144 128 70 83 29 71 67 191 84
1272166 109 120 151 70 2 202 55 81 33 160 246 61 106 147 159 188 192 1 204 229 204
127330 247 38 187 55 222 84 145 66 112 211 53 226 173 132 99 27 15 46 46 25 241 233
127434 17 241 212 30 9 42 195 254 239 119 174 28 94 178 159 167 188 252 5 212 169
1275221 65 17 220 169 22 69 25 160 186 57 137 207 142 153 163 78 222 3 98 89 232
1276177 22 129 68 168 126 74 133 16 65 174 130 184 163 18 218 254 158 72 197 109 60
1277108 62 23 185 59 52 71 139 20 214 165 132 39 23 46 106 29 249 173 51 52 50 135
127812 15 148 136 10 100 25 100 182 49 158 190 107 124 240 57 255 156 157 74 112
1279232 96 195 113 149 134 95 197 28 13 131 182 248 154 182 167 107 205 28 73 135
1280190 188 171 217 235 30 187 254 179 76 205 49 77 143 130 205 206 26 158 12 154
1281101 120 91 66 253 3 38 46 224 198 5 94 206 144 68 27 75 50 54 224 258 9 102 199
12823 179 136 209 57 56 160 165 14 129 8 125 157 95 116 240 36 212 148 217 57 77
1283203 134 213 146 43 193 80 116 122 87 236 7 9 123 242 231 119 153 244 125 238
1284142 132 120 70 23 245 63 21 50 156 16 243 127 153 45 129 207 121 149 155 99 205
1285227 30 166 211 57 ^
1286548 0 134 188 53 47 219 148 236 58 84 142 148 247 172 224 174 45 221 63 99 97
1287171 194 15 156 250 149 132 179 71 30 183 78 54 77 118 37 207 232 94 60 248 151
128847 42 110 117 235 205 223 112 43 212 81 82 61 101 12 34 190 102 208 117 58 167
1289104 29 164 76 45 138 101 1 180 50 70 51 143 210 32 181 163 191 81 31 245 123 63
129016 135 30 17 154 75 26 93 92 62 163 14 43 129 119 244 144 240 148 70 134 105 91
1291166 42 27 155 94 28 102 31 79 199 84 225 110 128 89 85 255 9 17 60 259 5 187 74
1292224 91 83 80 146 238 233 207 138 18 39 39 133 209 230 179 154 252 64 255 175
1293158 82 50 247 89 2 33 128 100 199 135 41 131 34 107 140 67 200 197 86 140 16
1294124 176 137 122 178 52 245 174 139 37 41 48 72 226 6 206 119 233 30 100 116 173
1295160 214 173 26 176 54 160 80 135 124 93 175 24 44 191 164 210 83 257 184 140 99
129686 57 54 243 42 16 41 214 256 205 57 188 21 161 99 180 133 32 192 17 71 113 145
1297219 231 198 199 1 3 12 211 228 4 31 213 237 203 48 249 4 125 72 215 152 66 87
129876 56 252 241 33 77 24 178 229 23 76 222 176 220 84 59 186 106 38 103 93 81 165
129923 242 146 155 11 66 4 114 175 75 120 169 113 228 181 69 115 60 82 227 25 251
130085 172 47 136 186 138 184 223 61 184 191 175 107 6 29 81 114 207 221 197 137
1301216 254 73 194 192 194 109 232 11 98 107 234 143 221 146 61 195 88 55 139 120 3
1302189 249 87 87 170 132 13 147 51 132 96 109 149 49 217 233 113 62 257 90 64 78
1303137 39 216 171 111 53 58 73 28 8 215 58 250 66 170 38 197 169 102 114 41 37 218
130486 234 92 145 125 155 177 250 243 208 200 20 48 21 150 245 40 101 178 218 169
1305196 190 19 246 236 141 46 23 65 108 36 188 187 85 78 231 115 237 120 86 151 130
13064 208 34 96 26 187 168 40 112 32 98 201 50 164 127 121 159 7 19 235 122 1 14
1307126 91 118 5 104 112 126 174 222 259 182 225 193 90 230 2 116 90 198 116 39 122
130895 90 147 40 18 216 77 35 75 109 55 190 196 24 95 7 185 159 101 95 256 71 19 69
1309198 22 180 144 146 72 49 228 87 253 94 111 64 172 213 60 165 189 166 125 206 36
131011 149 183 255 92 196 201 133 126 8 38 20 131 213 ^
1311547 0 29 162 161 178 142 14 207 49 141 31 120 183 72 135 212 73 161 198 101 136
1312238 59 189 173 192 94 29 205 60 78 48 158 206 254 114 176 227 102 213 224 87
1313164 213 150 147 175 76 227 196 112 124 255 97 1 93 171 109 132 146 75 201 210
131484 149 215 139 210 158 38 153 14 133 109 152 156 248 232 9 183 240 236 50 167
131517 148 158 163 93 3 8 32 103 8 200 204 108 32 9 58 89 247 175 244 66 85 155 191
1316256 154 239 210 115 139 42 108 200 110 209 132 103 176 39 42 151 99 10 115 65
1317102 119 63 187 258 69 100 204 202 193 171 15 233 35 118 6 211 141 125 70 83 29
131868 67 185 81 157 106 117 148 64 2 193 46 75 33 160 246 55 97 138 153 182 183
1319260 195 223 198 27 247 38 184 55 222 78 142 57 106 211 47 226 170 126 96 18 6
132043 40 25 238 227 28 11 235 212 30 36 195 254 239 116 165 28 85 175 150 167 185
1321249 258 206 160 215 65 8 220 163 19 63 19 157 180 57 137 201 136 144 160 78 216
1322259 95 86 232 177 22 129 68 168 117 74 124 13 56 174 124 181 157 12 218 248 158
132369 194 103 51 99 53 14 176 59 52 62 130 20 214 156 123 30 20 46 106 23 249 164
132445 49 47 132 9 15 139 136 7 100 16 91 182 46 149 184 98 121 240 48 252 156 154
132571 109 226 96 186 107 143 134 92 188 22 4 128 179 242 151 173 161 104 202 25 70
1326126 190 179 168 211 235 24 181 251 173 67 205 40 68 137 127 196 206 23 155 3
1327145 92 114 82 66 253 256 29 37 221 189 5 91 256 197 138 59 21 72 41 51 224 255
13283 102 193 3 176 133 203 51 56 154 165 8 126 2 119 157 86 107 237 33 203 145 217
132954 71 203 125 207 143 40 193 77 116 122 78 236 7 6 117 242 225 113 150 241 125
1330238 133 129 111 67 17 242 57 12 50 147 7 237 127 153 45 123 198 121 146 149 90
1331199 221 21 166 202 162 130 188 53 45 217 148 232 52 82 140 142 245 166 222 172
133241 219 63 93 97 169 194 9 152 250 147 132 177 65 28 179 74 50 73 118 37 201 230
133394 60 246 149 47 38 110 115 233 203 219 106 43 208 75 76 59 95 12 30 188 96 206
1334117 54 165 102 25 164 76 39 136 101 261 178 48 64 45 143 208 32 177 159 189 79
133531 245 123 61 10 135 24 13 150 73 24 87 90 62 161 10 41 125 209 ^
1336542 1 244 136 232 140 62 122 105 91 158 30 27 151 82 16 94 23 79 199 84 221 98
1337128 81 77 247 1 17 48 259 261 187 66 216 87 75 68 142 230 225 203 130 18 35 27
1338125 201 226 179 142 252 60 255 167 146 82 42 239 77 258 21 116 96 191 123 33
1339123 22 103 128 55 196 193 86 136 16 120 168 133 114 170 48 237 162 135 29 29 40
134060 218 2 198 119 229 22 92 108 161 148 202 165 26 164 50 152 80 127 116 85 171
134124 44 191 160 198 71 249 180 140 99 82 53 54 235 42 12 37 206 248 193 49 176 9
1342157 91 180 129 20 188 5 63 109 137 219 231 190 195 1 259 8 207 224 19 201 237
1343199 36 241 256 117 72 203 152 58 87 64 48 248 241 29 77 20 166 229 11 72 214
1344172 216 76 55 174 94 34 99 93 73 153 19 238 138 147 263 54 4 102 163 63 120 157
1345113 220 181 57 111 52 78 223 13 251 73 164 39 132 186 138 184 223 61 172 179
1346175 107 6 17 81 114 207 213 185 125 212 246 73 190 184 186 101 224 11 98 95 226
1347131 221 146 49 187 88 51 139 112 255 189 245 75 79 162 124 9 135 51 128 92 97
1348141 49 213 233 105 54 257 82 64 74 129 31 208 163 111 41 58 65 24 260 211 54
1349246 62 170 26 197 169 98 106 41 25 210 78 234 92 145 121 155 165 242 243 208
1350200 12 48 21 142 241 40 97 178 214 161 196 182 7 242 232 129 42 23 57 100 32
1351184 175 81 66 227 107 233 116 74 151 130 260 200 34 88 14 179 164 28 112 28 90
1352193 38 156 115 109 159 259 19 227 118 253 10 122 83 256 106 257 104 104 126 166
1353218 255 178 225 181 90 230 262 104 78 186 112 39 110 87 86 147 36 14 216 65 35
135475 105 43 178 188 16 83 3 185 151 93 95 252 71 11 61 194 14 168 144 134 64 37
1355228 83 245 86 99 56 172 205 56 161 185 162 113 194 36 3 137 171 251 84 184 197
1356121 118 30 16 131 188 27 162 161 174 142 14 205 45 141 27 114 181 68 131 210 67
1357155 198 97 130 234 55 185 173 192 88 25 199 58 76 44 154 200 250 108 172 227 96
1358213 222 85 160 209 150 143 169 72 225 192 110 124 251 95 263 91 169 109 126 140
135973 201 204 80 149 215 137 208 152 32 147 10 133 103 150 154 248 230 9 183 236
1360234 44 165 15 144 156 163 89 1 6 28 101 8 196 204 106 164 ^
1361567 0 1 46 89 239 167 236 62 85 143 187 256 154 235 210 115 131 38 108 196 106
1362209 124 103 176 31 34 139 91 10 107 61 94 115 59 179 258 69 92 200 202 189 171
136311 225 31 106 264 207 137 121 70 83 29 64 67 177 77 145 102 113 144 56 2 181 34
136467 33 160 246 47 85 126 145 174 171 260 183 215 190 23 247 38 180 55 222 70 138
136545 98 211 39 226 166 118 92 6 260 39 32 25 234 219 20 3 227 212 30 254 28 195
1366254 239 112 153 28 73 171 138 167 181 245 250 198 148 207 65 262 220 155 15 55
136711 153 172 57 137 193 128 132 156 78 208 255 91 82 232 177 22 129 68 168 105 74
1368112 9 44 174 116 177 149 4 218 240 158 65 190 95 39 87 41 2 164 59 52 50 118 20
1369214 144 111 18 16 46 106 15 249 152 37 45 43 128 5 15 127 136 3 100 4 79 182 42
1370137 176 86 117 240 36 248 156 150 67 105 218 96 174 99 135 134 88 176 14 258
1371124 175 234 147 161 153 100 198 21 66 114 190 167 164 203 235 16 173 247 165 55
1372205 28 56 129 123 184 206 19 151 257 133 80 106 70 66 253 248 17 25 217 177 5
137387 252 185 130 47 13 68 29 47 224 251 261 102 185 3 172 129 195 43 56 146 165
1374122 260 111 157 74 95 233 29 191 141 217 50 63 203 113 199 139 36 193 73 116
1375122 66 236 7 2 109 242 217 105 146 237 125 238 121 125 99 63 9 238 49 50 135
1376261 229 127 153 45 115 186 121 142 141 78 191 213 9 166 190 150 122 188 53 41
1377213 148 224 40 78 136 130 241 154 218 168 33 215 63 81 97 165 194 263 144 250
1378143 132 173 53 24 171 66 42 65 118 37 189 226 94 60 242 145 47 30 110 111 229
1379199 211 94 43 200 63 64 55 83 12 22 184 84 202 117 46 161 98 17 164 76 27 132
1380101 261 174 44 52 33 143 204 32 169 151 185 75 31 245 123 57 264 135 12 5 142
138169 20 75 86 62 157 2 37 117 101 244 132 228 136 58 116 105 91 154 24 27 149 76
138210 90 19 79 199 84 219 92 128 77 73 243 263 17 42 259 259 187 62 212 85 71 62
1383140 226 221 201 126 18 33 21 121 197 224 179 136 252 58 255 163 140 82 38 235
138471 256 15 110 94 187 117 29 119 16 101 122 49 194 191 86 134 16 118 164 131 110
1385166 46 233 156 133 25 23 36 54 214 194 119 227 18 88 104 155 142 196 161 26 158
138648 148 80 123 112 81 169 24 44 191 158 192 65 245 178 140 223 ^
1387551 1 78 49 54 227 42 8 33 198 240 181 41 164 265 153 83 180 125 8 184 261 55
1388105 129 219 231 182 191 1 255 4 203 220 264 7 189 237 195 24 233 248 109 72 191
1389152 50 87 52 40 244 241 25 77 16 154 229 267 68 206 168 212 68 51 162 82 30 95
139093 65 141 15 234 130 139 255 42 4 90 151 51 120 145 113 212 181 45 107 44 74
1391219 1 251 61 156 31 128 186 138 184 223 61 160 167 175 107 6 5 81 114 207 205
1392173 113 208 238 73 186 176 178 93 216 11 98 83 218 119 221 146 37 179 88 47 139
1393104 247 189 241 63 71 154 116 5 123 51 124 88 85 133 49 209 233 97 46 257 74 64
139470 121 23 200 155 111 29 58 57 20 252 207 50 242 58 170 14 197 169 94 98 41 13
1395202 70 234 92 145 117 155 153 234 243 208 200 4 48 21 134 237 40 93 178 210 153
1396196 174 263 238 228 117 38 23 49 92 28 180 163 77 54 223 99 229 112 62 151 130
1397256 192 34 80 2 171 160 16 112 24 82 185 26 148 103 97 159 251 19 219 114 245 6
1398118 75 252 94 249 104 96 126 158 214 251 174 225 169 90 230 262 92 66 174 108
139939 98 79 82 147 32 10 216 53 35 75 101 31 166 180 8 71 267 185 143 85 95 248 71
14003 53 190 6 156 144 122 56 25 228 79 237 78 87 48 172 197 52 157 181 158 101 182
140136 263 125 159 247 76 172 193 109 110 260 22 12 131 176 23 162 161 166 142 14
1402201 37 141 19 102 177 60 123 206 55 143 198 89 118 226 47 177 173 192 76 17 187
140354 72 36 146 188 242 96 164 227 84 213 218 81 152 201 150 135 157 64 221 184
1404106 124 243 91 263 87 165 109 114 128 69 201 192 72 149 215 133 204 140 20 135
14052 133 91 146 150 248 226 9 183 228 230 32 161 11 136 152 163 81 265 2 20 97 8
1406188 204 102 26 265 40 89 235 163 232 60 85 137 185 256 154 233 210 115 127 36
1407108 194 104 209 120 103 176 27 30 133 87 10 103 59 90 113 57 175 258 69 88 198
1408202 187 171 9 221 29 100 262 205 135 119 70 83 29 62 67 173 75 139 100 111 142
140952 2 175 28 63 33 160 246 43 79 120 141 170 165 260 177 211 186 21 247 38 178
141055 222 66 136 39 94 211 35 226 164 114 90 256 37 28 25 232 215 16 267 223 212
141130 250 24 195 254 239 110 147 28 67 169 132 167 179 243 246 194 142 203 65 263 ^
1412578 0 220 147 11 47 3 149 164 57 137 185 120 120 152 78 200 251 87 78 232 177
141322 129 68 168 93 74 100 5 32 174 108 173 141 266 218 232 158 61 186 87 27 75 29
1414260 152 59 52 38 106 20 214 132 99 6 12 46 106 7 249 140 29 41 39 124 1 15 115
1415136 269 100 262 67 182 38 125 168 74 113 240 24 244 156 146 63 101 210 96 162
141691 127 134 84 164 6 250 120 171 226 143 149 145 96 194 17 62 102 190 155 160
1417195 235 8 165 243 157 43 205 16 44 121 119 172 206 15 147 249 121 68 98 58 66
1418253 240 5 13 213 165 5 83 248 173 122 35 5 64 17 43 224 247 257 102 177 3 168
1419125 187 35 56 138 165 262 118 256 103 157 62 83 229 25 179 137 217 46 55 203
1420101 191 135 32 193 69 116 122 54 236 7 268 101 242 209 97 142 233 125 238 109
1421121 87 59 1 234 41 258 50 123 253 221 127 153 45 107 174 121 138 133 66 183 205
1422267 166 178 138 114 188 53 37 209 148 216 28 74 132 118 237 142 214 164 25 211
142363 69 97 161 194 255 136 250 139 132 169 41 20 163 58 34 57 118 37 177 222 94
142460 238 141 47 22 110 107 225 195 203 82 43 192 51 52 51 71 12 14 180 72 198 117
142538 157 94 9 164 76 15 128 101 261 170 40 40 21 143 200 32 161 143 181 71 31 245
1426123 53 256 135 267 134 65 16 63 82 62 153 264 33 109 89 244 124 220 128 50 104
1427105 91 146 12 27 145 64 268 82 11 79 199 84 215 80 128 69 65 235 259 17 30 259
1428255 187 54 204 81 63 50 136 218 213 197 118 18 29 9 113 189 220 179 124 252 54
1429255 155 128 82 30 227 59 252 3 98 90 179 105 21 111 4 97 110 37 190 187 86 130
143016 114 156 127 102 158 42 225 144 129 17 11 28 42 206 266 186 119 223 10 80 96
1431143 130 184 153 26 146 44 140 80 115 104 73 165 24 44 191 154 180 53 237 174
1432140 99 76 47 54 223 42 6 31 194 236 175 37 158 261 151 79 180 123 2 182 257 51
1433103 125 219 231 178 189 1 253 2 201 218 264 1 183 237 193 18 229 244 105 72 185
1434152 46 87 46 36 242 241 23 77 14 148 229 263 66 202 166 210 64 49 156 76 28 93
143593 61 135 13 232 126 135 251 36 4 84 145 45 120 139 113 208 181 39 105 40 72
1436217 265 251 55 152 27 126 186 138 184 223 61 154 161 175 107 6 269 81 114 207
1437201 167 107 206 234 73 184 172 174 89 212 11 98 77 214 113 221 146 31 175 88 45
1438139 100 243 189 213 ^
1439578 1 51 63 146 108 1 111 51 120 84 73 125 49 205 233 89 38 257 66 64 66 113 15
1440192 147 111 17 58 49 16 244 203 46 238 54 170 2 197 169 90 90 41 1 194 62 234
144192 145 113 155 141 226 243 208 200 268 48 21 126 233 40 89 178 206 145 196 166
1442255 234 224 105 34 23 41 84 24 176 151 73 42 219 91 225 108 50 151 130 252 184
144334 72 262 163 156 4 112 20 74 177 14 140 91 85 159 243 19 211 110 237 2 114 67
1444248 82 241 104 88 126 150 210 247 170 225 157 90 230 262 80 54 162 104 39 86 71
144578 147 28 6 216 41 35 75 97 19 154 172 59 267 185 135 77 95 244 71 267 45 186
1446270 144 144 110 48 13 228 75 229 70 75 40 172 189 48 153 177 154 89 170 36 259
1447113 147 243 68 160 189 97 102 256 14 8 131 164 19 162 161 158 142 14 197 29 141
144811 90 173 52 115 202 43 131 198 81 106 218 39 169 173 192 64 9 175 50 68 28 138
1449176 234 84 156 227 72 213 214 77 144 193 150 127 145 56 217 176 102 124 235 87
1450263 83 161 109 102 116 65 201 180 64 149 215 129 200 128 8 123 266 133 79 142
1451146 248 222 9 183 220 226 20 157 7 128 148 163 73 265 270 12 93 8 180 204 98 22
1452261 28 89 227 155 224 56 85 125 181 256 154 229 210 115 119 32 108 190 100 209
1453112 103 176 19 22 121 79 10 95 55 82 109 53 167 258 69 80 194 202 183 171 5 213
145425 88 258 201 131 115 70 83 29 58 67 165 71 127 96 107 138 44 2 163 16 55 33
1455160 246 35 67 108 133 162 153 260 165 203 178 17 247 38 174 55 222 58 132 27 86
1456211 27 226 160 106 86 260 248 33 20 25 228 207 8 263 215 212 30 242 16 195 254
1457239 106 135 28 55 165 120 167 175 239 238 186 130 195 65 250 220 143 9 43 271
1458147 160 57 137 181 116 114 150 78 196 249 85 76 232 177 22 129 68 168 87 74 94
14593 26 174 104 171 137 264 218 228 158 59 184 83 21 69 23 256 146 59 52 32 100 20
1460214 126 93 10 46 106 3 249 134 25 39 37 122 271 15 109 136 269 100 258 61 182
146136 119 164 68 111 240 18 242 156 144 61 99 206 96 156 87 123 134 82 158 2 246
1462118 169 222 141 143 141 94 192 15 60 96 190 149 158 191 235 4 161 241 153 37
1463205 10 38 117 117 166 206 13 145 245 115 62 94 52 66 253 236 271 7 211 159 5 81
1464246 167 118 29 1 62 11 41 224 245 255 102 173 3 166 123 183 31 56 134 165 260
1465116 254 81 ^
1466583 1 157 50 71 225 21 167 133 217 42 47 203 89 183 131 28 193 65 116 122 42
1467236 7 268 93 242 201 89 138 229 125 238 97 117 75 55 267 230 33 250 50 111 245
1468213 127 153 45 99 162 121 134 125 54 175 197 259 166 166 126 106 188 53 33 205
1469148 208 16 70 128 106 233 130 210 160 17 207 63 57 97 157 194 247 128 250 135
1470132 165 29 16 155 50 26 49 118 37 165 218 94 60 234 137 47 14 110 103 221 191
1471195 70 43 184 39 40 47 59 12 6 176 60 194 117 30 153 90 1 164 76 3 124 101 261
1472166 36 28 9 143 196 32 153 135 177 67 31 245 123 49 248 135 262 263 126 61 12
147351 78 62 149 260 29 101 77 244 116 212 120 42 92 105 91 138 27 141 52 260 74 3
147479 199 84 211 68 128 61 57 227 255 17 18 259 251 187 46 196 77 55 38 132 210
1475205 193 110 18 25 271 105 181 216 179 112 252 50 255 147 116 82 22 219 47 248
1476265 86 86 171 93 13 103 266 93 98 25 186 183 86 126 16 110 148 123 94 150 38
1477217 132 125 9 273 20 30 198 266 178 119 219 2 72 88 131 118 172 145 26 134 40
1478132 80 107 96 65 161 24 44 191 150 168 41 229 170 140 99 72 43 54 215 42 2 27
1479186 228 163 29 146 253 147 71 180 119 264 178 249 43 99 117 219 231 170 185 1
1480249 272 197 214 264 263 171 237 189 6 221 236 97 72 173 152 38 87 34 28 238 241
148119 77 10 136 229 255 62 194 162 206 56 45 144 64 24 89 93 53 123 9 228 118 127
1482243 24 4 72 133 33 120 127 113 200 181 27 101 32 68 213 257 251 43 144 19 122
1483186 138 184 223 61 142 149 175 107 6 261 81 114 207 193 155 95 202 226 73 180
1484164 166 81 204 11 98 65 206 101 221 146 19 167 88 41 139 92 235 189 235 45 59
1485142 104 273 105 51 118 82 67 121 49 203 233 85 34 257 62 64 64 109 11 188 143
1486111 11 58 45 14 240 201 44 236 52 170 270 197 169 88 86 41 269 190 58 234 92
1487145 111 155 135 222 243 208 200 266 48 21 122 231 40 87 178 204 141 196 162 251
1488232 222 99 32 23 37 80 22 174 145 71 36 217 87 223 106 44 151 130 250 180 34 68
1489258 159 154 272 112 18 70 173 8 136 85 79 159 239 19 207 108 233 112 63 246 76
1490237 104 84 126 146 208 245 168 225 151 90 230 262 74 48 156 102 39 80 67 76 147
149126 4 216 35 35 75 95 13 148 168 270 53 267 185 131 73 95 242 71 265 41 184 268
1492138 144 104 44 7 228 73 225 66 69 36 272 ^
1493588 0 181 44 149 173 150 77 158 36 255 101 135 239 60 148 185 85 94 252 6 4 131
1494152 15 162 161 150 142 14 193 21 141 3 78 169 44 107 198 31 119 198 73 94 210
149531 161 173 192 52 1 163 46 64 20 130 164 226 72 148 227 60 213 210 73 136 185
1496150 119 133 48 213 168 98 124 227 83 263 79 157 109 90 104 61 201 168 56 149
1497215 125 196 116 272 111 262 133 67 138 142 248 218 9 183 212 222 8 153 3 120
1498144 163 65 265 270 4 89 8 172 204 94 18 257 16 89 219 147 216 52 85 113 177 256
1499154 225 210 115 111 28 108 186 96 209 104 103 176 11 14 109 71 10 87 51 74 105
150049 159 258 69 72 190 202 179 171 1 205 21 76 254 197 127 111 70 83 29 54 67 157
150167 115 92 103 134 36 2 151 4 47 33 160 246 27 55 96 125 154 141 260 153 195 170
150213 247 38 170 55 222 50 128 15 78 211 19 226 156 98 82 252 240 29 12 25 224 199
1503259 207 212 30 234 8 195 254 239 102 123 28 43 161 108 167 171 235 230 178 118
1504187 65 242 220 135 5 35 267 143 152 57 137 173 108 102 146 78 188 245 81 72 232
1505177 22 129 68 168 75 74 82 275 14 174 96 167 129 260 218 220 158 55 180 75 9 57
150611 248 134 59 52 20 88 20 214 114 81 264 6 46 106 271 249 122 17 35 33 118 271
150715 97 136 269 100 250 49 182 32 107 156 56 107 240 6 238 156 140 57 95 198 96
1508144 79 115 134 78 146 270 238 114 165 214 137 131 133 90 188 11 56 84 190 137
1509154 183 235 272 153 237 145 25 205 274 26 109 113 154 206 9 141 237 103 50 86
151040 66 253 228 263 271 207 147 5 77 242 155 110 17 269 58 275 37 224 241 251 102
1511165 3 162 119 175 23 56 126 165 256 112 250 91 157 44 65 223 19 161 131 217 40
151243 203 83 179 129 26 193 63 116 122 36 236 7 268 89 242 197 85 136 227 125 238
151391 115 69 53 265 228 29 246 50 105 241 209 127 153 45 95 156 121 132 121 48 171
1514193 255 166 160 120 102 188 53 31 203 148 204 10 68 126 100 231 124 208 158 13
1515205 63 51 97 155 194 243 124 250 133 132 163 23 14 151 46 22 45 118 37 159 216
151694 60 232 135 47 10 110 101 219 189 191 64 43 180 33 34 45 53 12 2 174 54 192
1517117 26 151 88 273 164 76 273 122 101 261 164 34 22 3 143 194 32 149 131 175 65
151831 245 123 47 244 135 258 261 122 59 10 45 76 62 147 258 27 97 71 244 112 208
1519116 38 86 105 91 134 270 27 139 46 256 70 275 79 199 160 ^
1520594 0 207 56 128 53 49 219 251 17 6 259 247 187 38 188 73 47 26 128 202 197 189
1521102 18 21 263 97 173 212 179 100 252 46 255 139 104 82 14 211 35 244 257 74 82
1522163 81 5 95 258 89 86 13 182 179 86 122 16 106 140 119 86 142 34 209 120 121 1
1523265 12 18 190 266 170 119 215 272 64 80 119 106 160 137 26 122 36 124 80 99 88
152457 157 24 44 191 146 156 29 221 166 140 99 68 39 54 207 42 276 23 178 220 151
152521 134 245 143 63 180 115 256 174 241 35 95 109 219 231 162 181 1 245 272 193
1526210 264 255 159 237 185 272 213 228 89 72 161 152 30 87 22 20 234 241 15 77 6
1527124 229 247 58 186 158 202 48 41 132 52 20 85 93 45 111 5 224 110 119 235 12 4
152860 121 21 120 115 113 192 181 15 97 24 64 209 249 251 31 136 11 118 186 138 184
1529223 61 130 137 175 107 6 253 81 114 207 185 143 83 198 218 73 176 156 158 73
1530196 11 98 53 198 89 221 146 7 159 88 37 139 84 227 189 231 33 51 134 96 273 93
153151 114 78 55 113 49 199 233 77 26 257 54 64 60 101 3 180 135 111 277 58 37 10
1532232 197 40 232 48 170 262 197 169 84 78 41 261 182 50 234 92 145 107 155 123
1533214 243 208 200 262 48 21 114 227 40 83 178 200 133 196 154 243 228 218 87 28
153423 29 72 18 170 133 67 24 213 79 219 102 32 151 130 246 172 34 60 250 151 150
1535264 112 14 62 165 274 128 73 67 159 231 19 199 104 225 274 108 55 242 64 229
1536104 76 126 138 204 241 164 225 139 90 230 262 62 36 144 98 39 68 59 72 147 22
1537216 23 35 75 91 1 136 160 266 41 267 185 123 65 95 238 71 261 33 180 264 126
1538144 92 36 273 228 69 217 58 57 28 172 177 42 147 171 148 71 152 36 253 95 129
1539237 56 142 183 79 90 250 2 2 131 146 13 162 161 146 142 14 191 17 141 277 72
1540167 40 103 196 25 113 198 69 88 206 27 157 173 192 46 275 157 44 62 16 126 158
1541222 66 144 227 54 213 208 71 132 181 150 115 127 44 211 164 96 124 223 81 263
154277 155 109 84 98 59 201 162 52 149 215 123 194 110 268 105 260 133 61 136 140
1543248 216 9 183 208 220 2 151 1 116 142 163 61 265 270 87 8 168 204 92 16 255 10
154489 215 143 212 50 85 107 175 256 154 223 210 115 107 26 108 184 94 209 100 103
1545176 7 10 103 67 10 83 49 70 103 47 155 258 69 68 188 202 177 171 277 201 19 70
1546252 195 125 109 70 83 29 52 67 153 65 109 90 101 132 32 2 145 276 43 33 160 246
154723 259 ^
1548600 1 87 119 148 132 260 144 189 164 10 247 38 167 55 222 44 125 6 72 211 13
1549226 153 92 79 246 234 26 6 25 221 193 273 256 201 212 30 228 2 195 254 239 99
1550114 28 34 158 99 167 168 232 224 172 109 181 65 236 220 129 2 29 264 140 146 57
1551137 167 102 93 143 78 182 242 78 69 232 177 22 129 68 168 66 74 73 275 5 174 90
1552164 123 257 218 214 158 52 177 69 48 2 242 125 59 52 11 79 20 214 105 72 258 3
155346 106 268 249 113 11 32 30 115 271 15 88 136 269 100 244 40 182 29 98 150 47
1554104 240 276 235 156 137 54 92 192 96 135 73 109 134 75 137 267 232 111 162 208
1555134 122 127 87 185 8 53 75 190 128 151 177 235 269 147 234 139 16 205 268 17
1556103 110 145 206 6 138 231 94 41 80 31 66 253 222 257 265 204 138 5 74 239 146
1557104 8 266 55 269 34 224 238 248 102 159 3 159 116 169 17 56 120 165 253 109 247
155885 157 35 56 220 16 152 128 217 37 37 203 74 173 126 23 193 60 116 122 27 236 7
1559268 83 242 191 79 133 224 125 238 82 112 60 50 262 225 23 240 50 96 235 203 127
1560153 45 89 147 121 129 115 39 165 187 249 166 151 111 96 188 53 28 200 148 198 1
156165 123 91 228 115 205 155 7 202 63 42 97 152 194 237 118 250 130 132 160 14 11
1562145 40 16 39 118 37 150 213 94 60 229 132 47 4 110 98 216 186 185 55 43 174 24
156325 42 44 12 275 171 45 189 117 20 148 85 270 164 76 267 119 101 261 161 31 13
1564273 143 191 32 143 125 172 62 31 245 123 44 238 135 252 258 116 56 7 36 73 62
1565144 255 24 91 62 244 106 202 110 32 77 105 91 128 264 27 136 37 250 64 272 79
1566199 84 206 53 128 51 47 217 250 17 3 259 246 187 36 186 72 45 23 127 200 195
1567188 100 18 20 261 95 171 211 179 97 252 45 255 137 101 82 12 209 32 243 255 71
156881 161 78 3 93 256 88 83 10 181 178 86 121 16 105 138 118 84 140 33 207 117 120
1569278 263 10 15 188 266 168 119 214 271 62 78 116 103 157 135 26 119 35 122 80 97
157086 55 156 24 44 191 145 153 26 219 165 140 99 67 38 54 205 42 276 22 176 218
1571148 19 131 243 142 61 180 114 254 173 239 33 94 107 219 231 160 180 1 244 272
1572192 209 264 253 156 237 184 270 211 226 87 72 158 152 28 87 19 18 233 241 14 77
15735 121 229 245 57 184 157 201 46 40 129 49 19 84 93 43 108 4 223 108 117 233 9 4
157457 118 18 120 112 113 190 181 12 96 22 63 208 247 251 28 134 9 117 186 138 184
1575223 61 127 216 ^
1576590 1 175 107 6 247 81 114 207 179 134 74 195 212 73 173 150 152 67 190 11 98
157744 192 80 221 146 279 153 88 34 139 78 221 189 228 24 45 128 90 273 84 51 111
157875 46 107 49 196 233 71 20 257 48 64 57 95 278 174 129 111 271 58 31 7 226 194
157937 229 45 170 256 197 169 81 72 41 255 176 44 234 92 145 104 155 114 208 243
1580208 200 259 48 21 108 224 40 80 178 197 127 196 148 237 225 215 78 25 23 23 66
158115 167 124 64 15 210 73 216 99 23 151 130 243 166 34 54 244 145 147 258 112 11
158256 159 268 122 64 58 159 225 19 193 101 219 274 105 49 239 55 223 104 70 126
1583132 201 238 161 225 130 90 230 262 53 27 135 95 39 59 53 69 147 19 278 216 14
158435 75 88 273 127 154 263 32 267 185 117 59 95 235 71 258 27 177 261 117 144 83
158530 267 228 66 211 52 48 22 172 171 39 144 168 145 62 143 36 250 86 120 234 50
1586133 180 70 84 247 277 280 131 137 10 162 161 140 142 14 188 11 141 274 63 164
158734 97 193 16 104 198 63 79 200 21 151 173 192 37 272 148 41 59 10 120 149 216
158857 138 227 45 213 205 68 126 175 150 109 118 38 208 158 93 124 217 78 263 74
1589152 109 75 89 56 201 153 46 149 215 120 191 101 262 96 257 133 52 133 137 248
1590213 9 183 202 217 274 148 279 110 139 163 55 265 270 275 84 8 162 204 89 13 252
15911 89 209 137 206 47 85 98 172 256 154 220 210 115 101 23 108 181 91 209 94 103
1592176 1 4 94 61 10 77 46 64 100 44 149 258 69 62 185 202 174 171 277 195 16 61
1593249 192 122 106 70 83 29 49 67 147 62 100 87 98 129 26 2 136 270 37 33 160 246
159417 40 81 115 144 126 260 138 185 160 8 247 38 165 55 222 40 123 68 211 9 226
1595151 88 77 242 230 24 2 25 219 189 271 254 197 212 30 224 279 195 254 239 97 108
159628 28 156 93 167 166 230 220 168 103 177 65 232 220 125 25 262 138 142 57 137
1597163 98 87 141 78 178 240 76 67 232 177 22 129 68 168 60 74 67 275 280 174 86
1598162 119 255 218 210 158 50 175 65 275 42 277 238 119 59 52 5 73 20 214 99 66
1599254 1 46 106 266 249 107 7 30 28 113 271 15 82 136 269 100 240 34 182 27 92 146
160041 102 240 272 233 156 135 52 90 188 96 129 69 105 134 73 131 265 228 109 160
1601204 132 116 123 85 183 6 51 69 190 122 149 173 235 267 143 232 135 10 205 264
160211 99 108 139 206 4 136 227 88 35 76 25 66 253 218 253 261 202 132 5 72 237 140
1603203 ^
1604620 0 279 262 51 261 30 224 234 244 102 151 3 155 112 161 9 56 112 165 249 105
1605243 77 157 23 44 216 12 140 124 217 33 29 203 62 165 122 19 193 56 116 122 15
1606236 7 268 75 242 183 71 129 220 125 238 70 108 48 46 258 221 15 232 50 84 227
1607195 127 153 45 81 135 121 125 107 27 157 179 241 166 139 99 88 188 53 24 196
1608148 190 272 61 119 79 224 103 201 151 282 198 63 30 97 148 194 229 110 250 126
1609132 156 2 7 137 32 8 31 118 37 138 209 94 60 225 128 47 279 110 94 212 182 177
161043 43 166 12 13 38 32 12 271 167 33 185 117 12 144 81 266 164 76 259 115 101
1611261 157 27 1 265 143 187 32 135 117 168 58 31 245 123 40 230 135 244 254 108 52
16123 24 69 62 140 251 20 83 50 244 98 194 102 24 65 105 91 120 256 27 132 25 242
161356 268 79 199 84 202 41 128 43 39 209 246 17 274 259 242 187 28 178 68 37 11
1614123 192 187 184 92 18 16 253 87 163 207 179 85 252 41 255 129 89 82 4 201 20
1615239 247 59 77 153 66 278 85 248 84 71 281 177 174 86 117 16 101 130 114 76 132
161629 199 105 116 274 255 2 3 180 266 160 119 210 267 54 70 104 91 145 127 26 107
161731 114 80 89 78 47 152 24 44 191 141 141 14 211 161 140 99 63 34 54 197 42 276
161818 168 210 136 11 119 235 138 53 180 110 246 169 231 25 90 99 219 231 152 176 1
1619240 272 188 205 264 245 144 237 180 262 203 218 79 72 146 152 20 87 7 10 229
1620241 10 77 1 109 229 237 53 176 153 197 38 36 117 37 15 80 93 35 96 219 100 109
1621225 280 4 45 106 6 120 100 113 182 181 92 14 59 204 239 251 16 126 1 113 186
1622138 184 223 61 115 122 175 107 6 243 81 114 207 175 128 68 193 208 73 171 146
1623148 63 186 11 98 38 188 74 221 146 275 149 88 32 139 74 217 189 226 18 41 124
162486 273 78 51 109 73 40 103 49 194 233 67 16 257 44 64 55 91 276 170 125 111 267
162558 27 5 222 192 35 227 43 170 252 197 169 79 68 41 251 172 40 234 92 145 102
1626155 108 204 243 208 200 257 48 21 104 222 40 78 178 195 123 196 144 233 223 213
162772 23 23 19 62 13 165 118 62 9 208 69 214 97 17 151 130 241 162 34 50 240 141
1628145 254 112 9 52 155 264 118 58 52 159 221 19 189 99 215 274 103 45 237 49 219
1629104 66 126 128 199 236 159 225 124 90 230 262 47 21 129 93 39 53 49 67 147 17
1630278 216 8 35 75 86 269 121 150 261 26 267 185 113 55 95 233 71 256 23 175 259
1631111 144 77 26 263 228 64 207 48 42 18 172 167 37 142 166 143 56 137 36 248 80
1632114 232 46 127 257 ^
1633605 1 58 76 243 273 280 131 125 6 162 161 132 142 14 184 3 141 270 51 160 26 89
1634189 4 92 198 55 67 192 13 143 173 192 25 268 136 37 55 2 112 137 208 45 130 227
163533 213 201 64 118 167 150 101 106 30 204 150 89 124 209 74 263 70 148 109 63 77
163652 201 141 38 149 215 116 187 89 254 84 253 133 40 129 133 248 209 9 183 194
1637213 266 144 279 102 135 163 47 265 270 271 80 8 154 204 85 9 248 274 89 201 129
1638198 43 85 86 168 256 154 216 210 115 93 19 108 177 87 209 86 103 176 278 281 82
163953 10 69 42 56 96 40 141 258 69 54 181 202 170 171 277 187 12 49 245 188 118
1640102 70 83 29 45 67 139 58 88 83 94 125 18 2 124 262 29 33 160 246 9 28 69 107
1641136 114 260 126 177 152 4 247 38 161 55 222 32 119 273 60 211 1 226 147 80 73
1642234 222 20 279 25 215 181 267 250 189 212 30 216 275 195 254 239 93 96 28 16
1643152 81 167 162 226 212 160 91 169 65 224 220 117 281 17 258 134 134 57 137 155
164490 75 137 78 170 236 72 63 232 177 22 129 68 168 48 74 55 275 272 174 78 158
1645111 251 218 202 158 46 171 57 267 30 269 230 107 59 52 278 61 20 214 87 54 246
1646282 46 106 262 249 95 284 26 24 109 271 15 70 136 269 100 232 22 182 23 80 138
164729 98 240 264 229 156 131 48 86 180 96 117 61 97 134 69 119 261 220 105 156 196
1648128 104 115 81 179 2 47 57 190 110 145 165 235 263 135 228 127 283 205 256 284
164991 104 127 206 132 219 76 23 68 13 66 253 210 245 253 198 120 5 68 233 128 92
1650275 260 49 257 28 224 232 242 102 147 3 153 110 157 5 56 108 165 247 103 241 73
1651157 17 38 214 10 134 122 217 31 25 203 56 161 120 17 193 54 116 122 9 236 7 268
165271 242 179 67 127 218 125 238 64 106 42 44 256 219 11 228 50 78 223 191 127 153
165345 77 129 121 123 103 21 153 175 237 166 133 93 84 188 53 22 194 148 186 268 59
1654117 73 222 97 199 149 280 196 63 24 97 146 194 225 106 250 124 132 154 281 5
1655133 28 4 27 118 37 132 207 94 60 223 126 47 277 110 92 210 180 173 37 43 162 6
16567 36 26 12 269 165 27 183 117 8 142 79 264 164 76 255 113 101 261 155 25 280
1657261 143 185 32 131 113 166 56 31 245 123 38 226 135 240 252 104 50 1 18 67 62
1658138 249 18 79 44 244 94 190 98 20 59 105 91 116 252 27 130 19 238 52 266 79 199
165984 200 35 128 39 35 205 244 17 270 259 240 187 24 174 66 33 5 121 188 183 182
166088 18 14 249 83 159 205 179 79 252 186 ^
1661615 0 255 121 77 82 283 193 8 235 239 47 73 145 54 274 77 240 80 59 273 173 170
166286 113 16 97 122 110 68 124 25 191 93 112 270 247 281 278 172 266 152 119 206
1663263 46 62 92 79 133 119 26 95 27 106 80 81 70 39 148 24 44 191 137 129 2 203
1664157 140 99 59 30 54 189 42 276 14 160 202 124 3 107 227 134 45 180 106 238 165
1665223 17 86 91 219 231 144 172 1 236 272 184 201 264 237 132 237 176 254 195 210
166671 72 134 152 12 87 282 2 225 241 6 77 284 97 229 229 49 168 149 193 30 32 105
166725 11 76 93 27 84 283 215 92 101 217 272 4 33 94 281 120 88 113 174 181 275 88
16686 55 200 231 251 4 118 280 109 186 138 184 223 61 103 110 175 107 6 235 81 114
1669207 167 116 56 189 200 73 167 138 140 55 178 11 98 26 180 62 221 146 267 141 88
167028 139 66 209 189 222 6 33 116 78 273 66 51 105 69 28 95 49 190 233 59 8 257 36
167164 51 83 272 162 117 111 259 58 19 1 214 188 31 223 39 170 244 197 169 75 60 41
1672243 164 32 234 92 145 98 155 96 196 243 208 200 253 48 21 96 218 40 74 178 191
1673115 196 136 225 219 209 60 19 23 11 54 9 161 106 58 284 204 61 210 93 5 151 130
1674237 154 34 42 232 133 141 246 112 5 44 147 256 110 46 40 159 213 19 181 95 207
1675274 99 37 233 37 211 104 58 126 120 195 232 155 225 112 90 230 262 35 9 117 89
167639 41 41 63 147 13 278 216 283 35 75 82 261 109 142 257 14 267 185 105 47 95
1677229 71 252 15 171 255 99 144 65 18 255 228 60 199 40 30 10 172 159 33 138 162
1678139 44 125 36 244 68 102 228 38 115 174 52 72 241 271 280 131 119 4 162 161 128
1679142 14 182 286 141 268 45 158 22 85 187 285 86 198 51 61 188 9 139 173 192 19
1680266 130 35 53 285 108 131 204 39 126 227 27 213 199 62 114 163 150 97 100 26
1681202 146 87 124 205 72 263 68 146 109 57 71 50 201 135 34 149 215 114 185 83 250
168278 251 133 34 127 131 248 207 9 183 190 211 262 142 279 98 133 163 43 265 270
1683269 78 8 150 204 83 7 246 270 89 197 125 194 41 85 80 166 256 154 214 210 115
168489 17 108 175 85 209 82 103 176 276 279 76 49 10 65 40 52 94 38 137 258 69 50
1685179 202 168 171 277 183 10 43 243 186 116 100 70 83 29 43 67 135 56 82 81 92
1686123 14 2 118 258 25 33 160 246 5 22 63 103 132 108 260 120 173 148 2 247 38 159
168755 222 28 117 269 56 211 284 226 145 76 71 230 218 18 277 25 213 177 265 248
1688185 212 30 212 273 195 254 239 91 90 28 10 150 75 167 160 224 175 ^
1689613 0 152 79 161 65 216 220 109 281 9 254 130 126 57 137 147 82 63 133 78 162
1690232 68 59 232 177 22 129 68 168 36 74 43 275 264 174 70 154 103 247 218 194 158
169142 167 49 259 18 261 222 95 59 52 270 49 20 214 75 42 238 282 46 106 258 249 83
1692280 22 20 105 271 15 58 136 269 100 224 10 182 19 68 130 17 94 240 256 225 156
1693127 44 82 172 96 105 53 89 134 65 107 257 212 101 152 188 124 92 107 77 175 287
169443 45 190 98 141 157 235 259 127 224 119 275 205 248 276 83 100 115 206 285 128
1695211 64 11 60 1 66 253 202 237 245 194 108 5 64 229 116 84 267 256 45 249 24 224
1696228 238 102 139 3 149 106 149 286 56 100 165 243 99 237 65 157 5 26 210 6 122
1697118 217 27 17 203 44 153 116 13 193 50 116 122 286 236 7 268 63 242 171 59 123
1698214 125 238 52 102 30 40 252 215 3 220 50 66 215 183 127 153 45 69 117 121 119
169995 9 145 167 229 166 121 81 76 188 53 18 190 148 178 260 55 113 61 218 85 195
1700145 276 192 63 12 97 142 194 217 98 250 120 132 150 273 1 125 20 285 19 118 37
1701120 203 94 60 219 122 47 273 110 88 206 176 165 25 43 154 283 284 32 14 12 265
1702161 15 179 117 138 75 260 164 76 247 109 101 261 151 21 272 253 143 181 32 123
1703105 162 52 31 245 123 34 218 135 232 248 96 46 286 6 63 62 134 245 14 71 32 244
170486 182 90 12 47 105 91 108 244 27 126 7 230 44 262 79 199 84 196 23 128 31 27
1705197 240 17 262 259 236 187 16 166 62 25 282 117 180 175 178 80 18 10 241 75 151
1706201 179 67 252 35 255 117 71 82 281 189 2 233 235 41 71 141 48 272 73 236 78 53
1707269 171 168 86 111 16 95 118 108 64 120 23 187 87 110 268 243 279 274 168 266
1708148 119 204 261 42 58 86 73 127 115 26 89 25 102 80 77 66 35 146 24 44 191 135
1709123 285 199 155 140 99 57 28 54 185 42 276 12 156 198 118 288 101 223 132 41
1710180 104 234 163 219 13 84 87 219 231 140 170 1 234 272 182 199 264 233 126 237
1711174 250 191 206 67 72 128 152 8 87 278 287 223 241 4 77 284 91 229 225 47 164
1712147 191 26 30 99 19 9 74 93 23 78 283 213 88 97 213 268 4 27 88 277 120 82 113
1713170 181 271 86 2 53 198 227 251 287 114 278 107 186 138 184 223 61 97 104 175
1714107 6 231 81 114 207 163 110 50 187 196 73 165 134 136 51 174 11 98 20 176 56
1715221 146 263 137 88 26 139 62 205 189 220 29 112 74 273 60 51 103 67 22 91 49
1716188 233 55 4 257 32 64 49 79 270 158 113 111 255 58 15 288 210 213 ^
1717624 1 28 220 36 170 238 197 169 72 54 41 237 158 26 234 92 145 95 155 87 190
1718243 208 200 250 48 21 90 215 40 71 178 188 109 196 130 219 216 206 51 16 23 5
171948 6 158 97 55 278 201 55 207 90 286 151 130 234 148 34 36 226 127 138 240 112
17202 38 141 250 104 37 31 159 207 19 175 92 201 274 96 31 230 28 205 104 52 126
1721114 192 229 152 225 103 90 230 262 26 108 86 39 32 35 60 147 10 278 216 277 35
172275 79 255 100 136 254 5 267 185 99 41 95 226 71 249 9 168 252 90 144 56 12 249
1723228 57 193 34 21 4 172 153 30 135 159 136 35 116 36 241 59 93 225 32 106 171 43
172466 238 268 280 131 110 1 162 161 122 142 14 179 283 141 265 36 155 16 79 184
1725279 77 198 45 52 182 3 133 173 192 10 263 121 32 50 282 102 122 198 30 120 227
172618 213 196 59 108 157 150 91 91 20 199 140 84 124 199 69 263 65 143 109 48 62
172747 201 126 28 149 215 111 182 74 244 69 248 133 25 124 128 248 204 9 183 184
1728208 256 139 279 92 130 163 37 265 270 266 75 8 144 204 80 4 243 264 89 191 119
1729188 38 85 71 163 256 154 211 210 115 83 14 108 172 82 209 76 103 176 273 276 67
173043 10 59 37 46 91 35 131 258 69 44 176 202 165 171 277 177 7 34 240 183 113 97
173170 83 29 40 67 129 53 73 78 89 120 8 2 109 252 19 33 160 246 289 13 54 97 126
173299 260 111 167 142 289 247 38 156 55 222 22 114 263 50 211 281 226 142 70 68
1733224 212 15 274 25 210 171 262 245 179 212 30 206 270 195 254 239 88 81 28 1 147
173466 167 157 221 202 150 76 159 65 214 220 107 281 7 253 129 124 57 137 145 80 60
1735132 78 160 231 67 58 232 177 22 129 68 168 33 74 40 275 262 174 68 153 101 246
1736218 192 158 41 166 47 257 15 259 220 92 59 52 268 46 20 214 72 39 236 282 46
1737106 257 249 80 279 21 19 104 271 15 55 136 269 100 222 7 182 18 65 128 14 93
1738240 254 224 156 126 43 81 170 96 102 51 87 134 64 104 256 210 100 151 186 123
173989 105 76 174 287 42 42 190 95 140 155 235 258 125 223 117 273 205 246 274 81
174099 112 206 285 127 209 61 8 58 288 66 253 200 235 243 193 105 5 63 228 113 82
1741265 255 44 247 23 224 227 237 102 137 3 148 105 147 285 56 98 165 242 98 236 63
1742157 2 23 209 5 119 117 217 26 15 203 41 151 115 12 193 49 116 122 284 236 7 268
174361 242 169 57 122 213 125 238 49 101 27 39 251 214 1 218 50 63 213 181 127 153
174445 67 114 121 118 93 6 143 165 227 166 118 78 74 188 53 17 189 148 176 258 54
1745112 58 217 82 194 144 275 191 141 ^
1746628 1 3 97 139 194 211 92 250 117 132 147 267 290 119 14 282 13 118 37 111 200
174794 60 216 119 47 270 110 85 203 173 159 16 43 148 277 278 29 5 12 262 158 6 176
1748117 286 135 72 257 164 76 241 106 101 261 148 18 266 247 143 178 32 117 99 159
174949 31 245 123 31 212 135 226 245 90 43 286 289 60 62 131 242 11 65 23 244 80
1750176 84 6 38 105 91 102 238 27 123 290 224 38 259 79 199 84 193 14 128 25 21 191
1751237 17 256 259 233 187 10 160 59 19 276 114 174 169 175 74 18 7 235 69 145 198
1752179 58 252 32 255 111 62 82 278 183 285 230 229 32 68 135 39 269 67 230 75 44
1753263 168 165 86 108 16 92 112 105 58 114 20 181 78 107 265 237 276 268 162 266
1754142 119 201 258 36 52 77 64 118 109 26 80 22 96 80 71 60 29 143 24 44 191 132
1755114 279 193 152 140 99 54 25 54 179 42 276 9 150 192 109 285 92 217 129 35 180
1756101 228 160 213 7 81 81 219 231 134 167 1 231 272 179 196 264 227 117 237 171
1757244 185 200 61 72 119 152 2 87 272 284 220 241 1 77 284 82 229 219 44 158 144
1758188 20 27 90 10 6 71 93 17 69 283 210 82 91 207 262 4 18 79 271 120 73 113 164
1759181 265 83 288 50 195 221 251 281 108 275 104 186 138 184 223 61 88 95 175 107
17606 225 81 114 207 157 101 41 184 190 73 162 128 130 45 168 11 98 11 170 47 221
1761146 257 131 88 23 139 56 199 189 217 283 23 106 68 273 51 51 100 64 13 85 49
1762185 233 49 290 257 26 64 46 73 267 152 107 111 249 58 9 288 204 183 26 218 34
1763170 234 197 169 70 50 41 233 154 22 234 92 145 93 155 81 186 243 208 200 248 48
176421 86 213 40 69 178 186 105 196 126 215 214 204 45 14 23 1 44 4 156 91 53 274
1765199 51 205 88 282 151 130 232 144 34 32 222 123 136 236 112 34 137 246 100 31
176625 159 203 19 171 90 197 274 94 27 228 22 201 104 48 126 110 190 227 150 225 97
176790 230 262 20 286 102 84 39 26 31 58 147 8 278 216 273 35 75 77 251 94 132 252
1768291 267 185 95 37 95 224 71 247 5 166 250 84 144 50 8 245 228 55 189 30 15 172
1769149 28 133 157 134 29 110 36 239 53 87 223 28 100 169 37 62 236 266 280 131 104
1770291 162 161 118 142 14 177 281 141 263 30 153 12 75 182 275 71 198 41 46 178
1771291 129 173 192 4 261 115 30 48 280 98 116 194 24 116 227 12 213 194 57 104 153
1772150 87 85 16 197 136 82 124 195 67 263 63 141 109 42 56 45 201 120 24 149 215
1773109 180 68 240 63 246 133 19 122 126 248 202 9 183 180 206 252 137 279 88 128
1774163 33 265 270 264 73 8 140 204 78 2 241 76 ^
1775622 0 89 183 111 180 34 85 59 159 256 154 207 210 115 75 10 108 168 78 209 68
1776103 176 269 272 55 35 10 51 33 38 87 31 123 258 69 36 172 202 161 171 277 169 3
177722 236 179 109 93 70 83 29 36 67 121 49 61 74 85 116 2 97 244 11 33 160 246 285
17781 42 89 118 87 260 99 159 134 289 247 38 152 55 222 14 110 255 42 211 277 226
1779138 62 64 216 204 11 270 25 206 163 258 241 171 212 30 198 266 195 254 239 84
178069 28 283 143 54 167 153 217 194 142 64 151 65 206 220 99 281 293 249 125 116
178157 137 137 72 48 128 78 152 227 63 54 232 177 22 129 68 168 21 74 28 275 254
1782174 60 149 93 242 218 184 158 37 162 39 249 3 251 212 80 59 52 260 34 20 214 60
178327 228 282 46 106 253 249 68 275 17 15 100 271 15 43 136 269 100 214 289 182 14
178453 120 2 89 240 246 220 156 122 39 77 162 96 90 43 79 134 60 92 252 202 96 147
1785178 119 77 97 72 170 287 38 30 190 83 136 147 235 254 117 219 109 265 205 238
1786266 73 95 100 206 285 123 201 49 290 50 280 66 253 192 227 235 189 93 5 59 224
1787101 74 257 251 40 239 19 224 223 233 102 129 3 144 101 139 281 56 90 165 238 94
1788232 55 157 284 11 205 1 107 113 217 22 7 203 29 143 111 8 193 45 116 122 276
1789236 7 268 53 242 161 49 118 209 125 238 37 97 15 35 247 210 287 210 50 51 205
1790173 127 153 45 59 102 121 114 85 288 135 157 219 166 106 66 66 188 53 13 185
1791148 168 250 50 108 46 213 70 190 140 271 187 63 291 97 137 194 207 88 250 115
1792132 145 263 290 115 10 280 9 118 37 105 198 94 60 214 117 47 268 110 83 201 171
1793155 10 43 144 273 274 27 293 12 260 156 174 117 284 133 70 255 164 76 237 104
1794101 261 146 16 262 243 143 176 32 113 95 157 47 31 245 123 29 208 135 222 243
179586 41 286 285 58 62 129 240 9 61 17 244 76 172 80 2 32 105 91 98 234 27 121 286
1796220 34 257 79 199 84 191 8 128 21 17 187 235 17 252 259 231 187 6 156 57 15 272
1797112 170 165 173 70 18 5 231 65 141 196 179 52 252 30 255 107 56 82 276 179 281
1798228 225 26 66 131 33 267 63 226 73 38 259 166 163 86 106 16 90 108 103 54 110
179918 177 72 105 263 233 274 264 158 266 138 119 199 256 32 48 71 58 112 105 26 74
180020 92 80 67 56 25 141 24 44 191 130 108 275 189 150 140 99 52 23 54 175 42 276
18017 146 188 103 283 86 213 127 31 180 99 224 158 209 3 79 77 219 231 130 165 1
1802229 272 177 194 264 223 111 237 169 240 181 196 57 72 113 152 292 87 268 282
1803218 241 293 77 284 76 229 80 ^
1804635 1 40 150 140 184 12 23 78 294 2 67 93 9 57 283 206 74 83 199 254 4 6 67 263
1805120 61 113 156 181 257 79 284 46 191 213 251 273 100 271 100 186 138 184 223 61
180676 83 175 107 6 217 81 114 207 149 89 29 180 182 73 158 120 122 37 160 11 98
1807295 162 35 221 146 249 123 88 19 139 48 191 189 213 275 15 98 60 273 39 51 96
180860 1 77 49 181 233 41 286 257 18 64 42 65 263 144 99 111 241 58 1 288 196 179
180922 214 30 170 226 197 169 66 42 41 225 146 14 234 92 145 89 155 69 178 243 208
1810200 244 48 21 78 209 40 65 178 182 97 196 118 207 210 200 33 10 23 289 36 152
181179 49 266 195 43 201 84 274 151 130 228 136 34 24 214 115 132 228 112 292 26
1812129 238 92 19 13 159 195 19 163 86 189 274 90 19 224 10 193 104 40 126 102 186
1813223 146 225 85 90 230 262 8 278 90 80 39 14 23 54 147 4 278 216 265 35 75 73
1814243 82 124 248 283 267 185 87 29 95 220 71 243 293 162 246 72 144 38 237 228 51
1815181 22 3 288 172 141 24 129 153 130 17 98 36 235 41 75 219 20 88 165 25 54 232
1816262 280 131 92 291 162 161 110 142 14 173 277 141 259 18 149 4 67 178 267 59
1817198 33 34 170 287 121 173 192 288 257 103 26 44 276 90 104 186 12 108 227 213
1818190 53 96 145 150 79 73 8 193 128 78 124 187 63 263 59 137 109 30 44 41 201 108
181916 149 215 105 176 56 232 51 242 133 7 118 122 248 198 9 183 172 202 244 133
1820279 80 124 163 25 265 270 260 69 8 132 204 74 294 237 252 89 179 107 176 32 85
182153 157 256 154 205 210 115 71 8 108 166 76 209 64 103 176 267 270 49 31 10 47
182231 34 85 29 119 258 69 32 170 202 159 171 277 165 1 16 234 177 107 91 70 83 29
182334 67 117 47 55 72 83 114 292 2 91 240 7 33 160 246 283 291 36 85 114 81 260 93
1824155 130 289 247 38 150 55 222 10 108 251 38 211 275 226 136 58 62 212 200 9 268
182525 204 159 256 239 167 212 30 194 264 195 254 239 82 63 28 279 141 48 167 151
1826215 190 138 58 147 65 202 220 95 281 291 247 123 112 57 137 133 68 42 126 78
1827148 225 61 52 232 177 22 129 68 168 15 74 22 275 250 174 56 147 89 240 218 180
1828158 35 160 35 245 293 247 208 74 59 52 256 28 20 214 54 21 224 282 46 106 251
1829249 62 273 15 13 98 271 15 37 136 269 100 210 285 182 12 47 116 292 87 240 242
1830218 156 120 37 75 158 96 84 39 75 134 58 86 250 198 94 145 174 117 71 93 70 168
1831287 36 24 190 77 134 143 235 252 113 217 105 261 205 234 262 69 93 94 206 285
1832121 197 43 286 46 276 66 253 188 223 231 187 87 5 57 222 95 285 ^
1833636 0 251 248 37 233 16 224 220 230 102 123 3 141 98 133 278 56 84 165 235 91
1834229 49 157 278 2 202 295 98 110 217 19 1 203 20 137 108 5 193 42 116 122 270
1835236 7 268 47 242 155 43 115 206 125 238 28 94 6 32 244 207 284 204 50 42 199
1836167 127 153 45 53 93 121 111 79 282 129 151 213 166 97 57 60 188 53 10 182 148
1837162 244 47 105 37 210 61 187 137 268 184 63 285 97 134 194 201 82 250 112 132
1838142 257 290 109 4 277 3 118 37 96 195 94 60 211 114 47 265 110 80 198 168 149 1
183943 138 267 268 24 287 12 257 153 288 171 117 281 130 67 252 164 76 231 101 101
1840261 143 13 256 237 143 173 32 107 89 154 44 31 245 123 26 202 135 216 240 80 38
1841286 279 55 62 126 237 6 55 8 244 70 166 74 293 23 105 91 92 228 27 118 280 214
184228 254 79 199 84 188 296 128 15 11 181 232 17 246 259 228 187 150 54 9 266 109
1843164 159 170 64 18 2 225 59 135 193 179 43 252 27 255 101 47 82 273 173 275 225
1844219 17 63 125 24 264 57 220 70 29 253 163 160 86 103 16 87 102 100 48 104 15
1845171 63 102 260 227 271 258 152 266 132 119 196 253 26 42 62 49 103 99 26 65 17
184686 80 61 50 19 138 24 44 191 127 99 269 183 147 140 99 49 20 54 169 42 276 4
1847140 182 94 280 77 207 124 25 180 96 218 155 203 294 76 71 219 231 124 162 1 226
1848272 174 191 264 217 102 237 166 234 175 190 51 72 104 152 289 87 262 279 215
1849241 293 77 284 67 229 209 39 148 139 183 10 22 75 292 1 66 93 7 54 283 205 72
185081 197 252 4 3 64 261 120 58 113 154 181 255 78 283 45 190 211 251 271 98 270
185199 186 138 184 223 61 73 80 175 107 6 215 81 114 207 147 86 26 179 180 73 157
1852118 120 35 158 11 98 293 160 32 221 146 247 121 88 18 139 46 189 189 212 273 13
185396 58 273 36 51 95 59 295 75 49 180 233 39 285 257 16 64 41 63 262 142 97 111
1854239 58 296 288 194 178 21 213 29 170 224 197 169 65 40 41 223 144 12 234 92 145
185588 155 66 176 243 208 200 243 48 21 76 208 40 64 178 181 95 196 116 205 209 199
185630 9 23 288 34 296 151 76 48 264 194 41 200 83 272 151 130 227 134 34 22 212
1857113 131 226 112 292 24 127 236 90 16 10 159 193 19 161 85 187 274 89 17 223 7
1858191 104 38 126 100 185 222 145 225 82 90 230 262 5 276 87 79 39 11 21 53 147 3
1859278 216 263 35 75 72 241 79 122 247 281 267 185 85 27 95 219 71 242 292 161 245
186069 144 35 295 235 228 50 179 20 287 172 139 23 128 152 129 14 95 36 234 38 72
1861218 18 85 164 22 52 231 261 280 131 89 291 162 161 108 142 14 172 276 91 ^
1862635 1 256 9 146 297 61 175 261 50 198 27 25 164 284 115 173 192 282 254 94 23
186341 273 84 95 180 3 102 227 290 213 187 50 90 139 150 73 64 2 190 122 75 124 181
186460 263 56 134 109 21 35 38 201 99 10 149 215 102 173 47 226 42 239 133 297 115
1865119 248 195 9 183 166 199 238 130 279 74 121 163 19 265 270 257 66 8 126 204 71
1866294 234 246 89 173 101 170 29 85 44 154 256 154 202 210 115 65 5 108 163 73 209
186758 103 176 264 267 40 25 10 41 28 28 82 26 113 258 69 26 167 202 156 171 277
1868159 297 7 231 174 104 88 70 83 29 31 67 111 44 46 69 80 111 289 2 82 234 1 33
1869160 246 280 285 27 79 108 72 260 84 149 124 289 247 38 147 55 222 4 105 245 32
1870211 272 226 133 52 59 206 194 6 265 25 201 153 253 236 161 212 30 188 261 195
1871254 239 79 54 28 273 138 39 167 148 212 184 132 49 141 65 196 220 89 281 288
1872244 120 106 57 137 127 62 33 123 78 142 222 58 49 232 177 22 129 68 168 6 74 13
1873275 244 174 50 144 83 237 218 174 158 32 157 29 239 287 241 202 65 59 52 250 19
187420 214 45 12 218 282 46 106 248 249 53 270 12 10 95 271 15 28 136 269 100 204
1875279 182 9 38 110 286 84 240 236 215 156 117 34 72 152 96 75 33 69 134 55 77 247
1876192 91 142 168 114 62 87 67 165 287 33 15 190 68 131 137 235 249 107 214 99 255
1877205 228 256 63 90 85 206 285 118 191 34 280 40 270 66 253 182 217 225 184 78 5
187854 219 86 64 247 246 35 229 14 224 218 228 102 119 3 139 96 129 276 56 80 165
1879233 89 227 45 157 274 295 200 295 92 108 217 17 296 203 14 133 106 3 193 40 116
1880122 266 236 7 268 43 242 151 39 113 204 125 238 22 92 30 242 205 282 200 50 36
1881195 163 127 153 45 49 87 121 109 75 278 125 147 209 166 91 51 56 188 53 8 180
1882148 158 240 45 103 31 208 55 185 135 266 182 63 281 97 132 194 197 78 250 110
1883132 140 253 290 105 275 298 118 37 90 193 94 60 209 112 47 263 110 78 196 166
1884145 294 43 134 263 264 22 283 12 255 151 284 169 117 279 128 65 250 164 76 227
188599 101 261 141 11 252 233 143 171 32 103 85 152 42 31 245 123 24 198 135 212
1886238 76 36 286 275 53 62 124 235 4 51 2 244 66 162 70 291 17 105 91 88 224 27
1887116 276 210 24 252 79 199 84 186 292 128 11 7 177 230 17 242 259 226 187 295
1888146 52 5 262 107 160 155 168 60 18 221 55 131 191 179 37 252 25 255 97 41 82
1889271 169 271 223 215 11 61 121 18 262 53 216 68 23 249 161 158 86 101 16 85 98
189098 44 100 13 167 57 100 258 223 269 254 148 266 128 119 194 251 22 38 56 43 275
1891^
1892642 0 91 26 53 13 78 80 53 42 11 134 24 44 191 123 87 261 175 143 140 99 45 16
189354 161 42 276 132 174 82 276 65 199 120 17 180 92 210 151 195 290 72 63 219 231
1894116 158 1 222 272 170 187 264 209 90 237 162 226 167 182 43 72 92 152 285 87
1895254 275 211 241 293 77 284 55 229 201 35 140 135 179 2 18 63 284 298 62 93 300
189642 283 201 64 73 189 244 4 292 52 253 120 46 113 146 181 247 74 279 41 186 203
1897251 263 90 266 95 186 138 184 223 61 61 68 175 107 6 207 81 114 207 139 74 14
1898175 172 73 153 110 112 27 150 11 98 285 152 20 221 146 239 113 88 14 139 38 181
1899189 208 265 5 88 50 273 24 51 91 55 287 67 49 176 233 31 281 257 8 64 37 55 258
1900134 89 111 231 58 292 288 186 174 17 209 25 170 216 197 169 61 32 41 215 136 4
1901234 92 145 84 155 54 168 243 208 200 239 48 21 68 204 40 60 178 177 87 196 108
1902197 205 195 18 5 23 284 26 296 147 64 44 256 190 33 196 79 264 151 130 223 126
190334 14 204 105 127 218 112 292 16 119 228 82 4 299 159 185 19 153 81 179 274 85
19049 219 296 183 104 30 126 92 181 218 141 225 70 90 230 262 294 268 75 75 39 300
190513 49 147 300 278 216 255 35 75 68 233 67 114 243 273 267 185 77 19 95 215 71
1906238 288 157 241 57 144 23 291 227 228 46 171 12 289 283 172 131 19 124 148 125
19072 83 36 230 26 60 214 10 73 160 10 44 227 257 280 131 77 291 162 161 100 142 14
1908168 272 141 254 3 144 295 57 173 257 44 198 23 19 160 282 111 173 192 278 252
190988 21 39 271 80 89 176 298 98 227 286 213 185 48 86 135 150 69 58 299 188 118
191073 124 177 58 263 54 132 109 15 29 36 201 93 6 149 215 100 171 41 222 36 237
1911133 293 113 117 248 193 9 183 162 197 234 128 279 70 119 163 15 265 270 255 64
19128 122 204 69 294 232 242 89 169 97 166 27 85 38 152 256 154 200 210 115 61 3
1913108 161 71 209 54 103 176 262 265 34 21 10 37 26 24 80 24 109 258 69 22 165 202
1914154 171 277 155 297 1 229 172 102 86 70 83 29 29 67 107 42 40 67 78 109 287 2
191576 230 298 33 160 246 278 281 21 75 104 66 260 78 145 120 289 247 38 145 55 222
1916103 241 28 211 270 226 131 48 57 202 190 4 263 25 199 149 251 234 157 212 30
1917184 259 195 254 239 77 48 28 269 136 33 167 146 210 180 128 43 137 65 192 220
191885 281 286 242 118 102 57 137 123 58 27 121 78 138 220 56 47 232 177 22 129 68
1919168 74 7 275 240 174 46 142 79 235 218 170 158 30 155 25 235 283 237 198 59 59
192052 246 13 20 214 39 6 214 282 46 106 246 249 47 268 10 8 93 271 15 22 136 269
1921100 200 275 42 ^
1922644 0 6 29 104 280 81 240 230 212 156 114 31 69 146 96 66 27 63 134 52 68 244
1923186 88 139 162 111 53 81 64 162 287 30 6 190 59 128 131 235 246 101 211 93 249
1924205 222 250 57 87 76 206 285 115 185 25 274 34 264 66 253 176 211 219 181 69 5
192551 216 77 58 241 243 32 223 11 224 215 225 102 113 3 136 93 123 273 56 74 165
1926230 86 224 39 157 268 289 197 295 83 105 217 14 293 203 5 127 103 193 37 116
1927122 260 236 7 268 37 242 145 33 110 201 125 238 13 89 293 27 239 202 279 194 50
192827 189 157 127 153 45 43 78 121 106 69 272 119 141 203 166 82 42 50 188 53 5
1929177 148 152 234 42 100 22 205 46 182 132 263 179 63 275 97 129 194 191 72 250
1930107 132 137 247 290 99 296 272 295 118 37 81 190 94 60 206 109 47 260 110 75
1931193 163 139 288 43 128 257 258 19 277 12 252 148 278 166 117 276 125 62 247 164
193276 221 96 101 261 138 8 246 227 143 168 32 97 79 149 39 31 245 123 21 192 135
1933206 235 70 33 286 269 50 62 121 232 1 45 295 244 60 156 64 288 8 105 91 82 218
193427 113 270 204 18 249 79 199 84 183 286 128 5 1 171 227 17 236 259 223 187 292
1935140 49 301 256 104 154 149 165 54 18 299 215 49 125 188 179 28 252 22 255 91 32
193682 268 163 265 220 209 2 58 115 9 259 47 210 65 14 243 158 155 86 98 16 82 92
193795 38 94 10 161 48 97 255 217 266 248 142 266 122 119 191 248 16 32 47 34 88 89
193826 50 12 76 80 51 40 9 133 24 44 191 122 84 259 173 142 140 99 44 15 54 159 42
1939276 301 130 172 79 275 62 197 119 15 180 91 208 150 193 289 71 61 219 231 114
1940157 1 221 272 169 186 264 207 87 237 161 224 165 180 41 72 89 152 284 87 252
1941274 210 241 293 77 284 52 229 199 34 138 134 178 17 60 282 298 61 93 299 39 283
1942200 62 71 187 242 4 290 49 251 120 43 113 144 181 245 73 278 40 185 201 251 261
194388 265 94 186 138 184 223 61 58 65 175 107 6 205 81 114 207 137 71 11 174 170
194473 152 108 110 25 148 11 98 283 150 17 221 146 237 111 88 13 139 36 179 189 207
1945263 3 86 48 273 21 51 90 54 285 65 49 175 233 29 280 257 6 64 36 53 257 132 87
1946111 229 58 291 288 184 173 16 208 24 170 214 197 169 60 30 41 213 134 2 234 92
1947145 83 155 51 166 243 208 200 238 48 21 66 203 40 59 178 176 85 196 106 195 204
1948194 15 4 23 283 24 296 146 61 43 254 189 31 195 78 262 151 130 222 124 34 12
1949202 103 126 216 112 292 14 117 226 80 1 297 159 183 19 151 80 177 274 84 7 218
1950294 181 104 28 126 90 180 217 140 225 67 90 230 262 292 266 72 74 39 298 11 48
1951147 300 278 216 253 265 ^
1952638 1 75 65 227 58 108 240 267 267 185 71 13 95 212 71 235 285 154 238 48 144
195314 288 221 228 43 165 6 283 280 172 125 16 121 145 122 297 74 36 227 17 51 211
19544 64 157 1 38 224 254 280 131 68 291 162 161 94 142 14 165 269 141 251 298 141
1955292 51 170 251 35 198 17 10 154 279 105 173 192 272 249 79 18 36 268 74 80 170
1956292 92 227 280 213 182 45 80 129 150 63 49 296 185 112 70 124 171 55 263 51 129
1957109 6 20 33 201 84 149 215 97 168 32 216 27 234 133 287 110 114 248 190 9 183
1958156 194 228 125 279 64 116 163 9 265 270 252 61 8 116 204 66 294 229 236 89 163
195991 160 24 85 29 149 256 154 197 210 115 55 108 158 68 209 48 103 176 259 262 25
196015 10 31 23 18 77 21 103 258 69 16 162 202 151 171 277 149 297 296 226 169 99
196183 70 83 29 26 67 101 39 31 64 75 106 284 2 67 224 295 33 160 246 275 275 12 69
196298 57 260 69 139 114 289 247 38 142 55 222 298 100 235 22 211 267 226 128 42 54
1963196 184 1 260 25 196 143 248 231 151 212 30 178 256 195 254 239 74 39 28 263
1964133 24 167 143 207 174 122 34 131 65 186 220 79 281 283 239 115 96 57 137 117
196552 18 118 78 132 217 53 44 232 177 22 129 68 168 295 74 302 275 234 174 40 139
196673 232 218 164 158 27 152 19 229 277 231 192 50 59 52 240 4 20 214 30 301 208
1967282 46 106 243 249 38 265 7 5 90 271 15 13 136 269 100 194 269 182 4 23 100 276
196879 240 226 210 156 112 29 67 142 96 60 23 59 134 50 62 242 182 86 137 158 109
196947 77 62 160 287 28 190 53 126 127 235 244 97 209 89 245 205 218 246 53 85 70
1970206 285 113 181 19 270 30 260 66 253 172 207 215 179 63 5 49 214 71 54 237 241
197130 219 9 224 213 223 102 109 3 134 91 119 271 56 70 165 228 84 222 35 157 264
1972285 195 295 77 103 217 12 291 203 303 123 101 302 193 35 116 122 256 236 7 268
197333 242 141 29 108 199 125 238 7 87 289 25 237 200 277 190 50 21 185 153 127 153
197445 39 72 121 104 65 268 115 137 199 166 76 36 46 188 53 3 175 148 148 230 40 98
197516 203 40 180 130 261 177 63 271 97 127 194 187 68 250 105 132 135 243 290 95
1976294 270 293 118 37 75 188 94 60 204 107 47 258 110 73 191 161 135 284 43 124
1977253 254 17 273 12 250 146 274 164 117 274 123 60 245 164 76 217 94 101 261 136
19786 242 223 143 166 32 93 75 147 37 31 245 123 19 188 135 202 233 66 31 286 265
197948 62 119 230 303 41 291 244 56 152 60 286 2 105 91 78 214 27 111 266 200 14
1980247 79 199 84 181 282 128 1 301 167 225 17 232 259 221 187 290 136 47 299 252
1981102 150 145 163 157 ^
1982653 0 18 299 207 41 117 184 179 16 252 18 255 83 20 82 264 155 257 216 201 296
198354 107 303 255 39 202 61 2 235 154 151 86 94 16 78 84 91 30 86 6 153 36 93 251
1984209 262 240 134 266 114 119 187 244 8 24 35 22 76 81 26 38 8 68 80 43 32 1 129
198524 44 191 118 72 251 165 138 140 99 40 11 54 151 42 276 301 122 164 67 271 50
1986189 115 7 180 87 200 146 185 285 67 53 219 231 106 153 1 217 272 165 182 264
1987199 75 237 157 216 157 172 33 72 77 152 280 87 244 270 206 241 293 77 284 40
1988229 191 30 130 130 174 298 13 48 274 298 57 93 295 27 283 196 54 63 179 234 4
1989282 37 243 120 31 113 136 181 237 69 274 36 181 193 251 253 80 261 90 186 138
1990184 223 61 46 53 175 107 6 197 81 114 207 129 59 305 170 162 73 148 100 102 17
1991140 11 98 275 142 5 221 146 229 103 88 9 139 28 171 189 203 255 301 78 40 273 9
199251 86 50 277 57 49 171 233 21 276 257 304 64 32 45 253 124 79 111 221 58 287
1993288 176 169 12 204 20 170 206 197 169 56 22 41 205 126 300 234 92 145 79 155 39
1994158 243 208 200 234 48 21 58 199 40 55 178 172 77 196 98 187 200 190 3 23 279
199516 296 142 49 39 246 185 23 191 74 254 151 130 218 116 34 4 194 95 122 208 112
1996292 6 109 218 72 295 289 159 175 19 143 76 169 274 80 305 214 286 173 104 20
1997126 82 176 213 136 225 55 90 230 262 284 258 60 70 39 290 3 44 147 300 278 216
1998245 35 75 63 223 52 104 238 263 267 185 67 9 95 210 71 233 283 152 236 42 144 8
1999286 217 228 41 161 2 279 278 172 121 14 119 143 120 293 68 36 225 11 45 209 58
2000155 301 34 222 252 280 131 62 291 162 161 90 142 14 163 267 141 249 294 139 290
200147 168 247 29 198 13 4 150 277 101 173 192 268 247 73 16 34 266 70 74 166 288
200288 227 276 213 180 43 76 125 150 59 43 294 183 108 68 124 167 53 263 49 127 109
200314 31 201 78 302 149 215 95 166 26 212 21 232 133 283 108 112 248 188 9 183 152
2004192 224 123 279 60 114 163 5 265 270 250 59 8 112 204 64 294 227 232 89 159 87
2005156 22 85 23 147 256 154 195 210 115 51 304 108 156 66 209 44 103 176 257 260
200619 11 10 27 21 14 75 19 99 258 69 12 160 202 149 171 277 145 297 292 224 167 97
200781 70 83 29 24 67 97 37 25 62 73 104 282 2 61 220 293 33 160 246 273 271 6 65
200894 51 260 63 135 110 289 247 38 140 55 222 296 98 231 18 211 265 226 126 38 52
2009192 180 305 258 25 194 139 246 229 147 212 30 174 254 195 254 239 72 33 28 259
2010131 18 167 141 205 170 118 28 127 65 182 220 75 281 281 237 113 92 57 137 113
201148 12 116 78 128 215 51 42 232 177 22 129 68 168 291 161 ^
2012653 0 296 275 228 174 34 136 67 229 218 158 158 24 149 13 223 271 225 186 41 59
201352 234 302 20 214 21 295 202 282 46 106 240 249 29 262 4 2 87 271 15 4 136 269
2014100 188 263 182 1 14 94 270 76 240 220 207 156 109 26 64 136 96 51 17 53 134 47
201553 239 176 83 134 152 106 38 71 59 157 287 25 298 190 44 123 121 235 241 91 206
201683 239 205 212 240 47 82 61 206 285 110 175 10 264 24 254 66 253 166 201 209
2017176 54 5 46 211 62 48 231 238 27 213 6 224 210 220 102 103 3 131 88 113 268 56
201864 165 225 81 219 29 157 258 279 192 295 68 100 217 9 288 203 297 117 98 302
2019193 32 116 122 250 236 7 268 27 242 135 23 105 196 125 238 305 84 283 22 234
2020197 274 184 50 12 179 147 127 153 45 33 63 121 101 59 262 109 131 193 166 67 27
202140 188 53 172 148 142 224 37 95 7 200 31 177 127 258 174 63 265 97 124 194 181
202262 250 102 132 132 237 290 89 291 267 290 118 37 66 185 94 60 201 104 47 255
2023110 70 188 158 129 278 43 118 247 248 14 267 12 247 143 268 161 117 271 120 57
2024242 164 76 211 91 101 261 133 3 236 217 143 163 32 87 69 144 34 31 245 123 16
2025182 135 196 230 60 28 286 259 45 62 116 227 303 35 285 244 50 146 54 283 300
2026105 91 72 208 27 108 260 194 8 244 79 199 84 178 276 128 302 298 161 222 17 226
2027259 218 187 287 130 44 296 246 99 144 139 160 44 18 299 205 39 115 183 179 13
2028252 17 255 81 17 82 263 153 255 215 199 294 53 105 301 254 37 200 60 306 233
2029153 150 86 93 16 77 82 90 28 84 5 151 33 92 250 207 261 238 132 266 112 119 186
2030243 6 22 32 19 73 79 26 35 7 66 80 41 30 306 128 24 44 191 117 69 249 163 137
2031140 99 39 10 54 149 42 276 301 120 162 64 270 47 187 114 5 180 86 198 145 183
2032284 66 51 219 231 104 152 1 216 272 164 181 264 197 72 237 156 214 155 170 31
203372 74 152 279 87 242 269 205 241 293 77 284 37 229 189 29 128 129 173 297 12 45
2034272 298 56 93 294 24 283 195 52 61 177 232 4 280 34 241 120 28 113 134 181 235
203568 273 35 180 191 251 251 78 260 89 186 138 184 223 61 43 50 175 107 6 195 81
2036114 207 127 56 303 169 160 73 147 98 100 15 138 11 98 273 140 2 221 146 227 101
203788 8 139 26 169 189 202 253 300 76 38 273 6 51 85 49 275 55 49 170 233 19 275
2038257 303 64 31 43 252 122 77 111 219 58 286 288 174 168 11 203 19 170 204 197
2039169 55 20 41 203 124 299 234 92 145 78 155 36 156 243 208 200 233 48 21 56 198
204040 54 178 171 75 196 96 185 199 189 306 23 278 14 296 141 46 38 244 184 21 190
204173 252 151 130 217 114 34 2 192 93 121 206 112 292 4 107 216 70 293 112 ^
2042646 1 159 169 19 137 73 163 274 77 302 211 280 167 104 14 126 76 173 210 133
2043225 46 90 230 262 278 252 51 67 39 284 306 41 147 300 278 216 239 35 75 60 217
204443 98 235 257 267 185 61 3 95 207 71 230 280 149 233 33 144 308 283 211 228 38
2045155 305 273 275 172 115 11 116 140 117 287 59 36 222 2 36 206 303 49 152 295 28
2046219 249 280 131 53 291 162 161 84 142 14 160 264 141 246 288 136 287 41 165 241
204720 198 7 304 144 274 95 173 192 262 244 64 13 31 263 64 65 160 282 82 227 270
2048213 177 40 70 119 150 53 34 291 180 102 65 124 161 50 263 46 124 109 300 5 28
2049201 69 299 149 215 92 163 17 206 12 229 133 277 105 109 248 185 9 183 146 189
2050218 120 279 54 111 163 308 265 270 247 56 8 106 204 61 294 224 226 89 153 81
2051150 19 85 14 144 256 154 192 210 115 45 304 108 153 63 209 38 103 176 254 257
205210 5 10 21 18 8 72 16 93 258 69 6 157 202 146 171 277 139 297 286 221 164 94 78
205370 83 29 21 67 91 34 16 59 70 101 279 2 52 214 290 33 160 246 270 265 306 59 88
205442 260 54 129 104 289 247 38 137 55 222 293 95 225 12 211 262 226 123 32 49 186
2055174 305 255 25 191 133 243 226 141 212 30 168 251 195 254 239 69 24 28 253 128
20569 167 138 202 164 112 19 121 65 176 220 69 281 278 234 110 86 57 137 107 42 3
2057113 78 122 212 48 39 232 177 22 129 68 168 285 74 292 275 224 174 30 134 63 227
2058218 154 158 22 147 9 219 267 221 182 35 59 52 230 298 20 214 15 291 198 282 46
2059106 238 249 23 260 2 85 271 15 307 136 269 100 184 259 182 308 8 90 266 74 240
2060216 205 156 107 24 62 132 96 45 13 49 134 45 47 237 172 81 132 148 104 32 67 57
2061155 287 23 294 190 38 121 117 235 239 87 204 79 235 205 208 236 43 80 55 206
2062285 108 171 4 260 20 250 66 253 162 197 205 174 48 5 44 209 56 44 227 236 25
2063209 4 224 208 218 102 99 3 129 86 109 266 56 60 165 223 79 217 25 157 254 275
2064190 295 62 98 217 7 286 203 293 113 96 302 193 30 116 122 246 236 7 268 23 242
2065131 19 103 194 125 238 301 82 279 20 232 195 272 180 50 6 175 143 127 153 45 29
206657 121 99 55 258 105 127 189 166 61 21 36 188 53 307 170 148 138 220 35 93 1
2067198 25 175 125 256 172 63 261 97 122 194 177 58 250 100 132 130 233 290 85 289
2068265 288 118 37 60 183 94 60 199 102 47 253 110 68 186 156 125 274 43 114 243
2069244 12 263 12 245 141 264 159 117 269 118 55 240 164 76 207 89 101 261 131 1
2070232 213 143 161 32 83 65 142 32 31 245 123 14 178 135 192 228 56 26 286 255 43
207162 114 225 303 31 281 244 46 142 50 281 296 105 91 238 ^
2072647 0 200 27 104 252 186 240 79 199 84 174 268 128 298 294 153 218 17 218 259
2073214 187 283 122 40 292 238 95 136 131 156 36 18 299 197 31 107 179 179 1 252 13
2074255 73 5 82 259 145 247 211 191 286 49 97 293 250 29 192 56 298 225 149 146 86
207589 16 73 74 86 20 76 1 143 21 88 246 199 257 230 124 266 104 119 182 239 309 14
207620 7 61 71 26 23 3 58 80 33 22 302 124 24 44 191 113 57 241 155 133 140 99 35 6
207754 141 42 276 301 112 154 52 266 35 179 110 308 180 82 190 141 175 280 62 43
2078219 231 96 148 1 212 272 160 177 264 189 60 237 152 206 147 162 23 72 62 152
2079275 87 234 265 201 241 293 77 284 25 229 181 25 120 125 169 293 8 33 264 298 52
208093 290 12 283 191 44 53 169 224 4 272 22 233 120 16 113 126 181 227 64 269 31
2081176 183 251 243 70 256 85 186 138 184 223 61 31 38 175 107 6 187 81 114 207 119
208244 295 165 152 73 143 90 92 7 130 11 98 265 132 301 221 146 219 93 88 4 139 18
2083161 189 198 245 296 68 30 273 305 51 81 45 267 47 49 166 233 11 271 257 299 64
208427 35 248 114 69 111 211 58 282 288 166 164 7 199 15 170 196 197 169 51 12 41
2085195 116 295 234 92 145 74 155 24 148 243 208 200 229 48 21 48 194 40 50 178 167
208667 196 88 177 195 185 299 306 23 274 6 296 137 34 34 236 180 13 186 69 244 151
2087130 213 106 34 305 184 85 117 198 112 292 307 99 208 62 285 279 159 165 19 133
208871 159 274 75 300 209 276 163 104 10 126 72 171 208 131 225 40 90 230 262 274
2089248 45 65 39 280 304 39 147 300 278 216 235 35 75 58 213 37 94 233 253 267 185
209057 310 95 205 71 228 278 147 231 27 144 304 281 207 228 36 151 303 269 273 172
2091111 9 114 138 115 283 53 36 220 307 30 204 301 43 150 291 24 217 247 280 131 47
2092291 162 161 80 142 14 158 262 141 244 284 134 285 37 163 237 14 198 3 300 140
2093272 91 173 192 258 242 58 11 29 261 60 59 156 278 78 227 266 213 175 38 66 115
2094150 49 28 289 178 98 63 124 157 48 263 44 122 109 296 310 26 201 63 297 149 215
209590 161 11 202 6 227 133 273 103 107 248 183 9 183 142 187 214 118 279 50 109
2096163 306 265 270 245 54 8 102 204 59 294 222 222 89 149 77 146 17 85 8 142 256
2097154 190 210 115 41 304 108 151 61 209 34 103 176 252 255 4 1 10 17 16 4 70 14
209889 258 69 2 155 202 144 171 277 135 297 282 219 162 92 76 70 83 29 19 67 87 32
209910 57 68 99 277 2 46 210 288 33 160 246 268 261 302 55 84 36 260 48 125 100 289
2100247 38 135 55 222 291 93 221 8 211 260 226 121 28 47 182 170 305 253 25 189 129
2101241 224 137 212 30 164 249 195 254 239 86 ^
2102665 0 15 28 247 125 167 135 199 158 106 10 115 65 170 220 63 281 275 231 107 80
210357 137 101 36 306 110 78 116 209 45 36 232 177 22 129 68 168 279 74 286 275 218
2104174 24 131 57 224 218 148 158 19 144 3 213 261 215 176 26 59 52 224 292 20 214
21056 285 192 282 46 106 235 249 14 257 311 309 82 271 15 301 136 269 100 178 253
2106182 308 311 84 260 71 240 210 202 156 104 21 59 126 96 36 7 43 134 42 38 234
2107166 78 129 142 101 23 61 54 152 287 20 288 190 29 118 111 235 236 81 201 73 229
2108205 202 230 37 77 46 206 285 105 165 307 254 14 244 66 253 156 191 199 171 39 5
210941 206 47 38 221 233 22 203 1 224 205 215 102 93 3 126 83 103 263 56 54 165 220
211076 214 19 157 248 269 187 295 53 95 217 4 283 203 287 107 93 302 193 27 116 122
2111240 236 7 268 17 242 125 13 100 191 125 238 295 79 273 17 229 192 269 174 50
2112309 169 137 127 153 45 23 48 121 96 49 252 99 121 183 166 52 12 30 188 53 307
2113167 148 132 214 32 90 304 195 16 172 122 253 169 63 255 97 119 194 171 52 250
211497 132 127 227 290 79 286 262 285 118 37 51 180 94 60 196 99 47 250 110 65 183
2115153 119 268 43 108 237 238 9 257 12 242 138 258 156 117 266 115 52 237 164 76
2116201 86 101 261 128 310 226 207 143 158 32 77 59 139 29 31 245 123 11 172 135
2117186 225 50 23 286 249 40 62 111 222 303 25 275 244 40 136 44 278 290 105 91 62
2118198 27 103 250 184 310 239 79 199 84 173 266 128 297 293 151 217 17 216 259 213
2119187 282 120 39 291 236 94 134 129 155 34 18 299 195 29 105 178 179 310 252 12
2120255 71 2 82 258 143 245 210 189 284 48 95 291 249 27 190 55 296 223 148 145 86
212188 16 72 72 85 18 74 141 18 87 245 197 256 228 122 266 102 119 181 238 308 12
212217 4 58 69 26 20 2 56 80 31 20 301 123 24 44 191 112 54 239 153 132 140 99 34 5
212354 139 42 276 301 110 152 49 265 32 177 109 307 180 81 188 140 173 279 61 41
2124219 231 94 147 1 211 272 159 176 264 187 57 237 151 204 145 160 21 72 59 152
2125274 87 232 264 200 241 293 77 284 22 229 179 24 118 124 168 292 7 30 262 298 51
212693 289 9 283 190 42 51 167 222 4 270 19 231 120 13 113 124 181 225 63 268 30
2127175 181 251 241 68 255 84 186 138 184 223 61 28 35 175 107 6 185 81 114 207 117
212841 293 164 150 73 142 88 90 5 128 11 98 263 130 299 221 146 217 91 88 3 139 16
2129159 189 197 243 295 66 28 273 303 51 80 44 265 45 49 165 233 9 270 257 298 64
213026 33 247 112 67 111 209 58 281 288 164 163 6 198 14 170 194 197 169 50 10 41
2131193 114 294 234 92 145 73 155 21 146 243 208 200 228 48 21 46 193 40 49 178 166
213265 196 86 175 194 184 297 306 23 273 206 ^
2133641 0 296 134 25 31 230 177 7 183 66 238 151 130 210 100 34 302 178 79 114 192
2134112 292 304 93 202 56 279 273 159 159 19 127 68 153 274 72 297 206 270 157 104
21354 126 66 168 205 128 225 31 90 230 262 268 242 36 62 39 274 301 36 147 300 278
2136216 229 35 75 55 207 28 88 230 247 267 185 51 307 95 202 71 225 275 144 228 18
2137144 298 278 201 228 33 145 300 263 270 172 105 6 111 135 112 277 44 36 217 301
213821 201 298 34 147 285 18 214 244 280 131 38 291 162 161 74 142 14 155 259 141
2139241 278 131 282 31 160 231 5 198 311 294 134 269 85 173 192 252 239 49 8 26 258
214054 50 150 272 72 227 260 213 172 35 60 109 150 43 19 286 175 92 60 124 151 45
2141263 41 119 109 290 304 23 201 54 294 149 215 87 158 2 196 311 224 133 267 100
2142104 248 180 9 183 136 184 208 115 279 44 106 163 303 265 270 242 51 8 96 204 56
2143294 219 216 89 143 71 140 14 85 313 139 256 154 187 210 115 35 304 108 148 58
2144209 28 103 176 249 252 309 309 10 11 13 312 67 11 83 258 69 310 152 202 141 171
2145277 129 297 276 216 159 89 73 70 83 29 16 67 81 29 1 54 65 96 274 2 37 204 285
214633 160 246 265 255 296 49 78 27 260 39 119 94 289 247 38 132 55 222 288 90 215
21472 211 257 226 118 22 44 176 164 305 250 25 186 123 238 221 131 212 30 158 246
2148195 254 239 64 9 28 243 123 308 167 133 197 154 102 4 111 65 166 220 59 281 273
2149229 105 76 57 137 97 32 302 108 78 112 207 43 34 232 177 22 129 68 168 275 74
2150282 275 214 174 20 129 53 222 218 144 158 17 142 313 209 257 211 172 20 59 52
2151220 288 20 214 281 188 282 46 106 233 249 8 255 311 309 80 271 15 297 136 269
2152100 174 249 182 308 307 80 256 69 240 206 200 156 102 19 57 122 96 30 3 39 134
215340 32 232 162 76 127 138 99 17 57 52 150 287 18 284 190 23 116 107 235 234 77
2154199 69 225 205 198 226 33 75 40 206 285 103 161 303 250 10 240 66 253 152 187
2155195 169 33 5 39 204 41 34 217 231 20 199 313 224 203 213 102 89 3 124 81 99 261
215656 50 165 218 74 212 15 157 244 265 185 295 47 93 217 2 281 203 283 103 91 302
2157193 25 116 122 236 236 7 268 13 242 121 9 98 189 125 238 291 77 269 15 227 190
2158267 170 50 305 165 133 127 153 45 19 42 121 94 45 248 95 117 179 166 46 6 26
2159188 53 307 165 148 128 210 30 88 300 193 10 170 120 251 167 63 251 97 117 194
2160167 48 250 95 132 125 223 290 75 284 260 283 118 37 45 178 94 60 194 97 47 248
2161110 63 181 151 115 264 43 104 233 234 7 253 12 240 136 254 154 117 264 113 50
2162235 164 76 197 84 101 261 126 310 222 203 143 276 ^
2163656 0 32 69 51 135 25 31 245 123 7 164 135 178 221 42 19 286 241 36 62 107 218
2164303 17 267 244 32 128 36 274 282 105 91 54 190 27 99 242 176 306 235 79 199 84
2165169 258 128 293 289 143 213 17 208 259 209 187 278 112 35 287 228 90 126 121
2166151 26 18 299 187 21 97 174 179 302 252 8 255 63 306 82 254 135 237 206 181 276
216744 87 283 245 19 182 51 288 215 144 141 86 84 16 68 64 81 10 66 312 133 6 83
2168241 189 252 220 114 266 94 119 177 234 304 4 5 308 46 61 26 8 314 48 80 23 12
2169297 119 24 44 191 108 42 231 145 128 140 99 30 1 54 131 42 276 301 102 144 37
2170261 20 169 105 303 180 77 180 136 165 275 57 33 219 231 86 143 1 207 272 155
2171172 264 179 45 237 147 196 137 152 13 72 47 152 270 87 224 260 196 241 293 77
2172284 10 229 171 20 110 120 164 288 3 18 254 298 47 93 285 313 283 186 34 43 159
2173214 4 262 7 223 120 1 113 116 181 217 59 264 26 171 173 251 233 60 251 80 186
2174138 184 223 61 16 23 175 107 6 177 81 114 207 109 29 285 160 142 73 138 80 82
2175313 120 11 98 255 122 291 221 146 209 83 88 315 139 8 151 189 193 235 291 58 20
2176273 295 51 76 40 257 37 49 161 233 1 266 257 294 64 22 25 243 104 59 111 201 58
2177277 288 156 159 2 194 10 170 186 197 169 46 2 41 185 106 290 234 92 145 69 155
21789 138 243 208 200 224 48 21 38 189 40 45 178 162 57 196 78 167 190 180 289 306
217923 269 312 296 132 19 29 226 175 3 181 64 234 151 130 208 96 34 300 174 75 112
2180188 112 292 302 89 198 52 275 269 159 155 19 123 66 149 274 70 295 204 266 153
2181104 126 62 166 203 126 225 25 90 230 262 264 238 30 60 39 270 299 34 147 300
2182278 216 225 35 75 53 203 22 84 228 243 267 185 47 305 95 200 71 223 273 142 226
218312 144 294 276 197 228 31 141 298 259 268 172 101 4 109 133 110 273 38 36 215
2184297 15 199 296 28 145 281 14 212 242 280 131 32 291 162 161 70 142 14 153 257
2185141 239 274 129 280 27 158 227 315 198 309 290 130 267 81 173 192 248 237 43 6
218624 256 50 44 146 268 68 227 256 213 170 33 56 105 150 39 13 284 173 88 58 124
2187147 43 263 39 117 109 286 300 21 201 48 292 149 215 85 156 312 192 307 222 133
2188263 98 102 248 178 9 183 132 182 204 113 279 40 104 163 301 265 270 240 49 8 92
2189204 54 294 217 212 89 139 67 136 12 85 309 137 256 154 185 210 115 31 304 108
2190146 56 209 24 103 176 247 250 305 307 10 7 11 310 65 9 79 258 69 308 150 202
2191139 171 277 125 297 272 214 157 87 71 70 83 29 14 67 77 27 311 52 63 94 272 2
219231 200 283 33 160 246 263 251 292 45 74 21 260 33 115 90 289 247 38 130 55 222
2193286 88 211 227 ^
2194668 0 211 254 226 115 16 41 170 158 305 247 25 183 117 235 218 125 212 30 152
2195243 195 254 239 61 28 237 120 302 167 130 194 148 96 312 105 65 160 220 53 281
2196270 226 102 70 57 137 91 26 296 105 78 106 204 40 31 232 177 22 129 68 168 269
219774 276 275 208 174 14 126 47 219 218 138 158 14 139 310 203 251 205 166 11 59
219852 214 282 20 214 308 275 182 282 46 106 230 249 316 252 311 309 77 271 15 291
2199136 269 100 168 243 182 308 301 74 250 66 240 200 197 156 99 16 54 116 96 21
2200314 33 134 37 23 229 156 73 124 132 96 8 51 49 147 287 15 278 190 14 113 101
2201235 231 71 196 63 219 205 192 220 27 72 31 206 285 100 155 297 244 4 234 66 253
2202146 181 189 166 24 5 36 201 32 28 211 228 17 193 313 224 200 210 102 83 3 121
220378 93 258 56 44 165 215 71 209 9 157 238 259 182 295 38 90 217 316 278 203 277
220497 88 302 193 22 116 122 230 236 7 268 7 242 115 3 95 186 125 238 285 74 263 12
2205224 187 264 164 50 299 159 127 127 153 45 13 33 121 91 39 242 89 111 173 166 37
2206314 20 188 53 307 162 148 122 204 27 85 294 190 1 167 117 248 164 63 245 97 114
2207194 161 42 250 92 132 122 217 290 69 281 257 280 118 37 36 175 94 60 191 94 47
2208245 110 60 178 148 109 258 43 98 227 228 4 247 12 237 133 248 151 117 261 110
220947 232 164 76 191 81 101 261 123 310 216 197 143 153 32 67 49 134 24 31 245 123
22106 162 135 176 220 40 18 286 239 35 62 106 217 303 15 265 244 30 126 34 273 280
2211105 91 52 188 27 98 240 174 305 234 79 199 84 168 256 128 292 288 141 212 17
2212206 259 208 187 277 110 34 286 226 89 124 119 150 24 18 299 185 19 95 173 179
2213300 252 7 255 61 304 82 253 133 235 205 179 274 43 85 281 244 17 180 50 286 213
2214143 140 86 83 16 67 62 80 8 64 312 131 3 82 240 187 251 218 112 266 92 119 176
2215233 303 2 2 306 43 59 26 5 314 46 80 21 10 296 118 24 44 191 107 39 229 143 127
2216140 99 29 54 129 42 276 301 100 142 34 260 17 167 104 302 180 76 178 135 163
2217274 56 31 219 231 84 142 1 206 272 154 171 264 177 42 237 146 194 135 150 11 72
221844 152 269 87 222 259 195 241 293 77 284 7 229 169 19 108 119 163 287 2 15 252
2219298 46 93 284 311 283 185 32 41 157 212 4 260 4 221 120 315 113 114 181 215 58
2220263 25 170 171 251 231 58 250 79 186 138 184 223 61 13 20 175 107 6 175 81 114
2221207 107 26 283 159 140 73 137 78 80 312 118 11 98 253 120 289 221 146 207 81 88
2222315 139 6 149 189 192 233 290 56 18 273 293 51 75 39 255 35 49 160 233 316 265
2223257 293 64 21 23 242 102 57 111 199 58 276 288 154 158 1 193 9 170 184 197 169
222445 41 183 104 289 234 92 145 68 155 6 136 243 208 203 ^
2225656 0 221 48 21 32 186 40 42 178 159 51 196 72 161 187 177 283 306 23 266 309
2226296 129 10 26 220 172 316 178 61 228 151 130 205 90 34 297 168 69 109 182 112
2227292 299 83 192 46 269 263 159 149 19 117 63 143 274 67 292 201 260 147 104 313
2228126 56 163 200 123 225 16 90 230 262 258 232 21 57 39 264 296 31 147 300 278
2229216 219 35 75 50 197 13 78 225 237 267 185 41 302 95 197 71 220 270 139 223 3
2230144 288 273 191 228 28 135 295 253 265 172 95 1 106 130 107 267 29 36 212 291 6
2231196 293 19 142 275 8 209 239 280 131 23 291 162 161 64 142 14 150 254 141 236
2232268 126 277 21 155 221 309 198 306 284 124 264 75 173 192 242 234 34 3 21 253
223344 35 140 262 62 227 250 213 167 30 50 99 150 33 4 281 170 82 55 124 141 40 263
223436 114 109 280 294 18 201 39 289 149 215 82 153 306 186 301 219 133 257 95 99
2235248 175 9 183 126 179 198 110 279 34 101 163 298 265 270 237 46 8 86 204 51 294
2236214 206 89 133 61 130 9 85 303 134 256 154 182 210 115 25 304 108 143 53 209 18
2237103 176 244 247 299 304 10 1 8 307 62 6 73 258 69 305 147 202 136 171 277 119
2238297 266 211 154 84 68 70 83 29 11 67 71 24 305 49 60 91 269 2 22 194 280 33 160
2239246 260 245 286 39 68 12 260 24 109 84 289 247 38 127 55 222 283 85 205 311 211
2240252 226 113 12 39 166 154 305 245 25 181 113 233 216 121 212 30 148 241 195 254
2241239 59 313 28 233 118 298 167 128 192 144 92 308 101 65 156 220 49 281 268 224
2242100 66 57 137 87 22 292 103 78 102 202 38 29 232 177 22 129 68 168 265 74 272
2243275 204 174 10 124 43 217 218 134 158 12 137 308 199 247 201 162 5 59 52 210
2244278 20 214 304 271 178 282 46 106 228 249 312 250 311 309 75 271 15 287 136 269
2245100 164 239 182 308 297 70 246 64 240 196 195 156 97 14 52 112 96 15 312 29 134
224635 17 227 152 71 122 128 94 2 47 47 145 287 13 274 190 8 111 97 235 229 67 194
224759 215 205 188 216 23 70 25 206 285 98 151 293 240 230 66 253 142 177 185 164
224818 5 34 199 26 24 207 226 15 189 313 224 198 208 102 79 3 119 76 89 256 56 40
2249165 213 69 207 5 157 234 255 180 295 32 88 217 316 276 203 273 93 86 302 193 20
2250116 122 226 236 7 268 3 242 111 318 93 184 125 238 281 72 259 10 222 185 262
2251160 50 295 155 123 127 153 45 9 27 121 89 35 238 85 107 169 166 31 310 16 188
225253 307 160 148 118 200 25 83 290 188 314 165 115 246 162 63 241 97 112 194 157
225338 250 90 132 120 213 290 65 279 255 278 118 37 30 173 94 60 189 92 47 243 110
225458 176 146 105 254 43 94 223 224 2 243 12 235 131 244 149 117 259 108 45 230
2255164 76 187 79 101 261 109 ^
2256656 0 310 208 189 143 149 32 59 41 130 20 31 245 123 2 154 135 168 216 32 14
2257286 231 31 62 102 213 303 7 257 244 22 118 26 269 272 105 91 44 180 27 94 232
2258166 301 230 79 199 84 164 248 128 288 284 133 208 17 198 259 204 187 273 102 30
2259282 218 85 116 111 146 16 18 299 177 11 87 169 179 292 252 3 255 53 296 82 249
2260125 227 201 171 266 39 77 273 240 9 172 46 278 205 139 136 86 79 16 63 54 76 56
2261312 123 312 78 236 179 247 210 104 266 84 119 172 229 299 315 311 298 31 51 26
2262314 314 38 80 13 2 292 114 24 44 191 103 27 221 135 123 140 99 25 317 54 121 42
2263276 301 92 134 22 256 5 159 100 298 180 72 170 131 155 270 52 23 219 231 76 138
22641 202 272 150 167 264 169 30 237 142 186 127 142 3 72 32 152 265 87 214 255 191
2265241 293 77 284 316 229 161 15 100 115 159 283 319 3 244 298 42 93 280 303 283
2266181 24 33 149 204 4 252 313 213 120 307 113 106 181 207 54 259 21 166 163 251
2267223 50 246 75 186 138 184 223 61 1 8 175 107 6 167 81 114 207 99 14 275 155 132
226873 133 70 72 308 110 11 98 245 112 281 221 146 199 73 88 315 139 319 141 189
2269188 225 286 48 10 273 285 51 71 35 247 27 49 156 233 312 261 257 289 64 17 15
2270238 94 49 111 191 58 272 288 146 154 318 189 5 170 176 197 169 41 313 41 175 96
2271285 234 92 145 64 155 315 128 243 208 200 219 48 21 28 184 40 40 178 157 47 196
227268 157 185 175 279 306 23 264 307 296 127 4 24 216 170 314 176 59 224 151 130
2273203 86 34 295 164 65 107 178 112 292 297 79 188 42 265 259 159 145 19 113 61
2274139 274 65 290 199 256 143 104 311 126 52 161 198 121 225 10 90 230 262 254 228
227515 55 39 260 294 29 147 300 278 216 215 35 75 48 193 7 74 223 233 267 185 37
2276300 95 195 71 218 268 137 221 318 144 284 271 187 228 26 131 293 249 263 172 91
2277320 104 128 105 263 23 36 210 287 194 291 13 140 271 4 207 237 280 131 17 291
2278162 161 60 142 14 148 252 141 234 264 124 275 17 153 217 305 198 304 280 120
2279262 71 173 192 238 232 28 1 19 251 40 29 136 258 58 227 246 213 165 28 46 95
2280150 29 319 279 168 78 53 124 137 38 263 34 112 109 276 290 16 201 33 287 149
2281215 80 151 302 182 297 217 133 253 93 97 248 173 9 183 122 177 194 108 279 30
228299 163 296 265 270 235 44 8 82 204 49 294 212 202 89 129 57 126 7 85 299 132
2283256 154 180 210 115 21 304 108 141 51 209 14 103 176 242 245 295 302 10 318 6
2284305 60 4 69 258 69 303 145 202 134 171 277 115 297 262 209 152 82 66 70 83 29 9
228567 67 22 301 47 58 89 267 2 16 190 278 33 160 246 258 241 282 35 64 6 260 18
2286105 80 289 247 38 125 55 292 ^
2287<D
2288
2289H>SHS Type 3 Strings<H
2290D>
229145 0 14 5 3 1 4 16 12 20 1 6 15 11 18 4 17 16 6 10 3 2 9 9 14 6 2 8 6 7 10 17
229212 20 6 7 5 16 1 4 2 17 10 15 8 20 1 ^
2293<D
diff --git a/src/lib/libssl/src/test/times b/src/lib/libssl/src/test/times
index 49aeebf216..738d569b8f 100644
--- a/src/lib/libssl/src/test/times
+++ b/src/lib/libssl/src/test/times
@@ -68,7 +68,7 @@ eric (adding numbers to speculation)
68--- Appendix --- 68--- Appendix ---
69- The time measured is user time but these number a very rough. 69- The time measured is user time but these number a very rough.
70- Remember this is the cost of both client and server sides of the protocol. 70- Remember this is the cost of both client and server sides of the protocol.
71- The TCP/kernal overhead of connection establishment is normally the 71- The TCP/kernel overhead of connection establishment is normally the
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.
diff --git a/src/lib/libssl/src/test/tverify.com b/src/lib/libssl/src/test/tverify.com
index 021d701d79..2060184d1e 100644
--- a/src/lib/libssl/src/test/tverify.com
+++ b/src/lib/libssl/src/test/tverify.com
@@ -8,22 +8,22 @@ $ copy/concatenate [-.certs]*.pem certs.tmp
8$ 8$
9$ old_f := 9$ old_f :=
10$ loop_certs: 10$ loop_certs:
11$ verify := NO 11$ c := NO
12$ more := YES
13$ certs := 12$ certs :=
14$ loop_certs2: 13$ loop_certs2:
15$ f = f$search("[-.certs]*.pem") 14$ f = f$search("[-.certs]*.pem")
16$ if f .nes. "" .and. f .nes. old_f 15$ if f .nes. "" .and. f .nes. old_f
17$ then 16$ then
18$ certs = certs + " [-.certs]" + f$parse(f,,,"NAME") + ".pem" 17$ certs = certs + " [-.certs]" + f$parse(f,,,"NAME") + ".pem"
19$ verify := YES 18$ c := YES
20$ if f$length(certs) .lt. 180 then goto loop_certs2 19$ if f$length(certs) .lt. 180 then goto loop_certs2
21$ else
22$ more := NO
23$ endif 20$ endif
24$ certs = certs - " " 21$ certs = certs - " "
25$ 22$
26$ if verify then mcr 'exe_dir'openssl verify "-CAfile" certs.tmp 'certs' 23$ if c
27$ if more then goto loop_certs 24$ then
25$ mcr 'exe_dir'openssl verify "-CAfile" certs.tmp 'certs'
26$ goto loop_certs
27$ endif
28$ 28$
29$ delete certs.tmp;* 29$ delete certs.tmp;*
diff --git a/src/lib/libssl/src/tools/Makefile.ssl b/src/lib/libssl/src/tools/Makefile.ssl
new file mode 100644
index 0000000000..cb33d4a41e
--- /dev/null
+++ b/src/lib/libssl/src/tools/Makefile.ssl
@@ -0,0 +1,64 @@
1#
2# SSLeay/tools/Makefile
3#
4
5DIR= tools
6TOP= ..
7CC= cc
8INCLUDES= -I$(TOP) -I../../include
9CFLAG=-g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP=/usr/local/ssl
13MAKE= make -f Makefile.ssl
14MAKEDEPPROG= makedepend
15MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE= Makefile.ssl
17
18CFLAGS= $(INCLUDES) $(CFLAG)
19
20GENERAL=Makefile.ssl
21TEST=
22APPS= c_rehash
23MISC_APPS= c_hash c_info c_issuer c_name
24
25all:
26
27install:
28 @for i in $(APPS) ; \
29 do \
30 (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
31 chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
32 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i ); \
33 done;
34 @for i in $(MISC_APPS) ; \
35 do \
36 (cp $$i $(INSTALL_PREFIX)$(OPENSSLDIR)/misc/$$i.new; \
37 chmod 755 $(INSTALL_PREFIX)$(OPENSSLDIR)/misc/$$i.new; \
38 mv -f $(INSTALL_PREFIX)$(OPENSSLDIR)/misc/$$i.new $(INSTALL_PREFIX)$(OPENSSLDIR)/misc/$$i ); \
39 done;
40
41files:
42 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
43
44links:
45 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
46
47lint:
48
49tags:
50
51errors:
52
53depend:
54
55dclean:
56 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
57 mv -f Makefile.new $(MAKEFILE)
58
59clean:
60 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
61
62errors:
63
64# DO NOT DELETE THIS LINE -- make depend depends on it.
diff --git a/src/lib/libssl/src/tools/c_rehash b/src/lib/libssl/src/tools/c_rehash
deleted file mode 100644
index e614fb5466..0000000000
--- a/src/lib/libssl/src/tools/c_rehash
+++ /dev/null
@@ -1,160 +0,0 @@
1#!/usr/bin/perl
2
3
4# Perl c_rehash script, scan all files in a directory
5# and add symbolic links to their hash values.
6
7my $openssl;
8
9my $dir = "/usr/local/ssl";
10
11if(defined $ENV{OPENSSL}) {
12 $openssl = $ENV{OPENSSL};
13} else {
14 $openssl = "openssl";
15 $ENV{OPENSSL} = $openssl;
16}
17
18$ENV{PATH} .= ":$dir/bin";
19
20if(! -x $openssl) {
21 my $found = 0;
22 foreach (split /:/, $ENV{PATH}) {
23 if(-x "$_/$openssl") {
24 $found = 1;
25 last;
26 }
27 }
28 if($found == 0) {
29 print STDERR "c_rehash: rehashing skipped ('openssl' program not available)\n";
30 exit 0;
31 }
32}
33
34if(@ARGV) {
35 @dirlist = @ARGV;
36} elsif($ENV{SSL_CERT_DIR}) {
37 @dirlist = split /:/, $ENV{SSL_CERT_DIR};
38} else {
39 $dirlist[0] = "$dir/certs";
40}
41
42
43foreach (@dirlist) {
44 if(-d $_ and -w $_) {
45 hash_dir($_);
46 }
47}
48
49sub hash_dir {
50 my %hashlist;
51 print "Doing $_[0]\n";
52 chdir $_[0];
53 opendir(DIR, ".");
54 my @flist = readdir(DIR);
55 # Delete any existing symbolic links
56 foreach (grep {/^[\da-f]+\.r{0,1}\d+$/} @flist) {
57 if(-l $_) {
58 unlink $_;
59 }
60 }
61 closedir DIR;
62 FILE: foreach $fname (grep {/\.pem$/} @flist) {
63 # Check to see if certificates and/or CRLs present.
64 my ($cert, $crl) = check_file($fname);
65 if(!$cert && !$crl) {
66 print STDERR "WARNING: $fname does not contain a certificate or CRL: skipping\n";
67 next;
68 }
69 link_hash_cert($fname) if($cert);
70 link_hash_crl($fname) if($crl);
71 }
72}
73
74sub check_file {
75 my ($is_cert, $is_crl) = (0,0);
76 my $fname = $_[0];
77 open IN, $fname;
78 while(<IN>) {
79 if(/^-----BEGIN (.*)-----/) {
80 my $hdr = $1;
81 if($hdr =~ /^(X509 |TRUSTED |)CERTIFICATE$/) {
82 $is_cert = 1;
83 last if($is_crl);
84 } elsif($hdr eq "X509 CRL") {
85 $is_crl = 1;
86 last if($is_cert);
87 }
88 }
89 }
90 close IN;
91 return ($is_cert, $is_crl);
92}
93
94
95# Link a certificate to its subject name hash value, each hash is of
96# the form <hash>.<n> where n is an integer. If the hash value already exists
97# then we need to up the value of n, unless its a duplicate in which
98# case we skip the link. We check for duplicates by comparing the
99# certificate fingerprints
100
101sub link_hash_cert {
102 my $fname = $_[0];
103 $fname =~ s/'/'\\''/g;
104 my ($hash, $fprint) = `"$openssl" x509 -hash -fingerprint -noout -in '$fname'`;
105 chomp $hash;
106 chomp $fprint;
107 $fprint =~ s/^.*=//;
108 $fprint =~ tr/://d;
109 my $suffix = 0;
110 # Search for an unused hash filename
111 while(exists $hashlist{"$hash.$suffix"}) {
112 # Hash matches: if fingerprint matches its a duplicate cert
113 if($hashlist{"$hash.$suffix"} eq $fprint) {
114 print STDERR "WARNING: Skipping duplicate certificate $fname\n";
115 return;
116 }
117 $suffix++;
118 }
119 $hash .= ".$suffix";
120 print "$fname => $hash\n";
121 $symlink_exists=eval {symlink("",""); 1};
122 if ($symlink_exists) {
123 symlink $fname, $hash;
124 } else {
125 system ("cp", $fname, $hash);
126 }
127 $hashlist{$hash} = $fprint;
128}
129
130# Same as above except for a CRL. CRL links are of the form <hash>.r<n>
131
132sub link_hash_crl {
133 my $fname = $_[0];
134 $fname =~ s/'/'\\''/g;
135 my ($hash, $fprint) = `"$openssl" crl -hash -fingerprint -noout -in '$fname'`;
136 chomp $hash;
137 chomp $fprint;
138 $fprint =~ s/^.*=//;
139 $fprint =~ tr/://d;
140 my $suffix = 0;
141 # Search for an unused hash filename
142 while(exists $hashlist{"$hash.r$suffix"}) {
143 # Hash matches: if fingerprint matches its a duplicate cert
144 if($hashlist{"$hash.r$suffix"} eq $fprint) {
145 print STDERR "WARNING: Skipping duplicate CRL $fname\n";
146 return;
147 }
148 $suffix++;
149 }
150 $hash .= ".r$suffix";
151 print "$fname => $hash\n";
152 $symlink_exists=eval {symlink("",""); 1};
153 if ($symlink_exists) {
154 symlink $fname, $hash;
155 } else {
156 system ("cp", $fname, $hash);
157 }
158 $hashlist{$hash} = $fprint;
159}
160
diff --git a/src/lib/libssl/src/util/libeay.num b/src/lib/libssl/src/util/libeay.num
index 4222bef6d6..56fb7446e0 100644
--- a/src/lib/libssl/src/util/libeay.num
+++ b/src/lib/libssl/src/util/libeay.num
@@ -2811,7 +2811,7 @@ EVP_aes_192_cfb8 3252 EXIST::FUNCTION:AES
2811FIPS_mode_set 3253 EXIST:OPENSSL_FIPS:FUNCTION: 2811FIPS_mode_set 3253 EXIST:OPENSSL_FIPS:FUNCTION:
2812FIPS_selftest_dsa 3254 EXIST:OPENSSL_FIPS:FUNCTION: 2812FIPS_selftest_dsa 3254 EXIST:OPENSSL_FIPS: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 EXIST:OPENSSL_FIPS: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 EXIST:OPENSSL_FIPS:FUNCTION: 2817FIPS_rand_seeded 3259 EXIST:OPENSSL_FIPS:FUNCTION:
@@ -2837,7 +2837,7 @@ FIPS_dsa_check 3278 EXIST:OPENSSL_FIPS: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 EXIST:OPENSSL_FIPS:FUNCTION:
2840FIPS_md5_allowed 3282 NOEXIST::FUNCTION: 2840FIPS_md5_allowed 3282 EXIST:OPENSSL_FIPS:FUNCTION:
2841FIPS_mode 3283 EXIST:OPENSSL_FIPS:FUNCTION: 2841FIPS_mode 3283 EXIST:OPENSSL_FIPS:FUNCTION:
2842FIPS_selftest_failed 3284 EXIST:OPENSSL_FIPS:FUNCTION: 2842FIPS_selftest_failed 3284 EXIST:OPENSSL_FIPS:FUNCTION:
2843sk_is_sorted 3285 EXIST::FUNCTION: 2843sk_is_sorted 3285 EXIST::FUNCTION:
@@ -2867,41 +2867,3 @@ PROXY_CERT_INFO_EXTENSION_it 3307 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIA
2867PROXY_CERT_INFO_EXTENSION_it 3307 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 2867PROXY_CERT_INFO_EXTENSION_it 3307 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
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:
2871FIPS_selftest_rng 3311 EXIST:OPENSSL_FIPS:FUNCTION:
2872EVP_sha384 3312 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA512
2873EVP_sha512 3313 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA512
2874EVP_sha224 3314 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA256
2875EVP_sha256 3315 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA256
2876FIPS_selftest_hmac 3316 EXIST:OPENSSL_FIPS:FUNCTION:
2877FIPS_corrupt_rng 3317 EXIST:OPENSSL_FIPS:FUNCTION:
2878BN_mod_exp_mont_consttime 3318 EXIST::FUNCTION:
2879RSA_X931_hash_id 3319 EXIST::FUNCTION:RSA
2880RSA_padding_check_X931 3320 EXIST::FUNCTION:RSA
2881RSA_verify_PKCS1_PSS 3321 EXIST::FUNCTION:RSA
2882RSA_padding_add_X931 3322 EXIST::FUNCTION:RSA
2883RSA_padding_add_PKCS1_PSS 3323 EXIST::FUNCTION:RSA
2884PKCS1_MGF1 3324 EXIST::FUNCTION:RSA
2885BN_X931_generate_Xpq 3325 EXIST:OPENSSL_FIPS:FUNCTION:
2886RSA_X931_generate_key 3326 EXIST:OPENSSL_FIPS:FUNCTION:RSA
2887BN_X931_derive_prime 3327 EXIST:OPENSSL_FIPS:FUNCTION:
2888BN_X931_generate_prime 3328 EXIST:OPENSSL_FIPS:FUNCTION:
2889RSA_X931_derive 3329 EXIST:OPENSSL_FIPS:FUNCTION:RSA
2890SHA512_Update 3356 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA512
2891SHA256_Init 3479 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA256
2892SHA224 3510 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA256
2893SHA384_Update 3551 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA512
2894SHA224_Final 3560 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA256
2895SHA224_Update 3562 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA256
2896SHA512_Final 3581 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA512
2897SHA224_Init 3631 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA256
2898SHA512_Init 3633 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA512
2899SHA256 3654 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA256
2900SHA256_Transform 3664 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA256
2901SHA512 3669 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA512
2902SHA512_Transform 3675 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA512
2903SHA256_Final 3712 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA256
2904SHA384_Init 3737 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA512
2905SHA384_Final 3740 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA512
2906SHA384 3745 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA512
2907SHA256_Update 3765 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA256
diff --git a/src/lib/libssl/src/util/mk1mf.pl b/src/lib/libssl/src/util/mk1mf.pl
index 05a6086164..957264c6b5 100644
--- a/src/lib/libssl/src/util/mk1mf.pl
+++ b/src/lib/libssl/src/util/mk1mf.pl
@@ -10,20 +10,6 @@ $OPTIONS="";
10$ssl_version=""; 10$ssl_version="";
11$banner="\t\@echo Building OpenSSL"; 11$banner="\t\@echo Building OpenSSL";
12 12
13local $zlib_opt = 0; # 0 = no zlib, 1 = static, 2 = dynamic
14local $zlib_lib = "";
15
16my $fips_canister_path = "";
17my $fips_premain_dso_exe_path = "";
18my $fips_premain_c_path = "";
19my $fips_sha1_exe_path = "";
20
21my $fipslibdir = "";
22my $baseaddr = "";
23
24my $ex_l_libs = "";
25
26
27open(IN,"<Makefile") || die "unable to open Makefile!\n"; 13open(IN,"<Makefile") || die "unable to open Makefile!\n";
28while(<IN>) { 14while(<IN>) {
29 $ssl_version=$1 if (/^VERSION=(.*)$/); 15 $ssl_version=$1 if (/^VERSION=(.*)$/);
@@ -38,7 +24,6 @@ $infile="MINFO";
38 24
39%ops=( 25%ops=(
40 "VC-WIN32", "Microsoft Visual C++ [4-6] - Windows NT or 9X", 26 "VC-WIN32", "Microsoft Visual C++ [4-6] - Windows NT or 9X",
41 "VC-WIN32-GMAKE", "Microsoft Visual C++ [4-6] - Windows NT or 9X, GNU make",
42 "VC-CE", "Microsoft eMbedded Visual C++ 3.0 - Windows CE ONLY", 27 "VC-CE", "Microsoft eMbedded Visual C++ 3.0 - Windows CE ONLY",
43 "VC-NT", "Microsoft Visual C++ [4-6] - Windows NT ONLY", 28 "VC-NT", "Microsoft Visual C++ [4-6] - Windows NT ONLY",
44 "VC-W31-16", "Microsoft Visual C++ 1.52 - Windows 3.1 - 286", 29 "VC-W31-16", "Microsoft Visual C++ 1.52 - Windows 3.1 - 286",
@@ -58,7 +43,6 @@ $infile="MINFO";
58 ); 43 );
59 44
60$platform=""; 45$platform="";
61my $xcflags="";
62foreach (@ARGV) 46foreach (@ARGV)
63 { 47 {
64 if (!&read_options && !defined($ops{$_})) 48 if (!&read_options && !defined($ops{$_}))
@@ -120,12 +104,8 @@ $inc_def="outinc";
120$tmp_def="tmp"; 104$tmp_def="tmp";
121 105
122$mkdir="-mkdir"; 106$mkdir="-mkdir";
123$mkcanister="ld -r -o";
124
125$ex_build_targets = "";
126 107
127($ssl,$crypto)=("ssl","crypto"); 108($ssl,$crypto)=("ssl","crypto");
128$cryptocompat = "";
129$ranlib="echo ranlib"; 109$ranlib="echo ranlib";
130 110
131$cc=(defined($VARS{'CC'}))?$VARS{'CC'}:'cc'; 111$cc=(defined($VARS{'CC'}))?$VARS{'CC'}:'cc';
@@ -160,10 +140,6 @@ elsif (($platform eq "VC-WIN32") || ($platform eq "VC-NT"))
160 $NT = 1 if $platform eq "VC-NT"; 140 $NT = 1 if $platform eq "VC-NT";
161 require 'VC-32.pl'; 141 require 'VC-32.pl';
162 } 142 }
163elsif ($platform eq "VC-WIN32-GMAKE")
164 {
165 require 'VC-32-GMAKE.pl';
166 }
167elsif ($platform eq "VC-CE") 143elsif ($platform eq "VC-CE")
168 { 144 {
169 require 'VC-CE.pl'; 145 require 'VC-CE.pl';
@@ -234,8 +210,6 @@ $inc_dir=(defined($VARS{'INC'}))?$VARS{'INC'}:$inc_def;
234 210
235$bin_dir=$bin_dir.$o unless ((substr($bin_dir,-1,1) eq $o) || ($bin_dir eq '')); 211$bin_dir=$bin_dir.$o unless ((substr($bin_dir,-1,1) eq $o) || ($bin_dir eq ''));
236 212
237$cflags= "$xcflags$cflags" if $xcflags ne "";
238
239$cflags.=" -DOPENSSL_NO_IDEA" if $no_idea; 213$cflags.=" -DOPENSSL_NO_IDEA" if $no_idea;
240$cflags.=" -DOPENSSL_NO_AES" if $no_aes; 214$cflags.=" -DOPENSSL_NO_AES" if $no_aes;
241$cflags.=" -DOPENSSL_NO_RC2" if $no_rc2; 215$cflags.=" -DOPENSSL_NO_RC2" if $no_rc2;
@@ -265,9 +239,6 @@ $cflags.=" -DOPENSSL_NO_HW" if $no_hw;
265$cflags.=" -DOPENSSL_FIPS" if $fips; 239$cflags.=" -DOPENSSL_FIPS" if $fips;
266#$cflags.=" -DRSAref" if $rsaref ne ""; 240#$cflags.=" -DRSAref" if $rsaref ne "";
267 241
268$cflags.= " -DZLIB" if $zlib_opt;
269$cflags.= " -DZLIB_SHARED" if $zlib_opt == 2;
270
271## if ($unix) 242## if ($unix)
272## { $cflags="$c_flags" if ($c_flags ne ""); } 243## { $cflags="$c_flags" if ($c_flags ne ""); }
273##else 244##else
@@ -275,7 +246,6 @@ $cflags.= " -DZLIB_SHARED" if $zlib_opt == 2;
275 246
276$ex_libs="$l_flags$ex_libs" if ($l_flags ne ""); 247$ex_libs="$l_flags$ex_libs" if ($l_flags ne "");
277 248
278
279%shlib_ex_cflags=("SSL" => " -DOPENSSL_BUILD_SHLIBSSL", 249%shlib_ex_cflags=("SSL" => " -DOPENSSL_BUILD_SHLIBSSL",
280 "CRYPTO" => " -DOPENSSL_BUILD_SHLIBCRYPTO"); 250 "CRYPTO" => " -DOPENSSL_BUILD_SHLIBCRYPTO");
281 251
@@ -292,135 +262,6 @@ $link="$bin_dir$link" if ($link !~ /^\$/);
292 262
293$INSTALLTOP =~ s|/|$o|g; 263$INSTALLTOP =~ s|/|$o|g;
294 264
295#############################################
296# We parse in input file and 'store' info for later printing.
297open(IN,"<$infile") || die "unable to open $infile:$!\n";
298$_=<IN>;
299for (;;)
300 {
301 chop;
302
303 ($key,$val)=/^([^=]+)=(.*)/;
304 if ($key eq "RELATIVE_DIRECTORY")
305 {
306 if ($lib ne "")
307 {
308 if ($fips && $dir =~ /^fips/)
309 {
310 $uc = "FIPS";
311 }
312 else
313 {
314 $uc=$lib;
315 $uc =~ s/^lib(.*)\.a/$1/;
316 $uc =~ tr/a-z/A-Z/;
317 }
318 if (($uc ne "FIPS") || $fips_canister_build)
319 {
320 $lib_nam{$uc}=$uc;
321 $lib_obj{$uc}.=$libobj." ";
322 }
323 }
324 last if ($val eq "FINISHED");
325 $lib="";
326 $libobj="";
327 $dir=$val;
328 }
329
330 if ($key eq "KRB5_INCLUDES")
331 { $cflags .= " $val";}
332
333 if ($key eq "ZLIB_INCLUDE")
334 { $cflags .= " $val" if $val ne "";}
335
336 if ($key eq "LIBZLIB")
337 { $zlib_lib = "$val" if $val ne "";}
338
339 if ($key eq "LIBKRB5")
340 { $ex_libs .= " $val" if $val ne "";}
341
342 if ($key eq "TEST")
343 { $test.=&var_add($dir,$val); }
344
345 if (($key eq "PROGS") || ($key eq "E_OBJ"))
346 { $e_exe.=&var_add($dir,$val); }
347
348 if ($key eq "LIB")
349 {
350 $lib=$val;
351 $lib =~ s/^.*\/([^\/]+)$/$1/;
352 }
353
354 if ($key eq "EXHEADER")
355 { $exheader.=&var_add($dir,$val); }
356
357 if ($key eq "HEADER")
358 { $header.=&var_add($dir,$val); }
359
360 if ($key eq "LIBOBJ")
361 { $libobj=&var_add($dir,$val); }
362
363 if ($key eq "FIPSLIBDIR")
364 { $fipslibdir=$val;}
365
366 if ($key eq "BASEADDR")
367 { $baseaddr=$val;}
368
369 if (!($_=<IN>))
370 { $_="RELATIVE_DIRECTORY=FINISHED\n"; }
371 }
372close(IN);
373
374if ($fips_canister_path eq "")
375 {
376 $fips_canister_path = "\$(FIPSLIB_D)${o}fipscanister.o";
377 }
378
379if ($fips_premain_c_path eq "")
380 {
381 $fips_premain_c_path = "\$(FIPSLIB_D)${o}fips_premain.c";
382 }
383
384if ($fips)
385 {
386 if ($fips_sha1_exe_path eq "")
387 {
388 $fips_sha1_exe_path =
389 "\$(BIN_D)${o}fips_standalone_sha1$exep";
390 }
391 }
392 else
393 {
394 $fips_sha1_exe_path = "";
395 }
396
397if ($fips_premain_dso_exe_path eq "")
398 {
399 $fips_premain_dso_exe_path = "\$(BIN_D)${o}fips_premain_dso$exep";
400 }
401
402# $ex_build_targets .= "\$(BIN_D)${o}\$(E_PREMAIN_DSO)$exep" if ($fips);
403
404if ($fips)
405 {
406 if (!$shlib)
407 {
408 $ex_build_targets .= " \$(LIB_D)$o$crypto_compat \$(PREMAIN_DSO_EXE)";
409 $ex_l_libs .= " \$(O_FIPSCANISTER)";
410 }
411 if ($fipslibdir eq "")
412 {
413 open (IN, "util/fipslib_path.txt") || fipslib_error();
414 $fipslibdir = <IN>;
415 chomp $fipslibdir;
416 close IN;
417 }
418 fips_check_files($fipslibdir,
419 "fipscanister.o", "fipscanister.o.sha1",
420 "fips_premain.c", "fips_premain.c.sha1");
421 }
422
423
424$defs= <<"EOF"; 265$defs= <<"EOF";
425# This makefile has been automatically generated from the OpenSSL distribution. 266# This makefile has been automatically generated from the OpenSSL distribution.
426# This single makefile will build the complete OpenSSL distribution and 267# This single makefile will build the complete OpenSSL distribution and
@@ -445,7 +286,6 @@ if ($platform eq "VC-CE")
445!INCLUDE <\$(WCECOMPAT)/wcedefs.mak> 286!INCLUDE <\$(WCECOMPAT)/wcedefs.mak>
446 287
447EOF 288EOF
448 $ex_libs .= " $zlib_lib" if $zlib_opt == 1;
449 } 289 }
450 290
451$defs.= <<"EOF"; 291$defs.= <<"EOF";
@@ -468,8 +308,6 @@ EX_LIBS=$ex_libs
468SRC_D=$src_dir 308SRC_D=$src_dir
469 309
470LINK=$link 310LINK=$link
471PERL=perl
472FIPSLINK=\$(PERL) util${o}fipslink.pl
473LFLAGS=$lflags 311LFLAGS=$lflags
474 312
475BN_ASM_OBJ=$bn_asm_obj 313BN_ASM_OBJ=$bn_asm_obj
@@ -501,9 +339,6 @@ TMP_D=$tmp_dir
501INC_D=$inc_dir 339INC_D=$inc_dir
502INCO_D=$inc_dir${o}openssl 340INCO_D=$inc_dir${o}openssl
503 341
504# Directory containing FIPS module
505
506
507CP=$cp 342CP=$cp
508RM=$rm 343RM=$rm
509RANLIB=$ranlib 344RANLIB=$ranlib
@@ -511,18 +346,6 @@ MKDIR=$mkdir
511MKLIB=$bin_dir$mklib 346MKLIB=$bin_dir$mklib
512MLFLAGS=$mlflags 347MLFLAGS=$mlflags
513ASM=$bin_dir$asm 348ASM=$bin_dir$asm
514MKCANISTER=$mkcanister
515
516# FIPS validated module and support file locations
517
518E_PREMAIN_DSO=fips_premain_dso
519
520FIPSLIB_D=$fipslibdir
521BASEADDR=$baseaddr
522FIPS_PREMAIN_SRC=$fips_premain_c_path
523O_FIPSCANISTER=$fips_canister_path
524FIPS_SHA1_EXE=$fips_sha1_exe_path
525PREMAIN_DSO_EXE=$fips_premain_dso_exe_path
526 349
527###################################################### 350######################################################
528# You should not need to touch anything below this point 351# You should not need to touch anything below this point
@@ -554,7 +377,7 @@ SO_CRYPTO= $plib\$(CRYPTO)$so_shlibp
554L_SSL= \$(LIB_D)$o$plib\$(SSL)$libp 377L_SSL= \$(LIB_D)$o$plib\$(SSL)$libp
555L_CRYPTO= \$(LIB_D)$o$plib\$(CRYPTO)$libp 378L_CRYPTO= \$(LIB_D)$o$plib\$(CRYPTO)$libp
556 379
557L_LIBS= \$(L_SSL) \$(L_CRYPTO) $ex_l_libs 380L_LIBS= \$(L_SSL) \$(L_CRYPTO)
558 381
559###################################################### 382######################################################
560# Don't touch anything below this point 383# Don't touch anything below this point
@@ -564,13 +387,13 @@ INC=-I\$(INC_D) -I\$(INCL_D)
564APP_CFLAGS=\$(INC) \$(CFLAG) \$(APP_CFLAG) 387APP_CFLAGS=\$(INC) \$(CFLAG) \$(APP_CFLAG)
565LIB_CFLAGS=\$(INC) \$(CFLAG) \$(LIB_CFLAG) 388LIB_CFLAGS=\$(INC) \$(CFLAG) \$(LIB_CFLAG)
566SHLIB_CFLAGS=\$(INC) \$(CFLAG) \$(LIB_CFLAG) \$(SHLIB_CFLAG) 389SHLIB_CFLAGS=\$(INC) \$(CFLAG) \$(LIB_CFLAG) \$(SHLIB_CFLAG)
567LIBS_DEP=\$(O_CRYPTO) \$(O_SSL) $ex_libs_dep 390LIBS_DEP=\$(O_CRYPTO) \$(O_SSL)
568 391
569############################################# 392#############################################
570EOF 393EOF
571 394
572$rules=<<"EOF"; 395$rules=<<"EOF";
573all: banner \$(TMP_D) \$(BIN_D) \$(TEST_D) \$(LIB_D) \$(INCO_D) headers \$(FIPS_SHA1_EXE) lib exe $ex_build_targets 396all: banner \$(TMP_D) \$(BIN_D) \$(TEST_D) \$(LIB_D) \$(INCO_D) headers lib exe
574 397
575banner: 398banner:
576$banner 399$banner
@@ -656,6 +479,57 @@ printf OUT " #define DATE \"%s\"\n", scalar gmtime();
656printf OUT "#endif\n"; 479printf OUT "#endif\n";
657close(OUT); 480close(OUT);
658 481
482#############################################
483# We parse in input file and 'store' info for later printing.
484open(IN,"<$infile") || die "unable to open $infile:$!\n";
485$_=<IN>;
486for (;;)
487 {
488 chop;
489
490 ($key,$val)=/^([^=]+)=(.*)/;
491 if ($key eq "RELATIVE_DIRECTORY")
492 {
493 if ($lib ne "")
494 {
495 $uc=$lib;
496 $uc =~ s/^lib(.*)\.a/$1/;
497 $uc =~ tr/a-z/A-Z/;
498 $lib_nam{$uc}=$uc;
499 $lib_obj{$uc}.=$libobj." ";
500 }
501 last if ($val eq "FINISHED");
502 $lib="";
503 $libobj="";
504 $dir=$val;
505 }
506
507 if ($key eq "TEST")
508 { $test.=&var_add($dir,$val); }
509
510 if (($key eq "PROGS") || ($key eq "E_OBJ"))
511 { $e_exe.=&var_add($dir,$val); }
512
513 if ($key eq "LIB")
514 {
515 $lib=$val;
516 $lib =~ s/^.*\/([^\/]+)$/$1/;
517 }
518
519 if ($key eq "EXHEADER")
520 { $exheader.=&var_add($dir,$val); }
521
522 if ($key eq "HEADER")
523 { $header.=&var_add($dir,$val); }
524
525 if ($key eq "LIBOBJ")
526 { $libobj=&var_add($dir,$val); }
527
528 if (!($_=<IN>))
529 { $_="RELATIVE_DIRECTORY=FINISHED\n"; }
530 }
531close(IN);
532
659# Strip of trailing ' ' 533# Strip of trailing ' '
660foreach (keys %lib_obj) { $lib_obj{$_}=&clean_up_ws($lib_obj{$_}); } 534foreach (keys %lib_obj) { $lib_obj{$_}=&clean_up_ws($lib_obj{$_}); }
661$test=&clean_up_ws($test); 535$test=&clean_up_ws($test);
@@ -680,29 +554,6 @@ $rules.=&do_compile_rule("\$(OBJ_D)",$test,"\$(APP_CFLAGS)");
680$defs.=&do_defs("E_OBJ",$e_exe,"\$(OBJ_D)",$obj); 554$defs.=&do_defs("E_OBJ",$e_exe,"\$(OBJ_D)",$obj);
681$rules.=&do_compile_rule("\$(OBJ_D)",$e_exe,'-DMONOLITH $(APP_CFLAGS)'); 555$rules.=&do_compile_rule("\$(OBJ_D)",$e_exe,'-DMONOLITH $(APP_CFLAGS)');
682 556
683# Special case rules for fips_start and fips_end fips_premain_dso
684
685if ($fips)
686 {
687 if ($fips_canister_build)
688 {
689 $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_start$obj",
690 "fips-1.0${o}fips_canister.c",
691 "-DFIPS_START \$(SHLIB_CFLAGS)");
692 $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_end$obj",
693 "fips-1.0${o}fips_canister.c", "\$(SHLIB_CFLAGS)");
694 }
695 $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_standalone_sha1$obj",
696 "fips-1.0${o}sha${o}fips_standalone_sha1.c",
697 "\$(SHLIB_CFLAGS)");
698 $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_sha1dgst$obj",
699 "fips-1.0${o}sha${o}fips_sha1dgst.c",
700 "\$(SHLIB_CFLAGS)") unless $fips_canister_build;
701 $rules.=&cc_compile_target("\$(OBJ_D)${o}\$(E_PREMAIN_DSO)$obj",
702 "fips-1.0${o}fips_premain.c",
703 "-DFINGERPRINT_PREMAIN_DSO_LOAD \$(SHLIB_CFLAGS)");
704 }
705
706foreach (values %lib_nam) 557foreach (values %lib_nam)
707 { 558 {
708 $lib_obj=$lib_obj{$_}; 559 $lib_obj=$lib_obj{$_};
@@ -779,42 +630,16 @@ foreach (split(/\s+/,$test))
779 } 630 }
780 631
781$rules.= &do_lib_rule("\$(SSLOBJ)","\$(O_SSL)",$ssl,$shlib,"\$(SO_SSL)"); 632$rules.= &do_lib_rule("\$(SSLOBJ)","\$(O_SSL)",$ssl,$shlib,"\$(SO_SSL)");
782 633$rules.= &do_lib_rule("\$(CRYPTOOBJ)","\$(O_CRYPTO)",$crypto,$shlib,"\$(SO_CRYPTO)");
783 634
784if ($fips) 635if ($fips)
785 { 636 {
786 if ($shlib) 637 $rules.=&do_link_rule("\$(BIN_D)$o\$(E_EXE)$exep","\$(E_OBJ)","\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)","\$(BIN_D)$o.sha1","\$(BIN_D)$o\$(E_EXE)$exep");
787 {
788 $rules.= &do_lib_rule("\$(CRYPTOOBJ) \$(O_FIPSCANISTER)",
789 "\$(O_CRYPTO)",
790 "$crypto",
791 $shlib, "\$(SO_CRYPTO)", "\$(BASEADDR)");
792 }
793 else
794 {
795 $rules.= &do_lib_rule("\$(CRYPTOOBJ)",
796 "\$(O_CRYPTO)",$crypto,$shlib,"\$(SO_CRYPTO)", "");
797 $rules.= &do_lib_rule("\$(CRYPTOOBJ) \$(O_FIPSCANISTER)",
798 "\$(LIB_D)$o$crypto_compat",$crypto,$shlib,"\$(SO_CRYPTO)", "");
799 }
800 } 638 }
801 else 639else
802 {
803 $rules.= &do_lib_rule("\$(CRYPTOOBJ)","\$(O_CRYPTO)",$crypto,$shlib,
804 "\$(SO_CRYPTO)");
805 }
806
807
808if ($fips)
809 { 640 {
810 $rules.= &do_rlink_rule("\$(O_FIPSCANISTER)", "\$(OBJ_D)${o}fips_start$obj \$(FIPSOBJ) \$(OBJ_D)${o}fips_end$obj", "\$(FIPSLIB_D)${o}fips_standalone_sha1$exep", "") if $fips_canister_build; 641 $rules.=&do_link_rule("\$(BIN_D)$o\$(E_EXE)$exep","\$(E_OBJ)","\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)");
811 $rules.=&do_link_rule("\$(PREMAIN_DSO_EXE)","\$(OBJ_D)${o}\$(E_PREMAIN_DSO)$obj \$(CRYPTOOBJ) \$(O_FIPSCANISTER)","","\$(EX_LIBS)", 1);
812
813 $rules.=&do_link_rule("\$(FIPS_SHA1_EXE)","\$(OBJ_D)${o}fips_standalone_sha1$obj \$(OBJ_D)${o}fips_sha1dgst$obj","","", 1);
814 } 642 }
815
816 $rules.=&do_link_rule("\$(BIN_D)$o\$(E_EXE)$exep","\$(E_OBJ)","\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)",0);
817
818print $defs; 643print $defs;
819 644
820if ($platform eq "linux-elf") { 645if ($platform eq "linux-elf") {
@@ -1110,24 +935,6 @@ sub read_options
1110 elsif (/^shlib$/) { $shlib=1; } 935 elsif (/^shlib$/) { $shlib=1; }
1111 elsif (/^dll$/) { $shlib=1; } 936 elsif (/^dll$/) { $shlib=1; }
1112 elsif (/^shared$/) { } # We just need to ignore it for now... 937 elsif (/^shared$/) { } # We just need to ignore it for now...
1113 elsif (/^zlib$/) { $zlib_opt = 1 if $zlib_opt == 0 }
1114 elsif (/^zlib-dynamic$/){ $zlib_opt = 2; }
1115 elsif (/^--with-krb5-flavor=(.*)$/)
1116 {
1117 my $krb5_flavor = $1;
1118 if ($krb5_flavor =~ /^force-[Hh]eimdal$/)
1119 {
1120 $xcflags="-DKRB5_HEIMDAL $xcflags";
1121 }
1122 elsif ($krb5_flavor =~ /^MIT/i)
1123 {
1124 $xcflags="-DKRB5_MIT $xcflags";
1125 if ($krb5_flavor =~ /^MIT[._-]*1[._-]*[01]/i)
1126 {
1127 $xcflags="-DKRB5_MIT_OLD11 $xcflags"
1128 }
1129 }
1130 }
1131 elsif (/^([^=]*)=(.*)$/){ $VARS{$1}=$2; } 938 elsif (/^([^=]*)=(.*)$/){ $VARS{$1}=$2; }
1132 elsif (/^-[lL].*$/) { $l_flags.="$_ "; } 939 elsif (/^-[lL].*$/) { $l_flags.="$_ "; }
1133 elsif ((!/^-help/) && (!/^-h/) && (!/^-\?/) && /^-.*$/) 940 elsif ((!/^-help/) && (!/^-h/) && (!/^-\?/) && /^-.*$/)
@@ -1135,31 +942,3 @@ sub read_options
1135 else { return(0); } 942 else { return(0); }
1136 return(1); 943 return(1);
1137 } 944 }
1138
1139sub fipslib_error
1140 {
1141 print STDERR "***FIPS module directory sanity check failed***\n";
1142 print STDERR "FIPS module build failed, or was deleted\n";
1143 print STDERR "Please rebuild FIPS module.\n";
1144 exit 1;
1145 }
1146
1147sub fips_check_files
1148 {
1149 my $dir = shift @_;
1150 my $ret = 1;
1151 if (!-d $dir)
1152 {
1153 print STDERR "FIPS module directory $dir does not exist\n";
1154 fipslib_error();
1155 }
1156 foreach (@_)
1157 {
1158 if (!-f "$dir${o}$_")
1159 {
1160 print STDERR "FIPS module file $_ does not exist!\n";
1161 $ret = 0;
1162 }
1163 }
1164 fipslib_error() if ($ret == 0);
1165 }
diff --git a/src/lib/libssl/src/util/mkdef.pl b/src/lib/libssl/src/util/mkdef.pl
index 6c1e53bb14..9918c3d549 100644
--- a/src/lib/libssl/src/util/mkdef.pl
+++ b/src/lib/libssl/src/util/mkdef.pl
@@ -83,7 +83,7 @@ my @known_platforms = ( "__FreeBSD__", "PERL5", "NeXT",
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 "RIPEMD",
87 "MDC2", "RSA", "DSA", "DH", "EC", "HMAC", "AES", 87 "MDC2", "RSA", "DSA", "DH", "EC", "HMAC", "AES",
88 # Envelope "algorithms" 88 # Envelope "algorithms"
89 "EVP", "X509", "ASN1_TYPEDEFS", 89 "EVP", "X509", "ASN1_TYPEDEFS",
@@ -267,7 +267,7 @@ $crypto.=" crypto/ocsp/ocsp.h";
267$crypto.=" crypto/ui/ui.h crypto/ui/ui_compat.h"; 267$crypto.=" crypto/ui/ui.h crypto/ui/ui_compat.h";
268$crypto.=" crypto/krb5/krb5_asn.h"; 268$crypto.=" crypto/krb5/krb5_asn.h";
269$crypto.=" crypto/tmdiff.h"; 269$crypto.=" crypto/tmdiff.h";
270$crypto.=" fips-1.0/fips.h fips-1.0/rand/fips_rand.h fips-1.0/sha/fips_sha.h"; 270$crypto.=" fips/fips.h fips/rand/fips_rand.h";
271 271
272my $symhacks="crypto/symhacks.h"; 272my $symhacks="crypto/symhacks.h";
273 273
@@ -864,9 +864,6 @@ sub do_defs
864 $a .= ",RSA" if($s =~ /PEM_Seal(Final|Init|Update)/); 864 $a .= ",RSA" if($s =~ /PEM_Seal(Final|Init|Update)/);
865 $a .= ",RSA" if($s =~ /RSAPrivateKey/); 865 $a .= ",RSA" if($s =~ /RSAPrivateKey/);
866 $a .= ",RSA" if($s =~ /SSLv23?_((client|server)_)?method/); 866 $a .= ",RSA" if($s =~ /SSLv23?_((client|server)_)?method/);
867 # SHA2 algorithms only defined in FIPS mode for
868 # OpenSSL 0.9.7
869 $p .= "OPENSSL_FIPS" if($s =~ /SHA[235]/);
870 867
871 $platform{$s} = 868 $platform{$s} =
872 &reduce_platforms((defined($platform{$s})?$platform{$s}.',':"").$p); 869 &reduce_platforms((defined($platform{$s})?$platform{$s}.',':"").$p);
@@ -1014,7 +1011,7 @@ sub is_valid
1014{ 1011{
1015 my ($keywords_txt,$platforms) = @_; 1012 my ($keywords_txt,$platforms) = @_;
1016 my (@keywords) = split /,/,$keywords_txt; 1013 my (@keywords) = split /,/,$keywords_txt;
1017 my ($falsesum, $truesum) = (0, 1); 1014 my ($falsesum, $truesum) = (0, !grep(/^[^!]/,@keywords));
1018 1015
1019 # Param: one keyword 1016 # Param: one keyword
1020 sub recognise 1017 sub recognise
@@ -1082,7 +1079,7 @@ sub is_valid
1082 if ($k =~ /^!(.*)$/) { 1079 if ($k =~ /^!(.*)$/) {
1083 $falsesum += &recognise($1,$platforms); 1080 $falsesum += &recognise($1,$platforms);
1084 } else { 1081 } else {
1085 $truesum *= &recognise($k,$platforms); 1082 $truesum += &recognise($k,$platforms);
1086 } 1083 }
1087 } 1084 }
1088 print STDERR "DEBUG: [",$#keywords,",",$#keywords < 0,"] is_valid($keywords_txt) => (\!$falsesum) && $truesum = ",(!$falsesum) && $truesum,"\n" if $debug; 1085 print STDERR "DEBUG: [",$#keywords,",",$#keywords < 0,"] is_valid($keywords_txt) => (\!$falsesum) && $truesum = ",(!$falsesum) && $truesum,"\n" if $debug;
diff --git a/src/lib/libssl/src/util/mkerr.pl b/src/lib/libssl/src/util/mkerr.pl
index 9678514604..60e534807e 100644
--- a/src/lib/libssl/src/util/mkerr.pl
+++ b/src/lib/libssl/src/util/mkerr.pl
@@ -9,9 +9,6 @@ my $reindex = 0;
9my $dowrite = 0; 9my $dowrite = 0;
10my $staticloader = ""; 10my $staticloader = "";
11 11
12my $pack_errcode;
13my $load_errcode;
14
15while (@ARGV) { 12while (@ARGV) {
16 my $arg = $ARGV[0]; 13 my $arg = $ARGV[0];
17 if($arg eq "-conf") { 14 if($arg eq "-conf") {
@@ -44,8 +41,8 @@ while (@ARGV) {
44} 41}
45 42
46if($recurse) { 43if($recurse) {
47 @source = (<crypto/*.c>, <crypto/*/*.c>, <ssl/*.c>, <fips-1.0/*.c>, 44 @source = (<crypto/*.c>, <crypto/*/*.c>, <ssl/*.c>, <fips/*.c>,
48 <fips-1.0/*/*.c>); 45 <fips/*/*.c>);
49} else { 46} else {
50 @source = @ARGV; 47 @source = @ARGV;
51} 48}
@@ -402,20 +399,6 @@ EOF
402 $hincf = "\"$hfile\""; 399 $hincf = "\"$hfile\"";
403 } 400 }
404 401
405 # If static we know the error code at compile time so use it
406 # in error definitions.
407
408 if ($static)
409 {
410 $pack_errcode = "ERR_LIB_${lib}";
411 $load_errcode = "0";
412 }
413 else
414 {
415 $pack_errcode = "0";
416 $load_errcode = "ERR_LIB_${lib}";
417 }
418
419 402
420 open (OUT,">$cfile") || die "Can't open $cfile for writing"; 403 open (OUT,">$cfile") || die "Can't open $cfile for writing";
421 404
@@ -486,10 +469,6 @@ EOF
486 469
487/* BEGIN ERROR CODES */ 470/* BEGIN ERROR CODES */
488#ifndef OPENSSL_NO_ERR 471#ifndef OPENSSL_NO_ERR
489
490#define ERR_FUNC(func) ERR_PACK($pack_errcode,func,0)
491#define ERR_REASON(reason) ERR_PACK($pack_errcode,0,reason)
492
493static ERR_STRING_DATA ${lib}_str_functs[]= 472static ERR_STRING_DATA ${lib}_str_functs[]=
494 { 473 {
495EOF 474EOF
@@ -501,8 +480,7 @@ EOF
501 if(exists $ftrans{$fn}) { 480 if(exists $ftrans{$fn}) {
502 $fn = $ftrans{$fn}; 481 $fn = $ftrans{$fn};
503 } 482 }
504# print OUT "{ERR_PACK($pack_errcode,$i,0),\t\"$fn\"},\n"; 483 print OUT "{ERR_PACK(0,$i,0),\t\"$fn\"},\n";
505 print OUT "{ERR_FUNC($i),\t\"$fn\"},\n";
506 } 484 }
507 print OUT <<"EOF"; 485 print OUT <<"EOF";
508{0,NULL} 486{0,NULL}
@@ -514,7 +492,6 @@ EOF
514 # Add each reason code. 492 # Add each reason code.
515 foreach $i (@reasons) { 493 foreach $i (@reasons) {
516 my $rn; 494 my $rn;
517 my $rstr = "ERR_REASON($i)";
518 my $nspc = 0; 495 my $nspc = 0;
519 if (exists $err_reason_strings{$i}) { 496 if (exists $err_reason_strings{$i}) {
520 $rn = $err_reason_strings{$i}; 497 $rn = $err_reason_strings{$i};
@@ -523,9 +500,9 @@ EOF
523 $rn = $1; 500 $rn = $1;
524 $rn =~ tr/_[A-Z]/ [a-z]/; 501 $rn =~ tr/_[A-Z]/ [a-z]/;
525 } 502 }
526 $nspc = 40 - length($rstr) unless length($rstr) > 40; 503 $nspc = 40 - length($i) unless length($i) > 40;
527 $nspc = " " x $nspc; 504 $nspc = " " x $nspc;
528 print OUT "{${rstr}${nspc},\"$rn\"},\n"; 505 print OUT "{${i}${nspc},\"$rn\"},\n";
529 } 506 }
530if($static) { 507if($static) {
531 print OUT <<"EOF"; 508 print OUT <<"EOF";
@@ -542,8 +519,8 @@ ${staticloader}void ERR_load_${lib}_strings(void)
542 { 519 {
543 init=0; 520 init=0;
544#ifndef OPENSSL_NO_ERR 521#ifndef OPENSSL_NO_ERR
545 ERR_load_strings($load_errcode,${lib}_str_functs); 522 ERR_load_strings(ERR_LIB_${lib},${lib}_str_functs);
546 ERR_load_strings($load_errcode,${lib}_str_reasons); 523 ERR_load_strings(ERR_LIB_${lib},${lib}_str_reasons);
547#endif 524#endif
548 525
549 } 526 }
diff --git a/src/lib/libssl/src/util/mkfiles.pl b/src/lib/libssl/src/util/mkfiles.pl
index bc78510f56..928a274303 100644
--- a/src/lib/libssl/src/util/mkfiles.pl
+++ b/src/lib/libssl/src/util/mkfiles.pl
@@ -51,15 +51,14 @@ my @dirs = (
51"crypto/ocsp", 51"crypto/ocsp",
52"crypto/ui", 52"crypto/ui",
53"crypto/krb5", 53"crypto/krb5",
54"fips-1.0", 54"fips",
55"fips-1.0/aes", 55"fips/aes",
56"fips-1.0/des", 56"fips/des",
57"fips-1.0/dsa", 57"fips/dsa",
58"fips-1.0/dh", 58"fips/dh",
59"fips-1.0/hmac", 59"fips/rand",
60"fips-1.0/rand", 60"fips/rsa",
61"fips-1.0/rsa", 61"fips/sha1",
62"fips-1.0/sha",
63"ssl", 62"ssl",
64"apps", 63"apps",
65"test", 64"test",
diff --git a/src/lib/libssl/src/util/mklink.pl b/src/lib/libssl/src/util/mklink.pl
index 182732d959..c8653cecc3 100644
--- a/src/lib/libssl/src/util/mklink.pl
+++ b/src/lib/libssl/src/util/mklink.pl
@@ -14,16 +14,13 @@
14# not contain symbolic links and that the parent of / is never referenced. 14# not contain symbolic links and that the parent of / is never referenced.
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#
18
19use Cwd;
20 17
21my $from = shift; 18my $from = shift;
22my @files = @ARGV; 19my @files = @ARGV;
23 20
24my @from_path = split(/[\\\/]/, $from); 21my @from_path = split(/[\\\/]/, $from);
25my $pwd = getcwd(); 22my $pwd = `pwd`;
26chomp($pwd); 23chop($pwd);
27my @pwd_path = split(/[\\\/]/, $pwd); 24my @pwd_path = split(/[\\\/]/, $pwd);
28 25
29my @to_path = (); 26my @to_path = ();
diff --git a/src/lib/libssl/src/util/pl/BC-32.pl b/src/lib/libssl/src/util/pl/BC-32.pl
index 28869c868d..897ae9d824 100644
--- a/src/lib/libssl/src/util/pl/BC-32.pl
+++ b/src/lib/libssl/src/util/pl/BC-32.pl
@@ -18,7 +18,7 @@ $out_def="out32";
18$tmp_def="tmp32"; 18$tmp_def="tmp32";
19$inc_def="inc32"; 19$inc_def="inc32";
20#enable max error messages, disable most common warnings 20#enable max error messages, disable most common warnings
21$cflags="-DWIN32_LEAN_AND_MEAN -q -w-ccc -w-rch -w-pia -w-aus -w-par -w-inl -c -tWC -tWM -DOPENSSL_SYSNAME_WIN32 -DL_ENDIAN -DDSO_WIN32 -D_stricmp=stricmp -D_strnicmp=strnicmp "; 21$cflags="-DWIN32_LEAN_AND_MEAN -q -w-aus -w-par -w-inl -c -tWC -tWM -DOPENSSL_SYSNAME_WIN32 -DL_ENDIAN -DDSO_WIN32 -D_stricmp=stricmp ";
22if ($debug) 22if ($debug)
23{ 23{
24 $cflags.="-Od -y -v -vi- -D_DEBUG"; 24 $cflags.="-Od -y -v -vi- -D_DEBUG";
@@ -51,7 +51,7 @@ $lfile='';
51$shlib_ex_obj=""; 51$shlib_ex_obj="";
52$app_ex_obj="c0x32.obj"; 52$app_ex_obj="c0x32.obj";
53 53
54$asm='nasmw -f obj -d__omf__'; 54$asm='nasmw -f obj';
55$asm.=" /Zi" if $debug; 55$asm.=" /Zi" if $debug;
56$afile='-o'; 56$afile='-o';
57 57
@@ -106,13 +106,9 @@ sub do_lib_rule
106 $ret.="$target: $objs\n"; 106 $ret.="$target: $objs\n";
107 if (!$shlib) 107 if (!$shlib)
108 { 108 {
109 $ret.=<<___; 109 # $ret.="\t\$(RM) \$(O_$Name)\n";
110 -\$(RM) $lfile$target 110 $ret.="\techo LIB $<\n";
111 \$(MKLIB) $lfile$target \@&&! 111 $ret.="\t&\$(MKLIB) $lfile$target -+\$**\n";
112+\$(**: = &^
113+)
114!
115___
116 } 112 }
117 else 113 else
118 { 114 {
diff --git a/src/lib/libssl/src/util/pl/OS2-EMX.pl b/src/lib/libssl/src/util/pl/OS2-EMX.pl
index 8dbeaa7a08..75d72ebbcb 100644
--- a/src/lib/libssl/src/util/pl/OS2-EMX.pl
+++ b/src/lib/libssl/src/util/pl/OS2-EMX.pl
@@ -68,7 +68,6 @@ if (!$no_asm && !$fips)
68 $sha1_asm_src="crypto/sha/asm/s1-os2.asm"; 68 $sha1_asm_src="crypto/sha/asm/s1-os2.asm";
69 $rmd160_asm_obj="crypto/ripemd/asm/rm-os2$obj"; 69 $rmd160_asm_obj="crypto/ripemd/asm/rm-os2$obj";
70 $rmd160_asm_src="crypto/ripemd/asm/rm-os2.asm"; 70 $rmd160_asm_src="crypto/ripemd/asm/rm-os2.asm";
71 $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DOPENSSL_BN_ASM_PART_WORDS";
72 } 71 }
73 72
74if ($shlib) 73if ($shlib)
diff --git a/src/lib/libssl/src/util/pl/VC-32.pl b/src/lib/libssl/src/util/pl/VC-32.pl
index 4e97dfa9af..cf689b9feb 100644
--- a/src/lib/libssl/src/util/pl/VC-32.pl
+++ b/src/lib/libssl/src/util/pl/VC-32.pl
@@ -3,28 +3,15 @@
3# 3#
4 4
5$ssl= "ssleay32"; 5$ssl= "ssleay32";
6 6$crypto="libeay32";
7if ($fips && !$shlib)
8 {
9 $crypto="libeayfips32";
10 $crypto_compat = "libeaycompat32.lib";
11 }
12else
13 {
14 $crypto="libeay32";
15 }
16 7
17$o='\\'; 8$o='\\';
18$cp='copy nul+'; # Timestamps get stuffed otherwise 9$cp='copy nul+'; # Timestamps get stuffed otherwise
19$rm='del'; 10$rm='del';
20 11
21$zlib_lib="zlib1.lib";
22
23# C compiler stuff 12# C compiler stuff
24$cc='cl'; 13$cc='cl';
25$cflags=' /MD /W3 /WX /Ox /O2 /Ob2 /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32'; 14$cflags=' /MD /W3 /WX /G5 /Ox /O2 /Ob2 /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32';
26$cflags.=' -D_CRT_SECURE_NO_DEPRECATE'; # shut up VC8
27$cflags.=' -D_CRT_NONSTDC_NO_DEPRECATE'; # shut up VC8
28$lflags="/nologo /subsystem:console /machine:I386 /opt:ref"; 15$lflags="/nologo /subsystem:console /machine:I386 /opt:ref";
29$mlflags=''; 16$mlflags='';
30 17
@@ -113,56 +100,25 @@ $cflags.=" /Fd$out_def";
113 100
114sub do_lib_rule 101sub do_lib_rule
115 { 102 {
116 local($objs,$target,$name,$shlib,$ign,$base_addr) = @_; 103 local($objs,$target,$name,$shlib)=@_;
117 local($ret,$Name); 104 local($ret,$Name);
118 105
119 $taget =~ s/\//$o/g if $o ne '/'; 106 $taget =~ s/\//$o/g if $o ne '/';
120 ($Name=$name) =~ tr/a-z/A-Z/; 107 ($Name=$name) =~ tr/a-z/A-Z/;
121 my $base_arg;
122 if ($base_addr ne "")
123 {
124 $base_arg= " /base:$base_addr";
125 }
126 else
127 {
128 $base_arg = "";
129 }
130
131 108
132# $target="\$(LIB_D)$o$target"; 109# $target="\$(LIB_D)$o$target";
110 $ret.="$target: $objs\n";
133 if (!$shlib) 111 if (!$shlib)
134 { 112 {
135# $ret.="\t\$(RM) \$(O_$Name)\n"; 113# $ret.="\t\$(RM) \$(O_$Name)\n";
136 $ret.="$target: $objs\n";
137 $ex =' advapi32.lib'; 114 $ex =' advapi32.lib';
138 $ex.=" \$(FIPSLIB_D)${o}_chkstk.o" if $fips && $target =~ /O_CRYPTO/;
139 $ret.="\t\$(MKLIB) $lfile$target @<<\n $objs $ex\n<<\n"; 115 $ret.="\t\$(MKLIB) $lfile$target @<<\n $objs $ex\n<<\n";
140 } 116 }
141 else 117 else
142 { 118 {
143 local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':''; 119 local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':'';
144 $ex.=' wsock32.lib gdi32.lib advapi32.lib user32.lib'; 120 $ex.=' wsock32.lib gdi32.lib advapi32.lib';
145 $ex.=" $zlib_lib" if $zlib_opt == 1 && $target =~ /O_CRYPTO/; 121 $ret.="\t\$(LINK) \$(MLFLAGS) $efile$target /def:ms/${Name}.def @<<\n \$(SHLIB_EX_OBJ) $objs $ex\n<<\n";
146 if ($fips && $target =~ /O_CRYPTO/)
147 {
148 $ex.=" \$(FIPSLIB_D)${o}_chkstk.o";
149 $ret.="$target: $objs \$(PREMAIN_DSO_EXE)\n";
150 $ret.="\tSET FIPS_LINK=\$(LINK)\n";
151 $ret.="\tSET FIPS_CC=\$(CC)\n";
152 $ret.="\tSET FIPS_CC_ARGS=/Fo\$(OBJ_D)${o}fips_premain.obj \$(SHLIB_CFLAGS) -c\n";
153 $ret.="\tSET PREMAIN_DSO_EXE=\$(PREMAIN_DSO_EXE)\n";
154 $ret.="\tSET FIPS_SHA1_EXE=\$(FIPS_SHA1_EXE)\n";
155 $ret.="\tSET FIPS_TARGET=$target\n";
156 $ret.="\tSET FIPSLIB_D=\$(FIPSLIB_D)\n";
157 $ret.="\t\$(FIPSLINK) \$(MLFLAGS) $base_arg $efile$target ";
158 $ret.="/def:ms/${Name}.def @<<\n \$(SHLIB_EX_OBJ) $objs ";
159 $ret.="\$(OBJ_D)${o}fips_premain.obj $ex\n<<\n";
160 }
161 else
162 {
163 $ret.="$target: $objs\n";
164 $ret.="\t\$(LINK) \$(MLFLAGS) $base_arg $efile$target /def:ms/${Name}.def @<<\n \$(SHLIB_EX_OBJ) $objs $ex\n<<\n";
165 }
166 } 122 }
167 $ret.="\n"; 123 $ret.="\n";
168 return($ret); 124 return($ret);
@@ -170,51 +126,20 @@ sub do_lib_rule
170 126
171sub do_link_rule 127sub do_link_rule
172 { 128 {
173 local($target,$files,$dep_libs,$libs,$standalone)=@_; 129 local($target,$files,$dep_libs,$libs,$sha1file,$openssl)=@_;
174 local($ret,$_); 130 local($ret,$_);
131
175 $file =~ s/\//$o/g if $o ne '/'; 132 $file =~ s/\//$o/g if $o ne '/';
176 $n=&bname($targer); 133 $n=&bname($targer);
177 $ret.="$target: $files $dep_libs\n"; 134 $ret.="$target: $files $dep_libs\n";
178 if ($standalone) 135 $ret.=" \$(LINK) \$(LFLAGS) $efile$target @<<\n";
179 { 136 $ret.=" \$(APP_EX_OBJ) $files $libs\n<<\n";
180 $ret.=" \$(LINK) \$(LFLAGS) $efile$target @<<\n\t"; 137 if (defined $sha1file)
181 $ret.="\$(FIPSLIB_D)${o}_chkstk.o " if ($files =~ /O_FIPSCANISTER/);
182 $ret.="$files $libs\n<<\n";
183 }
184 elsif ($fips && !$shlib)
185 { 138 {
186 $ret.="\tSET FIPS_LINK=\$(LINK)\n"; 139 $ret.=" $openssl sha1 -hmac etaonrishdlcupfm -binary $target > $sha1file";
187 $ret.="\tSET FIPS_CC=\$(CC)\n";
188 $ret.="\tSET FIPS_CC_ARGS=/Fo\$(OBJ_D)${o}fips_premain.obj \$(SHLIB_CFLAGS) -c\n";
189 $ret.="\tSET PREMAIN_DSO_EXE=\n";
190 $ret.="\tSET FIPS_TARGET=$target\n";
191 $ret.="\tSET FIPS_SHA1_EXE=\$(FIPS_SHA1_EXE)\n";
192 $ret.="\tSET FIPSLIB_D=\$(FIPSLIB_D)\n";
193 $ret.=" \$(FIPSLINK) \$(LFLAGS) $efile$target @<<\n";
194 $ret.=" \$(APP_EX_OBJ) $files \$(OBJ_D)${o}fips_premain.obj $libs\n<<\n";
195 } 140 }
196 else
197 {
198 $ret.=" \$(LINK) \$(LFLAGS) $efile$target @<<\n";
199 $ret.=" \$(APP_EX_OBJ) $files $libs\n<<\n";
200 }
201 $ret.="\n";
202 return($ret);
203 }
204
205sub do_rlink_rule
206 {
207 local($target,$files,$dep_libs,$libs)=@_;
208 local($ret,$_);
209
210 $file =~ s/\//$o/g if $o ne '/';
211 $n=&bname($targer);
212 $ret.="$target: $files $dep_libs\n";
213 $ret.=" \$(MKCANISTER) $target <<\n";
214 $ret.="INPUT($files)\n<<\n";
215 $ret.="\n"; 141 $ret.="\n";
216 return($ret); 142 return($ret);
217 } 143 }
218 144
219
2201; 1451;
diff --git a/src/lib/libssl/src/util/pod2man.pl b/src/lib/libssl/src/util/pod2man.pl
index 546d1ec186..657e4e264e 100644
--- a/src/lib/libssl/src/util/pod2man.pl
+++ b/src/lib/libssl/src/util/pod2man.pl
@@ -425,7 +425,6 @@ 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
429 die "$0: Invalid man page - 1st pod line is not NAME in $ARGV[0]\n" unless $lax; 428 die "$0: Invalid man page - 1st pod line is not NAME in $ARGV[0]\n" unless $lax;
430 } 429 }
431 die "$0: Invalid man page - no documentation in $ARGV[0]\n" unless $lax; 430 die "$0: Invalid man page - no documentation in $ARGV[0]\n" unless $lax;
diff --git a/src/lib/libssl/src/util/selftest.pl b/src/lib/libssl/src/util/selftest.pl
index 4778c5ab01..e9d5aa8938 100644
--- a/src/lib/libssl/src/util/selftest.pl
+++ b/src/lib/libssl/src/util/selftest.pl
@@ -49,7 +49,7 @@ if (open(IN,"<Makefile")) {
49} 49}
50 50
51$cversion=`$cc -v 2>&1`; 51$cversion=`$cc -v 2>&1`;
52$cversion=`$cc -V 2>&1` if $cversion =~ "[Uu]sage"; 52$cversion=`$cc -V 2>&1` if $cversion =~ "usage";
53$cversion=`$cc -V |head -1` if $cversion =~ "Error"; 53$cversion=`$cc -V |head -1` if $cversion =~ "Error";
54$cversion=`$cc --version` if $cversion eq ""; 54$cversion=`$cc --version` if $cversion eq "";
55$cversion =~ s/Reading specs.*\n//; 55$cversion =~ s/Reading specs.*\n//;
@@ -130,21 +130,15 @@ if (system("make 2>&1 | tee make.log") > 255) {
130 goto err; 130 goto err;
131} 131}
132 132
133# Not sure why this is here. The tests themselves can detect if their 133$_=$options;
134# particular feature isn't included, and should therefore skip themselves. 134s/no-asm//;
135# To skip *all* tests just because one algorithm isn't included is like 135s/no-shared//;
136# shooting mosquito with an elephant gun... 136s/no-krb5//;
137# -- Richard Levitte, inspired by problem report 1089 137if (/no-/)
138# 138{
139#$_=$options; 139 print OUT "Test skipped.\n";
140#s/no-asm//; 140 goto err;
141#s/no-shared//; 141}
142#s/no-krb5//;
143#if (/no-/)
144#{
145# print OUT "Test skipped.\n";
146# goto err;
147#}
148 142
149print "Running make test...\n"; 143print "Running make test...\n";
150if (system("make test 2>&1 | tee maketest.log") > 255) 144if (system("make test 2>&1 | tee maketest.log") > 255)
diff --git a/src/lib/libssl/ssl.h b/src/lib/libssl/ssl.h
new file mode 100644
index 0000000000..3161f532cf
--- /dev/null
+++ b/src/lib/libssl/ssl.h
@@ -0,0 +1,1858 @@
1/* ssl/ssl.h */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58/* ====================================================================
59 * Copyright (c) 1998-2001 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 (c) 1998-2002 The OpenSSL Project. All rights reserved.
113 *
114 * Redistribution and use in source and binary forms, with or without
115 * modification, are permitted provided that the following conditions
116 * are met:
117 *
118 * 1. Redistributions of source code must retain the above copyright
119 * notice, this list of conditions and the following disclaimer.
120 *
121 * 2. Redistributions in binary form must reproduce the above copyright
122 * notice, this list of conditions and the following disclaimer in
123 * the documentation and/or other materials provided with the
124 * distribution.
125 *
126 * 3. All advertising materials mentioning features or use of this
127 * software must display the following acknowledgment:
128 * "This product includes software developed by the OpenSSL Project
129 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
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 *
163 */
164
165#ifndef HEADER_SSL_H
166#define HEADER_SSL_H
167
168#include <openssl/e_os2.h>
169
170#ifndef OPENSSL_NO_COMP
171#include <openssl/comp.h>
172#endif
173#ifndef OPENSSL_NO_BIO
174#include <openssl/bio.h>
175#endif
176#ifndef OPENSSL_NO_X509
177#include <openssl/x509.h>
178#endif
179#include <openssl/kssl.h>
180#include <openssl/safestack.h>
181#include <openssl/symhacks.h>
182
183#ifdef __cplusplus
184extern "C" {
185#endif
186
187/* SSLeay version number for ASN.1 encoding of the session information */
188/* Version 0 - initial version
189 * Version 1 - added the optional peer certificate
190 */
191#define SSL_SESSION_ASN1_VERSION 0x0001
192
193/* text strings for the ciphers */
194#define SSL_TXT_NULL_WITH_MD5 SSL2_TXT_NULL_WITH_MD5
195#define SSL_TXT_RC4_128_WITH_MD5 SSL2_TXT_RC4_128_WITH_MD5
196#define SSL_TXT_RC4_128_EXPORT40_WITH_MD5 SSL2_TXT_RC4_128_EXPORT40_WITH_MD5
197#define SSL_TXT_RC2_128_CBC_WITH_MD5 SSL2_TXT_RC2_128_CBC_WITH_MD5
198#define SSL_TXT_RC2_128_CBC_EXPORT40_WITH_MD5 SSL2_TXT_RC2_128_CBC_EXPORT40_WITH_MD5
199#define SSL_TXT_IDEA_128_CBC_WITH_MD5 SSL2_TXT_IDEA_128_CBC_WITH_MD5
200#define SSL_TXT_DES_64_CBC_WITH_MD5 SSL2_TXT_DES_64_CBC_WITH_MD5
201#define SSL_TXT_DES_64_CBC_WITH_SHA SSL2_TXT_DES_64_CBC_WITH_SHA
202#define SSL_TXT_DES_192_EDE3_CBC_WITH_MD5 SSL2_TXT_DES_192_EDE3_CBC_WITH_MD5
203#define SSL_TXT_DES_192_EDE3_CBC_WITH_SHA SSL2_TXT_DES_192_EDE3_CBC_WITH_SHA
204
205/* VRS Additional Kerberos5 entries
206 */
207#define SSL_TXT_KRB5_DES_64_CBC_SHA SSL3_TXT_KRB5_DES_64_CBC_SHA
208#define SSL_TXT_KRB5_DES_192_CBC3_SHA SSL3_TXT_KRB5_DES_192_CBC3_SHA
209#define SSL_TXT_KRB5_RC4_128_SHA SSL3_TXT_KRB5_RC4_128_SHA
210#define SSL_TXT_KRB5_IDEA_128_CBC_SHA SSL3_TXT_KRB5_IDEA_128_CBC_SHA
211#define SSL_TXT_KRB5_DES_64_CBC_MD5 SSL3_TXT_KRB5_DES_64_CBC_MD5
212#define SSL_TXT_KRB5_DES_192_CBC3_MD5 SSL3_TXT_KRB5_DES_192_CBC3_MD5
213#define SSL_TXT_KRB5_RC4_128_MD5 SSL3_TXT_KRB5_RC4_128_MD5
214#define SSL_TXT_KRB5_IDEA_128_CBC_MD5 SSL3_TXT_KRB5_IDEA_128_CBC_MD5
215
216#define SSL_TXT_KRB5_DES_40_CBC_SHA SSL3_TXT_KRB5_DES_40_CBC_SHA
217#define SSL_TXT_KRB5_RC2_40_CBC_SHA SSL3_TXT_KRB5_RC2_40_CBC_SHA
218#define SSL_TXT_KRB5_RC4_40_SHA SSL3_TXT_KRB5_RC4_40_SHA
219#define SSL_TXT_KRB5_DES_40_CBC_MD5 SSL3_TXT_KRB5_DES_40_CBC_MD5
220#define SSL_TXT_KRB5_RC2_40_CBC_MD5 SSL3_TXT_KRB5_RC2_40_CBC_MD5
221#define SSL_TXT_KRB5_RC4_40_MD5 SSL3_TXT_KRB5_RC4_40_MD5
222
223#define SSL_TXT_KRB5_DES_40_CBC_SHA SSL3_TXT_KRB5_DES_40_CBC_SHA
224#define SSL_TXT_KRB5_DES_40_CBC_MD5 SSL3_TXT_KRB5_DES_40_CBC_MD5
225#define SSL_TXT_KRB5_DES_64_CBC_SHA SSL3_TXT_KRB5_DES_64_CBC_SHA
226#define SSL_TXT_KRB5_DES_64_CBC_MD5 SSL3_TXT_KRB5_DES_64_CBC_MD5
227#define SSL_TXT_KRB5_DES_192_CBC3_SHA SSL3_TXT_KRB5_DES_192_CBC3_SHA
228#define SSL_TXT_KRB5_DES_192_CBC3_MD5 SSL3_TXT_KRB5_DES_192_CBC3_MD5
229#define SSL_MAX_KRB5_PRINCIPAL_LENGTH 256
230
231#define SSL_MAX_SSL_SESSION_ID_LENGTH 32
232#define SSL_MAX_SID_CTX_LENGTH 32
233
234#define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES (512/8)
235#define SSL_MAX_KEY_ARG_LENGTH 8
236#define SSL_MAX_MASTER_KEY_LENGTH 48
237
238/* These are used to specify which ciphers to use and not to use */
239#define SSL_TXT_LOW "LOW"
240#define SSL_TXT_MEDIUM "MEDIUM"
241#define SSL_TXT_HIGH "HIGH"
242#define SSL_TXT_FIPS "FIPS"
243#define SSL_TXT_kFZA "kFZA"
244#define SSL_TXT_aFZA "aFZA"
245#define SSL_TXT_eFZA "eFZA"
246#define SSL_TXT_FZA "FZA"
247
248#define SSL_TXT_aNULL "aNULL"
249#define SSL_TXT_eNULL "eNULL"
250#define SSL_TXT_NULL "NULL"
251
252#define SSL_TXT_kKRB5 "kKRB5"
253#define SSL_TXT_aKRB5 "aKRB5"
254#define SSL_TXT_KRB5 "KRB5"
255
256#define SSL_TXT_kRSA "kRSA"
257#define SSL_TXT_kDHr "kDHr"
258#define SSL_TXT_kDHd "kDHd"
259#define SSL_TXT_kEDH "kEDH"
260#define SSL_TXT_aRSA "aRSA"
261#define SSL_TXT_aDSS "aDSS"
262#define SSL_TXT_aDH "aDH"
263#define SSL_TXT_DSS "DSS"
264#define SSL_TXT_DH "DH"
265#define SSL_TXT_EDH "EDH"
266#define SSL_TXT_ADH "ADH"
267#define SSL_TXT_RSA "RSA"
268#define SSL_TXT_DES "DES"
269#define SSL_TXT_3DES "3DES"
270#define SSL_TXT_RC4 "RC4"
271#define SSL_TXT_RC2 "RC2"
272#define SSL_TXT_IDEA "IDEA"
273#define SSL_TXT_AES "AES"
274#define SSL_TXT_MD5 "MD5"
275#define SSL_TXT_SHA1 "SHA1"
276#define SSL_TXT_SHA "SHA"
277#define SSL_TXT_EXP "EXP"
278#define SSL_TXT_EXPORT "EXPORT"
279#define SSL_TXT_EXP40 "EXPORT40"
280#define SSL_TXT_EXP56 "EXPORT56"
281#define SSL_TXT_SSLV2 "SSLv2"
282#define SSL_TXT_SSLV3 "SSLv3"
283#define SSL_TXT_TLSV1 "TLSv1"
284#define SSL_TXT_ALL "ALL"
285
286/*
287 * COMPLEMENTOF* definitions. These identifiers are used to (de-select)
288 * ciphers normally not being used.
289 * Example: "RC4" will activate all ciphers using RC4 including ciphers
290 * without authentication, which would normally disabled by DEFAULT (due
291 * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT"
292 * will make sure that it is also disabled in the specific selection.
293 * COMPLEMENTOF* identifiers are portable between version, as adjustments
294 * to the default cipher setup will also be included here.
295 *
296 * COMPLEMENTOFDEFAULT does not experience the same special treatment that
297 * DEFAULT gets, as only selection is being done and no sorting as needed
298 * for DEFAULT.
299 */
300#define SSL_TXT_CMPALL "COMPLEMENTOFALL"
301#define SSL_TXT_CMPDEF "COMPLEMENTOFDEFAULT"
302
303/* The following cipher list is used by default.
304 * It also is substituted when an application-defined cipher list string
305 * starts with 'DEFAULT'. */
306#define SSL_DEFAULT_CIPHER_LIST "ALL:!ADH:+RC4:@STRENGTH" /* low priority for RC4 */
307
308/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */
309#define SSL_SENT_SHUTDOWN 1
310#define SSL_RECEIVED_SHUTDOWN 2
311
312#ifdef __cplusplus
313}
314#endif
315
316#include <openssl/crypto.h>
317#include <openssl/lhash.h>
318#include <openssl/buffer.h>
319#include <openssl/pem.h>
320
321#ifdef __cplusplus
322extern "C" {
323#endif
324
325#if (defined(OPENSSL_NO_RSA) || defined(OPENSSL_NO_MD5)) && !defined(OPENSSL_NO_SSL2)
326#define OPENSSL_NO_SSL2
327#endif
328
329#define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1
330#define SSL_FILETYPE_PEM X509_FILETYPE_PEM
331
332/* This is needed to stop compilers complaining about the
333 * 'struct ssl_st *' function parameters used to prototype callbacks
334 * in SSL_CTX. */
335typedef struct ssl_st *ssl_crock_st;
336
337/* used to hold info on the particular ciphers used */
338typedef struct ssl_cipher_st
339 {
340 int valid;
341 const char *name; /* text name */
342 unsigned long id; /* id, 4 bytes, first is version */
343 unsigned long algorithms; /* what ciphers are used */
344 unsigned long algo_strength; /* strength and export flags */
345 unsigned long algorithm2; /* Extra flags */
346 int strength_bits; /* Number of bits really used */
347 int alg_bits; /* Number of bits for algorithm */
348 unsigned long mask; /* used for matching */
349 unsigned long mask_strength; /* also used for matching */
350 } SSL_CIPHER;
351
352DECLARE_STACK_OF(SSL_CIPHER)
353
354typedef struct ssl_st SSL;
355typedef struct ssl_ctx_st SSL_CTX;
356
357/* Used to hold functions for SSLv2 or SSLv3/TLSv1 functions */
358typedef struct ssl_method_st
359 {
360 int version;
361 int (*ssl_new)(SSL *s);
362 void (*ssl_clear)(SSL *s);
363 void (*ssl_free)(SSL *s);
364 int (*ssl_accept)(SSL *s);
365 int (*ssl_connect)(SSL *s);
366 int (*ssl_read)(SSL *s,void *buf,int len);
367 int (*ssl_peek)(SSL *s,void *buf,int len);
368 int (*ssl_write)(SSL *s,const void *buf,int len);
369 int (*ssl_shutdown)(SSL *s);
370 int (*ssl_renegotiate)(SSL *s);
371 int (*ssl_renegotiate_check)(SSL *s);
372 long (*ssl_ctrl)(SSL *s,int cmd,long larg,void *parg);
373 long (*ssl_ctx_ctrl)(SSL_CTX *ctx,int cmd,long larg,void *parg);
374 SSL_CIPHER *(*get_cipher_by_char)(const unsigned char *ptr);
375 int (*put_cipher_by_char)(const SSL_CIPHER *cipher,unsigned char *ptr);
376 int (*ssl_pending)(const SSL *s);
377 int (*num_ciphers)(void);
378 SSL_CIPHER *(*get_cipher)(unsigned ncipher);
379 struct ssl_method_st *(*get_ssl_method)(int version);
380 long (*get_timeout)(void);
381 struct ssl3_enc_method *ssl3_enc; /* Extra SSLv3/TLS stuff */
382 int (*ssl_version)();
383 long (*ssl_callback_ctrl)(SSL *s, int cb_id, void (*fp)());
384 long (*ssl_ctx_callback_ctrl)(SSL_CTX *s, int cb_id, void (*fp)());
385 } SSL_METHOD;
386
387/* Lets make this into an ASN.1 type structure as follows
388 * SSL_SESSION_ID ::= SEQUENCE {
389 * version INTEGER, -- structure version number
390 * SSLversion INTEGER, -- SSL version number
391 * Cipher OCTET_STRING, -- the 3 byte cipher ID
392 * Session_ID OCTET_STRING, -- the Session ID
393 * Master_key OCTET_STRING, -- the master key
394 * KRB5_principal OCTET_STRING -- optional Kerberos principal
395 * Key_Arg [ 0 ] IMPLICIT OCTET_STRING, -- the optional Key argument
396 * Time [ 1 ] EXPLICIT INTEGER, -- optional Start Time
397 * Timeout [ 2 ] EXPLICIT INTEGER, -- optional Timeout ins seconds
398 * Peer [ 3 ] EXPLICIT X509, -- optional Peer Certificate
399 * Session_ID_context [ 4 ] EXPLICIT OCTET_STRING, -- the Session ID context
400 * Verify_result [ 5 ] EXPLICIT INTEGER -- X509_V_... code for `Peer'
401 * Compression [6] IMPLICIT ASN1_OBJECT -- compression OID XXXXX
402 * }
403 * Look in ssl/ssl_asn1.c for more details
404 * I'm using EXPLICIT tags so I can read the damn things using asn1parse :-).
405 */
406typedef struct ssl_session_st
407 {
408 int ssl_version; /* what ssl version session info is
409 * being kept in here? */
410
411 /* only really used in SSLv2 */
412 unsigned int key_arg_length;
413 unsigned char key_arg[SSL_MAX_KEY_ARG_LENGTH];
414 int master_key_length;
415 unsigned char master_key[SSL_MAX_MASTER_KEY_LENGTH];
416 /* session_id - valid? */
417 unsigned int session_id_length;
418 unsigned char session_id[SSL_MAX_SSL_SESSION_ID_LENGTH];
419 /* this is used to determine whether the session is being reused in
420 * the appropriate context. It is up to the application to set this,
421 * via SSL_new */
422 unsigned int sid_ctx_length;
423 unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH];
424
425#ifndef OPENSSL_NO_KRB5
426 unsigned int krb5_client_princ_len;
427 unsigned char krb5_client_princ[SSL_MAX_KRB5_PRINCIPAL_LENGTH];
428#endif /* OPENSSL_NO_KRB5 */
429
430 int not_resumable;
431
432 /* The cert is the certificate used to establish this connection */
433 struct sess_cert_st /* SESS_CERT */ *sess_cert;
434
435 /* This is the cert for the other end.
436 * On clients, it will be the same as sess_cert->peer_key->x509
437 * (the latter is not enough as sess_cert is not retained
438 * in the external representation of sessions, see ssl_asn1.c). */
439 X509 *peer;
440 /* when app_verify_callback accepts a session where the peer's certificate
441 * is not ok, we must remember the error for session reuse: */
442 long verify_result; /* only for servers */
443
444 int references;
445 long timeout;
446 long time;
447
448 int compress_meth; /* Need to lookup the method */
449
450 SSL_CIPHER *cipher;
451 unsigned long cipher_id; /* when ASN.1 loaded, this
452 * needs to be used to load
453 * the 'cipher' structure */
454
455 STACK_OF(SSL_CIPHER) *ciphers; /* shared ciphers? */
456
457 CRYPTO_EX_DATA ex_data; /* application specific data */
458
459 /* These are used to make removal of session-ids more
460 * efficient and to implement a maximum cache size. */
461 struct ssl_session_st *prev,*next;
462 } SSL_SESSION;
463
464
465#define SSL_OP_MICROSOFT_SESS_ID_BUG 0x00000001L
466#define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x00000002L
467#define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x00000008L
468#define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x00000010L
469#define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x00000020L
470#define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x00000040L
471#define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x00000080L
472#define SSL_OP_TLS_D5_BUG 0x00000100L
473#define SSL_OP_TLS_BLOCK_PADDING_BUG 0x00000200L
474
475/* Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added
476 * in OpenSSL 0.9.6d. Usually (depending on the application protocol)
477 * the workaround is not needed. Unfortunately some broken SSL/TLS
478 * implementations cannot handle it at all, which is why we include
479 * it in SSL_OP_ALL. */
480#define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS 0x00000800L /* added in 0.9.6e */
481
482/* SSL_OP_ALL: various bug workarounds that should be rather harmless.
483 * This used to be 0x000FFFFFL before 0.9.7. */
484#define SSL_OP_ALL 0x00000FFFL
485
486/* As server, disallow session resumption on renegotiation */
487#define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION 0x00010000L
488/* If set, always create a new key when using tmp_dh parameters */
489#define SSL_OP_SINGLE_DH_USE 0x00100000L
490/* Set to always use the tmp_rsa key when doing RSA operations,
491 * even when this violates protocol specs */
492#define SSL_OP_EPHEMERAL_RSA 0x00200000L
493/* Set on servers to choose the cipher according to the server's
494 * preferences */
495#define SSL_OP_CIPHER_SERVER_PREFERENCE 0x00400000L
496/* If set, a server will allow a client to issue a SSLv3.0 version number
497 * as latest version supported in the premaster secret, even when TLSv1.0
498 * (version 3.1) was announced in the client hello. Normally this is
499 * forbidden to prevent version rollback attacks. */
500#define SSL_OP_TLS_ROLLBACK_BUG 0x00800000L
501
502#define SSL_OP_NO_SSLv2 0x01000000L
503#define SSL_OP_NO_SSLv3 0x02000000L
504#define SSL_OP_NO_TLSv1 0x04000000L
505
506/* The next flag deliberately changes the ciphertest, this is a check
507 * for the PKCS#1 attack */
508#define SSL_OP_PKCS1_CHECK_1 0x08000000L
509#define SSL_OP_PKCS1_CHECK_2 0x10000000L
510#define SSL_OP_NETSCAPE_CA_DN_BUG 0x20000000L
511#define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x40000000L
512
513
514/* Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success
515 * when just a single record has been written): */
516#define SSL_MODE_ENABLE_PARTIAL_WRITE 0x00000001L
517/* Make it possible to retry SSL_write() with changed buffer location
518 * (buffer contents must stay the same!); this is not the default to avoid
519 * the misconception that non-blocking SSL_write() behaves like
520 * non-blocking write(): */
521#define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002L
522/* Never bother the application with retries if the transport
523 * is blocking: */
524#define SSL_MODE_AUTO_RETRY 0x00000004L
525/* Don't attempt to automatically build certificate chain */
526#define SSL_MODE_NO_AUTO_CHAIN 0x00000008L
527
528
529/* Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value,
530 * they cannot be used to clear bits. */
531
532#define SSL_CTX_set_options(ctx,op) \
533 SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL)
534#define SSL_CTX_get_options(ctx) \
535 SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,0,NULL)
536#define SSL_set_options(ssl,op) \
537 SSL_ctrl((ssl),SSL_CTRL_OPTIONS,(op),NULL)
538#define SSL_get_options(ssl) \
539 SSL_ctrl((ssl),SSL_CTRL_OPTIONS,0,NULL)
540
541#define SSL_CTX_set_mode(ctx,op) \
542 SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL)
543#define SSL_CTX_get_mode(ctx) \
544 SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,0,NULL)
545#define SSL_set_mode(ssl,op) \
546 SSL_ctrl((ssl),SSL_CTRL_MODE,(op),NULL)
547#define SSL_get_mode(ssl) \
548 SSL_ctrl((ssl),SSL_CTRL_MODE,0,NULL)
549
550
551void 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));
552void 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));
553#define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg))
554#define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg))
555
556
557
558#if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN32)
559#define SSL_MAX_CERT_LIST_DEFAULT 1024*30 /* 30k max cert list :-) */
560#else
561#define SSL_MAX_CERT_LIST_DEFAULT 1024*100 /* 100k max cert list :-) */
562#endif
563
564#define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024*20)
565
566/* This callback type is used inside SSL_CTX, SSL, and in the functions that set
567 * them. It is used to override the generation of SSL/TLS session IDs in a
568 * server. Return value should be zero on an error, non-zero to proceed. Also,
569 * callbacks should themselves check if the id they generate is unique otherwise
570 * the SSL handshake will fail with an error - callbacks can do this using the
571 * 'ssl' value they're passed by;
572 * SSL_has_matching_session_id(ssl, id, *id_len)
573 * The length value passed in is set at the maximum size the session ID can be.
574 * In SSLv2 this is 16 bytes, whereas SSLv3/TLSv1 it is 32 bytes. The callback
575 * can alter this length to be less if desired, but under SSLv2 session IDs are
576 * supposed to be fixed at 16 bytes so the id will be padded after the callback
577 * returns in this case. It is also an error for the callback to set the size to
578 * zero. */
579typedef int (*GEN_SESSION_CB)(const SSL *ssl, unsigned char *id,
580 unsigned int *id_len);
581
582typedef struct ssl_comp_st
583 {
584 int id;
585 char *name;
586#ifndef OPENSSL_NO_COMP
587 COMP_METHOD *method;
588#else
589 char *method;
590#endif
591 } SSL_COMP;
592
593DECLARE_STACK_OF(SSL_COMP)
594
595struct ssl_ctx_st
596 {
597 SSL_METHOD *method;
598
599 STACK_OF(SSL_CIPHER) *cipher_list;
600 /* same as above but sorted for lookup */
601 STACK_OF(SSL_CIPHER) *cipher_list_by_id;
602
603 struct x509_store_st /* X509_STORE */ *cert_store;
604 struct lhash_st /* LHASH */ *sessions; /* a set of SSL_SESSIONs */
605 /* Most session-ids that will be cached, default is
606 * SSL_SESSION_CACHE_MAX_SIZE_DEFAULT. 0 is unlimited. */
607 unsigned long session_cache_size;
608 struct ssl_session_st *session_cache_head;
609 struct ssl_session_st *session_cache_tail;
610
611 /* This can have one of 2 values, ored together,
612 * SSL_SESS_CACHE_CLIENT,
613 * SSL_SESS_CACHE_SERVER,
614 * Default is SSL_SESSION_CACHE_SERVER, which means only
615 * SSL_accept which cache SSL_SESSIONS. */
616 int session_cache_mode;
617
618 /* If timeout is not 0, it is the default timeout value set
619 * when SSL_new() is called. This has been put in to make
620 * life easier to set things up */
621 long session_timeout;
622
623 /* If this callback is not null, it will be called each
624 * time a session id is added to the cache. If this function
625 * returns 1, it means that the callback will do a
626 * SSL_SESSION_free() when it has finished using it. Otherwise,
627 * on 0, it means the callback has finished with it.
628 * If remove_session_cb is not null, it will be called when
629 * a session-id is removed from the cache. After the call,
630 * OpenSSL will SSL_SESSION_free() it. */
631 int (*new_session_cb)(struct ssl_st *ssl,SSL_SESSION *sess);
632 void (*remove_session_cb)(struct ssl_ctx_st *ctx,SSL_SESSION *sess);
633 SSL_SESSION *(*get_session_cb)(struct ssl_st *ssl,
634 unsigned char *data,int len,int *copy);
635
636 struct
637 {
638 int sess_connect; /* SSL new conn - started */
639 int sess_connect_renegotiate;/* SSL reneg - requested */
640 int sess_connect_good; /* SSL new conne/reneg - finished */
641 int sess_accept; /* SSL new accept - started */
642 int sess_accept_renegotiate;/* SSL reneg - requested */
643 int sess_accept_good; /* SSL accept/reneg - finished */
644 int sess_miss; /* session lookup misses */
645 int sess_timeout; /* reuse attempt on timeouted session */
646 int sess_cache_full; /* session removed due to full cache */
647 int sess_hit; /* session reuse actually done */
648 int sess_cb_hit; /* session-id that was not
649 * in the cache was
650 * passed back via the callback. This
651 * indicates that the application is
652 * supplying session-id's from other
653 * processes - spooky :-) */
654 } stats;
655
656 int references;
657
658 /* if defined, these override the X509_verify_cert() calls */
659 int (*app_verify_callback)(X509_STORE_CTX *, void *);
660 void *app_verify_arg;
661 /* before OpenSSL 0.9.7, 'app_verify_arg' was ignored
662 * ('app_verify_callback' was called with just one argument) */
663
664 /* Default password callback. */
665 pem_password_cb *default_passwd_callback;
666
667 /* Default password callback user data. */
668 void *default_passwd_callback_userdata;
669
670 /* get client cert callback */
671 int (*client_cert_cb)(SSL *ssl, X509 **x509, EVP_PKEY **pkey);
672
673 CRYPTO_EX_DATA ex_data;
674
675 const EVP_MD *rsa_md5;/* For SSLv2 - name is 'ssl2-md5' */
676 const EVP_MD *md5; /* For SSLv3/TLSv1 'ssl3-md5' */
677 const EVP_MD *sha1; /* For SSLv3/TLSv1 'ssl3->sha1' */
678
679 STACK_OF(X509) *extra_certs;
680 STACK_OF(SSL_COMP) *comp_methods; /* stack of SSL_COMP, SSLv3/TLSv1 */
681
682
683 /* Default values used when no per-SSL value is defined follow */
684
685 void (*info_callback)(const SSL *ssl,int type,int val); /* used if SSL's info_callback is NULL */
686
687 /* what we put in client cert requests */
688 STACK_OF(X509_NAME) *client_CA;
689
690
691 /* Default values to use in SSL structures follow (these are copied by SSL_new) */
692
693 unsigned long options;
694 unsigned long mode;
695 long max_cert_list;
696
697 struct cert_st /* CERT */ *cert;
698 int read_ahead;
699
700 /* callback that allows applications to peek at protocol messages */
701 void (*msg_callback)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg);
702 void *msg_callback_arg;
703
704 int verify_mode;
705 int verify_depth;
706 unsigned int sid_ctx_length;
707 unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH];
708 int (*default_verify_callback)(int ok,X509_STORE_CTX *ctx); /* called 'verify_callback' in the SSL */
709
710 /* Default generate session ID callback. */
711 GEN_SESSION_CB generate_session_id;
712
713 int purpose; /* Purpose setting */
714 int trust; /* Trust setting */
715
716 int quiet_shutdown;
717 };
718
719#define SSL_SESS_CACHE_OFF 0x0000
720#define SSL_SESS_CACHE_CLIENT 0x0001
721#define SSL_SESS_CACHE_SERVER 0x0002
722#define SSL_SESS_CACHE_BOTH (SSL_SESS_CACHE_CLIENT|SSL_SESS_CACHE_SERVER)
723#define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080
724/* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */
725#define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100
726#define SSL_SESS_CACHE_NO_INTERNAL_STORE 0x0200
727#define SSL_SESS_CACHE_NO_INTERNAL \
728 (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP|SSL_SESS_CACHE_NO_INTERNAL_STORE)
729
730 struct lhash_st *SSL_CTX_sessions(SSL_CTX *ctx);
731#define SSL_CTX_sess_number(ctx) \
732 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL)
733#define SSL_CTX_sess_connect(ctx) \
734 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT,0,NULL)
735#define SSL_CTX_sess_connect_good(ctx) \
736 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_GOOD,0,NULL)
737#define SSL_CTX_sess_connect_renegotiate(ctx) \
738 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_RENEGOTIATE,0,NULL)
739#define SSL_CTX_sess_accept(ctx) \
740 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT,0,NULL)
741#define SSL_CTX_sess_accept_renegotiate(ctx) \
742 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_RENEGOTIATE,0,NULL)
743#define SSL_CTX_sess_accept_good(ctx) \
744 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_GOOD,0,NULL)
745#define SSL_CTX_sess_hits(ctx) \
746 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_HIT,0,NULL)
747#define SSL_CTX_sess_cb_hits(ctx) \
748 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CB_HIT,0,NULL)
749#define SSL_CTX_sess_misses(ctx) \
750 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_MISSES,0,NULL)
751#define SSL_CTX_sess_timeouts(ctx) \
752 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_TIMEOUTS,0,NULL)
753#define SSL_CTX_sess_cache_full(ctx) \
754 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL)
755
756#define SSL_CTX_sess_set_new_cb(ctx,cb) ((ctx)->new_session_cb=(cb))
757#define SSL_CTX_sess_get_new_cb(ctx) ((ctx)->new_session_cb)
758#define SSL_CTX_sess_set_remove_cb(ctx,cb) ((ctx)->remove_session_cb=(cb))
759#define SSL_CTX_sess_get_remove_cb(ctx) ((ctx)->remove_session_cb)
760#define SSL_CTX_sess_set_get_cb(ctx,cb) ((ctx)->get_session_cb=(cb))
761#define SSL_CTX_sess_get_get_cb(ctx) ((ctx)->get_session_cb)
762#define SSL_CTX_set_info_callback(ctx,cb) ((ctx)->info_callback=(cb))
763#define SSL_CTX_get_info_callback(ctx) ((ctx)->info_callback)
764#define SSL_CTX_set_client_cert_cb(ctx,cb) ((ctx)->client_cert_cb=(cb))
765#define SSL_CTX_get_client_cert_cb(ctx) ((ctx)->client_cert_cb)
766
767#define SSL_NOTHING 1
768#define SSL_WRITING 2
769#define SSL_READING 3
770#define SSL_X509_LOOKUP 4
771
772/* These will only be used when doing non-blocking IO */
773#define SSL_want_nothing(s) (SSL_want(s) == SSL_NOTHING)
774#define SSL_want_read(s) (SSL_want(s) == SSL_READING)
775#define SSL_want_write(s) (SSL_want(s) == SSL_WRITING)
776#define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP)
777
778struct ssl_st
779 {
780 /* protocol version
781 * (one of SSL2_VERSION, SSL3_VERSION, TLS1_VERSION)
782 */
783 int version;
784 int type; /* SSL_ST_CONNECT or SSL_ST_ACCEPT */
785
786 SSL_METHOD *method; /* SSLv3 */
787
788 /* There are 2 BIO's even though they are normally both the
789 * same. This is so data can be read and written to different
790 * handlers */
791
792#ifndef OPENSSL_NO_BIO
793 BIO *rbio; /* used by SSL_read */
794 BIO *wbio; /* used by SSL_write */
795 BIO *bbio; /* used during session-id reuse to concatenate
796 * messages */
797#else
798 char *rbio; /* used by SSL_read */
799 char *wbio; /* used by SSL_write */
800 char *bbio;
801#endif
802 /* This holds a variable that indicates what we were doing
803 * when a 0 or -1 is returned. This is needed for
804 * non-blocking IO so we know what request needs re-doing when
805 * in SSL_accept or SSL_connect */
806 int rwstate;
807
808 /* true when we are actually in SSL_accept() or SSL_connect() */
809 int in_handshake;
810 int (*handshake_func)();
811
812 /* Imagine that here's a boolean member "init" that is
813 * switched as soon as SSL_set_{accept/connect}_state
814 * is called for the first time, so that "state" and
815 * "handshake_func" are properly initialized. But as
816 * handshake_func is == 0 until then, we use this
817 * test instead of an "init" member.
818 */
819
820 int server; /* are we the server side? - mostly used by SSL_clear*/
821
822 int new_session;/* 1 if we are to use a new session.
823 * 2 if we are a server and are inside a handshake
824 * (i.e. not just sending a HelloRequest)
825 * NB: For servers, the 'new' session may actually be a previously
826 * cached session or even the previous session unless
827 * SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION is set */
828 int quiet_shutdown;/* don't send shutdown packets */
829 int shutdown; /* we have shut things down, 0x01 sent, 0x02
830 * for received */
831 int state; /* where we are */
832 int rstate; /* where we are when reading */
833
834 BUF_MEM *init_buf; /* buffer used during init */
835 void *init_msg; /* pointer to handshake message body, set by ssl3_get_message() */
836 int init_num; /* amount read/written */
837 int init_off; /* amount read/written */
838
839 /* used internally to point at a raw packet */
840 unsigned char *packet;
841 unsigned int packet_length;
842
843 struct ssl2_state_st *s2; /* SSLv2 variables */
844 struct ssl3_state_st *s3; /* SSLv3 variables */
845
846 int read_ahead; /* Read as many input bytes as possible
847 * (for non-blocking reads) */
848
849 /* callback that allows applications to peek at protocol messages */
850 void (*msg_callback)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg);
851 void *msg_callback_arg;
852
853 int hit; /* reusing a previous session */
854
855 int purpose; /* Purpose setting */
856 int trust; /* Trust setting */
857
858 /* crypto */
859 STACK_OF(SSL_CIPHER) *cipher_list;
860 STACK_OF(SSL_CIPHER) *cipher_list_by_id;
861
862 /* These are the ones being used, the ones in SSL_SESSION are
863 * the ones to be 'copied' into these ones */
864
865 EVP_CIPHER_CTX *enc_read_ctx; /* cryptographic state */
866 const EVP_MD *read_hash; /* used for mac generation */
867#ifndef OPENSSL_NO_COMP
868 COMP_CTX *expand; /* uncompress */
869#else
870 char *expand;
871#endif
872
873 EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */
874 const EVP_MD *write_hash; /* used for mac generation */
875#ifndef OPENSSL_NO_COMP
876 COMP_CTX *compress; /* compression */
877#else
878 char *compress;
879#endif
880
881 /* session info */
882
883 /* client cert? */
884 /* This is used to hold the server certificate used */
885 struct cert_st /* CERT */ *cert;
886
887 /* the session_id_context is used to ensure sessions are only reused
888 * in the appropriate context */
889 unsigned int sid_ctx_length;
890 unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH];
891
892 /* This can also be in the session once a session is established */
893 SSL_SESSION *session;
894
895 /* Default generate session ID callback. */
896 GEN_SESSION_CB generate_session_id;
897
898 /* Used in SSL2 and SSL3 */
899 int verify_mode; /* 0 don't care about verify failure.
900 * 1 fail if verify fails */
901 int verify_depth;
902 int (*verify_callback)(int ok,X509_STORE_CTX *ctx); /* fail if callback returns 0 */
903
904 void (*info_callback)(const SSL *ssl,int type,int val); /* optional informational callback */
905
906 int error; /* error bytes to be written */
907 int error_code; /* actual code */
908
909#ifndef OPENSSL_NO_KRB5
910 KSSL_CTX *kssl_ctx; /* Kerberos 5 context */
911#endif /* OPENSSL_NO_KRB5 */
912
913 SSL_CTX *ctx;
914 /* set this flag to 1 and a sleep(1) is put into all SSL_read()
915 * and SSL_write() calls, good for nbio debuging :-) */
916 int debug;
917
918 /* extra application data */
919 long verify_result;
920 CRYPTO_EX_DATA ex_data;
921
922 /* for server side, keep the list of CA_dn we can use */
923 STACK_OF(X509_NAME) *client_CA;
924
925 int references;
926 unsigned long options; /* protocol behaviour */
927 unsigned long mode; /* API behaviour */
928 long max_cert_list;
929 int first_packet;
930 int client_version; /* what was passed, used for
931 * SSLv3/TLS rollback check */
932 };
933
934#ifdef __cplusplus
935}
936#endif
937
938#include <openssl/ssl2.h>
939#include <openssl/ssl3.h>
940#include <openssl/tls1.h> /* This is mostly sslv3 with a few tweaks */
941#include <openssl/ssl23.h>
942
943#ifdef __cplusplus
944extern "C" {
945#endif
946
947/* compatibility */
948#define SSL_set_app_data(s,arg) (SSL_set_ex_data(s,0,(char *)arg))
949#define SSL_get_app_data(s) (SSL_get_ex_data(s,0))
950#define SSL_SESSION_set_app_data(s,a) (SSL_SESSION_set_ex_data(s,0,(char *)a))
951#define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s,0))
952#define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx,0))
953#define SSL_CTX_set_app_data(ctx,arg) (SSL_CTX_set_ex_data(ctx,0,(char *)arg))
954
955/* The following are the possible values for ssl->state are are
956 * used to indicate where we are up to in the SSL connection establishment.
957 * The macros that follow are about the only things you should need to use
958 * and even then, only when using non-blocking IO.
959 * It can also be useful to work out where you were when the connection
960 * failed */
961
962#define SSL_ST_CONNECT 0x1000
963#define SSL_ST_ACCEPT 0x2000
964#define SSL_ST_MASK 0x0FFF
965#define SSL_ST_INIT (SSL_ST_CONNECT|SSL_ST_ACCEPT)
966#define SSL_ST_BEFORE 0x4000
967#define SSL_ST_OK 0x03
968#define SSL_ST_RENEGOTIATE (0x04|SSL_ST_INIT)
969
970#define SSL_CB_LOOP 0x01
971#define SSL_CB_EXIT 0x02
972#define SSL_CB_READ 0x04
973#define SSL_CB_WRITE 0x08
974#define SSL_CB_ALERT 0x4000 /* used in callback */
975#define SSL_CB_READ_ALERT (SSL_CB_ALERT|SSL_CB_READ)
976#define SSL_CB_WRITE_ALERT (SSL_CB_ALERT|SSL_CB_WRITE)
977#define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT|SSL_CB_LOOP)
978#define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT|SSL_CB_EXIT)
979#define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT|SSL_CB_LOOP)
980#define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT|SSL_CB_EXIT)
981#define SSL_CB_HANDSHAKE_START 0x10
982#define SSL_CB_HANDSHAKE_DONE 0x20
983
984/* Is the SSL_connection established? */
985#define SSL_get_state(a) SSL_state(a)
986#define SSL_is_init_finished(a) (SSL_state(a) == SSL_ST_OK)
987#define SSL_in_init(a) (SSL_state(a)&SSL_ST_INIT)
988#define SSL_in_before(a) (SSL_state(a)&SSL_ST_BEFORE)
989#define SSL_in_connect_init(a) (SSL_state(a)&SSL_ST_CONNECT)
990#define SSL_in_accept_init(a) (SSL_state(a)&SSL_ST_ACCEPT)
991
992/* The following 2 states are kept in ssl->rstate when reads fail,
993 * you should not need these */
994#define SSL_ST_READ_HEADER 0xF0
995#define SSL_ST_READ_BODY 0xF1
996#define SSL_ST_READ_DONE 0xF2
997
998/* Obtain latest Finished message
999 * -- that we sent (SSL_get_finished)
1000 * -- that we expected from peer (SSL_get_peer_finished).
1001 * Returns length (0 == no Finished so far), copies up to 'count' bytes. */
1002size_t SSL_get_finished(const SSL *s, void *buf, size_t count);
1003size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count);
1004
1005/* use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 2 options
1006 * are 'ored' with SSL_VERIFY_PEER if they are desired */
1007#define SSL_VERIFY_NONE 0x00
1008#define SSL_VERIFY_PEER 0x01
1009#define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02
1010#define SSL_VERIFY_CLIENT_ONCE 0x04
1011
1012#define OpenSSL_add_ssl_algorithms() SSL_library_init()
1013#define SSLeay_add_ssl_algorithms() SSL_library_init()
1014
1015/* this is for backward compatibility */
1016#if 0 /* NEW_SSLEAY */
1017#define SSL_CTX_set_default_verify(a,b,c) SSL_CTX_set_verify(a,b,c)
1018#define SSL_set_pref_cipher(c,n) SSL_set_cipher_list(c,n)
1019#define SSL_add_session(a,b) SSL_CTX_add_session((a),(b))
1020#define SSL_remove_session(a,b) SSL_CTX_remove_session((a),(b))
1021#define SSL_flush_sessions(a,b) SSL_CTX_flush_sessions((a),(b))
1022#endif
1023/* More backward compatibility */
1024#define SSL_get_cipher(s) \
1025 SSL_CIPHER_get_name(SSL_get_current_cipher(s))
1026#define SSL_get_cipher_bits(s,np) \
1027 SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np)
1028#define SSL_get_cipher_version(s) \
1029 SSL_CIPHER_get_version(SSL_get_current_cipher(s))
1030#define SSL_get_cipher_name(s) \
1031 SSL_CIPHER_get_name(SSL_get_current_cipher(s))
1032#define SSL_get_time(a) SSL_SESSION_get_time(a)
1033#define SSL_set_time(a,b) SSL_SESSION_set_time((a),(b))
1034#define SSL_get_timeout(a) SSL_SESSION_get_timeout(a)
1035#define SSL_set_timeout(a,b) SSL_SESSION_set_timeout((a),(b))
1036
1037#if 1 /*SSLEAY_MACROS*/
1038#define d2i_SSL_SESSION_bio(bp,s_id) (SSL_SESSION *)ASN1_d2i_bio( \
1039 (char *(*)())SSL_SESSION_new,(char *(*)())d2i_SSL_SESSION, \
1040 (bp),(unsigned char **)(s_id))
1041#define i2d_SSL_SESSION_bio(bp,s_id) ASN1_i2d_bio(i2d_SSL_SESSION, \
1042 bp,(unsigned char *)s_id)
1043#define PEM_read_SSL_SESSION(fp,x,cb,u) (SSL_SESSION *)PEM_ASN1_read( \
1044 (char *(*)())d2i_SSL_SESSION,PEM_STRING_SSL_SESSION,fp,(char **)x,cb,u)
1045#define PEM_read_bio_SSL_SESSION(bp,x,cb,u) (SSL_SESSION *)PEM_ASN1_read_bio( \
1046 (char *(*)())d2i_SSL_SESSION,PEM_STRING_SSL_SESSION,bp,(char **)x,cb,u)
1047#define PEM_write_SSL_SESSION(fp,x) \
1048 PEM_ASN1_write((int (*)())i2d_SSL_SESSION, \
1049 PEM_STRING_SSL_SESSION,fp, (char *)x, NULL,NULL,0,NULL,NULL)
1050#define PEM_write_bio_SSL_SESSION(bp,x) \
1051 PEM_ASN1_write_bio((int (*)())i2d_SSL_SESSION, \
1052 PEM_STRING_SSL_SESSION,bp, (char *)x, NULL,NULL,0,NULL,NULL)
1053#endif
1054
1055#define SSL_AD_REASON_OFFSET 1000
1056/* These alert types are for SSLv3 and TLSv1 */
1057#define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY
1058#define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE /* fatal */
1059#define SSL_AD_BAD_RECORD_MAC SSL3_AD_BAD_RECORD_MAC /* fatal */
1060#define SSL_AD_DECRYPTION_FAILED TLS1_AD_DECRYPTION_FAILED
1061#define SSL_AD_RECORD_OVERFLOW TLS1_AD_RECORD_OVERFLOW
1062#define SSL_AD_DECOMPRESSION_FAILURE SSL3_AD_DECOMPRESSION_FAILURE/* fatal */
1063#define SSL_AD_HANDSHAKE_FAILURE SSL3_AD_HANDSHAKE_FAILURE/* fatal */
1064#define SSL_AD_NO_CERTIFICATE SSL3_AD_NO_CERTIFICATE /* Not for TLS */
1065#define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE
1066#define SSL_AD_UNSUPPORTED_CERTIFICATE SSL3_AD_UNSUPPORTED_CERTIFICATE
1067#define SSL_AD_CERTIFICATE_REVOKED SSL3_AD_CERTIFICATE_REVOKED
1068#define SSL_AD_CERTIFICATE_EXPIRED SSL3_AD_CERTIFICATE_EXPIRED
1069#define SSL_AD_CERTIFICATE_UNKNOWN SSL3_AD_CERTIFICATE_UNKNOWN
1070#define SSL_AD_ILLEGAL_PARAMETER SSL3_AD_ILLEGAL_PARAMETER /* fatal */
1071#define SSL_AD_UNKNOWN_CA TLS1_AD_UNKNOWN_CA /* fatal */
1072#define SSL_AD_ACCESS_DENIED TLS1_AD_ACCESS_DENIED /* fatal */
1073#define SSL_AD_DECODE_ERROR TLS1_AD_DECODE_ERROR /* fatal */
1074#define SSL_AD_DECRYPT_ERROR TLS1_AD_DECRYPT_ERROR
1075#define SSL_AD_EXPORT_RESTRICTION TLS1_AD_EXPORT_RESTRICTION/* fatal */
1076#define SSL_AD_PROTOCOL_VERSION TLS1_AD_PROTOCOL_VERSION /* fatal */
1077#define SSL_AD_INSUFFICIENT_SECURITY TLS1_AD_INSUFFICIENT_SECURITY/* fatal */
1078#define SSL_AD_INTERNAL_ERROR TLS1_AD_INTERNAL_ERROR /* fatal */
1079#define SSL_AD_USER_CANCELLED TLS1_AD_USER_CANCELLED
1080#define SSL_AD_NO_RENEGOTIATION TLS1_AD_NO_RENEGOTIATION
1081
1082#define SSL_ERROR_NONE 0
1083#define SSL_ERROR_SSL 1
1084#define SSL_ERROR_WANT_READ 2
1085#define SSL_ERROR_WANT_WRITE 3
1086#define SSL_ERROR_WANT_X509_LOOKUP 4
1087#define SSL_ERROR_SYSCALL 5 /* look at error stack/return value/errno */
1088#define SSL_ERROR_ZERO_RETURN 6
1089#define SSL_ERROR_WANT_CONNECT 7
1090#define SSL_ERROR_WANT_ACCEPT 8
1091
1092#define SSL_CTRL_NEED_TMP_RSA 1
1093#define SSL_CTRL_SET_TMP_RSA 2
1094#define SSL_CTRL_SET_TMP_DH 3
1095#define SSL_CTRL_SET_TMP_RSA_CB 4
1096#define SSL_CTRL_SET_TMP_DH_CB 5
1097
1098#define SSL_CTRL_GET_SESSION_REUSED 6
1099#define SSL_CTRL_GET_CLIENT_CERT_REQUEST 7
1100#define SSL_CTRL_GET_NUM_RENEGOTIATIONS 8
1101#define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 9
1102#define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 10
1103#define SSL_CTRL_GET_FLAGS 11
1104#define SSL_CTRL_EXTRA_CHAIN_CERT 12
1105
1106#define SSL_CTRL_SET_MSG_CALLBACK 13
1107#define SSL_CTRL_SET_MSG_CALLBACK_ARG 14
1108
1109/* Stats */
1110#define SSL_CTRL_SESS_NUMBER 20
1111#define SSL_CTRL_SESS_CONNECT 21
1112#define SSL_CTRL_SESS_CONNECT_GOOD 22
1113#define SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23
1114#define SSL_CTRL_SESS_ACCEPT 24
1115#define SSL_CTRL_SESS_ACCEPT_GOOD 25
1116#define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26
1117#define SSL_CTRL_SESS_HIT 27
1118#define SSL_CTRL_SESS_CB_HIT 28
1119#define SSL_CTRL_SESS_MISSES 29
1120#define SSL_CTRL_SESS_TIMEOUTS 30
1121#define SSL_CTRL_SESS_CACHE_FULL 31
1122#define SSL_CTRL_OPTIONS 32
1123#define SSL_CTRL_MODE 33
1124
1125#define SSL_CTRL_GET_READ_AHEAD 40
1126#define SSL_CTRL_SET_READ_AHEAD 41
1127#define SSL_CTRL_SET_SESS_CACHE_SIZE 42
1128#define SSL_CTRL_GET_SESS_CACHE_SIZE 43
1129#define SSL_CTRL_SET_SESS_CACHE_MODE 44
1130#define SSL_CTRL_GET_SESS_CACHE_MODE 45
1131
1132#define SSL_CTRL_GET_MAX_CERT_LIST 50
1133#define SSL_CTRL_SET_MAX_CERT_LIST 51
1134
1135#define SSL_session_reused(ssl) \
1136 SSL_ctrl((ssl),SSL_CTRL_GET_SESSION_REUSED,0,NULL)
1137#define SSL_num_renegotiations(ssl) \
1138 SSL_ctrl((ssl),SSL_CTRL_GET_NUM_RENEGOTIATIONS,0,NULL)
1139#define SSL_clear_num_renegotiations(ssl) \
1140 SSL_ctrl((ssl),SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS,0,NULL)
1141#define SSL_total_renegotiations(ssl) \
1142 SSL_ctrl((ssl),SSL_CTRL_GET_TOTAL_RENEGOTIATIONS,0,NULL)
1143
1144#define SSL_CTX_need_tmp_RSA(ctx) \
1145 SSL_CTX_ctrl(ctx,SSL_CTRL_NEED_TMP_RSA,0,NULL)
1146#define SSL_CTX_set_tmp_rsa(ctx,rsa) \
1147 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_RSA,0,(char *)rsa)
1148#define SSL_CTX_set_tmp_dh(ctx,dh) \
1149 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)dh)
1150
1151#define SSL_need_tmp_RSA(ssl) \
1152 SSL_ctrl(ssl,SSL_CTRL_NEED_TMP_RSA,0,NULL)
1153#define SSL_set_tmp_rsa(ssl,rsa) \
1154 SSL_ctrl(ssl,SSL_CTRL_SET_TMP_RSA,0,(char *)rsa)
1155#define SSL_set_tmp_dh(ssl,dh) \
1156 SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)dh)
1157
1158#define SSL_CTX_add_extra_chain_cert(ctx,x509) \
1159 SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509)
1160
1161#ifndef OPENSSL_NO_BIO
1162BIO_METHOD *BIO_f_ssl(void);
1163BIO *BIO_new_ssl(SSL_CTX *ctx,int client);
1164BIO *BIO_new_ssl_connect(SSL_CTX *ctx);
1165BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx);
1166int BIO_ssl_copy_session_id(BIO *to,BIO *from);
1167void BIO_ssl_shutdown(BIO *ssl_bio);
1168
1169#endif
1170
1171int SSL_CTX_set_cipher_list(SSL_CTX *,const char *str);
1172SSL_CTX *SSL_CTX_new(SSL_METHOD *meth);
1173void SSL_CTX_free(SSL_CTX *);
1174long SSL_CTX_set_timeout(SSL_CTX *ctx,long t);
1175long SSL_CTX_get_timeout(const SSL_CTX *ctx);
1176X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *);
1177void SSL_CTX_set_cert_store(SSL_CTX *,X509_STORE *);
1178int SSL_want(const SSL *s);
1179int SSL_clear(SSL *s);
1180
1181void SSL_CTX_flush_sessions(SSL_CTX *ctx,long tm);
1182
1183SSL_CIPHER *SSL_get_current_cipher(const SSL *s);
1184int SSL_CIPHER_get_bits(const SSL_CIPHER *c,int *alg_bits);
1185char * SSL_CIPHER_get_version(const SSL_CIPHER *c);
1186const char * SSL_CIPHER_get_name(const SSL_CIPHER *c);
1187
1188int SSL_get_fd(const SSL *s);
1189int SSL_get_rfd(const SSL *s);
1190int SSL_get_wfd(const SSL *s);
1191const char * SSL_get_cipher_list(const SSL *s,int n);
1192char * SSL_get_shared_ciphers(const SSL *s, char *buf, int len);
1193int SSL_get_read_ahead(const SSL * s);
1194int SSL_pending(const SSL *s);
1195#ifndef OPENSSL_NO_SOCK
1196int SSL_set_fd(SSL *s, int fd);
1197int SSL_set_rfd(SSL *s, int fd);
1198int SSL_set_wfd(SSL *s, int fd);
1199#endif
1200#ifndef OPENSSL_NO_BIO
1201void SSL_set_bio(SSL *s, BIO *rbio,BIO *wbio);
1202BIO * SSL_get_rbio(const SSL *s);
1203BIO * SSL_get_wbio(const SSL *s);
1204#endif
1205int SSL_set_cipher_list(SSL *s, const char *str);
1206void SSL_set_read_ahead(SSL *s, int yes);
1207int SSL_get_verify_mode(const SSL *s);
1208int SSL_get_verify_depth(const SSL *s);
1209int (*SSL_get_verify_callback(const SSL *s))(int,X509_STORE_CTX *);
1210void SSL_set_verify(SSL *s, int mode,
1211 int (*callback)(int ok,X509_STORE_CTX *ctx));
1212void SSL_set_verify_depth(SSL *s, int depth);
1213#ifndef OPENSSL_NO_RSA
1214int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa);
1215#endif
1216int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, unsigned char *d, long len);
1217int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey);
1218int SSL_use_PrivateKey_ASN1(int pk,SSL *ssl, unsigned char *d, long len);
1219int SSL_use_certificate(SSL *ssl, X509 *x);
1220int SSL_use_certificate_ASN1(SSL *ssl, unsigned char *d, int len);
1221
1222#ifndef OPENSSL_NO_STDIO
1223int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type);
1224int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type);
1225int SSL_use_certificate_file(SSL *ssl, const char *file, int type);
1226int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, int type);
1227int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type);
1228int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type);
1229int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); /* PEM type */
1230STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file);
1231int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs,
1232 const char *file);
1233#ifndef OPENSSL_SYS_VMS
1234#ifndef OPENSSL_SYS_MACINTOSH_CLASSIC /* XXXXX: Better scheme needed! [was: #ifndef MAC_OS_pre_X] */
1235int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs,
1236 const char *dir);
1237#endif
1238#endif
1239
1240#endif
1241
1242void SSL_load_error_strings(void );
1243const char *SSL_state_string(const SSL *s);
1244const char *SSL_rstate_string(const SSL *s);
1245const char *SSL_state_string_long(const SSL *s);
1246const char *SSL_rstate_string_long(const SSL *s);
1247long SSL_SESSION_get_time(const SSL_SESSION *s);
1248long SSL_SESSION_set_time(SSL_SESSION *s, long t);
1249long SSL_SESSION_get_timeout(const SSL_SESSION *s);
1250long SSL_SESSION_set_timeout(SSL_SESSION *s, long t);
1251void SSL_copy_session_id(SSL *to,const SSL *from);
1252
1253SSL_SESSION *SSL_SESSION_new(void);
1254unsigned long SSL_SESSION_hash(const SSL_SESSION *a);
1255int SSL_SESSION_cmp(const SSL_SESSION *a,const SSL_SESSION *b);
1256#ifndef OPENSSL_NO_FP_API
1257int SSL_SESSION_print_fp(FILE *fp,const SSL_SESSION *ses);
1258#endif
1259#ifndef OPENSSL_NO_BIO
1260int SSL_SESSION_print(BIO *fp,const SSL_SESSION *ses);
1261#endif
1262void SSL_SESSION_free(SSL_SESSION *ses);
1263int i2d_SSL_SESSION(SSL_SESSION *in,unsigned char **pp);
1264int SSL_set_session(SSL *to, SSL_SESSION *session);
1265int SSL_CTX_add_session(SSL_CTX *s, SSL_SESSION *c);
1266int SSL_CTX_remove_session(SSL_CTX *,SSL_SESSION *c);
1267int SSL_CTX_set_generate_session_id(SSL_CTX *, GEN_SESSION_CB);
1268int SSL_set_generate_session_id(SSL *, GEN_SESSION_CB);
1269int SSL_has_matching_session_id(const SSL *ssl, const unsigned char *id,
1270 unsigned int id_len);
1271SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a,const unsigned char * const *pp,
1272 long length);
1273
1274#ifdef HEADER_X509_H
1275X509 * SSL_get_peer_certificate(const SSL *s);
1276#endif
1277
1278STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s);
1279
1280int SSL_CTX_get_verify_mode(const SSL_CTX *ctx);
1281int SSL_CTX_get_verify_depth(const SSL_CTX *ctx);
1282int (*SSL_CTX_get_verify_callback(const SSL_CTX *ctx))(int,X509_STORE_CTX *);
1283void SSL_CTX_set_verify(SSL_CTX *ctx,int mode,
1284 int (*callback)(int, X509_STORE_CTX *));
1285void SSL_CTX_set_verify_depth(SSL_CTX *ctx,int depth);
1286void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, int (*cb)(X509_STORE_CTX *,void *), void *arg);
1287#ifndef OPENSSL_NO_RSA
1288int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa);
1289#endif
1290int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, unsigned char *d, long len);
1291int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey);
1292int SSL_CTX_use_PrivateKey_ASN1(int pk,SSL_CTX *ctx,
1293 unsigned char *d, long len);
1294int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x);
1295int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, unsigned char *d);
1296
1297void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb);
1298void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u);
1299
1300int SSL_CTX_check_private_key(const SSL_CTX *ctx);
1301int SSL_check_private_key(const SSL *ctx);
1302
1303int SSL_CTX_set_session_id_context(SSL_CTX *ctx,const unsigned char *sid_ctx,
1304 unsigned int sid_ctx_len);
1305
1306SSL * SSL_new(SSL_CTX *ctx);
1307int SSL_set_session_id_context(SSL *ssl,const unsigned char *sid_ctx,
1308 unsigned int sid_ctx_len);
1309
1310int SSL_CTX_set_purpose(SSL_CTX *s, int purpose);
1311int SSL_set_purpose(SSL *s, int purpose);
1312int SSL_CTX_set_trust(SSL_CTX *s, int trust);
1313int SSL_set_trust(SSL *s, int trust);
1314
1315void SSL_free(SSL *ssl);
1316int SSL_accept(SSL *ssl);
1317int SSL_connect(SSL *ssl);
1318int SSL_read(SSL *ssl,void *buf,int num);
1319int SSL_peek(SSL *ssl,void *buf,int num);
1320int SSL_write(SSL *ssl,const void *buf,int num);
1321long SSL_ctrl(SSL *ssl,int cmd, long larg, void *parg);
1322long SSL_callback_ctrl(SSL *, int, void (*)());
1323long SSL_CTX_ctrl(SSL_CTX *ctx,int cmd, long larg, void *parg);
1324long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)());
1325
1326int SSL_get_error(const SSL *s,int ret_code);
1327const char *SSL_get_version(const SSL *s);
1328
1329/* This sets the 'default' SSL version that SSL_new() will create */
1330int SSL_CTX_set_ssl_version(SSL_CTX *ctx,SSL_METHOD *meth);
1331
1332SSL_METHOD *SSLv2_method(void); /* SSLv2 */
1333SSL_METHOD *SSLv2_server_method(void); /* SSLv2 */
1334SSL_METHOD *SSLv2_client_method(void); /* SSLv2 */
1335
1336SSL_METHOD *SSLv3_method(void); /* SSLv3 */
1337SSL_METHOD *SSLv3_server_method(void); /* SSLv3 */
1338SSL_METHOD *SSLv3_client_method(void); /* SSLv3 */
1339
1340SSL_METHOD *SSLv23_method(void); /* SSLv3 but can rollback to v2 */
1341SSL_METHOD *SSLv23_server_method(void); /* SSLv3 but can rollback to v2 */
1342SSL_METHOD *SSLv23_client_method(void); /* SSLv3 but can rollback to v2 */
1343
1344SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */
1345SSL_METHOD *TLSv1_server_method(void); /* TLSv1.0 */
1346SSL_METHOD *TLSv1_client_method(void); /* TLSv1.0 */
1347
1348STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s);
1349
1350int SSL_do_handshake(SSL *s);
1351int SSL_renegotiate(SSL *s);
1352int SSL_renegotiate_pending(SSL *s);
1353int SSL_shutdown(SSL *s);
1354
1355SSL_METHOD *SSL_get_ssl_method(SSL *s);
1356int SSL_set_ssl_method(SSL *s,SSL_METHOD *method);
1357const char *SSL_alert_type_string_long(int value);
1358const char *SSL_alert_type_string(int value);
1359const char *SSL_alert_desc_string_long(int value);
1360const char *SSL_alert_desc_string(int value);
1361
1362void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list);
1363void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list);
1364STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s);
1365STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s);
1366int SSL_add_client_CA(SSL *ssl,X509 *x);
1367int SSL_CTX_add_client_CA(SSL_CTX *ctx,X509 *x);
1368
1369void SSL_set_connect_state(SSL *s);
1370void SSL_set_accept_state(SSL *s);
1371
1372long SSL_get_default_timeout(const SSL *s);
1373
1374int SSL_library_init(void );
1375
1376char *SSL_CIPHER_description(SSL_CIPHER *,char *buf,int size);
1377STACK_OF(X509_NAME) *SSL_dup_CA_list(STACK_OF(X509_NAME) *sk);
1378
1379SSL *SSL_dup(SSL *ssl);
1380
1381X509 *SSL_get_certificate(const SSL *ssl);
1382/* EVP_PKEY */ struct evp_pkey_st *SSL_get_privatekey(SSL *ssl);
1383
1384void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx,int mode);
1385int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx);
1386void SSL_set_quiet_shutdown(SSL *ssl,int mode);
1387int SSL_get_quiet_shutdown(const SSL *ssl);
1388void SSL_set_shutdown(SSL *ssl,int mode);
1389int SSL_get_shutdown(const SSL *ssl);
1390int SSL_version(const SSL *ssl);
1391int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx);
1392int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile,
1393 const char *CApath);
1394#define SSL_get0_session SSL_get_session /* just peek at pointer */
1395SSL_SESSION *SSL_get_session(const SSL *ssl);
1396SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */
1397SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl);
1398void SSL_set_info_callback(SSL *ssl,
1399 void (*cb)(const SSL *ssl,int type,int val));
1400void (*SSL_get_info_callback(const SSL *ssl))(const SSL *ssl,int type,int val);
1401int SSL_state(const SSL *ssl);
1402
1403void SSL_set_verify_result(SSL *ssl,long v);
1404long SSL_get_verify_result(const SSL *ssl);
1405
1406int SSL_set_ex_data(SSL *ssl,int idx,void *data);
1407void *SSL_get_ex_data(const SSL *ssl,int idx);
1408int SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
1409 CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
1410
1411int SSL_SESSION_set_ex_data(SSL_SESSION *ss,int idx,void *data);
1412void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss,int idx);
1413int SSL_SESSION_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
1414 CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
1415
1416int SSL_CTX_set_ex_data(SSL_CTX *ssl,int idx,void *data);
1417void *SSL_CTX_get_ex_data(const SSL_CTX *ssl,int idx);
1418int SSL_CTX_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
1419 CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
1420
1421int SSL_get_ex_data_X509_STORE_CTX_idx(void );
1422
1423#define SSL_CTX_sess_set_cache_size(ctx,t) \
1424 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_SIZE,t,NULL)
1425#define SSL_CTX_sess_get_cache_size(ctx) \
1426 SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_SIZE,0,NULL)
1427#define SSL_CTX_set_session_cache_mode(ctx,m) \
1428 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL)
1429#define SSL_CTX_get_session_cache_mode(ctx) \
1430 SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_MODE,0,NULL)
1431
1432#define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx)
1433#define SSL_CTX_set_default_read_ahead(ctx,m) SSL_CTX_set_read_ahead(ctx,m)
1434#define SSL_CTX_get_read_ahead(ctx) \
1435 SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL)
1436#define SSL_CTX_set_read_ahead(ctx,m) \
1437 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL)
1438#define SSL_CTX_get_max_cert_list(ctx) \
1439 SSL_CTX_ctrl(ctx,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL)
1440#define SSL_CTX_set_max_cert_list(ctx,m) \
1441 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL)
1442#define SSL_get_max_cert_list(ssl) \
1443 SSL_ctrl(ssl,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL)
1444#define SSL_set_max_cert_list(ssl,m) \
1445 SSL_ctrl(ssl,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL)
1446
1447 /* NB: the keylength is only applicable when is_export is true */
1448#ifndef OPENSSL_NO_RSA
1449void SSL_CTX_set_tmp_rsa_callback(SSL_CTX *ctx,
1450 RSA *(*cb)(SSL *ssl,int is_export,
1451 int keylength));
1452
1453void SSL_set_tmp_rsa_callback(SSL *ssl,
1454 RSA *(*cb)(SSL *ssl,int is_export,
1455 int keylength));
1456#endif
1457#ifndef OPENSSL_NO_DH
1458void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx,
1459 DH *(*dh)(SSL *ssl,int is_export,
1460 int keylength));
1461void SSL_set_tmp_dh_callback(SSL *ssl,
1462 DH *(*dh)(SSL *ssl,int is_export,
1463 int keylength));
1464#endif
1465
1466#ifndef OPENSSL_NO_COMP
1467int SSL_COMP_add_compression_method(int id,COMP_METHOD *cm);
1468#else
1469int SSL_COMP_add_compression_method(int id,char *cm);
1470#endif
1471
1472/* BEGIN ERROR CODES */
1473/* The following lines are auto generated by the script mkerr.pl. Any changes
1474 * made after this point may be overwritten when the script is next run.
1475 */
1476void ERR_load_SSL_strings(void);
1477
1478/* Error codes for the SSL functions. */
1479
1480/* Function codes. */
1481#define SSL_F_CLIENT_CERTIFICATE 100
1482#define SSL_F_CLIENT_FINISHED 238
1483#define SSL_F_CLIENT_HELLO 101
1484#define SSL_F_CLIENT_MASTER_KEY 102
1485#define SSL_F_D2I_SSL_SESSION 103
1486#define SSL_F_DO_SSL3_WRITE 104
1487#define SSL_F_GET_CLIENT_FINISHED 105
1488#define SSL_F_GET_CLIENT_HELLO 106
1489#define SSL_F_GET_CLIENT_MASTER_KEY 107
1490#define SSL_F_GET_SERVER_FINISHED 108
1491#define SSL_F_GET_SERVER_HELLO 109
1492#define SSL_F_GET_SERVER_VERIFY 110
1493#define SSL_F_I2D_SSL_SESSION 111
1494#define SSL_F_READ_N 112
1495#define SSL_F_REQUEST_CERTIFICATE 113
1496#define SSL_F_SERVER_FINISH 239
1497#define SSL_F_SERVER_HELLO 114
1498#define SSL_F_SERVER_VERIFY 240
1499#define SSL_F_SSL23_ACCEPT 115
1500#define SSL_F_SSL23_CLIENT_HELLO 116
1501#define SSL_F_SSL23_CONNECT 117
1502#define SSL_F_SSL23_GET_CLIENT_HELLO 118
1503#define SSL_F_SSL23_GET_SERVER_HELLO 119
1504#define SSL_F_SSL23_PEEK 237
1505#define SSL_F_SSL23_READ 120
1506#define SSL_F_SSL23_WRITE 121
1507#define SSL_F_SSL2_ACCEPT 122
1508#define SSL_F_SSL2_CONNECT 123
1509#define SSL_F_SSL2_ENC_INIT 124
1510#define SSL_F_SSL2_GENERATE_KEY_MATERIAL 241
1511#define SSL_F_SSL2_PEEK 234
1512#define SSL_F_SSL2_READ 125
1513#define SSL_F_SSL2_READ_INTERNAL 236
1514#define SSL_F_SSL2_SET_CERTIFICATE 126
1515#define SSL_F_SSL2_WRITE 127
1516#define SSL_F_SSL3_ACCEPT 128
1517#define SSL_F_SSL3_CALLBACK_CTRL 233
1518#define SSL_F_SSL3_CHANGE_CIPHER_STATE 129
1519#define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 130
1520#define SSL_F_SSL3_CLIENT_HELLO 131
1521#define SSL_F_SSL3_CONNECT 132
1522#define SSL_F_SSL3_CTRL 213
1523#define SSL_F_SSL3_CTX_CTRL 133
1524#define SSL_F_SSL3_ENC 134
1525#define SSL_F_SSL3_GENERATE_KEY_BLOCK 238
1526#define SSL_F_SSL3_GET_CERTIFICATE_REQUEST 135
1527#define SSL_F_SSL3_GET_CERT_VERIFY 136
1528#define SSL_F_SSL3_GET_CLIENT_CERTIFICATE 137
1529#define SSL_F_SSL3_GET_CLIENT_HELLO 138
1530#define SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE 139
1531#define SSL_F_SSL3_GET_FINISHED 140
1532#define SSL_F_SSL3_GET_KEY_EXCHANGE 141
1533#define SSL_F_SSL3_GET_MESSAGE 142
1534#define SSL_F_SSL3_GET_RECORD 143
1535#define SSL_F_SSL3_GET_SERVER_CERTIFICATE 144
1536#define SSL_F_SSL3_GET_SERVER_DONE 145
1537#define SSL_F_SSL3_GET_SERVER_HELLO 146
1538#define SSL_F_SSL3_OUTPUT_CERT_CHAIN 147
1539#define SSL_F_SSL3_PEEK 235
1540#define SSL_F_SSL3_READ_BYTES 148
1541#define SSL_F_SSL3_READ_N 149
1542#define SSL_F_SSL3_SEND_CERTIFICATE_REQUEST 150
1543#define SSL_F_SSL3_SEND_CLIENT_CERTIFICATE 151
1544#define SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE 152
1545#define SSL_F_SSL3_SEND_CLIENT_VERIFY 153
1546#define SSL_F_SSL3_SEND_SERVER_CERTIFICATE 154
1547#define SSL_F_SSL3_SEND_SERVER_HELLO 242
1548#define SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE 155
1549#define SSL_F_SSL3_SETUP_BUFFERS 156
1550#define SSL_F_SSL3_SETUP_KEY_BLOCK 157
1551#define SSL_F_SSL3_WRITE_BYTES 158
1552#define SSL_F_SSL3_WRITE_PENDING 159
1553#define SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK 215
1554#define SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK 216
1555#define SSL_F_SSL_BAD_METHOD 160
1556#define SSL_F_SSL_BYTES_TO_CIPHER_LIST 161
1557#define SSL_F_SSL_CERT_DUP 221
1558#define SSL_F_SSL_CERT_INST 222
1559#define SSL_F_SSL_CERT_INSTANTIATE 214
1560#define SSL_F_SSL_CERT_NEW 162
1561#define SSL_F_SSL_CHECK_PRIVATE_KEY 163
1562#define SSL_F_SSL_CIPHER_PROCESS_RULESTR 230
1563#define SSL_F_SSL_CIPHER_STRENGTH_SORT 231
1564#define SSL_F_SSL_CLEAR 164
1565#define SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD 165
1566#define SSL_F_SSL_CREATE_CIPHER_LIST 166
1567#define SSL_F_SSL_CTRL 232
1568#define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 168
1569#define SSL_F_SSL_CTX_NEW 169
1570#define SSL_F_SSL_CTX_SET_PURPOSE 226
1571#define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 219
1572#define SSL_F_SSL_CTX_SET_SSL_VERSION 170
1573#define SSL_F_SSL_CTX_SET_TRUST 229
1574#define SSL_F_SSL_CTX_USE_CERTIFICATE 171
1575#define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1 172
1576#define SSL_F_SSL_CTX_USE_CERTIFICATE_CHAIN_FILE 220
1577#define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE 173
1578#define SSL_F_SSL_CTX_USE_PRIVATEKEY 174
1579#define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 175
1580#define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE 176
1581#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY 177
1582#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 178
1583#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE 179
1584#define SSL_F_SSL_DO_HANDSHAKE 180
1585#define SSL_F_SSL_GET_NEW_SESSION 181
1586#define SSL_F_SSL_GET_PREV_SESSION 217
1587#define SSL_F_SSL_GET_SERVER_SEND_CERT 182
1588#define SSL_F_SSL_GET_SIGN_PKEY 183
1589#define SSL_F_SSL_INIT_WBIO_BUFFER 184
1590#define SSL_F_SSL_LOAD_CLIENT_CA_FILE 185
1591#define SSL_F_SSL_NEW 186
1592#define SSL_F_SSL_READ 223
1593#define SSL_F_SSL_RSA_PRIVATE_DECRYPT 187
1594#define SSL_F_SSL_RSA_PUBLIC_ENCRYPT 188
1595#define SSL_F_SSL_SESSION_NEW 189
1596#define SSL_F_SSL_SESSION_PRINT_FP 190
1597#define SSL_F_SSL_SESS_CERT_NEW 225
1598#define SSL_F_SSL_SET_CERT 191
1599#define SSL_F_SSL_SET_FD 192
1600#define SSL_F_SSL_SET_PKEY 193
1601#define SSL_F_SSL_SET_PURPOSE 227
1602#define SSL_F_SSL_SET_RFD 194
1603#define SSL_F_SSL_SET_SESSION 195
1604#define SSL_F_SSL_SET_SESSION_ID_CONTEXT 218
1605#define SSL_F_SSL_SET_TRUST 228
1606#define SSL_F_SSL_SET_WFD 196
1607#define SSL_F_SSL_SHUTDOWN 224
1608#define SSL_F_SSL_UNDEFINED_CONST_FUNCTION 243
1609#define SSL_F_SSL_UNDEFINED_FUNCTION 197
1610#define SSL_F_SSL_USE_CERTIFICATE 198
1611#define SSL_F_SSL_USE_CERTIFICATE_ASN1 199
1612#define SSL_F_SSL_USE_CERTIFICATE_FILE 200
1613#define SSL_F_SSL_USE_PRIVATEKEY 201
1614#define SSL_F_SSL_USE_PRIVATEKEY_ASN1 202
1615#define SSL_F_SSL_USE_PRIVATEKEY_FILE 203
1616#define SSL_F_SSL_USE_RSAPRIVATEKEY 204
1617#define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 205
1618#define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE 206
1619#define SSL_F_SSL_VERIFY_CERT_CHAIN 207
1620#define SSL_F_SSL_WRITE 208
1621#define SSL_F_TLS1_CHANGE_CIPHER_STATE 209
1622#define SSL_F_TLS1_ENC 210
1623#define SSL_F_TLS1_SETUP_KEY_BLOCK 211
1624#define SSL_F_WRITE_PENDING 212
1625
1626/* Reason codes. */
1627#define SSL_R_APP_DATA_IN_HANDSHAKE 100
1628#define SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT 272
1629#define SSL_R_BAD_ALERT_RECORD 101
1630#define SSL_R_BAD_AUTHENTICATION_TYPE 102
1631#define SSL_R_BAD_CHANGE_CIPHER_SPEC 103
1632#define SSL_R_BAD_CHECKSUM 104
1633#define SSL_R_BAD_DATA_RETURNED_BY_CALLBACK 106
1634#define SSL_R_BAD_DECOMPRESSION 107
1635#define SSL_R_BAD_DH_G_LENGTH 108
1636#define SSL_R_BAD_DH_PUB_KEY_LENGTH 109
1637#define SSL_R_BAD_DH_P_LENGTH 110
1638#define SSL_R_BAD_DIGEST_LENGTH 111
1639#define SSL_R_BAD_DSA_SIGNATURE 112
1640#define SSL_R_BAD_HELLO_REQUEST 105
1641#define SSL_R_BAD_LENGTH 271
1642#define SSL_R_BAD_MAC_DECODE 113
1643#define SSL_R_BAD_MESSAGE_TYPE 114
1644#define SSL_R_BAD_PACKET_LENGTH 115
1645#define SSL_R_BAD_PROTOCOL_VERSION_NUMBER 116
1646#define SSL_R_BAD_RESPONSE_ARGUMENT 117
1647#define SSL_R_BAD_RSA_DECRYPT 118
1648#define SSL_R_BAD_RSA_ENCRYPT 119
1649#define SSL_R_BAD_RSA_E_LENGTH 120
1650#define SSL_R_BAD_RSA_MODULUS_LENGTH 121
1651#define SSL_R_BAD_RSA_SIGNATURE 122
1652#define SSL_R_BAD_SIGNATURE 123
1653#define SSL_R_BAD_SSL_FILETYPE 124
1654#define SSL_R_BAD_SSL_SESSION_ID_LENGTH 125
1655#define SSL_R_BAD_STATE 126
1656#define SSL_R_BAD_WRITE_RETRY 127
1657#define SSL_R_BIO_NOT_SET 128
1658#define SSL_R_BLOCK_CIPHER_PAD_IS_WRONG 129
1659#define SSL_R_BN_LIB 130
1660#define SSL_R_CA_DN_LENGTH_MISMATCH 131
1661#define SSL_R_CA_DN_TOO_LONG 132
1662#define SSL_R_CCS_RECEIVED_EARLY 133
1663#define SSL_R_CERTIFICATE_VERIFY_FAILED 134
1664#define SSL_R_CERT_LENGTH_MISMATCH 135
1665#define SSL_R_CHALLENGE_IS_DIFFERENT 136
1666#define SSL_R_CIPHER_CODE_WRONG_LENGTH 137
1667#define SSL_R_CIPHER_OR_HASH_UNAVAILABLE 138
1668#define SSL_R_CIPHER_TABLE_SRC_ERROR 139
1669#define SSL_R_COMPRESSED_LENGTH_TOO_LONG 140
1670#define SSL_R_COMPRESSION_FAILURE 141
1671#define SSL_R_COMPRESSION_LIBRARY_ERROR 142
1672#define SSL_R_CONNECTION_ID_IS_DIFFERENT 143
1673#define SSL_R_CONNECTION_TYPE_NOT_SET 144
1674#define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145
1675#define SSL_R_DATA_LENGTH_TOO_LONG 146
1676#define SSL_R_DECRYPTION_FAILED 147
1677#define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 1109
1678#define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148
1679#define SSL_R_DIGEST_CHECK_FAILED 149
1680#define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150
1681#define SSL_R_ERROR_GENERATING_TMP_RSA_KEY 1092
1682#define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151
1683#define SSL_R_EXCESSIVE_MESSAGE_SIZE 152
1684#define SSL_R_EXTRA_DATA_IN_MESSAGE 153
1685#define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154
1686#define SSL_R_HTTPS_PROXY_REQUEST 155
1687#define SSL_R_HTTP_REQUEST 156
1688#define SSL_R_ILLEGAL_PADDING 1110
1689#define SSL_R_INVALID_CHALLENGE_LENGTH 158
1690#define SSL_R_INVALID_COMMAND 280
1691#define SSL_R_INVALID_PURPOSE 278
1692#define SSL_R_INVALID_TRUST 279
1693#define SSL_R_KEY_ARG_TOO_LONG 1112
1694#define SSL_R_KRB5 1104
1695#define SSL_R_KRB5_C_CC_PRINC 1094
1696#define SSL_R_KRB5_C_GET_CRED 1095
1697#define SSL_R_KRB5_C_INIT 1096
1698#define SSL_R_KRB5_C_MK_REQ 1097
1699#define SSL_R_KRB5_S_BAD_TICKET 1098
1700#define SSL_R_KRB5_S_INIT 1099
1701#define SSL_R_KRB5_S_RD_REQ 1108
1702#define SSL_R_KRB5_S_TKT_EXPIRED 1105
1703#define SSL_R_KRB5_S_TKT_NYV 1106
1704#define SSL_R_KRB5_S_TKT_SKEW 1107
1705#define SSL_R_LENGTH_MISMATCH 159
1706#define SSL_R_LENGTH_TOO_SHORT 160
1707#define SSL_R_LIBRARY_BUG 274
1708#define SSL_R_LIBRARY_HAS_NO_CIPHERS 161
1709#define SSL_R_MASTER_KEY_TOO_LONG 1112
1710#define SSL_R_MESSAGE_TOO_LONG 1111
1711#define SSL_R_MISSING_DH_DSA_CERT 162
1712#define SSL_R_MISSING_DH_KEY 163
1713#define SSL_R_MISSING_DH_RSA_CERT 164
1714#define SSL_R_MISSING_DSA_SIGNING_CERT 165
1715#define SSL_R_MISSING_EXPORT_TMP_DH_KEY 166
1716#define SSL_R_MISSING_EXPORT_TMP_RSA_KEY 167
1717#define SSL_R_MISSING_RSA_CERTIFICATE 168
1718#define SSL_R_MISSING_RSA_ENCRYPTING_CERT 169
1719#define SSL_R_MISSING_RSA_SIGNING_CERT 170
1720#define SSL_R_MISSING_TMP_DH_KEY 171
1721#define SSL_R_MISSING_TMP_RSA_KEY 172
1722#define SSL_R_MISSING_TMP_RSA_PKEY 173
1723#define SSL_R_MISSING_VERIFY_MESSAGE 174
1724#define SSL_R_NON_SSLV2_INITIAL_PACKET 175
1725#define SSL_R_NO_CERTIFICATES_RETURNED 176
1726#define SSL_R_NO_CERTIFICATE_ASSIGNED 177
1727#define SSL_R_NO_CERTIFICATE_RETURNED 178
1728#define SSL_R_NO_CERTIFICATE_SET 179
1729#define SSL_R_NO_CERTIFICATE_SPECIFIED 180
1730#define SSL_R_NO_CIPHERS_AVAILABLE 181
1731#define SSL_R_NO_CIPHERS_PASSED 182
1732#define SSL_R_NO_CIPHERS_SPECIFIED 183
1733#define SSL_R_NO_CIPHER_LIST 184
1734#define SSL_R_NO_CIPHER_MATCH 185
1735#define SSL_R_NO_CLIENT_CERT_RECEIVED 186
1736#define SSL_R_NO_COMPRESSION_SPECIFIED 187
1737#define SSL_R_NO_METHOD_SPECIFIED 188
1738#define SSL_R_NO_PRIVATEKEY 189
1739#define SSL_R_NO_PRIVATE_KEY_ASSIGNED 190
1740#define SSL_R_NO_PROTOCOLS_AVAILABLE 191
1741#define SSL_R_NO_PUBLICKEY 192
1742#define SSL_R_NO_SHARED_CIPHER 193
1743#define SSL_R_NO_VERIFY_CALLBACK 194
1744#define SSL_R_NULL_SSL_CTX 195
1745#define SSL_R_NULL_SSL_METHOD_PASSED 196
1746#define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197
1747#define SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE 1115
1748#define SSL_R_PACKET_LENGTH_TOO_LONG 198
1749#define SSL_R_PATH_TOO_LONG 270
1750#define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199
1751#define SSL_R_PEER_ERROR 200
1752#define SSL_R_PEER_ERROR_CERTIFICATE 201
1753#define SSL_R_PEER_ERROR_NO_CERTIFICATE 202
1754#define SSL_R_PEER_ERROR_NO_CIPHER 203
1755#define SSL_R_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE 204
1756#define SSL_R_PRE_MAC_LENGTH_TOO_LONG 205
1757#define SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS 206
1758#define SSL_R_PROTOCOL_IS_SHUTDOWN 207
1759#define SSL_R_PUBLIC_KEY_ENCRYPT_ERROR 208
1760#define SSL_R_PUBLIC_KEY_IS_NOT_RSA 209
1761#define SSL_R_PUBLIC_KEY_NOT_RSA 210
1762#define SSL_R_READ_BIO_NOT_SET 211
1763#define SSL_R_READ_WRONG_PACKET_TYPE 212
1764#define SSL_R_RECORD_LENGTH_MISMATCH 213
1765#define SSL_R_RECORD_TOO_LARGE 214
1766#define SSL_R_RECORD_TOO_SMALL 1093
1767#define SSL_R_REQUIRED_CIPHER_MISSING 215
1768#define SSL_R_REUSE_CERT_LENGTH_NOT_ZERO 216
1769#define SSL_R_REUSE_CERT_TYPE_NOT_ZERO 217
1770#define SSL_R_REUSE_CIPHER_LIST_NOT_ZERO 218
1771#define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277
1772#define SSL_R_SHORT_READ 219
1773#define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220
1774#define SSL_R_SSL23_DOING_SESSION_ID_REUSE 221
1775#define SSL_R_SSL2_CONNECTION_ID_TOO_LONG 1114
1776#define SSL_R_SSL3_SESSION_ID_TOO_LONG 1113
1777#define SSL_R_SSL3_SESSION_ID_TOO_SHORT 222
1778#define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042
1779#define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020
1780#define SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED 1045
1781#define SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED 1044
1782#define SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN 1046
1783#define SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE 1030
1784#define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040
1785#define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047
1786#define SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041
1787#define SSL_R_SSLV3_ALERT_PEER_ERROR_CERTIFICATE 223
1788#define SSL_R_SSLV3_ALERT_PEER_ERROR_NO_CERTIFICATE 224
1789#define SSL_R_SSLV3_ALERT_PEER_ERROR_NO_CIPHER 225
1790#define SSL_R_SSLV3_ALERT_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE 226
1791#define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010
1792#define SSL_R_SSLV3_ALERT_UNKNOWN_REMOTE_ERROR_TYPE 227
1793#define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043
1794#define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION 228
1795#define SSL_R_SSL_HANDSHAKE_FAILURE 229
1796#define SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS 230
1797#define SSL_R_SSL_SESSION_ID_CALLBACK_FAILED 1102
1798#define SSL_R_SSL_SESSION_ID_CONFLICT 1103
1799#define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG 273
1800#define SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH 1101
1801#define SSL_R_SSL_SESSION_ID_IS_DIFFERENT 231
1802#define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049
1803#define SSL_R_TLSV1_ALERT_DECODE_ERROR 1050
1804#define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED 1021
1805#define SSL_R_TLSV1_ALERT_DECRYPT_ERROR 1051
1806#define SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION 1060
1807#define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY 1071
1808#define SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080
1809#define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100
1810#define SSL_R_TLSV1_ALERT_PROTOCOL_VERSION 1070
1811#define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022
1812#define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048
1813#define SSL_R_TLSV1_ALERT_USER_CANCELLED 1090
1814#define SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER 232
1815#define SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST 233
1816#define SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG 234
1817#define SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER 235
1818#define SSL_R_UNABLE_TO_DECODE_DH_CERTS 236
1819#define SSL_R_UNABLE_TO_EXTRACT_PUBLIC_KEY 237
1820#define SSL_R_UNABLE_TO_FIND_DH_PARAMETERS 238
1821#define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS 239
1822#define SSL_R_UNABLE_TO_FIND_SSL_METHOD 240
1823#define SSL_R_UNABLE_TO_LOAD_SSL2_MD5_ROUTINES 241
1824#define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES 242
1825#define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES 243
1826#define SSL_R_UNEXPECTED_MESSAGE 244
1827#define SSL_R_UNEXPECTED_RECORD 245
1828#define SSL_R_UNINITIALIZED 276
1829#define SSL_R_UNKNOWN_ALERT_TYPE 246
1830#define SSL_R_UNKNOWN_CERTIFICATE_TYPE 247
1831#define SSL_R_UNKNOWN_CIPHER_RETURNED 248
1832#define SSL_R_UNKNOWN_CIPHER_TYPE 249
1833#define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE 250
1834#define SSL_R_UNKNOWN_PKEY_TYPE 251
1835#define SSL_R_UNKNOWN_PROTOCOL 252
1836#define SSL_R_UNKNOWN_REMOTE_ERROR_TYPE 253
1837#define SSL_R_UNKNOWN_SSL_VERSION 254
1838#define SSL_R_UNKNOWN_STATE 255
1839#define SSL_R_UNSUPPORTED_CIPHER 256
1840#define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257
1841#define SSL_R_UNSUPPORTED_OPTION 1091
1842#define SSL_R_UNSUPPORTED_PROTOCOL 258
1843#define SSL_R_UNSUPPORTED_SSL_VERSION 259
1844#define SSL_R_WRITE_BIO_NOT_SET 260
1845#define SSL_R_WRONG_CIPHER_RETURNED 261
1846#define SSL_R_WRONG_MESSAGE_TYPE 262
1847#define SSL_R_WRONG_NUMBER_OF_KEY_BITS 263
1848#define SSL_R_WRONG_SIGNATURE_LENGTH 264
1849#define SSL_R_WRONG_SIGNATURE_SIZE 265
1850#define SSL_R_WRONG_SSL_VERSION 266
1851#define SSL_R_WRONG_VERSION_NUMBER 267
1852#define SSL_R_X509_LIB 268
1853#define SSL_R_X509_VERIFICATION_SETUP_PROBLEMS 269
1854
1855#ifdef __cplusplus
1856}
1857#endif
1858#endif
diff --git a/src/lib/libssl/ssl/Makefile b/src/lib/libssl/ssl/Makefile
new file mode 100644
index 0000000000..dd5ff5720c
--- /dev/null
+++ b/src/lib/libssl/ssl/Makefile
@@ -0,0 +1,52 @@
1# $OpenBSD: Makefile,v 1.21 2005/11/24 20:49:23 deraadt Exp $
2
3LIB= ssl
4WANTLINT=
5
6SSLEAYDIST= src
7
8LSSL_SRC= ${.CURDIR}/../${SSLEAYDIST}/ssl
9
10.if ${MACHINE_ARCH} == "i386"
11CFLAGS+= -DL_ENDIAN -DBN_ASM
12.else
13.if ${MACHINE_ARCH} == "vax"
14CFLAGS+= -DL_ENDIAN
15.else
16.if ${MACHINE_ARCH} == "alpha"
17# no ENDIAN stuff defined for alpha
18.else
19CFLAGS+= -DB_ENDIAN
20.endif
21.endif
22.endif
23
24CFLAGS+= -DOPENSSL_NO_IDEA -DTERMIOS -DANSI_SOURCE -DNO_ERR
25CFLAGS+= -DOPENSSL_NO_MDC2
26CFLAGS+= -DOPENSSL_NO_RC5 -DOPENSSL_NO_KRB5 -DHAVE_DLFCN_H
27CFLAGS+= -I${.CURDIR}/../${SSLEAYDIST}
28
29SRCS= bio_ssl.c s2_clnt.c s3_both.c s3_srvr.c ssl_err2.c ssl_txt.c \
30 t1_srvr.c s23_clnt.c s2_enc.c s3_clnt.c ssl_algs.c ssl_lib.c \
31 s23_lib.c s2_lib.c s3_enc.c ssl_asn1.c ssl_rsa.c \
32 t1_clnt.c s23_meth.c s2_meth.c s3_lib.c ssl_cert.c ssl_sess.c \
33 t1_enc.c s23_pkt.c s2_pkt.c s3_meth.c ssl_ciph.c ssl_stat.c \
34 t1_lib.c s23_srvr.c s2_srvr.c s3_pkt.c ssl_err.c \
35 t1_meth.c
36
37HDRS= ssl.h ssl2.h ssl3.h ssl23.h tls1.h kssl.h
38
39.PATH: ${LSSL_SRC}
40
41includes:
42 @test -d ${DESTDIR}/usr/include/openssl || \
43 mkdir ${DESTDIR}/usr/include/openssl
44 @cd ${LSSL_SRC}; for i in $(HDRS); do \
45 j="cmp -s $$i ${DESTDIR}/usr/include/openssl/`basename $$i` || \
46 ${INSTALL} ${INSTALL_COPY} -o ${BINOWN} -g ${BINGRP} -m 444 $$i\
47 ${DESTDIR}/usr/include/openssl"; \
48 echo $$j; \
49 eval "$$j"; \
50 done;
51
52.include <bsd.lib.mk>
diff --git a/src/lib/libssl/ssl/shlib_version b/src/lib/libssl/ssl/shlib_version
new file mode 100644
index 0000000000..c10074d52a
--- /dev/null
+++ b/src/lib/libssl/ssl/shlib_version
@@ -0,0 +1,2 @@
1major=10
2minor=0
diff --git a/src/lib/libssl/ssl2.h b/src/lib/libssl/ssl2.h
new file mode 100644
index 0000000000..99a52ea0dd
--- /dev/null
+++ b/src/lib/libssl/ssl2.h
@@ -0,0 +1,268 @@
1/* ssl/ssl2.h */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#ifndef HEADER_SSL2_H
60#define HEADER_SSL2_H
61
62#ifdef __cplusplus
63extern "C" {
64#endif
65
66/* Protocol Version Codes */
67#define SSL2_VERSION 0x0002
68#define SSL2_VERSION_MAJOR 0x00
69#define SSL2_VERSION_MINOR 0x02
70/* #define SSL2_CLIENT_VERSION 0x0002 */
71/* #define SSL2_SERVER_VERSION 0x0002 */
72
73/* Protocol Message Codes */
74#define SSL2_MT_ERROR 0
75#define SSL2_MT_CLIENT_HELLO 1
76#define SSL2_MT_CLIENT_MASTER_KEY 2
77#define SSL2_MT_CLIENT_FINISHED 3
78#define SSL2_MT_SERVER_HELLO 4
79#define SSL2_MT_SERVER_VERIFY 5
80#define SSL2_MT_SERVER_FINISHED 6
81#define SSL2_MT_REQUEST_CERTIFICATE 7
82#define SSL2_MT_CLIENT_CERTIFICATE 8
83
84/* Error Message Codes */
85#define SSL2_PE_UNDEFINED_ERROR 0x0000
86#define SSL2_PE_NO_CIPHER 0x0001
87#define SSL2_PE_NO_CERTIFICATE 0x0002
88#define SSL2_PE_BAD_CERTIFICATE 0x0004
89#define SSL2_PE_UNSUPPORTED_CERTIFICATE_TYPE 0x0006
90
91/* Cipher Kind Values */
92#define SSL2_CK_NULL_WITH_MD5 0x02000000 /* v3 */
93#define SSL2_CK_RC4_128_WITH_MD5 0x02010080
94#define SSL2_CK_RC4_128_EXPORT40_WITH_MD5 0x02020080
95#define SSL2_CK_RC2_128_CBC_WITH_MD5 0x02030080
96#define SSL2_CK_RC2_128_CBC_EXPORT40_WITH_MD5 0x02040080
97#define SSL2_CK_IDEA_128_CBC_WITH_MD5 0x02050080
98#define SSL2_CK_DES_64_CBC_WITH_MD5 0x02060040
99#define SSL2_CK_DES_64_CBC_WITH_SHA 0x02060140 /* v3 */
100#define SSL2_CK_DES_192_EDE3_CBC_WITH_MD5 0x020700c0
101#define SSL2_CK_DES_192_EDE3_CBC_WITH_SHA 0x020701c0 /* v3 */
102#define SSL2_CK_RC4_64_WITH_MD5 0x02080080 /* MS hack */
103
104#define SSL2_CK_DES_64_CFB64_WITH_MD5_1 0x02ff0800 /* SSLeay */
105#define SSL2_CK_NULL 0x02ff0810 /* SSLeay */
106
107#define SSL2_TXT_DES_64_CFB64_WITH_MD5_1 "DES-CFB-M1"
108#define SSL2_TXT_NULL_WITH_MD5 "NULL-MD5"
109#define SSL2_TXT_RC4_128_WITH_MD5 "RC4-MD5"
110#define SSL2_TXT_RC4_128_EXPORT40_WITH_MD5 "EXP-RC4-MD5"
111#define SSL2_TXT_RC2_128_CBC_WITH_MD5 "RC2-CBC-MD5"
112#define SSL2_TXT_RC2_128_CBC_EXPORT40_WITH_MD5 "EXP-RC2-CBC-MD5"
113#define SSL2_TXT_IDEA_128_CBC_WITH_MD5 "IDEA-CBC-MD5"
114#define SSL2_TXT_DES_64_CBC_WITH_MD5 "DES-CBC-MD5"
115#define SSL2_TXT_DES_64_CBC_WITH_SHA "DES-CBC-SHA"
116#define SSL2_TXT_DES_192_EDE3_CBC_WITH_MD5 "DES-CBC3-MD5"
117#define SSL2_TXT_DES_192_EDE3_CBC_WITH_SHA "DES-CBC3-SHA"
118#define SSL2_TXT_RC4_64_WITH_MD5 "RC4-64-MD5"
119
120#define SSL2_TXT_NULL "NULL"
121
122/* Flags for the SSL_CIPHER.algorithm2 field */
123#define SSL2_CF_5_BYTE_ENC 0x01
124#define SSL2_CF_8_BYTE_ENC 0x02
125
126/* Certificate Type Codes */
127#define SSL2_CT_X509_CERTIFICATE 0x01
128
129/* Authentication Type Code */
130#define SSL2_AT_MD5_WITH_RSA_ENCRYPTION 0x01
131
132#define SSL2_MAX_SSL_SESSION_ID_LENGTH 32
133
134/* Upper/Lower Bounds */
135#define SSL2_MAX_MASTER_KEY_LENGTH_IN_BITS 256
136#ifdef OPENSSL_SYS_MPE
137#define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER 29998u
138#else
139#define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER 32767u /* 2^15-1 */
140#endif
141#define SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER 16383 /* 2^14-1 */
142
143#define SSL2_CHALLENGE_LENGTH 16
144/*#define SSL2_CHALLENGE_LENGTH 32 */
145#define SSL2_MIN_CHALLENGE_LENGTH 16
146#define SSL2_MAX_CHALLENGE_LENGTH 32
147#define SSL2_CONNECTION_ID_LENGTH 16
148#define SSL2_MAX_CONNECTION_ID_LENGTH 16
149#define SSL2_SSL_SESSION_ID_LENGTH 16
150#define SSL2_MAX_CERT_CHALLENGE_LENGTH 32
151#define SSL2_MIN_CERT_CHALLENGE_LENGTH 16
152#define SSL2_MAX_KEY_MATERIAL_LENGTH 24
153
154#ifndef HEADER_SSL_LOCL_H
155#define CERT char
156#endif
157
158typedef struct ssl2_state_st
159 {
160 int three_byte_header;
161 int clear_text; /* clear text */
162 int escape; /* not used in SSLv2 */
163 int ssl2_rollback; /* used if SSLv23 rolled back to SSLv2 */
164
165 /* non-blocking io info, used to make sure the same
166 * args were passwd */
167 unsigned int wnum; /* number of bytes sent so far */
168 int wpend_tot;
169 const unsigned char *wpend_buf;
170
171 int wpend_off; /* offset to data to write */
172 int wpend_len; /* number of bytes passwd to write */
173 int wpend_ret; /* number of bytes to return to caller */
174
175 /* buffer raw data */
176 int rbuf_left;
177 int rbuf_offs;
178 unsigned char *rbuf;
179 unsigned char *wbuf;
180
181 unsigned char *write_ptr;/* used to point to the start due to
182 * 2/3 byte header. */
183
184 unsigned int padding;
185 unsigned int rlength; /* passed to ssl2_enc */
186 int ract_data_length; /* Set when things are encrypted. */
187 unsigned int wlength; /* passed to ssl2_enc */
188 int wact_data_length; /* Set when things are decrypted. */
189 unsigned char *ract_data;
190 unsigned char *wact_data;
191 unsigned char *mac_data;
192
193 unsigned char *read_key;
194 unsigned char *write_key;
195
196 /* Stuff specifically to do with this SSL session */
197 unsigned int challenge_length;
198 unsigned char challenge[SSL2_MAX_CHALLENGE_LENGTH];
199 unsigned int conn_id_length;
200 unsigned char conn_id[SSL2_MAX_CONNECTION_ID_LENGTH];
201 unsigned int key_material_length;
202 unsigned char key_material[SSL2_MAX_KEY_MATERIAL_LENGTH*2];
203
204 unsigned long read_sequence;
205 unsigned long write_sequence;
206
207 struct {
208 unsigned int conn_id_length;
209 unsigned int cert_type;
210 unsigned int cert_length;
211 unsigned int csl;
212 unsigned int clear;
213 unsigned int enc;
214 unsigned char ccl[SSL2_MAX_CERT_CHALLENGE_LENGTH];
215 unsigned int cipher_spec_length;
216 unsigned int session_id_length;
217 unsigned int clen;
218 unsigned int rlen;
219 } tmp;
220 } SSL2_STATE;
221
222/* SSLv2 */
223/* client */
224#define SSL2_ST_SEND_CLIENT_HELLO_A (0x10|SSL_ST_CONNECT)
225#define SSL2_ST_SEND_CLIENT_HELLO_B (0x11|SSL_ST_CONNECT)
226#define SSL2_ST_GET_SERVER_HELLO_A (0x20|SSL_ST_CONNECT)
227#define SSL2_ST_GET_SERVER_HELLO_B (0x21|SSL_ST_CONNECT)
228#define SSL2_ST_SEND_CLIENT_MASTER_KEY_A (0x30|SSL_ST_CONNECT)
229#define SSL2_ST_SEND_CLIENT_MASTER_KEY_B (0x31|SSL_ST_CONNECT)
230#define SSL2_ST_SEND_CLIENT_FINISHED_A (0x40|SSL_ST_CONNECT)
231#define SSL2_ST_SEND_CLIENT_FINISHED_B (0x41|SSL_ST_CONNECT)
232#define SSL2_ST_SEND_CLIENT_CERTIFICATE_A (0x50|SSL_ST_CONNECT)
233#define SSL2_ST_SEND_CLIENT_CERTIFICATE_B (0x51|SSL_ST_CONNECT)
234#define SSL2_ST_SEND_CLIENT_CERTIFICATE_C (0x52|SSL_ST_CONNECT)
235#define SSL2_ST_SEND_CLIENT_CERTIFICATE_D (0x53|SSL_ST_CONNECT)
236#define SSL2_ST_GET_SERVER_VERIFY_A (0x60|SSL_ST_CONNECT)
237#define SSL2_ST_GET_SERVER_VERIFY_B (0x61|SSL_ST_CONNECT)
238#define SSL2_ST_GET_SERVER_FINISHED_A (0x70|SSL_ST_CONNECT)
239#define SSL2_ST_GET_SERVER_FINISHED_B (0x71|SSL_ST_CONNECT)
240#define SSL2_ST_CLIENT_START_ENCRYPTION (0x80|SSL_ST_CONNECT)
241#define SSL2_ST_X509_GET_CLIENT_CERTIFICATE (0x90|SSL_ST_CONNECT)
242/* server */
243#define SSL2_ST_GET_CLIENT_HELLO_A (0x10|SSL_ST_ACCEPT)
244#define SSL2_ST_GET_CLIENT_HELLO_B (0x11|SSL_ST_ACCEPT)
245#define SSL2_ST_GET_CLIENT_HELLO_C (0x12|SSL_ST_ACCEPT)
246#define SSL2_ST_SEND_SERVER_HELLO_A (0x20|SSL_ST_ACCEPT)
247#define SSL2_ST_SEND_SERVER_HELLO_B (0x21|SSL_ST_ACCEPT)
248#define SSL2_ST_GET_CLIENT_MASTER_KEY_A (0x30|SSL_ST_ACCEPT)
249#define SSL2_ST_GET_CLIENT_MASTER_KEY_B (0x31|SSL_ST_ACCEPT)
250#define SSL2_ST_SEND_SERVER_VERIFY_A (0x40|SSL_ST_ACCEPT)
251#define SSL2_ST_SEND_SERVER_VERIFY_B (0x41|SSL_ST_ACCEPT)
252#define SSL2_ST_SEND_SERVER_VERIFY_C (0x42|SSL_ST_ACCEPT)
253#define SSL2_ST_GET_CLIENT_FINISHED_A (0x50|SSL_ST_ACCEPT)
254#define SSL2_ST_GET_CLIENT_FINISHED_B (0x51|SSL_ST_ACCEPT)
255#define SSL2_ST_SEND_SERVER_FINISHED_A (0x60|SSL_ST_ACCEPT)
256#define SSL2_ST_SEND_SERVER_FINISHED_B (0x61|SSL_ST_ACCEPT)
257#define SSL2_ST_SEND_REQUEST_CERTIFICATE_A (0x70|SSL_ST_ACCEPT)
258#define SSL2_ST_SEND_REQUEST_CERTIFICATE_B (0x71|SSL_ST_ACCEPT)
259#define SSL2_ST_SEND_REQUEST_CERTIFICATE_C (0x72|SSL_ST_ACCEPT)
260#define SSL2_ST_SEND_REQUEST_CERTIFICATE_D (0x73|SSL_ST_ACCEPT)
261#define SSL2_ST_SERVER_START_ENCRYPTION (0x80|SSL_ST_ACCEPT)
262#define SSL2_ST_X509_GET_SERVER_CERTIFICATE (0x90|SSL_ST_ACCEPT)
263
264#ifdef __cplusplus
265}
266#endif
267#endif
268
diff --git a/src/lib/libssl/ssl23.h b/src/lib/libssl/ssl23.h
new file mode 100644
index 0000000000..d3228983c7
--- /dev/null
+++ b/src/lib/libssl/ssl23.h
@@ -0,0 +1,83 @@
1/* ssl/ssl23.h */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#ifndef HEADER_SSL23_H
60#define HEADER_SSL23_H
61
62#ifdef __cplusplus
63extern "C" {
64#endif
65
66/*client */
67/* write to server */
68#define SSL23_ST_CW_CLNT_HELLO_A (0x210|SSL_ST_CONNECT)
69#define SSL23_ST_CW_CLNT_HELLO_B (0x211|SSL_ST_CONNECT)
70/* read from server */
71#define SSL23_ST_CR_SRVR_HELLO_A (0x220|SSL_ST_CONNECT)
72#define SSL23_ST_CR_SRVR_HELLO_B (0x221|SSL_ST_CONNECT)
73
74/* server */
75/* read from client */
76#define SSL23_ST_SR_CLNT_HELLO_A (0x210|SSL_ST_ACCEPT)
77#define SSL23_ST_SR_CLNT_HELLO_B (0x211|SSL_ST_ACCEPT)
78
79#ifdef __cplusplus
80}
81#endif
82#endif
83
diff --git a/src/lib/libssl/ssl3.h b/src/lib/libssl/ssl3.h
new file mode 100644
index 0000000000..1153aeda74
--- /dev/null
+++ b/src/lib/libssl/ssl3.h
@@ -0,0 +1,526 @@
1/* ssl/ssl3.h */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58/* ====================================================================
59 * Copyright (c) 1998-2002 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#ifndef HEADER_SSL3_H
113#define HEADER_SSL3_H
114
115#ifndef OPENSSL_NO_COMP
116#include <openssl/comp.h>
117#endif
118#include <openssl/buffer.h>
119#include <openssl/evp.h>
120#include <openssl/ssl.h>
121
122#ifdef __cplusplus
123extern "C" {
124#endif
125
126#define SSL3_CK_RSA_NULL_MD5 0x03000001
127#define SSL3_CK_RSA_NULL_SHA 0x03000002
128#define SSL3_CK_RSA_RC4_40_MD5 0x03000003
129#define SSL3_CK_RSA_RC4_128_MD5 0x03000004
130#define SSL3_CK_RSA_RC4_128_SHA 0x03000005
131#define SSL3_CK_RSA_RC2_40_MD5 0x03000006
132#define SSL3_CK_RSA_IDEA_128_SHA 0x03000007
133#define SSL3_CK_RSA_DES_40_CBC_SHA 0x03000008
134#define SSL3_CK_RSA_DES_64_CBC_SHA 0x03000009
135#define SSL3_CK_RSA_DES_192_CBC3_SHA 0x0300000A
136
137#define SSL3_CK_DH_DSS_DES_40_CBC_SHA 0x0300000B
138#define SSL3_CK_DH_DSS_DES_64_CBC_SHA 0x0300000C
139#define SSL3_CK_DH_DSS_DES_192_CBC3_SHA 0x0300000D
140#define SSL3_CK_DH_RSA_DES_40_CBC_SHA 0x0300000E
141#define SSL3_CK_DH_RSA_DES_64_CBC_SHA 0x0300000F
142#define SSL3_CK_DH_RSA_DES_192_CBC3_SHA 0x03000010
143
144#define SSL3_CK_EDH_DSS_DES_40_CBC_SHA 0x03000011
145#define SSL3_CK_EDH_DSS_DES_64_CBC_SHA 0x03000012
146#define SSL3_CK_EDH_DSS_DES_192_CBC3_SHA 0x03000013
147#define SSL3_CK_EDH_RSA_DES_40_CBC_SHA 0x03000014
148#define SSL3_CK_EDH_RSA_DES_64_CBC_SHA 0x03000015
149#define SSL3_CK_EDH_RSA_DES_192_CBC3_SHA 0x03000016
150
151#define SSL3_CK_ADH_RC4_40_MD5 0x03000017
152#define SSL3_CK_ADH_RC4_128_MD5 0x03000018
153#define SSL3_CK_ADH_DES_40_CBC_SHA 0x03000019
154#define SSL3_CK_ADH_DES_64_CBC_SHA 0x0300001A
155#define SSL3_CK_ADH_DES_192_CBC_SHA 0x0300001B
156
157#define SSL3_CK_FZA_DMS_NULL_SHA 0x0300001C
158#define SSL3_CK_FZA_DMS_FZA_SHA 0x0300001D
159#if 0 /* Because it clashes with KRB5, is never used any more, and is safe
160 to remove according to David Hopwood <david.hopwood@zetnet.co.uk>
161 of the ietf-tls list */
162#define SSL3_CK_FZA_DMS_RC4_SHA 0x0300001E
163#endif
164
165/* VRS Additional Kerberos5 entries
166 */
167#define SSL3_CK_KRB5_DES_64_CBC_SHA 0x0300001E
168#define SSL3_CK_KRB5_DES_192_CBC3_SHA 0x0300001F
169#define SSL3_CK_KRB5_RC4_128_SHA 0x03000020
170#define SSL3_CK_KRB5_IDEA_128_CBC_SHA 0x03000021
171#define SSL3_CK_KRB5_DES_64_CBC_MD5 0x03000022
172#define SSL3_CK_KRB5_DES_192_CBC3_MD5 0x03000023
173#define SSL3_CK_KRB5_RC4_128_MD5 0x03000024
174#define SSL3_CK_KRB5_IDEA_128_CBC_MD5 0x03000025
175
176#define SSL3_CK_KRB5_DES_40_CBC_SHA 0x03000026
177#define SSL3_CK_KRB5_RC2_40_CBC_SHA 0x03000027
178#define SSL3_CK_KRB5_RC4_40_SHA 0x03000028
179#define SSL3_CK_KRB5_DES_40_CBC_MD5 0x03000029
180#define SSL3_CK_KRB5_RC2_40_CBC_MD5 0x0300002A
181#define SSL3_CK_KRB5_RC4_40_MD5 0x0300002B
182
183#define SSL3_TXT_RSA_NULL_MD5 "NULL-MD5"
184#define SSL3_TXT_RSA_NULL_SHA "NULL-SHA"
185#define SSL3_TXT_RSA_RC4_40_MD5 "EXP-RC4-MD5"
186#define SSL3_TXT_RSA_RC4_128_MD5 "RC4-MD5"
187#define SSL3_TXT_RSA_RC4_128_SHA "RC4-SHA"
188#define SSL3_TXT_RSA_RC2_40_MD5 "EXP-RC2-CBC-MD5"
189#define SSL3_TXT_RSA_IDEA_128_SHA "IDEA-CBC-SHA"
190#define SSL3_TXT_RSA_DES_40_CBC_SHA "EXP-DES-CBC-SHA"
191#define SSL3_TXT_RSA_DES_64_CBC_SHA "DES-CBC-SHA"
192#define SSL3_TXT_RSA_DES_192_CBC3_SHA "DES-CBC3-SHA"
193
194#define SSL3_TXT_DH_DSS_DES_40_CBC_SHA "EXP-DH-DSS-DES-CBC-SHA"
195#define SSL3_TXT_DH_DSS_DES_64_CBC_SHA "DH-DSS-DES-CBC-SHA"
196#define SSL3_TXT_DH_DSS_DES_192_CBC3_SHA "DH-DSS-DES-CBC3-SHA"
197#define SSL3_TXT_DH_RSA_DES_40_CBC_SHA "EXP-DH-RSA-DES-CBC-SHA"
198#define SSL3_TXT_DH_RSA_DES_64_CBC_SHA "DH-RSA-DES-CBC-SHA"
199#define SSL3_TXT_DH_RSA_DES_192_CBC3_SHA "DH-RSA-DES-CBC3-SHA"
200
201#define SSL3_TXT_EDH_DSS_DES_40_CBC_SHA "EXP-EDH-DSS-DES-CBC-SHA"
202#define SSL3_TXT_EDH_DSS_DES_64_CBC_SHA "EDH-DSS-DES-CBC-SHA"
203#define SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA "EDH-DSS-DES-CBC3-SHA"
204#define SSL3_TXT_EDH_RSA_DES_40_CBC_SHA "EXP-EDH-RSA-DES-CBC-SHA"
205#define SSL3_TXT_EDH_RSA_DES_64_CBC_SHA "EDH-RSA-DES-CBC-SHA"
206#define SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA "EDH-RSA-DES-CBC3-SHA"
207
208#define SSL3_TXT_ADH_RC4_40_MD5 "EXP-ADH-RC4-MD5"
209#define SSL3_TXT_ADH_RC4_128_MD5 "ADH-RC4-MD5"
210#define SSL3_TXT_ADH_DES_40_CBC_SHA "EXP-ADH-DES-CBC-SHA"
211#define SSL3_TXT_ADH_DES_64_CBC_SHA "ADH-DES-CBC-SHA"
212#define SSL3_TXT_ADH_DES_192_CBC_SHA "ADH-DES-CBC3-SHA"
213
214#define SSL3_TXT_FZA_DMS_NULL_SHA "FZA-NULL-SHA"
215#define SSL3_TXT_FZA_DMS_FZA_SHA "FZA-FZA-CBC-SHA"
216#define SSL3_TXT_FZA_DMS_RC4_SHA "FZA-RC4-SHA"
217
218#define SSL3_TXT_KRB5_DES_64_CBC_SHA "KRB5-DES-CBC-SHA"
219#define SSL3_TXT_KRB5_DES_192_CBC3_SHA "KRB5-DES-CBC3-SHA"
220#define SSL3_TXT_KRB5_RC4_128_SHA "KRB5-RC4-SHA"
221#define SSL3_TXT_KRB5_IDEA_128_CBC_SHA "KRB5-IDEA-CBC-SHA"
222#define SSL3_TXT_KRB5_DES_64_CBC_MD5 "KRB5-DES-CBC-MD5"
223#define SSL3_TXT_KRB5_DES_192_CBC3_MD5 "KRB5-DES-CBC3-MD5"
224#define SSL3_TXT_KRB5_RC4_128_MD5 "KRB5-RC4-MD5"
225#define SSL3_TXT_KRB5_IDEA_128_CBC_MD5 "KRB5-IDEA-CBC-MD5"
226
227#define SSL3_TXT_KRB5_DES_40_CBC_SHA "EXP-KRB5-DES-CBC-SHA"
228#define SSL3_TXT_KRB5_RC2_40_CBC_SHA "EXP-KRB5-RC2-CBC-SHA"
229#define SSL3_TXT_KRB5_RC4_40_SHA "EXP-KRB5-RC4-SHA"
230#define SSL3_TXT_KRB5_DES_40_CBC_MD5 "EXP-KRB5-DES-CBC-MD5"
231#define SSL3_TXT_KRB5_RC2_40_CBC_MD5 "EXP-KRB5-RC2-CBC-MD5"
232#define SSL3_TXT_KRB5_RC4_40_MD5 "EXP-KRB5-RC4-MD5"
233
234#define SSL3_SSL_SESSION_ID_LENGTH 32
235#define SSL3_MAX_SSL_SESSION_ID_LENGTH 32
236
237#define SSL3_MASTER_SECRET_SIZE 48
238#define SSL3_RANDOM_SIZE 32
239#define SSL3_SESSION_ID_SIZE 32
240#define SSL3_RT_HEADER_LENGTH 5
241
242/* Due to MS stuffing up, this can change.... */
243#if defined(OPENSSL_SYS_WIN16) || \
244 (defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN32))
245#define SSL3_RT_MAX_EXTRA (14000)
246#else
247#define SSL3_RT_MAX_EXTRA (16384)
248#endif
249
250#define SSL3_RT_MAX_PLAIN_LENGTH 16384
251#define SSL3_RT_MAX_COMPRESSED_LENGTH (1024+SSL3_RT_MAX_PLAIN_LENGTH)
252#define SSL3_RT_MAX_ENCRYPTED_LENGTH (1024+SSL3_RT_MAX_COMPRESSED_LENGTH)
253#define SSL3_RT_MAX_PACKET_SIZE (SSL3_RT_MAX_ENCRYPTED_LENGTH+SSL3_RT_HEADER_LENGTH)
254#define SSL3_RT_MAX_DATA_SIZE (1024*1024)
255
256#define SSL3_MD_CLIENT_FINISHED_CONST "\x43\x4C\x4E\x54"
257#define SSL3_MD_SERVER_FINISHED_CONST "\x53\x52\x56\x52"
258
259#define SSL3_VERSION 0x0300
260#define SSL3_VERSION_MAJOR 0x03
261#define SSL3_VERSION_MINOR 0x00
262
263#define SSL3_RT_CHANGE_CIPHER_SPEC 20
264#define SSL3_RT_ALERT 21
265#define SSL3_RT_HANDSHAKE 22
266#define SSL3_RT_APPLICATION_DATA 23
267
268#define SSL3_AL_WARNING 1
269#define SSL3_AL_FATAL 2
270
271#define SSL3_AD_CLOSE_NOTIFY 0
272#define SSL3_AD_UNEXPECTED_MESSAGE 10 /* fatal */
273#define SSL3_AD_BAD_RECORD_MAC 20 /* fatal */
274#define SSL3_AD_DECOMPRESSION_FAILURE 30 /* fatal */
275#define SSL3_AD_HANDSHAKE_FAILURE 40 /* fatal */
276#define SSL3_AD_NO_CERTIFICATE 41
277#define SSL3_AD_BAD_CERTIFICATE 42
278#define SSL3_AD_UNSUPPORTED_CERTIFICATE 43
279#define SSL3_AD_CERTIFICATE_REVOKED 44
280#define SSL3_AD_CERTIFICATE_EXPIRED 45
281#define SSL3_AD_CERTIFICATE_UNKNOWN 46
282#define SSL3_AD_ILLEGAL_PARAMETER 47 /* fatal */
283
284typedef struct ssl3_record_st
285 {
286/*r */ int type; /* type of record */
287/*rw*/ unsigned int length; /* How many bytes available */
288/*r */ unsigned int off; /* read/write offset into 'buf' */
289/*rw*/ unsigned char *data; /* pointer to the record data */
290/*rw*/ unsigned char *input; /* where the decode bytes are */
291/*r */ unsigned char *comp; /* only used with decompression - malloc()ed */
292 } SSL3_RECORD;
293
294typedef struct ssl3_buffer_st
295 {
296 unsigned char *buf; /* at least SSL3_RT_MAX_PACKET_SIZE bytes,
297 * see ssl3_setup_buffers() */
298 size_t len; /* buffer size */
299 int offset; /* where to 'copy from' */
300 int left; /* how many bytes left */
301 } SSL3_BUFFER;
302
303#define SSL3_CT_RSA_SIGN 1
304#define SSL3_CT_DSS_SIGN 2
305#define SSL3_CT_RSA_FIXED_DH 3
306#define SSL3_CT_DSS_FIXED_DH 4
307#define SSL3_CT_RSA_EPHEMERAL_DH 5
308#define SSL3_CT_DSS_EPHEMERAL_DH 6
309#define SSL3_CT_FORTEZZA_DMS 20
310#define SSL3_CT_NUMBER 7
311
312#define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001
313#define SSL3_FLAGS_DELAY_CLIENT_FINISHED 0x0002
314#define SSL3_FLAGS_POP_BUFFER 0x0004
315#define TLS1_FLAGS_TLS_PADDING_BUG 0x0008
316
317typedef struct ssl3_state_st
318 {
319 long flags;
320 int delay_buf_pop_ret;
321
322 unsigned char read_sequence[8];
323 unsigned char read_mac_secret[EVP_MAX_MD_SIZE];
324 unsigned char write_sequence[8];
325 unsigned char write_mac_secret[EVP_MAX_MD_SIZE];
326
327 unsigned char server_random[SSL3_RANDOM_SIZE];
328 unsigned char client_random[SSL3_RANDOM_SIZE];
329
330 /* flags for countermeasure against known-IV weakness */
331 int need_empty_fragments;
332 int empty_fragment_done;
333
334 SSL3_BUFFER rbuf; /* read IO goes into here */
335 SSL3_BUFFER wbuf; /* write IO goes into here */
336
337 SSL3_RECORD rrec; /* each decoded record goes in here */
338 SSL3_RECORD wrec; /* goes out from here */
339
340 /* storage for Alert/Handshake protocol data received but not
341 * yet processed by ssl3_read_bytes: */
342 unsigned char alert_fragment[2];
343 unsigned int alert_fragment_len;
344 unsigned char handshake_fragment[4];
345 unsigned int handshake_fragment_len;
346
347 /* partial write - check the numbers match */
348 unsigned int wnum; /* number of bytes sent so far */
349 int wpend_tot; /* number bytes written */
350 int wpend_type;
351 int wpend_ret; /* number of bytes submitted */
352 const unsigned char *wpend_buf;
353
354 /* used during startup, digest all incoming/outgoing packets */
355 EVP_MD_CTX finish_dgst1;
356 EVP_MD_CTX finish_dgst2;
357
358 /* this is set whenerver we see a change_cipher_spec message
359 * come in when we are not looking for one */
360 int change_cipher_spec;
361
362 int warn_alert;
363 int fatal_alert;
364 /* we allow one fatal and one warning alert to be outstanding,
365 * send close alert via the warning alert */
366 int alert_dispatch;
367 unsigned char send_alert[2];
368
369 /* This flag is set when we should renegotiate ASAP, basically when
370 * there is no more data in the read or write buffers */
371 int renegotiate;
372 int total_renegotiations;
373 int num_renegotiations;
374
375 int in_read_app_data;
376
377 struct {
378 /* actually only needs to be 16+20 */
379 unsigned char cert_verify_md[EVP_MAX_MD_SIZE*2];
380
381 /* actually only need to be 16+20 for SSLv3 and 12 for TLS */
382 unsigned char finish_md[EVP_MAX_MD_SIZE*2];
383 int finish_md_len;
384 unsigned char peer_finish_md[EVP_MAX_MD_SIZE*2];
385 int peer_finish_md_len;
386
387 unsigned long message_size;
388 int message_type;
389
390 /* used to hold the new cipher we are going to use */
391 SSL_CIPHER *new_cipher;
392#ifndef OPENSSL_NO_DH
393 DH *dh;
394#endif
395 /* used when SSL_ST_FLUSH_DATA is entered */
396 int next_state;
397
398 int reuse_message;
399
400 /* used for certificate requests */
401 int cert_req;
402 int ctype_num;
403 char ctype[SSL3_CT_NUMBER];
404 STACK_OF(X509_NAME) *ca_names;
405
406 int use_rsa_tmp;
407
408 int key_block_length;
409 unsigned char *key_block;
410
411 const EVP_CIPHER *new_sym_enc;
412 const EVP_MD *new_hash;
413#ifndef OPENSSL_NO_COMP
414 const SSL_COMP *new_compression;
415#else
416 char *new_compression;
417#endif
418 int cert_request;
419 } tmp;
420
421 } SSL3_STATE;
422
423/* SSLv3 */
424/*client */
425/* extra state */
426#define SSL3_ST_CW_FLUSH (0x100|SSL_ST_CONNECT)
427/* write to server */
428#define SSL3_ST_CW_CLNT_HELLO_A (0x110|SSL_ST_CONNECT)
429#define SSL3_ST_CW_CLNT_HELLO_B (0x111|SSL_ST_CONNECT)
430/* read from server */
431#define SSL3_ST_CR_SRVR_HELLO_A (0x120|SSL_ST_CONNECT)
432#define SSL3_ST_CR_SRVR_HELLO_B (0x121|SSL_ST_CONNECT)
433#define SSL3_ST_CR_CERT_A (0x130|SSL_ST_CONNECT)
434#define SSL3_ST_CR_CERT_B (0x131|SSL_ST_CONNECT)
435#define SSL3_ST_CR_KEY_EXCH_A (0x140|SSL_ST_CONNECT)
436#define SSL3_ST_CR_KEY_EXCH_B (0x141|SSL_ST_CONNECT)
437#define SSL3_ST_CR_CERT_REQ_A (0x150|SSL_ST_CONNECT)
438#define SSL3_ST_CR_CERT_REQ_B (0x151|SSL_ST_CONNECT)
439#define SSL3_ST_CR_SRVR_DONE_A (0x160|SSL_ST_CONNECT)
440#define SSL3_ST_CR_SRVR_DONE_B (0x161|SSL_ST_CONNECT)
441/* write to server */
442#define SSL3_ST_CW_CERT_A (0x170|SSL_ST_CONNECT)
443#define SSL3_ST_CW_CERT_B (0x171|SSL_ST_CONNECT)
444#define SSL3_ST_CW_CERT_C (0x172|SSL_ST_CONNECT)
445#define SSL3_ST_CW_CERT_D (0x173|SSL_ST_CONNECT)
446#define SSL3_ST_CW_KEY_EXCH_A (0x180|SSL_ST_CONNECT)
447#define SSL3_ST_CW_KEY_EXCH_B (0x181|SSL_ST_CONNECT)
448#define SSL3_ST_CW_CERT_VRFY_A (0x190|SSL_ST_CONNECT)
449#define SSL3_ST_CW_CERT_VRFY_B (0x191|SSL_ST_CONNECT)
450#define SSL3_ST_CW_CHANGE_A (0x1A0|SSL_ST_CONNECT)
451#define SSL3_ST_CW_CHANGE_B (0x1A1|SSL_ST_CONNECT)
452#define SSL3_ST_CW_FINISHED_A (0x1B0|SSL_ST_CONNECT)
453#define SSL3_ST_CW_FINISHED_B (0x1B1|SSL_ST_CONNECT)
454/* read from server */
455#define SSL3_ST_CR_CHANGE_A (0x1C0|SSL_ST_CONNECT)
456#define SSL3_ST_CR_CHANGE_B (0x1C1|SSL_ST_CONNECT)
457#define SSL3_ST_CR_FINISHED_A (0x1D0|SSL_ST_CONNECT)
458#define SSL3_ST_CR_FINISHED_B (0x1D1|SSL_ST_CONNECT)
459
460/* server */
461/* extra state */
462#define SSL3_ST_SW_FLUSH (0x100|SSL_ST_ACCEPT)
463/* read from client */
464/* Do not change the number values, they do matter */
465#define SSL3_ST_SR_CLNT_HELLO_A (0x110|SSL_ST_ACCEPT)
466#define SSL3_ST_SR_CLNT_HELLO_B (0x111|SSL_ST_ACCEPT)
467#define SSL3_ST_SR_CLNT_HELLO_C (0x112|SSL_ST_ACCEPT)
468/* write to client */
469#define SSL3_ST_SW_HELLO_REQ_A (0x120|SSL_ST_ACCEPT)
470#define SSL3_ST_SW_HELLO_REQ_B (0x121|SSL_ST_ACCEPT)
471#define SSL3_ST_SW_HELLO_REQ_C (0x122|SSL_ST_ACCEPT)
472#define SSL3_ST_SW_SRVR_HELLO_A (0x130|SSL_ST_ACCEPT)
473#define SSL3_ST_SW_SRVR_HELLO_B (0x131|SSL_ST_ACCEPT)
474#define SSL3_ST_SW_CERT_A (0x140|SSL_ST_ACCEPT)
475#define SSL3_ST_SW_CERT_B (0x141|SSL_ST_ACCEPT)
476#define SSL3_ST_SW_KEY_EXCH_A (0x150|SSL_ST_ACCEPT)
477#define SSL3_ST_SW_KEY_EXCH_B (0x151|SSL_ST_ACCEPT)
478#define SSL3_ST_SW_CERT_REQ_A (0x160|SSL_ST_ACCEPT)
479#define SSL3_ST_SW_CERT_REQ_B (0x161|SSL_ST_ACCEPT)
480#define SSL3_ST_SW_SRVR_DONE_A (0x170|SSL_ST_ACCEPT)
481#define SSL3_ST_SW_SRVR_DONE_B (0x171|SSL_ST_ACCEPT)
482/* read from client */
483#define SSL3_ST_SR_CERT_A (0x180|SSL_ST_ACCEPT)
484#define SSL3_ST_SR_CERT_B (0x181|SSL_ST_ACCEPT)
485#define SSL3_ST_SR_KEY_EXCH_A (0x190|SSL_ST_ACCEPT)
486#define SSL3_ST_SR_KEY_EXCH_B (0x191|SSL_ST_ACCEPT)
487#define SSL3_ST_SR_CERT_VRFY_A (0x1A0|SSL_ST_ACCEPT)
488#define SSL3_ST_SR_CERT_VRFY_B (0x1A1|SSL_ST_ACCEPT)
489#define SSL3_ST_SR_CHANGE_A (0x1B0|SSL_ST_ACCEPT)
490#define SSL3_ST_SR_CHANGE_B (0x1B1|SSL_ST_ACCEPT)
491#define SSL3_ST_SR_FINISHED_A (0x1C0|SSL_ST_ACCEPT)
492#define SSL3_ST_SR_FINISHED_B (0x1C1|SSL_ST_ACCEPT)
493/* write to client */
494#define SSL3_ST_SW_CHANGE_A (0x1D0|SSL_ST_ACCEPT)
495#define SSL3_ST_SW_CHANGE_B (0x1D1|SSL_ST_ACCEPT)
496#define SSL3_ST_SW_FINISHED_A (0x1E0|SSL_ST_ACCEPT)
497#define SSL3_ST_SW_FINISHED_B (0x1E1|SSL_ST_ACCEPT)
498
499#define SSL3_MT_HELLO_REQUEST 0
500#define SSL3_MT_CLIENT_HELLO 1
501#define SSL3_MT_SERVER_HELLO 2
502#define SSL3_MT_CERTIFICATE 11
503#define SSL3_MT_SERVER_KEY_EXCHANGE 12
504#define SSL3_MT_CERTIFICATE_REQUEST 13
505#define SSL3_MT_SERVER_DONE 14
506#define SSL3_MT_CERTIFICATE_VERIFY 15
507#define SSL3_MT_CLIENT_KEY_EXCHANGE 16
508#define SSL3_MT_FINISHED 20
509
510#define SSL3_MT_CCS 1
511
512/* These are used when changing over to a new cipher */
513#define SSL3_CC_READ 0x01
514#define SSL3_CC_WRITE 0x02
515#define SSL3_CC_CLIENT 0x10
516#define SSL3_CC_SERVER 0x20
517#define SSL3_CHANGE_CIPHER_CLIENT_WRITE (SSL3_CC_CLIENT|SSL3_CC_WRITE)
518#define SSL3_CHANGE_CIPHER_SERVER_READ (SSL3_CC_SERVER|SSL3_CC_READ)
519#define SSL3_CHANGE_CIPHER_CLIENT_READ (SSL3_CC_CLIENT|SSL3_CC_READ)
520#define SSL3_CHANGE_CIPHER_SERVER_WRITE (SSL3_CC_SERVER|SSL3_CC_WRITE)
521
522#ifdef __cplusplus
523}
524#endif
525#endif
526
diff --git a/src/lib/libssl/ssl_algs.c b/src/lib/libssl/ssl_algs.c
new file mode 100644
index 0000000000..3d1299ee7b
--- /dev/null
+++ b/src/lib/libssl/ssl_algs.c
@@ -0,0 +1,111 @@
1/* ssl/ssl_algs.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include <openssl/objects.h>
61#include <openssl/lhash.h>
62#include "ssl_locl.h"
63
64int SSL_library_init(void)
65 {
66
67#ifndef OPENSSL_NO_DES
68 EVP_add_cipher(EVP_des_cbc());
69 EVP_add_cipher(EVP_des_ede3_cbc());
70#endif
71#ifndef OPENSSL_NO_IDEA
72 EVP_add_cipher(EVP_idea_cbc());
73#endif
74#ifndef OPENSSL_NO_RC4
75 EVP_add_cipher(EVP_rc4());
76#endif
77#ifndef OPENSSL_NO_RC2
78 EVP_add_cipher(EVP_rc2_cbc());
79#endif
80#ifndef OPENSSL_NO_AES
81 EVP_add_cipher(EVP_aes_128_cbc());
82 EVP_add_cipher(EVP_aes_192_cbc());
83 EVP_add_cipher(EVP_aes_256_cbc());
84#endif
85#ifndef OPENSSL_NO_MD2
86 EVP_add_digest(EVP_md2());
87#endif
88#ifndef OPENSSL_NO_MD5
89 EVP_add_digest(EVP_md5());
90 EVP_add_digest_alias(SN_md5,"ssl2-md5");
91 EVP_add_digest_alias(SN_md5,"ssl3-md5");
92#endif
93#ifndef OPENSSL_NO_SHA
94 EVP_add_digest(EVP_sha1()); /* RSA with sha1 */
95 EVP_add_digest_alias(SN_sha1,"ssl3-sha1");
96 EVP_add_digest_alias(SN_sha1WithRSAEncryption,SN_sha1WithRSA);
97#endif
98#if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_DSA)
99 EVP_add_digest(EVP_dss1()); /* DSA with sha1 */
100 EVP_add_digest_alias(SN_dsaWithSHA1,SN_dsaWithSHA1_2);
101 EVP_add_digest_alias(SN_dsaWithSHA1,"DSS1");
102 EVP_add_digest_alias(SN_dsaWithSHA1,"dss1");
103#endif
104 /* If you want support for phased out ciphers, add the following */
105#if 0
106 EVP_add_digest(EVP_sha());
107 EVP_add_digest(EVP_dss());
108#endif
109 return(1);
110 }
111
diff --git a/src/lib/libssl/ssl_asn1.c b/src/lib/libssl/ssl_asn1.c
new file mode 100644
index 0000000000..4d5900ad2f
--- /dev/null
+++ b/src/lib/libssl/ssl_asn1.c
@@ -0,0 +1,398 @@
1/* ssl/ssl_asn1.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include <stdlib.h>
61#include "ssl_locl.h"
62#include <openssl/asn1_mac.h>
63#include <openssl/objects.h>
64#include <openssl/x509.h>
65
66typedef struct ssl_session_asn1_st
67 {
68 ASN1_INTEGER version;
69 ASN1_INTEGER ssl_version;
70 ASN1_OCTET_STRING cipher;
71 ASN1_OCTET_STRING master_key;
72 ASN1_OCTET_STRING session_id;
73 ASN1_OCTET_STRING session_id_context;
74 ASN1_OCTET_STRING key_arg;
75#ifndef OPENSSL_NO_KRB5
76 ASN1_OCTET_STRING krb5_princ;
77#endif /* OPENSSL_NO_KRB5 */
78 ASN1_INTEGER time;
79 ASN1_INTEGER timeout;
80 ASN1_INTEGER verify_result;
81 } SSL_SESSION_ASN1;
82
83int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp)
84 {
85#define LSIZE2 (sizeof(long)*2)
86 int v1=0,v2=0,v3=0,v4=0,v5=0;
87 unsigned char buf[4],ibuf1[LSIZE2],ibuf2[LSIZE2];
88 unsigned char ibuf3[LSIZE2],ibuf4[LSIZE2],ibuf5[LSIZE2];
89 long l;
90 SSL_SESSION_ASN1 a;
91 M_ASN1_I2D_vars(in);
92
93 if ((in == NULL) || ((in->cipher == NULL) && (in->cipher_id == 0)))
94 return(0);
95
96 /* Note that I cheat in the following 2 assignments. I know
97 * that if the ASN1_INTEGER passed to ASN1_INTEGER_set
98 * is > sizeof(long)+1, the buffer will not be re-OPENSSL_malloc()ed.
99 * This is a bit evil but makes things simple, no dynamic allocation
100 * to clean up :-) */
101 a.version.length=LSIZE2;
102 a.version.type=V_ASN1_INTEGER;
103 a.version.data=ibuf1;
104 ASN1_INTEGER_set(&(a.version),SSL_SESSION_ASN1_VERSION);
105
106 a.ssl_version.length=LSIZE2;
107 a.ssl_version.type=V_ASN1_INTEGER;
108 a.ssl_version.data=ibuf2;
109 ASN1_INTEGER_set(&(a.ssl_version),in->ssl_version);
110
111 a.cipher.type=V_ASN1_OCTET_STRING;
112 a.cipher.data=buf;
113
114 if (in->cipher == NULL)
115 l=in->cipher_id;
116 else
117 l=in->cipher->id;
118 if (in->ssl_version == SSL2_VERSION)
119 {
120 a.cipher.length=3;
121 buf[0]=((unsigned char)(l>>16L))&0xff;
122 buf[1]=((unsigned char)(l>> 8L))&0xff;
123 buf[2]=((unsigned char)(l ))&0xff;
124 }
125 else
126 {
127 a.cipher.length=2;
128 buf[0]=((unsigned char)(l>>8L))&0xff;
129 buf[1]=((unsigned char)(l ))&0xff;
130 }
131
132 a.master_key.length=in->master_key_length;
133 a.master_key.type=V_ASN1_OCTET_STRING;
134 a.master_key.data=in->master_key;
135
136 a.session_id.length=in->session_id_length;
137 a.session_id.type=V_ASN1_OCTET_STRING;
138 a.session_id.data=in->session_id;
139
140 a.session_id_context.length=in->sid_ctx_length;
141 a.session_id_context.type=V_ASN1_OCTET_STRING;
142 a.session_id_context.data=in->sid_ctx;
143
144 a.key_arg.length=in->key_arg_length;
145 a.key_arg.type=V_ASN1_OCTET_STRING;
146 a.key_arg.data=in->key_arg;
147
148#ifndef OPENSSL_NO_KRB5
149 if (in->krb5_client_princ_len)
150 {
151 a.krb5_princ.length=in->krb5_client_princ_len;
152 a.krb5_princ.type=V_ASN1_OCTET_STRING;
153 a.krb5_princ.data=in->krb5_client_princ;
154 }
155#endif /* OPENSSL_NO_KRB5 */
156
157 if (in->time != 0L)
158 {
159 a.time.length=LSIZE2;
160 a.time.type=V_ASN1_INTEGER;
161 a.time.data=ibuf3;
162 ASN1_INTEGER_set(&(a.time),in->time);
163 }
164
165 if (in->timeout != 0L)
166 {
167 a.timeout.length=LSIZE2;
168 a.timeout.type=V_ASN1_INTEGER;
169 a.timeout.data=ibuf4;
170 ASN1_INTEGER_set(&(a.timeout),in->timeout);
171 }
172
173 if (in->verify_result != X509_V_OK)
174 {
175 a.verify_result.length=LSIZE2;
176 a.verify_result.type=V_ASN1_INTEGER;
177 a.verify_result.data=ibuf5;
178 ASN1_INTEGER_set(&a.verify_result,in->verify_result);
179 }
180
181
182 M_ASN1_I2D_len(&(a.version), i2d_ASN1_INTEGER);
183 M_ASN1_I2D_len(&(a.ssl_version), i2d_ASN1_INTEGER);
184 M_ASN1_I2D_len(&(a.cipher), i2d_ASN1_OCTET_STRING);
185 M_ASN1_I2D_len(&(a.session_id), i2d_ASN1_OCTET_STRING);
186 M_ASN1_I2D_len(&(a.master_key), i2d_ASN1_OCTET_STRING);
187#ifndef OPENSSL_NO_KRB5
188 if (in->krb5_client_princ_len)
189 M_ASN1_I2D_len(&(a.krb5_princ), i2d_ASN1_OCTET_STRING);
190#endif /* OPENSSL_NO_KRB5 */
191 if (in->key_arg_length > 0)
192 M_ASN1_I2D_len_IMP_opt(&(a.key_arg),i2d_ASN1_OCTET_STRING);
193 if (in->time != 0L)
194 M_ASN1_I2D_len_EXP_opt(&(a.time),i2d_ASN1_INTEGER,1,v1);
195 if (in->timeout != 0L)
196 M_ASN1_I2D_len_EXP_opt(&(a.timeout),i2d_ASN1_INTEGER,2,v2);
197 if (in->peer != NULL)
198 M_ASN1_I2D_len_EXP_opt(in->peer,i2d_X509,3,v3);
199 M_ASN1_I2D_len_EXP_opt(&a.session_id_context,i2d_ASN1_OCTET_STRING,4,v4);
200 if (in->verify_result != X509_V_OK)
201 M_ASN1_I2D_len_EXP_opt(&(a.verify_result),i2d_ASN1_INTEGER,5,v5);
202
203 M_ASN1_I2D_seq_total();
204
205 M_ASN1_I2D_put(&(a.version), i2d_ASN1_INTEGER);
206 M_ASN1_I2D_put(&(a.ssl_version), i2d_ASN1_INTEGER);
207 M_ASN1_I2D_put(&(a.cipher), i2d_ASN1_OCTET_STRING);
208 M_ASN1_I2D_put(&(a.session_id), i2d_ASN1_OCTET_STRING);
209 M_ASN1_I2D_put(&(a.master_key), i2d_ASN1_OCTET_STRING);
210#ifndef OPENSSL_NO_KRB5
211 if (in->krb5_client_princ_len)
212 M_ASN1_I2D_put(&(a.krb5_princ), i2d_ASN1_OCTET_STRING);
213#endif /* OPENSSL_NO_KRB5 */
214 if (in->key_arg_length > 0)
215 M_ASN1_I2D_put_IMP_opt(&(a.key_arg),i2d_ASN1_OCTET_STRING,0);
216 if (in->time != 0L)
217 M_ASN1_I2D_put_EXP_opt(&(a.time),i2d_ASN1_INTEGER,1,v1);
218 if (in->timeout != 0L)
219 M_ASN1_I2D_put_EXP_opt(&(a.timeout),i2d_ASN1_INTEGER,2,v2);
220 if (in->peer != NULL)
221 M_ASN1_I2D_put_EXP_opt(in->peer,i2d_X509,3,v3);
222 M_ASN1_I2D_put_EXP_opt(&a.session_id_context,i2d_ASN1_OCTET_STRING,4,
223 v4);
224 if (in->verify_result != X509_V_OK)
225 M_ASN1_I2D_put_EXP_opt(&a.verify_result,i2d_ASN1_INTEGER,5,v5);
226 M_ASN1_I2D_finish();
227 }
228
229SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char * const *pp,
230 long length)
231 {
232 int version,ssl_version=0,i;
233 long id;
234 ASN1_INTEGER ai,*aip;
235 ASN1_OCTET_STRING os,*osp;
236 M_ASN1_D2I_vars(a,SSL_SESSION *,SSL_SESSION_new);
237
238 aip= &ai;
239 osp= &os;
240
241 M_ASN1_D2I_Init();
242 M_ASN1_D2I_start_sequence();
243
244 ai.data=NULL; ai.length=0;
245 M_ASN1_D2I_get(aip,d2i_ASN1_INTEGER);
246 version=(int)ASN1_INTEGER_get(aip);
247 if (ai.data != NULL) { OPENSSL_free(ai.data); ai.data=NULL; ai.length=0; }
248
249 /* we don't care about the version right now :-) */
250 M_ASN1_D2I_get(aip,d2i_ASN1_INTEGER);
251 ssl_version=(int)ASN1_INTEGER_get(aip);
252 ret->ssl_version=ssl_version;
253 if (ai.data != NULL) { OPENSSL_free(ai.data); ai.data=NULL; ai.length=0; }
254
255 os.data=NULL; os.length=0;
256 M_ASN1_D2I_get(osp,d2i_ASN1_OCTET_STRING);
257 if (ssl_version == SSL2_VERSION)
258 {
259 if (os.length != 3)
260 {
261 c.error=SSL_R_CIPHER_CODE_WRONG_LENGTH;
262 goto err;
263 }
264 id=0x02000000L|
265 ((unsigned long)os.data[0]<<16L)|
266 ((unsigned long)os.data[1]<< 8L)|
267 (unsigned long)os.data[2];
268 }
269 else if ((ssl_version>>8) == SSL3_VERSION_MAJOR)
270 {
271 if (os.length != 2)
272 {
273 c.error=SSL_R_CIPHER_CODE_WRONG_LENGTH;
274 goto err;
275 }
276 id=0x03000000L|
277 ((unsigned long)os.data[0]<<8L)|
278 (unsigned long)os.data[1];
279 }
280 else
281 {
282 SSLerr(SSL_F_D2I_SSL_SESSION,SSL_R_UNKNOWN_SSL_VERSION);
283 return(NULL);
284 }
285
286 ret->cipher=NULL;
287 ret->cipher_id=id;
288
289 M_ASN1_D2I_get(osp,d2i_ASN1_OCTET_STRING);
290 if ((ssl_version>>8) == SSL3_VERSION_MAJOR)
291 i=SSL3_MAX_SSL_SESSION_ID_LENGTH;
292 else /* if (ssl_version == SSL2_VERSION_MAJOR) */
293 i=SSL2_MAX_SSL_SESSION_ID_LENGTH;
294
295 if (os.length > i)
296 os.length = i;
297 if (os.length > sizeof ret->session_id) /* can't happen */
298 os.length = sizeof ret->session_id;
299
300 ret->session_id_length=os.length;
301 OPENSSL_assert(os.length <= sizeof ret->session_id);
302 memcpy(ret->session_id,os.data,os.length);
303
304 M_ASN1_D2I_get(osp,d2i_ASN1_OCTET_STRING);
305 if (ret->master_key_length > SSL_MAX_MASTER_KEY_LENGTH)
306 ret->master_key_length=SSL_MAX_MASTER_KEY_LENGTH;
307 else
308 ret->master_key_length=os.length;
309 memcpy(ret->master_key,os.data,ret->master_key_length);
310
311 os.length=0;
312
313#ifndef OPENSSL_NO_KRB5
314 os.length=0;
315 M_ASN1_D2I_get_opt(osp,d2i_ASN1_OCTET_STRING,V_ASN1_OCTET_STRING);
316 if (os.data)
317 {
318 if (os.length > SSL_MAX_KRB5_PRINCIPAL_LENGTH)
319 ret->krb5_client_princ_len=0;
320 else
321 ret->krb5_client_princ_len=os.length;
322 memcpy(ret->krb5_client_princ,os.data,ret->krb5_client_princ_len);
323 OPENSSL_free(os.data);
324 os.data = NULL;
325 os.length = 0;
326 }
327 else
328 ret->krb5_client_princ_len=0;
329#endif /* OPENSSL_NO_KRB5 */
330
331 M_ASN1_D2I_get_IMP_opt(osp,d2i_ASN1_OCTET_STRING,0,V_ASN1_OCTET_STRING);
332 if (os.length > SSL_MAX_KEY_ARG_LENGTH)
333 ret->key_arg_length=SSL_MAX_KEY_ARG_LENGTH;
334 else
335 ret->key_arg_length=os.length;
336 memcpy(ret->key_arg,os.data,ret->key_arg_length);
337 if (os.data != NULL) OPENSSL_free(os.data);
338
339 ai.length=0;
340 M_ASN1_D2I_get_EXP_opt(aip,d2i_ASN1_INTEGER,1);
341 if (ai.data != NULL)
342 {
343 ret->time=ASN1_INTEGER_get(aip);
344 OPENSSL_free(ai.data); ai.data=NULL; ai.length=0;
345 }
346 else
347 ret->time=time(NULL);
348
349 ai.length=0;
350 M_ASN1_D2I_get_EXP_opt(aip,d2i_ASN1_INTEGER,2);
351 if (ai.data != NULL)
352 {
353 ret->timeout=ASN1_INTEGER_get(aip);
354 OPENSSL_free(ai.data); ai.data=NULL; ai.length=0;
355 }
356 else
357 ret->timeout=3;
358
359 if (ret->peer != NULL)
360 {
361 X509_free(ret->peer);
362 ret->peer=NULL;
363 }
364 M_ASN1_D2I_get_EXP_opt(ret->peer,d2i_X509,3);
365
366 os.length=0;
367 os.data=NULL;
368 M_ASN1_D2I_get_EXP_opt(osp,d2i_ASN1_OCTET_STRING,4);
369
370 if(os.data != NULL)
371 {
372 if (os.length > SSL_MAX_SID_CTX_LENGTH)
373 {
374 ret->sid_ctx_length=os.length;
375 SSLerr(SSL_F_D2I_SSL_SESSION,SSL_R_BAD_LENGTH);
376 }
377 else
378 {
379 ret->sid_ctx_length=os.length;
380 memcpy(ret->sid_ctx,os.data,os.length);
381 }
382 OPENSSL_free(os.data); os.data=NULL; os.length=0;
383 }
384 else
385 ret->sid_ctx_length=0;
386
387 ai.length=0;
388 M_ASN1_D2I_get_EXP_opt(aip,d2i_ASN1_INTEGER,5);
389 if (ai.data != NULL)
390 {
391 ret->verify_result=ASN1_INTEGER_get(aip);
392 OPENSSL_free(ai.data); ai.data=NULL; ai.length=0;
393 }
394 else
395 ret->verify_result=X509_V_OK;
396
397 M_ASN1_D2I_Finish(a,SSL_SESSION_free,SSL_F_D2I_SSL_SESSION);
398 }
diff --git a/src/lib/libssl/ssl_cert.c b/src/lib/libssl/ssl_cert.c
new file mode 100644
index 0000000000..b8b9bc2390
--- /dev/null
+++ b/src/lib/libssl/ssl_cert.c
@@ -0,0 +1,888 @@
1/*! \file ssl/ssl_cert.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58/* ====================================================================
59 * Copyright (c) 1999 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
107#include <stdio.h>
108
109#include "e_os.h"
110#ifndef NO_SYS_TYPES_H
111# include <sys/types.h>
112#endif
113
114#if !defined(OPENSSL_SYS_WIN32) && !defined(OPENSSL_SYS_VMS) && !defined(NeXT) && !defined(MAC_OS_pre_X)
115#include <dirent.h>
116#endif
117
118#if defined(WIN32)
119#include <windows.h>
120#include <tchar.h>
121#endif
122
123#ifdef NeXT
124#include <sys/dir.h>
125#define dirent direct
126#endif
127
128#include <openssl/objects.h>
129#include <openssl/bio.h>
130#include <openssl/pem.h>
131#include <openssl/x509v3.h>
132#include "ssl_locl.h"
133#include <openssl/fips.h>
134
135int SSL_get_ex_data_X509_STORE_CTX_idx(void)
136 {
137 static volatile int ssl_x509_store_ctx_idx= -1;
138
139 if (ssl_x509_store_ctx_idx < 0)
140 {
141 /* any write lock will do; usually this branch
142 * will only be taken once anyway */
143 CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX);
144
145 if (ssl_x509_store_ctx_idx < 0)
146 {
147 ssl_x509_store_ctx_idx=X509_STORE_CTX_get_ex_new_index(
148 0,"SSL for verify callback",NULL,NULL,NULL);
149 }
150
151 CRYPTO_w_unlock(CRYPTO_LOCK_SSL_CTX);
152 }
153 return ssl_x509_store_ctx_idx;
154 }
155
156CERT *ssl_cert_new(void)
157 {
158 CERT *ret;
159
160 ret=(CERT *)OPENSSL_malloc(sizeof(CERT));
161 if (ret == NULL)
162 {
163 SSLerr(SSL_F_SSL_CERT_NEW,ERR_R_MALLOC_FAILURE);
164 return(NULL);
165 }
166 memset(ret,0,sizeof(CERT));
167
168 ret->key= &(ret->pkeys[SSL_PKEY_RSA_ENC]);
169 ret->references=1;
170
171 return(ret);
172 }
173
174CERT *ssl_cert_dup(CERT *cert)
175 {
176 CERT *ret;
177 int i;
178
179 ret = (CERT *)OPENSSL_malloc(sizeof(CERT));
180 if (ret == NULL)
181 {
182 SSLerr(SSL_F_SSL_CERT_DUP, ERR_R_MALLOC_FAILURE);
183 return(NULL);
184 }
185
186 memset(ret, 0, sizeof(CERT));
187
188 ret->key = &ret->pkeys[cert->key - &cert->pkeys[0]];
189 /* or ret->key = ret->pkeys + (cert->key - cert->pkeys),
190 * if you find that more readable */
191
192 ret->valid = cert->valid;
193 ret->mask = cert->mask;
194 ret->export_mask = cert->export_mask;
195
196#ifndef OPENSSL_NO_RSA
197 if (cert->rsa_tmp != NULL)
198 {
199 RSA_up_ref(cert->rsa_tmp);
200 ret->rsa_tmp = cert->rsa_tmp;
201 }
202 ret->rsa_tmp_cb = cert->rsa_tmp_cb;
203#endif
204
205#ifndef OPENSSL_NO_DH
206 if (cert->dh_tmp != NULL)
207 {
208 /* DH parameters don't have a reference count */
209 ret->dh_tmp = DHparams_dup(cert->dh_tmp);
210 if (ret->dh_tmp == NULL)
211 {
212 SSLerr(SSL_F_SSL_CERT_DUP, ERR_R_DH_LIB);
213 goto err;
214 }
215 if (cert->dh_tmp->priv_key)
216 {
217 BIGNUM *b = BN_dup(cert->dh_tmp->priv_key);
218 if (!b)
219 {
220 SSLerr(SSL_F_SSL_CERT_DUP, ERR_R_BN_LIB);
221 goto err;
222 }
223 ret->dh_tmp->priv_key = b;
224 }
225 if (cert->dh_tmp->pub_key)
226 {
227 BIGNUM *b = BN_dup(cert->dh_tmp->pub_key);
228 if (!b)
229 {
230 SSLerr(SSL_F_SSL_CERT_DUP, ERR_R_BN_LIB);
231 goto err;
232 }
233 ret->dh_tmp->pub_key = b;
234 }
235 }
236 ret->dh_tmp_cb = cert->dh_tmp_cb;
237#endif
238
239 for (i = 0; i < SSL_PKEY_NUM; i++)
240 {
241 if (cert->pkeys[i].x509 != NULL)
242 {
243 ret->pkeys[i].x509 = cert->pkeys[i].x509;
244 CRYPTO_add(&ret->pkeys[i].x509->references, 1,
245 CRYPTO_LOCK_X509);
246 }
247
248 if (cert->pkeys[i].privatekey != NULL)
249 {
250 ret->pkeys[i].privatekey = cert->pkeys[i].privatekey;
251 CRYPTO_add(&ret->pkeys[i].privatekey->references, 1,
252 CRYPTO_LOCK_EVP_PKEY);
253
254 switch(i)
255 {
256 /* If there was anything special to do for
257 * certain types of keys, we'd do it here.
258 * (Nothing at the moment, I think.) */
259
260 case SSL_PKEY_RSA_ENC:
261 case SSL_PKEY_RSA_SIGN:
262 /* We have an RSA key. */
263 break;
264
265 case SSL_PKEY_DSA_SIGN:
266 /* We have a DSA key. */
267 break;
268
269 case SSL_PKEY_DH_RSA:
270 case SSL_PKEY_DH_DSA:
271 /* We have a DH key. */
272 break;
273
274 default:
275 /* Can't happen. */
276 SSLerr(SSL_F_SSL_CERT_DUP, SSL_R_LIBRARY_BUG);
277 }
278 }
279 }
280
281 /* ret->extra_certs *should* exist, but currently the own certificate
282 * chain is held inside SSL_CTX */
283
284 ret->references=1;
285
286 return(ret);
287
288#ifndef OPENSSL_NO_DH /* avoid 'unreferenced label' warning if OPENSSL_NO_DH is defined */
289err:
290#endif
291#ifndef OPENSSL_NO_RSA
292 if (ret->rsa_tmp != NULL)
293 RSA_free(ret->rsa_tmp);
294#endif
295#ifndef OPENSSL_NO_DH
296 if (ret->dh_tmp != NULL)
297 DH_free(ret->dh_tmp);
298#endif
299
300 for (i = 0; i < SSL_PKEY_NUM; i++)
301 {
302 if (ret->pkeys[i].x509 != NULL)
303 X509_free(ret->pkeys[i].x509);
304 if (ret->pkeys[i].privatekey != NULL)
305 EVP_PKEY_free(ret->pkeys[i].privatekey);
306 }
307
308 return NULL;
309 }
310
311
312void ssl_cert_free(CERT *c)
313 {
314 int i;
315
316 if(c == NULL)
317 return;
318
319 i=CRYPTO_add(&c->references,-1,CRYPTO_LOCK_SSL_CERT);
320#ifdef REF_PRINT
321 REF_PRINT("CERT",c);
322#endif
323 if (i > 0) return;
324#ifdef REF_CHECK
325 if (i < 0)
326 {
327 fprintf(stderr,"ssl_cert_free, bad reference count\n");
328 abort(); /* ok */
329 }
330#endif
331
332#ifndef OPENSSL_NO_RSA
333 if (c->rsa_tmp) RSA_free(c->rsa_tmp);
334#endif
335#ifndef OPENSSL_NO_DH
336 if (c->dh_tmp) DH_free(c->dh_tmp);
337#endif
338
339 for (i=0; i<SSL_PKEY_NUM; i++)
340 {
341 if (c->pkeys[i].x509 != NULL)
342 X509_free(c->pkeys[i].x509);
343 if (c->pkeys[i].privatekey != NULL)
344 EVP_PKEY_free(c->pkeys[i].privatekey);
345#if 0
346 if (c->pkeys[i].publickey != NULL)
347 EVP_PKEY_free(c->pkeys[i].publickey);
348#endif
349 }
350 OPENSSL_free(c);
351 }
352
353int ssl_cert_inst(CERT **o)
354 {
355 /* Create a CERT if there isn't already one
356 * (which cannot really happen, as it is initially created in
357 * SSL_CTX_new; but the earlier code usually allows for that one
358 * being non-existant, so we follow that behaviour, as it might
359 * turn out that there actually is a reason for it -- but I'm
360 * not sure that *all* of the existing code could cope with
361 * s->cert being NULL, otherwise we could do without the
362 * initialization in SSL_CTX_new).
363 */
364
365 if (o == NULL)
366 {
367 SSLerr(SSL_F_SSL_CERT_INST, ERR_R_PASSED_NULL_PARAMETER);
368 return(0);
369 }
370 if (*o == NULL)
371 {
372 if ((*o = ssl_cert_new()) == NULL)
373 {
374 SSLerr(SSL_F_SSL_CERT_INST, ERR_R_MALLOC_FAILURE);
375 return(0);
376 }
377 }
378 return(1);
379 }
380
381
382SESS_CERT *ssl_sess_cert_new(void)
383 {
384 SESS_CERT *ret;
385
386 ret = OPENSSL_malloc(sizeof *ret);
387 if (ret == NULL)
388 {
389 SSLerr(SSL_F_SSL_SESS_CERT_NEW, ERR_R_MALLOC_FAILURE);
390 return NULL;
391 }
392
393 memset(ret, 0 ,sizeof *ret);
394 ret->peer_key = &(ret->peer_pkeys[SSL_PKEY_RSA_ENC]);
395 ret->references = 1;
396
397 return ret;
398 }
399
400void ssl_sess_cert_free(SESS_CERT *sc)
401 {
402 int i;
403
404 if (sc == NULL)
405 return;
406
407 i = CRYPTO_add(&sc->references, -1, CRYPTO_LOCK_SSL_SESS_CERT);
408#ifdef REF_PRINT
409 REF_PRINT("SESS_CERT", sc);
410#endif
411 if (i > 0)
412 return;
413#ifdef REF_CHECK
414 if (i < 0)
415 {
416 fprintf(stderr,"ssl_sess_cert_free, bad reference count\n");
417 abort(); /* ok */
418 }
419#endif
420
421 /* i == 0 */
422 if (sc->cert_chain != NULL)
423 sk_X509_pop_free(sc->cert_chain, X509_free);
424 for (i = 0; i < SSL_PKEY_NUM; i++)
425 {
426 if (sc->peer_pkeys[i].x509 != NULL)
427 X509_free(sc->peer_pkeys[i].x509);
428#if 0 /* We don't have the peer's private key. These lines are just
429 * here as a reminder that we're still using a not-quite-appropriate
430 * data structure. */
431 if (sc->peer_pkeys[i].privatekey != NULL)
432 EVP_PKEY_free(sc->peer_pkeys[i].privatekey);
433#endif
434 }
435
436#ifndef OPENSSL_NO_RSA
437 if (sc->peer_rsa_tmp != NULL)
438 RSA_free(sc->peer_rsa_tmp);
439#endif
440#ifndef OPENSSL_NO_DH
441 if (sc->peer_dh_tmp != NULL)
442 DH_free(sc->peer_dh_tmp);
443#endif
444
445 OPENSSL_free(sc);
446 }
447
448int ssl_set_peer_cert_type(SESS_CERT *sc,int type)
449 {
450 sc->peer_cert_type = type;
451 return(1);
452 }
453
454int ssl_verify_cert_chain(SSL *s,STACK_OF(X509) *sk)
455 {
456 X509 *x;
457 int i;
458 X509_STORE_CTX ctx;
459
460 if ((sk == NULL) || (sk_X509_num(sk) == 0))
461 return(0);
462
463 x=sk_X509_value(sk,0);
464 if(!X509_STORE_CTX_init(&ctx,s->ctx->cert_store,x,sk))
465 {
466 SSLerr(SSL_F_SSL_VERIFY_CERT_CHAIN,ERR_R_X509_LIB);
467 return(0);
468 }
469 if (SSL_get_verify_depth(s) >= 0)
470 X509_STORE_CTX_set_depth(&ctx, SSL_get_verify_depth(s));
471 X509_STORE_CTX_set_ex_data(&ctx,SSL_get_ex_data_X509_STORE_CTX_idx(),s);
472
473 /* We need to set the verify purpose. The purpose can be determined by
474 * the context: if its a server it will verify SSL client certificates
475 * or vice versa.
476 */
477 if (s->server)
478 i = X509_PURPOSE_SSL_CLIENT;
479 else
480 i = X509_PURPOSE_SSL_SERVER;
481
482 X509_STORE_CTX_purpose_inherit(&ctx, i, s->purpose, s->trust);
483
484 if (s->verify_callback)
485 X509_STORE_CTX_set_verify_cb(&ctx, s->verify_callback);
486
487 if (s->ctx->app_verify_callback != NULL)
488#if 1 /* new with OpenSSL 0.9.7 */
489 i=s->ctx->app_verify_callback(&ctx, s->ctx->app_verify_arg);
490#else
491 i=s->ctx->app_verify_callback(&ctx); /* should pass app_verify_arg */
492#endif
493 else
494 {
495#ifndef OPENSSL_NO_X509_VERIFY
496 i=X509_verify_cert(&ctx);
497#else
498 i=0;
499 ctx.error=X509_V_ERR_APPLICATION_VERIFICATION;
500 SSLerr(SSL_F_SSL_VERIFY_CERT_CHAIN,SSL_R_NO_VERIFY_CALLBACK);
501#endif
502 }
503
504 s->verify_result=ctx.error;
505 X509_STORE_CTX_cleanup(&ctx);
506
507 return(i);
508 }
509
510static void set_client_CA_list(STACK_OF(X509_NAME) **ca_list,STACK_OF(X509_NAME) *name_list)
511 {
512 if (*ca_list != NULL)
513 sk_X509_NAME_pop_free(*ca_list,X509_NAME_free);
514
515 *ca_list=name_list;
516 }
517
518STACK_OF(X509_NAME) *SSL_dup_CA_list(STACK_OF(X509_NAME) *sk)
519 {
520 int i;
521 STACK_OF(X509_NAME) *ret;
522 X509_NAME *name;
523
524 ret=sk_X509_NAME_new_null();
525 for (i=0; i<sk_X509_NAME_num(sk); i++)
526 {
527 name=X509_NAME_dup(sk_X509_NAME_value(sk,i));
528 if ((name == NULL) || !sk_X509_NAME_push(ret,name))
529 {
530 sk_X509_NAME_pop_free(ret,X509_NAME_free);
531 return(NULL);
532 }
533 }
534 return(ret);
535 }
536
537void SSL_set_client_CA_list(SSL *s,STACK_OF(X509_NAME) *name_list)
538 {
539 set_client_CA_list(&(s->client_CA),name_list);
540 }
541
542void SSL_CTX_set_client_CA_list(SSL_CTX *ctx,STACK_OF(X509_NAME) *name_list)
543 {
544 set_client_CA_list(&(ctx->client_CA),name_list);
545 }
546
547STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *ctx)
548 {
549 return(ctx->client_CA);
550 }
551
552STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s)
553 {
554 if (s->type == SSL_ST_CONNECT)
555 { /* we are in the client */
556 if (((s->version>>8) == SSL3_VERSION_MAJOR) &&
557 (s->s3 != NULL))
558 return(s->s3->tmp.ca_names);
559 else
560 return(NULL);
561 }
562 else
563 {
564 if (s->client_CA != NULL)
565 return(s->client_CA);
566 else
567 return(s->ctx->client_CA);
568 }
569 }
570
571static int add_client_CA(STACK_OF(X509_NAME) **sk,X509 *x)
572 {
573 X509_NAME *name;
574
575 if (x == NULL) return(0);
576 if ((*sk == NULL) && ((*sk=sk_X509_NAME_new_null()) == NULL))
577 return(0);
578
579 if ((name=X509_NAME_dup(X509_get_subject_name(x))) == NULL)
580 return(0);
581
582 if (!sk_X509_NAME_push(*sk,name))
583 {
584 X509_NAME_free(name);
585 return(0);
586 }
587 return(1);
588 }
589
590int SSL_add_client_CA(SSL *ssl,X509 *x)
591 {
592 return(add_client_CA(&(ssl->client_CA),x));
593 }
594
595int SSL_CTX_add_client_CA(SSL_CTX *ctx,X509 *x)
596 {
597 return(add_client_CA(&(ctx->client_CA),x));
598 }
599
600static int xname_cmp(const X509_NAME * const *a, const X509_NAME * const *b)
601 {
602 return(X509_NAME_cmp(*a,*b));
603 }
604
605#ifndef OPENSSL_NO_STDIO
606/*!
607 * Load CA certs from a file into a ::STACK. Note that it is somewhat misnamed;
608 * it doesn't really have anything to do with clients (except that a common use
609 * for a stack of CAs is to send it to the client). Actually, it doesn't have
610 * much to do with CAs, either, since it will load any old cert.
611 * \param file the file containing one or more certs.
612 * \return a ::STACK containing the certs.
613 */
614STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file)
615 {
616 BIO *in;
617 X509 *x=NULL;
618 X509_NAME *xn=NULL;
619 STACK_OF(X509_NAME) *ret,*sk;
620
621 ret=sk_X509_NAME_new_null();
622 sk=sk_X509_NAME_new(xname_cmp);
623
624 in=BIO_new(BIO_s_file_internal());
625
626 if ((ret == NULL) || (sk == NULL) || (in == NULL))
627 {
628 SSLerr(SSL_F_SSL_LOAD_CLIENT_CA_FILE,ERR_R_MALLOC_FAILURE);
629 goto err;
630 }
631
632 if (!BIO_read_filename(in,file))
633 goto err;
634
635 for (;;)
636 {
637 if (PEM_read_bio_X509(in,&x,NULL,NULL) == NULL)
638 break;
639 if ((xn=X509_get_subject_name(x)) == NULL) goto err;
640 /* check for duplicates */
641 xn=X509_NAME_dup(xn);
642 if (xn == NULL) goto err;
643 if (sk_X509_NAME_find(sk,xn) >= 0)
644 X509_NAME_free(xn);
645 else
646 {
647 sk_X509_NAME_push(sk,xn);
648 sk_X509_NAME_push(ret,xn);
649 }
650 }
651
652 if (0)
653 {
654err:
655 if (ret != NULL) sk_X509_NAME_pop_free(ret,X509_NAME_free);
656 ret=NULL;
657 }
658 if (sk != NULL) sk_X509_NAME_free(sk);
659 if (in != NULL) BIO_free(in);
660 if (x != NULL) X509_free(x);
661 return(ret);
662 }
663#endif
664
665/*!
666 * Add a file of certs to a stack.
667 * \param stack the stack to add to.
668 * \param file the file to add from. All certs in this file that are not
669 * already in the stack will be added.
670 * \return 1 for success, 0 for failure. Note that in the case of failure some
671 * certs may have been added to \c stack.
672 */
673
674int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stack,
675 const char *file)
676 {
677 BIO *in;
678 X509 *x=NULL;
679 X509_NAME *xn=NULL;
680 int ret=1;
681 int (*oldcmp)(const X509_NAME * const *a, const X509_NAME * const *b);
682
683 oldcmp=sk_X509_NAME_set_cmp_func(stack,xname_cmp);
684
685 in=BIO_new(BIO_s_file_internal());
686
687 if (in == NULL)
688 {
689 SSLerr(SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK,ERR_R_MALLOC_FAILURE);
690 goto err;
691 }
692
693 if (!BIO_read_filename(in,file))
694 goto err;
695
696 for (;;)
697 {
698 if (PEM_read_bio_X509(in,&x,NULL,NULL) == NULL)
699 break;
700 if ((xn=X509_get_subject_name(x)) == NULL) goto err;
701 xn=X509_NAME_dup(xn);
702 if (xn == NULL) goto err;
703 if (sk_X509_NAME_find(stack,xn) >= 0)
704 X509_NAME_free(xn);
705 else
706 sk_X509_NAME_push(stack,xn);
707 }
708
709 if (0)
710 {
711err:
712 ret=0;
713 }
714 if(in != NULL)
715 BIO_free(in);
716 if(x != NULL)
717 X509_free(x);
718
719 sk_X509_NAME_set_cmp_func(stack,oldcmp);
720
721 return ret;
722 }
723
724/*!
725 * Add a directory of certs to a stack.
726 * \param stack the stack to append to.
727 * \param dir the directory to append from. All files in this directory will be
728 * examined as potential certs. Any that are acceptable to
729 * SSL_add_dir_cert_subjects_to_stack() that are not already in the stack will be
730 * included.
731 * \return 1 for success, 0 for failure. Note that in the case of failure some
732 * certs may have been added to \c stack.
733 */
734
735#ifndef OPENSSL_SYS_WIN32
736#ifndef OPENSSL_SYS_VMS /* XXXX This may be fixed in the future */
737#ifndef OPENSSL_SYS_MACINTOSH_CLASSIC /* XXXXX: Better scheme needed! */
738
739int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stack,
740 const char *dir)
741 {
742 DIR *d;
743 struct dirent *dstruct;
744 int ret = 0;
745
746 CRYPTO_w_lock(CRYPTO_LOCK_READDIR);
747 d = opendir(dir);
748
749 /* Note that a side effect is that the CAs will be sorted by name */
750 if(!d)
751 {
752 SYSerr(SYS_F_OPENDIR, get_last_sys_error());
753 ERR_add_error_data(3, "opendir('", dir, "')");
754 SSLerr(SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK, ERR_R_SYS_LIB);
755 goto err;
756 }
757
758 while((dstruct=readdir(d)))
759 {
760 char buf[1024];
761 int r;
762
763 if(strlen(dir)+strlen(dstruct->d_name)+2 > sizeof buf)
764 {
765 SSLerr(SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK,SSL_R_PATH_TOO_LONG);
766 goto err;
767 }
768
769 r = BIO_snprintf(buf,sizeof buf,"%s/%s",dir,dstruct->d_name);
770 if (r <= 0 || r >= sizeof buf)
771 goto err;
772 if(!SSL_add_file_cert_subjects_to_stack(stack,buf))
773 goto err;
774 }
775 ret = 1;
776
777err:
778 if (d) closedir(d);
779 CRYPTO_w_unlock(CRYPTO_LOCK_READDIR);
780 return ret;
781 }
782
783#endif
784#endif
785
786#else /* OPENSSL_SYS_WIN32 */
787
788#if defined(_WIN32_WCE)
789# ifndef UNICODE
790# error "WinCE comes in UNICODE flavor only..."
791# endif
792# if _WIN32_WCE<101 && !defined(OPENSSL_NO_MULTIBYTE)
793# define OPENSSL_NO_MULTIBYTE
794# endif
795# ifndef FindFirstFile
796# define FindFirstFile FindFirstFileW
797# endif
798# ifndef FindNextFile
799# define FindNextFile FindNextFileW
800# endif
801#endif
802
803int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stack,
804 const char *dir)
805 {
806 WIN32_FIND_DATA FindFileData;
807 HANDLE hFind;
808 int ret = 0;
809 TCHAR *wdir = NULL;
810 size_t i,len_0 = strlen(dir)+1; /* len_0 accounts for trailing 0 */
811 char buf[1024],*slash;
812
813 if (len_0 > (sizeof(buf)-14)) /* 14 is just some value... */
814 {
815 SSLerr(SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK,SSL_R_PATH_TOO_LONG);
816 return ret;
817 }
818
819 CRYPTO_w_lock(CRYPTO_LOCK_READDIR);
820
821 if (sizeof(TCHAR) != sizeof(char))
822 {
823 wdir = (TCHAR *)malloc(len_0*sizeof(TCHAR));
824 if (wdir == NULL)
825 goto err_noclose;
826#ifndef OPENSSL_NO_MULTIBYTE
827 if (!MultiByteToWideChar(CP_ACP,0,dir,len_0,
828 (WCHAR *)wdir,len_0))
829#endif
830 for (i=0;i<len_0;i++) wdir[i]=(TCHAR)dir[i];
831
832 hFind = FindFirstFile(wdir, &FindFileData);
833 }
834 else hFind = FindFirstFile((const TCHAR *)dir, &FindFileData);
835
836 /* Note that a side effect is that the CAs will be sorted by name */
837 if(hFind == INVALID_HANDLE_VALUE)
838 {
839 SYSerr(SYS_F_OPENDIR, get_last_sys_error());
840 ERR_add_error_data(3, "opendir('", dir, "')");
841 SSLerr(SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK, ERR_R_SYS_LIB);
842 goto err_noclose;
843 }
844
845 strncpy(buf,dir,sizeof(buf)); /* strcpy is safe too... */
846 buf[len_0-1]='/'; /* no trailing zero! */
847 slash=buf+len_0;
848
849 do {
850 const TCHAR *fnam=FindFileData.cFileName;
851 size_t flen_0=_tcslen(fnam)+1;
852
853 if (flen_0 > (sizeof(buf)-len_0))
854 {
855 SSLerr(SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK,SSL_R_PATH_TOO_LONG);
856 goto err;
857 }
858 /* else strcpy would be safe too... */
859
860 if (sizeof(TCHAR) != sizeof(char))
861 {
862#ifndef OPENSSL_NO_MULTIBYTE
863 if (!WideCharToMultiByte(CP_ACP,0,
864 (WCHAR *)fnam,flen_0,
865 slash,sizeof(buf)-len_0,
866 NULL,0))
867#endif
868 for (i=0;i<flen_0;i++) slash[i]=(char)fnam[i];
869 }
870 else strncpy(slash,(const char *)fnam,sizeof(buf)-len_0);
871
872 if(!SSL_add_file_cert_subjects_to_stack(stack,buf))
873 goto err;
874 }
875 while (FindNextFile(hFind, &FindFileData) != FALSE);
876 ret = 1;
877
878err:
879 FindClose(hFind);
880err_noclose:
881 if (wdir != NULL)
882 free(wdir);
883
884 CRYPTO_w_unlock(CRYPTO_LOCK_READDIR);
885 return ret;
886 }
887
888#endif
diff --git a/src/lib/libssl/ssl_ciph.c b/src/lib/libssl/ssl_ciph.c
new file mode 100644
index 0000000000..a7ccefa30c
--- /dev/null
+++ b/src/lib/libssl/ssl_ciph.c
@@ -0,0 +1,1157 @@
1/* ssl/ssl_ciph.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include <openssl/objects.h>
61#include <openssl/comp.h>
62#include <openssl/fips.h>
63#include "ssl_locl.h"
64
65#define SSL_ENC_DES_IDX 0
66#define SSL_ENC_3DES_IDX 1
67#define SSL_ENC_RC4_IDX 2
68#define SSL_ENC_RC2_IDX 3
69#define SSL_ENC_IDEA_IDX 4
70#define SSL_ENC_eFZA_IDX 5
71#define SSL_ENC_NULL_IDX 6
72#define SSL_ENC_AES128_IDX 7
73#define SSL_ENC_AES256_IDX 8
74#define SSL_ENC_NUM_IDX 9
75
76static const EVP_CIPHER *ssl_cipher_methods[SSL_ENC_NUM_IDX]={
77 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
78 };
79
80static STACK_OF(SSL_COMP) *ssl_comp_methods=NULL;
81
82#define SSL_MD_MD5_IDX 0
83#define SSL_MD_SHA1_IDX 1
84#define SSL_MD_NUM_IDX 2
85static const EVP_MD *ssl_digest_methods[SSL_MD_NUM_IDX]={
86 NULL,NULL,
87 };
88
89#define CIPHER_ADD 1
90#define CIPHER_KILL 2
91#define CIPHER_DEL 3
92#define CIPHER_ORD 4
93#define CIPHER_SPECIAL 5
94
95typedef struct cipher_order_st
96 {
97 SSL_CIPHER *cipher;
98 int active;
99 int dead;
100 struct cipher_order_st *next,*prev;
101 } CIPHER_ORDER;
102
103static const SSL_CIPHER cipher_aliases[]={
104 /* Don't include eNULL unless specifically enabled. */
105 {0,SSL_TXT_ALL, 0,SSL_ALL & ~SSL_eNULL, SSL_ALL ,0,0,0,SSL_ALL,SSL_ALL}, /* must be first */
106 {0,SSL_TXT_CMPALL,0,SSL_eNULL,0,0,0,0,SSL_ENC_MASK,0}, /* COMPLEMENT OF ALL */
107 {0,SSL_TXT_CMPDEF,0,SSL_ADH, 0,0,0,0,SSL_AUTH_MASK,0},
108 {0,SSL_TXT_kKRB5,0,SSL_kKRB5,0,0,0,0,SSL_MKEY_MASK,0}, /* VRS Kerberos5 */
109 {0,SSL_TXT_kRSA,0,SSL_kRSA, 0,0,0,0,SSL_MKEY_MASK,0},
110 {0,SSL_TXT_kDHr,0,SSL_kDHr, 0,0,0,0,SSL_MKEY_MASK,0},
111 {0,SSL_TXT_kDHd,0,SSL_kDHd, 0,0,0,0,SSL_MKEY_MASK,0},
112 {0,SSL_TXT_kEDH,0,SSL_kEDH, 0,0,0,0,SSL_MKEY_MASK,0},
113 {0,SSL_TXT_kFZA,0,SSL_kFZA, 0,0,0,0,SSL_MKEY_MASK,0},
114 {0,SSL_TXT_DH, 0,SSL_DH, 0,0,0,0,SSL_MKEY_MASK,0},
115 {0,SSL_TXT_EDH, 0,SSL_EDH, 0,0,0,0,SSL_MKEY_MASK|SSL_AUTH_MASK,0},
116
117 {0,SSL_TXT_aKRB5,0,SSL_aKRB5,0,0,0,0,SSL_AUTH_MASK,0}, /* VRS Kerberos5 */
118 {0,SSL_TXT_aRSA,0,SSL_aRSA, 0,0,0,0,SSL_AUTH_MASK,0},
119 {0,SSL_TXT_aDSS,0,SSL_aDSS, 0,0,0,0,SSL_AUTH_MASK,0},
120 {0,SSL_TXT_aFZA,0,SSL_aFZA, 0,0,0,0,SSL_AUTH_MASK,0},
121 {0,SSL_TXT_aNULL,0,SSL_aNULL,0,0,0,0,SSL_AUTH_MASK,0},
122 {0,SSL_TXT_aDH, 0,SSL_aDH, 0,0,0,0,SSL_AUTH_MASK,0},
123 {0,SSL_TXT_DSS, 0,SSL_DSS, 0,0,0,0,SSL_AUTH_MASK,0},
124
125 {0,SSL_TXT_DES, 0,SSL_DES, 0,0,0,0,SSL_ENC_MASK,0},
126 {0,SSL_TXT_3DES,0,SSL_3DES, 0,0,0,0,SSL_ENC_MASK,0},
127 {0,SSL_TXT_RC4, 0,SSL_RC4, 0,0,0,0,SSL_ENC_MASK,0},
128 {0,SSL_TXT_RC2, 0,SSL_RC2, 0,0,0,0,SSL_ENC_MASK,0},
129#ifndef OPENSSL_NO_IDEA
130 {0,SSL_TXT_IDEA,0,SSL_IDEA, 0,0,0,0,SSL_ENC_MASK,0},
131#endif
132 {0,SSL_TXT_eNULL,0,SSL_eNULL,0,0,0,0,SSL_ENC_MASK,0},
133 {0,SSL_TXT_eFZA,0,SSL_eFZA, 0,0,0,0,SSL_ENC_MASK,0},
134 {0,SSL_TXT_AES, 0,SSL_AES, 0,0,0,0,SSL_ENC_MASK,0},
135
136 {0,SSL_TXT_MD5, 0,SSL_MD5, 0,0,0,0,SSL_MAC_MASK,0},
137 {0,SSL_TXT_SHA1,0,SSL_SHA1, 0,0,0,0,SSL_MAC_MASK,0},
138 {0,SSL_TXT_SHA, 0,SSL_SHA, 0,0,0,0,SSL_MAC_MASK,0},
139
140 {0,SSL_TXT_NULL,0,SSL_NULL, 0,0,0,0,SSL_ENC_MASK,0},
141 {0,SSL_TXT_KRB5,0,SSL_KRB5, 0,0,0,0,SSL_AUTH_MASK|SSL_MKEY_MASK,0},
142 {0,SSL_TXT_RSA, 0,SSL_RSA, 0,0,0,0,SSL_AUTH_MASK|SSL_MKEY_MASK,0},
143 {0,SSL_TXT_ADH, 0,SSL_ADH, 0,0,0,0,SSL_AUTH_MASK|SSL_MKEY_MASK,0},
144 {0,SSL_TXT_FZA, 0,SSL_FZA, 0,0,0,0,SSL_AUTH_MASK|SSL_MKEY_MASK|SSL_ENC_MASK,0},
145
146 {0,SSL_TXT_SSLV2, 0,SSL_SSLV2, 0,0,0,0,SSL_SSL_MASK,0},
147 {0,SSL_TXT_SSLV3, 0,SSL_SSLV3, 0,0,0,0,SSL_SSL_MASK,0},
148 {0,SSL_TXT_TLSV1, 0,SSL_TLSV1, 0,0,0,0,SSL_SSL_MASK,0},
149
150 {0,SSL_TXT_EXP ,0, 0,SSL_EXPORT, 0,0,0,0,SSL_EXP_MASK},
151 {0,SSL_TXT_EXPORT,0, 0,SSL_EXPORT, 0,0,0,0,SSL_EXP_MASK},
152 {0,SSL_TXT_EXP40, 0, 0, SSL_EXP40, 0,0,0,0,SSL_STRONG_MASK},
153 {0,SSL_TXT_EXP56, 0, 0, SSL_EXP56, 0,0,0,0,SSL_STRONG_MASK},
154 {0,SSL_TXT_LOW, 0, 0, SSL_LOW, 0,0,0,0,SSL_STRONG_MASK},
155 {0,SSL_TXT_MEDIUM,0, 0,SSL_MEDIUM, 0,0,0,0,SSL_STRONG_MASK},
156 {0,SSL_TXT_HIGH, 0, 0, SSL_HIGH, 0,0,0,0,SSL_STRONG_MASK},
157 {0,SSL_TXT_FIPS, 0, 0, SSL_FIPS, 0,0,0,0,SSL_FIPS|SSL_STRONG_NONE},
158 };
159
160static int init_ciphers=1;
161
162static void load_ciphers(void)
163 {
164 ssl_cipher_methods[SSL_ENC_DES_IDX]=
165 EVP_get_cipherbyname(SN_des_cbc);
166 ssl_cipher_methods[SSL_ENC_3DES_IDX]=
167 EVP_get_cipherbyname(SN_des_ede3_cbc);
168 ssl_cipher_methods[SSL_ENC_RC4_IDX]=
169 EVP_get_cipherbyname(SN_rc4);
170 ssl_cipher_methods[SSL_ENC_RC2_IDX]=
171 EVP_get_cipherbyname(SN_rc2_cbc);
172#ifndef OPENSSL_NO_IDEA
173 ssl_cipher_methods[SSL_ENC_IDEA_IDX]=
174 EVP_get_cipherbyname(SN_idea_cbc);
175#else
176 ssl_cipher_methods[SSL_ENC_IDEA_IDX]= NULL;
177#endif
178 ssl_cipher_methods[SSL_ENC_AES128_IDX]=
179 EVP_get_cipherbyname(SN_aes_128_cbc);
180 ssl_cipher_methods[SSL_ENC_AES256_IDX]=
181 EVP_get_cipherbyname(SN_aes_256_cbc);
182
183 ssl_digest_methods[SSL_MD_MD5_IDX]=
184 EVP_get_digestbyname(SN_md5);
185 ssl_digest_methods[SSL_MD_SHA1_IDX]=
186 EVP_get_digestbyname(SN_sha1);
187 init_ciphers=0;
188 }
189
190int ssl_cipher_get_evp(const SSL_SESSION *s, const EVP_CIPHER **enc,
191 const EVP_MD **md, SSL_COMP **comp)
192 {
193 int i;
194 SSL_CIPHER *c;
195
196 c=s->cipher;
197 if (c == NULL) return(0);
198 if (comp != NULL)
199 {
200 SSL_COMP ctmp;
201
202 if (s->compress_meth == 0)
203 *comp=NULL;
204 else if (ssl_comp_methods == NULL)
205 {
206 /* bad */
207 *comp=NULL;
208 }
209 else
210 {
211
212 ctmp.id=s->compress_meth;
213 i=sk_SSL_COMP_find(ssl_comp_methods,&ctmp);
214 if (i >= 0)
215 *comp=sk_SSL_COMP_value(ssl_comp_methods,i);
216 else
217 *comp=NULL;
218 }
219 }
220
221 if ((enc == NULL) || (md == NULL)) return(0);
222
223 switch (c->algorithms & SSL_ENC_MASK)
224 {
225 case SSL_DES:
226 i=SSL_ENC_DES_IDX;
227 break;
228 case SSL_3DES:
229 i=SSL_ENC_3DES_IDX;
230 break;
231 case SSL_RC4:
232 i=SSL_ENC_RC4_IDX;
233 break;
234 case SSL_RC2:
235 i=SSL_ENC_RC2_IDX;
236 break;
237 case SSL_IDEA:
238 i=SSL_ENC_IDEA_IDX;
239 break;
240 case SSL_eNULL:
241 i=SSL_ENC_NULL_IDX;
242 break;
243 case SSL_AES:
244 switch(c->alg_bits)
245 {
246 case 128: i=SSL_ENC_AES128_IDX; break;
247 case 256: i=SSL_ENC_AES256_IDX; break;
248 default: i=-1; break;
249 }
250 break;
251 default:
252 i= -1;
253 break;
254 }
255
256 if ((i < 0) || (i >= SSL_ENC_NUM_IDX))
257 *enc=NULL;
258 else
259 {
260 if (i == SSL_ENC_NULL_IDX)
261 *enc=EVP_enc_null();
262 else
263 *enc=ssl_cipher_methods[i];
264 }
265
266 switch (c->algorithms & SSL_MAC_MASK)
267 {
268 case SSL_MD5:
269 i=SSL_MD_MD5_IDX;
270 break;
271 case SSL_SHA1:
272 i=SSL_MD_SHA1_IDX;
273 break;
274 default:
275 i= -1;
276 break;
277 }
278 if ((i < 0) || (i >= SSL_MD_NUM_IDX))
279 *md=NULL;
280 else
281 *md=ssl_digest_methods[i];
282
283 if ((*enc != NULL) && (*md != NULL))
284 return(1);
285 else
286 return(0);
287 }
288
289#define ITEM_SEP(a) \
290 (((a) == ':') || ((a) == ' ') || ((a) == ';') || ((a) == ','))
291
292static void ll_append_tail(CIPHER_ORDER **head, CIPHER_ORDER *curr,
293 CIPHER_ORDER **tail)
294 {
295 if (curr == *tail) return;
296 if (curr == *head)
297 *head=curr->next;
298 if (curr->prev != NULL)
299 curr->prev->next=curr->next;
300 if (curr->next != NULL) /* should always be true */
301 curr->next->prev=curr->prev;
302 (*tail)->next=curr;
303 curr->prev= *tail;
304 curr->next=NULL;
305 *tail=curr;
306 }
307
308static unsigned long ssl_cipher_get_disabled(void)
309 {
310 unsigned long mask;
311
312 mask = SSL_kFZA;
313#ifdef OPENSSL_NO_RSA
314 mask |= SSL_aRSA|SSL_kRSA;
315#endif
316#ifdef OPENSSL_NO_DSA
317 mask |= SSL_aDSS;
318#endif
319#ifdef OPENSSL_NO_DH
320 mask |= SSL_kDHr|SSL_kDHd|SSL_kEDH|SSL_aDH;
321#endif
322#ifdef OPENSSL_NO_KRB5
323 mask |= SSL_kKRB5|SSL_aKRB5;
324#endif
325
326#ifdef SSL_FORBID_ENULL
327 mask |= SSL_eNULL;
328#endif
329
330 mask |= (ssl_cipher_methods[SSL_ENC_DES_IDX ] == NULL) ? SSL_DES :0;
331 mask |= (ssl_cipher_methods[SSL_ENC_3DES_IDX] == NULL) ? SSL_3DES:0;
332 mask |= (ssl_cipher_methods[SSL_ENC_RC4_IDX ] == NULL) ? SSL_RC4 :0;
333 mask |= (ssl_cipher_methods[SSL_ENC_RC2_IDX ] == NULL) ? SSL_RC2 :0;
334 mask |= (ssl_cipher_methods[SSL_ENC_IDEA_IDX] == NULL) ? SSL_IDEA:0;
335 mask |= (ssl_cipher_methods[SSL_ENC_eFZA_IDX] == NULL) ? SSL_eFZA:0;
336 mask |= (ssl_cipher_methods[SSL_ENC_AES128_IDX] == NULL) ? SSL_AES:0;
337
338 mask |= (ssl_digest_methods[SSL_MD_MD5_IDX ] == NULL) ? SSL_MD5 :0;
339 mask |= (ssl_digest_methods[SSL_MD_SHA1_IDX] == NULL) ? SSL_SHA1:0;
340
341 return(mask);
342 }
343
344static void ssl_cipher_collect_ciphers(const SSL_METHOD *ssl_method,
345 int num_of_ciphers, unsigned long mask, CIPHER_ORDER *co_list,
346 CIPHER_ORDER **head_p, CIPHER_ORDER **tail_p)
347 {
348 int i, co_list_num;
349 SSL_CIPHER *c;
350
351 /*
352 * We have num_of_ciphers descriptions compiled in, depending on the
353 * method selected (SSLv2 and/or SSLv3, TLSv1 etc).
354 * These will later be sorted in a linked list with at most num
355 * entries.
356 */
357
358 /* Get the initial list of ciphers */
359 co_list_num = 0; /* actual count of ciphers */
360 for (i = 0; i < num_of_ciphers; i++)
361 {
362 c = ssl_method->get_cipher(i);
363 /* drop those that use any of that is not available */
364#ifdef OPENSSL_FIPS
365 if ((c != NULL) && c->valid && !(c->algorithms & mask)
366 && (!FIPS_mode() || (c->algo_strength & SSL_FIPS)))
367#else
368 if ((c != NULL) && c->valid && !(c->algorithms & mask))
369#endif
370 {
371 co_list[co_list_num].cipher = c;
372 co_list[co_list_num].next = NULL;
373 co_list[co_list_num].prev = NULL;
374 co_list[co_list_num].active = 0;
375 co_list_num++;
376#ifdef KSSL_DEBUG
377 printf("\t%d: %s %lx %lx\n",i,c->name,c->id,c->algorithms);
378#endif /* KSSL_DEBUG */
379 /*
380 if (!sk_push(ca_list,(char *)c)) goto err;
381 */
382 }
383 }
384
385 /*
386 * Prepare linked list from list entries
387 */
388 for (i = 1; i < co_list_num - 1; i++)
389 {
390 co_list[i].prev = &(co_list[i-1]);
391 co_list[i].next = &(co_list[i+1]);
392 }
393 if (co_list_num > 0)
394 {
395 (*head_p) = &(co_list[0]);
396 (*head_p)->prev = NULL;
397 (*head_p)->next = &(co_list[1]);
398 (*tail_p) = &(co_list[co_list_num - 1]);
399 (*tail_p)->prev = &(co_list[co_list_num - 2]);
400 (*tail_p)->next = NULL;
401 }
402 }
403
404static void ssl_cipher_collect_aliases(SSL_CIPHER **ca_list,
405 int num_of_group_aliases, unsigned long mask,
406 CIPHER_ORDER *head)
407 {
408 CIPHER_ORDER *ciph_curr;
409 SSL_CIPHER **ca_curr;
410 int i;
411
412 /*
413 * First, add the real ciphers as already collected
414 */
415 ciph_curr = head;
416 ca_curr = ca_list;
417 while (ciph_curr != NULL)
418 {
419 *ca_curr = ciph_curr->cipher;
420 ca_curr++;
421 ciph_curr = ciph_curr->next;
422 }
423
424 /*
425 * Now we add the available ones from the cipher_aliases[] table.
426 * They represent either an algorithm, that must be fully
427 * supported (not match any bit in mask) or represent a cipher
428 * strength value (will be added in any case because algorithms=0).
429 */
430 for (i = 0; i < num_of_group_aliases; i++)
431 {
432 if ((i == 0) || /* always fetch "ALL" */
433 !(cipher_aliases[i].algorithms & mask))
434 {
435 *ca_curr = (SSL_CIPHER *)(cipher_aliases + i);
436 ca_curr++;
437 }
438 }
439
440 *ca_curr = NULL; /* end of list */
441 }
442
443static void ssl_cipher_apply_rule(unsigned long algorithms, unsigned long mask,
444 unsigned long algo_strength, unsigned long mask_strength,
445 int rule, int strength_bits, CIPHER_ORDER *co_list,
446 CIPHER_ORDER **head_p, CIPHER_ORDER **tail_p)
447 {
448 CIPHER_ORDER *head, *tail, *curr, *curr2, *tail2;
449 SSL_CIPHER *cp;
450 unsigned long ma, ma_s;
451
452#ifdef CIPHER_DEBUG
453 printf("Applying rule %d with %08lx %08lx %08lx %08lx (%d)\n",
454 rule, algorithms, mask, algo_strength, mask_strength,
455 strength_bits);
456#endif
457
458 curr = head = *head_p;
459 curr2 = head;
460 tail2 = tail = *tail_p;
461 for (;;)
462 {
463 if ((curr == NULL) || (curr == tail2)) break;
464 curr = curr2;
465 curr2 = curr->next;
466
467 cp = curr->cipher;
468
469 /*
470 * Selection criteria is either the number of strength_bits
471 * or the algorithm used.
472 */
473 if (strength_bits == -1)
474 {
475 ma = mask & cp->algorithms;
476 ma_s = mask_strength & cp->algo_strength;
477
478#ifdef CIPHER_DEBUG
479 printf("\nName: %s:\nAlgo = %08lx Algo_strength = %08lx\nMask = %08lx Mask_strength %08lx\n", cp->name, cp->algorithms, cp->algo_strength, mask, mask_strength);
480 printf("ma = %08lx ma_s %08lx, ma&algo=%08lx, ma_s&algos=%08lx\n", ma, ma_s, ma&algorithms, ma_s&algo_strength);
481#endif
482 /*
483 * Select: if none of the mask bit was met from the
484 * cipher or not all of the bits were met, the
485 * selection does not apply.
486 */
487 if (((ma == 0) && (ma_s == 0)) ||
488 ((ma & algorithms) != ma) ||
489 ((ma_s & algo_strength) != ma_s))
490 continue; /* does not apply */
491 }
492 else if (strength_bits != cp->strength_bits)
493 continue; /* does not apply */
494
495#ifdef CIPHER_DEBUG
496 printf("Action = %d\n", rule);
497#endif
498
499 /* add the cipher if it has not been added yet. */
500 if (rule == CIPHER_ADD)
501 {
502 if (!curr->active)
503 {
504 ll_append_tail(&head, curr, &tail);
505 curr->active = 1;
506 }
507 }
508 /* Move the added cipher to this location */
509 else if (rule == CIPHER_ORD)
510 {
511 if (curr->active)
512 {
513 ll_append_tail(&head, curr, &tail);
514 }
515 }
516 else if (rule == CIPHER_DEL)
517 curr->active = 0;
518 else if (rule == CIPHER_KILL)
519 {
520 if (head == curr)
521 head = curr->next;
522 else
523 curr->prev->next = curr->next;
524 if (tail == curr)
525 tail = curr->prev;
526 curr->active = 0;
527 if (curr->next != NULL)
528 curr->next->prev = curr->prev;
529 if (curr->prev != NULL)
530 curr->prev->next = curr->next;
531 curr->next = NULL;
532 curr->prev = NULL;
533 }
534 }
535
536 *head_p = head;
537 *tail_p = tail;
538 }
539
540static int ssl_cipher_strength_sort(CIPHER_ORDER *co_list,
541 CIPHER_ORDER **head_p,
542 CIPHER_ORDER **tail_p)
543 {
544 int max_strength_bits, i, *number_uses;
545 CIPHER_ORDER *curr;
546
547 /*
548 * This routine sorts the ciphers with descending strength. The sorting
549 * must keep the pre-sorted sequence, so we apply the normal sorting
550 * routine as '+' movement to the end of the list.
551 */
552 max_strength_bits = 0;
553 curr = *head_p;
554 while (curr != NULL)
555 {
556 if (curr->active &&
557 (curr->cipher->strength_bits > max_strength_bits))
558 max_strength_bits = curr->cipher->strength_bits;
559 curr = curr->next;
560 }
561
562 number_uses = OPENSSL_malloc((max_strength_bits + 1) * sizeof(int));
563 if (!number_uses)
564 {
565 SSLerr(SSL_F_SSL_CIPHER_STRENGTH_SORT,ERR_R_MALLOC_FAILURE);
566 return(0);
567 }
568 memset(number_uses, 0, (max_strength_bits + 1) * sizeof(int));
569
570 /*
571 * Now find the strength_bits values actually used
572 */
573 curr = *head_p;
574 while (curr != NULL)
575 {
576 if (curr->active)
577 number_uses[curr->cipher->strength_bits]++;
578 curr = curr->next;
579 }
580 /*
581 * Go through the list of used strength_bits values in descending
582 * order.
583 */
584 for (i = max_strength_bits; i >= 0; i--)
585 if (number_uses[i] > 0)
586 ssl_cipher_apply_rule(0, 0, 0, 0, CIPHER_ORD, i,
587 co_list, head_p, tail_p);
588
589 OPENSSL_free(number_uses);
590 return(1);
591 }
592
593static int ssl_cipher_process_rulestr(const char *rule_str,
594 CIPHER_ORDER *co_list, CIPHER_ORDER **head_p,
595 CIPHER_ORDER **tail_p, SSL_CIPHER **ca_list)
596 {
597 unsigned long algorithms, mask, algo_strength, mask_strength;
598 const char *l, *start, *buf;
599 int j, multi, found, rule, retval, ok, buflen;
600 char ch;
601
602 retval = 1;
603 l = rule_str;
604 for (;;)
605 {
606 ch = *l;
607
608 if (ch == '\0')
609 break; /* done */
610 if (ch == '-')
611 { rule = CIPHER_DEL; l++; }
612 else if (ch == '+')
613 { rule = CIPHER_ORD; l++; }
614 else if (ch == '!')
615 { rule = CIPHER_KILL; l++; }
616 else if (ch == '@')
617 { rule = CIPHER_SPECIAL; l++; }
618 else
619 { rule = CIPHER_ADD; }
620
621 if (ITEM_SEP(ch))
622 {
623 l++;
624 continue;
625 }
626
627 algorithms = mask = algo_strength = mask_strength = 0;
628
629 start=l;
630 for (;;)
631 {
632 ch = *l;
633 buf = l;
634 buflen = 0;
635#ifndef CHARSET_EBCDIC
636 while ( ((ch >= 'A') && (ch <= 'Z')) ||
637 ((ch >= '0') && (ch <= '9')) ||
638 ((ch >= 'a') && (ch <= 'z')) ||
639 (ch == '-'))
640#else
641 while ( isalnum(ch) || (ch == '-'))
642#endif
643 {
644 ch = *(++l);
645 buflen++;
646 }
647
648 if (buflen == 0)
649 {
650 /*
651 * We hit something we cannot deal with,
652 * it is no command or separator nor
653 * alphanumeric, so we call this an error.
654 */
655 SSLerr(SSL_F_SSL_CIPHER_PROCESS_RULESTR,
656 SSL_R_INVALID_COMMAND);
657 retval = found = 0;
658 l++;
659 break;
660 }
661
662 if (rule == CIPHER_SPECIAL)
663 {
664 found = 0; /* unused -- avoid compiler warning */
665 break; /* special treatment */
666 }
667
668 /* check for multi-part specification */
669 if (ch == '+')
670 {
671 multi=1;
672 l++;
673 }
674 else
675 multi=0;
676
677 /*
678 * Now search for the cipher alias in the ca_list. Be careful
679 * with the strncmp, because the "buflen" limitation
680 * will make the rule "ADH:SOME" and the cipher
681 * "ADH-MY-CIPHER" look like a match for buflen=3.
682 * So additionally check whether the cipher name found
683 * has the correct length. We can save a strlen() call:
684 * just checking for the '\0' at the right place is
685 * sufficient, we have to strncmp() anyway. (We cannot
686 * use strcmp(), because buf is not '\0' terminated.)
687 */
688 j = found = 0;
689 while (ca_list[j])
690 {
691 if (!strncmp(buf, ca_list[j]->name, buflen) &&
692 (ca_list[j]->name[buflen] == '\0'))
693 {
694 found = 1;
695 break;
696 }
697 else
698 j++;
699 }
700 if (!found)
701 break; /* ignore this entry */
702
703 algorithms |= ca_list[j]->algorithms;
704 mask |= ca_list[j]->mask;
705 algo_strength |= ca_list[j]->algo_strength;
706 mask_strength |= ca_list[j]->mask_strength;
707
708 if (!multi) break;
709 }
710
711 /*
712 * Ok, we have the rule, now apply it
713 */
714 if (rule == CIPHER_SPECIAL)
715 { /* special command */
716 ok = 0;
717 if ((buflen == 8) &&
718 !strncmp(buf, "STRENGTH", 8))
719 ok = ssl_cipher_strength_sort(co_list,
720 head_p, tail_p);
721 else
722 SSLerr(SSL_F_SSL_CIPHER_PROCESS_RULESTR,
723 SSL_R_INVALID_COMMAND);
724 if (ok == 0)
725 retval = 0;
726 /*
727 * We do not support any "multi" options
728 * together with "@", so throw away the
729 * rest of the command, if any left, until
730 * end or ':' is found.
731 */
732 while ((*l != '\0') && ITEM_SEP(*l))
733 l++;
734 }
735 else if (found)
736 {
737 ssl_cipher_apply_rule(algorithms, mask,
738 algo_strength, mask_strength, rule, -1,
739 co_list, head_p, tail_p);
740 }
741 else
742 {
743 while ((*l != '\0') && ITEM_SEP(*l))
744 l++;
745 }
746 if (*l == '\0') break; /* done */
747 }
748
749 return(retval);
750 }
751
752STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
753 STACK_OF(SSL_CIPHER) **cipher_list,
754 STACK_OF(SSL_CIPHER) **cipher_list_by_id,
755 const char *rule_str)
756 {
757 int ok, num_of_ciphers, num_of_alias_max, num_of_group_aliases;
758 unsigned long disabled_mask;
759 STACK_OF(SSL_CIPHER) *cipherstack;
760 const char *rule_p;
761 CIPHER_ORDER *co_list = NULL, *head = NULL, *tail = NULL, *curr;
762 SSL_CIPHER **ca_list = NULL;
763
764 /*
765 * Return with error if nothing to do.
766 */
767 if (rule_str == NULL) return(NULL);
768
769 if (init_ciphers)
770 {
771 CRYPTO_w_lock(CRYPTO_LOCK_SSL);
772 if (init_ciphers) load_ciphers();
773 CRYPTO_w_unlock(CRYPTO_LOCK_SSL);
774 }
775
776 /*
777 * To reduce the work to do we only want to process the compiled
778 * in algorithms, so we first get the mask of disabled ciphers.
779 */
780 disabled_mask = ssl_cipher_get_disabled();
781
782 /*
783 * Now we have to collect the available ciphers from the compiled
784 * in ciphers. We cannot get more than the number compiled in, so
785 * it is used for allocation.
786 */
787 num_of_ciphers = ssl_method->num_ciphers();
788#ifdef KSSL_DEBUG
789 printf("ssl_create_cipher_list() for %d ciphers\n", num_of_ciphers);
790#endif /* KSSL_DEBUG */
791 co_list = (CIPHER_ORDER *)OPENSSL_malloc(sizeof(CIPHER_ORDER) * num_of_ciphers);
792 if (co_list == NULL)
793 {
794 SSLerr(SSL_F_SSL_CREATE_CIPHER_LIST,ERR_R_MALLOC_FAILURE);
795 return(NULL); /* Failure */
796 }
797
798 ssl_cipher_collect_ciphers(ssl_method, num_of_ciphers, disabled_mask,
799 co_list, &head, &tail);
800
801 /*
802 * We also need cipher aliases for selecting based on the rule_str.
803 * There might be two types of entries in the rule_str: 1) names
804 * of ciphers themselves 2) aliases for groups of ciphers.
805 * For 1) we need the available ciphers and for 2) the cipher
806 * groups of cipher_aliases added together in one list (otherwise
807 * we would be happy with just the cipher_aliases table).
808 */
809 num_of_group_aliases = sizeof(cipher_aliases) / sizeof(SSL_CIPHER);
810 num_of_alias_max = num_of_ciphers + num_of_group_aliases + 1;
811 ca_list =
812 (SSL_CIPHER **)OPENSSL_malloc(sizeof(SSL_CIPHER *) * num_of_alias_max);
813 if (ca_list == NULL)
814 {
815 OPENSSL_free(co_list);
816 SSLerr(SSL_F_SSL_CREATE_CIPHER_LIST,ERR_R_MALLOC_FAILURE);
817 return(NULL); /* Failure */
818 }
819 ssl_cipher_collect_aliases(ca_list, num_of_group_aliases, disabled_mask,
820 head);
821
822 /*
823 * If the rule_string begins with DEFAULT, apply the default rule
824 * before using the (possibly available) additional rules.
825 */
826 ok = 1;
827 rule_p = rule_str;
828 if (strncmp(rule_str,"DEFAULT",7) == 0)
829 {
830 ok = ssl_cipher_process_rulestr(SSL_DEFAULT_CIPHER_LIST,
831 co_list, &head, &tail, ca_list);
832 rule_p += 7;
833 if (*rule_p == ':')
834 rule_p++;
835 }
836
837 if (ok && (strlen(rule_p) > 0))
838 ok = ssl_cipher_process_rulestr(rule_p, co_list, &head, &tail,
839 ca_list);
840
841 OPENSSL_free(ca_list); /* Not needed anymore */
842
843 if (!ok)
844 { /* Rule processing failure */
845 OPENSSL_free(co_list);
846 return(NULL);
847 }
848 /*
849 * Allocate new "cipherstack" for the result, return with error
850 * if we cannot get one.
851 */
852 if ((cipherstack = sk_SSL_CIPHER_new_null()) == NULL)
853 {
854 OPENSSL_free(co_list);
855 return(NULL);
856 }
857
858 /*
859 * The cipher selection for the list is done. The ciphers are added
860 * to the resulting precedence to the STACK_OF(SSL_CIPHER).
861 */
862 for (curr = head; curr != NULL; curr = curr->next)
863 {
864#ifdef OPENSSL_FIPS
865 if (curr->active && (!FIPS_mode() || curr->cipher->algo_strength & SSL_FIPS))
866#else
867 if (curr->active)
868#endif
869 {
870 sk_SSL_CIPHER_push(cipherstack, curr->cipher);
871#ifdef CIPHER_DEBUG
872 printf("<%s>\n",curr->cipher->name);
873#endif
874 }
875 }
876 OPENSSL_free(co_list); /* Not needed any longer */
877
878 /*
879 * The following passage is a little bit odd. If pointer variables
880 * were supplied to hold STACK_OF(SSL_CIPHER) return information,
881 * the old memory pointed to is free()ed. Then, however, the
882 * cipher_list entry will be assigned just a copy of the returned
883 * cipher stack. For cipher_list_by_id a copy of the cipher stack
884 * will be created. See next comment...
885 */
886 if (cipher_list != NULL)
887 {
888 if (*cipher_list != NULL)
889 sk_SSL_CIPHER_free(*cipher_list);
890 *cipher_list = cipherstack;
891 }
892
893 if (cipher_list_by_id != NULL)
894 {
895 if (*cipher_list_by_id != NULL)
896 sk_SSL_CIPHER_free(*cipher_list_by_id);
897 *cipher_list_by_id = sk_SSL_CIPHER_dup(cipherstack);
898 }
899
900 /*
901 * Now it is getting really strange. If something failed during
902 * the previous pointer assignment or if one of the pointers was
903 * not requested, the error condition is met. That might be
904 * discussable. The strange thing is however that in this case
905 * the memory "ret" pointed to is "free()ed" and hence the pointer
906 * cipher_list becomes wild. The memory reserved for
907 * cipher_list_by_id however is not "free()ed" and stays intact.
908 */
909 if ( (cipher_list_by_id == NULL) ||
910 (*cipher_list_by_id == NULL) ||
911 (cipher_list == NULL) ||
912 (*cipher_list == NULL))
913 {
914 sk_SSL_CIPHER_free(cipherstack);
915 return(NULL);
916 }
917
918 sk_SSL_CIPHER_set_cmp_func(*cipher_list_by_id,ssl_cipher_ptr_id_cmp);
919
920 return(cipherstack);
921 }
922
923char *SSL_CIPHER_description(SSL_CIPHER *cipher, char *buf, int len)
924 {
925 int is_export,pkl,kl;
926 char *ver,*exp_str;
927 char *kx,*au,*enc,*mac;
928 unsigned long alg,alg2,alg_s;
929#ifdef KSSL_DEBUG
930 static char *format="%-23s %s Kx=%-8s Au=%-4s Enc=%-9s Mac=%-4s%s AL=%lx\n";
931#else
932 static char *format="%-23s %s Kx=%-8s Au=%-4s Enc=%-9s Mac=%-4s%s\n";
933#endif /* KSSL_DEBUG */
934
935 alg=cipher->algorithms;
936 alg_s=cipher->algo_strength;
937 alg2=cipher->algorithm2;
938
939 is_export=SSL_C_IS_EXPORT(cipher);
940 pkl=SSL_C_EXPORT_PKEYLENGTH(cipher);
941 kl=SSL_C_EXPORT_KEYLENGTH(cipher);
942 exp_str=is_export?" export":"";
943
944 if (alg & SSL_SSLV2)
945 ver="SSLv2";
946 else if (alg & SSL_SSLV3)
947 ver="SSLv3";
948 else
949 ver="unknown";
950
951 switch (alg&SSL_MKEY_MASK)
952 {
953 case SSL_kRSA:
954 kx=is_export?(pkl == 512 ? "RSA(512)" : "RSA(1024)"):"RSA";
955 break;
956 case SSL_kDHr:
957 kx="DH/RSA";
958 break;
959 case SSL_kDHd:
960 kx="DH/DSS";
961 break;
962 case SSL_kKRB5: /* VRS */
963 case SSL_KRB5: /* VRS */
964 kx="KRB5";
965 break;
966 case SSL_kFZA:
967 kx="Fortezza";
968 break;
969 case SSL_kEDH:
970 kx=is_export?(pkl == 512 ? "DH(512)" : "DH(1024)"):"DH";
971 break;
972 default:
973 kx="unknown";
974 }
975
976 switch (alg&SSL_AUTH_MASK)
977 {
978 case SSL_aRSA:
979 au="RSA";
980 break;
981 case SSL_aDSS:
982 au="DSS";
983 break;
984 case SSL_aDH:
985 au="DH";
986 break;
987 case SSL_aKRB5: /* VRS */
988 case SSL_KRB5: /* VRS */
989 au="KRB5";
990 break;
991 case SSL_aFZA:
992 case SSL_aNULL:
993 au="None";
994 break;
995 default:
996 au="unknown";
997 break;
998 }
999
1000 switch (alg&SSL_ENC_MASK)
1001 {
1002 case SSL_DES:
1003 enc=(is_export && kl == 5)?"DES(40)":"DES(56)";
1004 break;
1005 case SSL_3DES:
1006 enc="3DES(168)";
1007 break;
1008 case SSL_RC4:
1009 enc=is_export?(kl == 5 ? "RC4(40)" : "RC4(56)")
1010 :((alg2&SSL2_CF_8_BYTE_ENC)?"RC4(64)":"RC4(128)");
1011 break;
1012 case SSL_RC2:
1013 enc=is_export?(kl == 5 ? "RC2(40)" : "RC2(56)"):"RC2(128)";
1014 break;
1015 case SSL_IDEA:
1016 enc="IDEA(128)";
1017 break;
1018 case SSL_eFZA:
1019 enc="Fortezza";
1020 break;
1021 case SSL_eNULL:
1022 enc="None";
1023 break;
1024 case SSL_AES:
1025 switch(cipher->strength_bits)
1026 {
1027 case 128: enc="AES(128)"; break;
1028 case 192: enc="AES(192)"; break;
1029 case 256: enc="AES(256)"; break;
1030 default: enc="AES(?""?""?)"; break;
1031 }
1032 break;
1033 default:
1034 enc="unknown";
1035 break;
1036 }
1037
1038 switch (alg&SSL_MAC_MASK)
1039 {
1040 case SSL_MD5:
1041 mac="MD5";
1042 break;
1043 case SSL_SHA1:
1044 mac="SHA1";
1045 break;
1046 default:
1047 mac="unknown";
1048 break;
1049 }
1050
1051 if (buf == NULL)
1052 {
1053 len=128;
1054 buf=OPENSSL_malloc(len);
1055 if (buf == NULL) return("OPENSSL_malloc Error");
1056 }
1057 else if (len < 128)
1058 return("Buffer too small");
1059
1060#ifdef KSSL_DEBUG
1061 BIO_snprintf(buf,len,format,cipher->name,ver,kx,au,enc,mac,exp_str,alg);
1062#else
1063 BIO_snprintf(buf,len,format,cipher->name,ver,kx,au,enc,mac,exp_str);
1064#endif /* KSSL_DEBUG */
1065 return(buf);
1066 }
1067
1068char *SSL_CIPHER_get_version(const SSL_CIPHER *c)
1069 {
1070 int i;
1071
1072 if (c == NULL) return("(NONE)");
1073 i=(int)(c->id>>24L);
1074 if (i == 3)
1075 return("TLSv1/SSLv3");
1076 else if (i == 2)
1077 return("SSLv2");
1078 else
1079 return("unknown");
1080 }
1081
1082/* return the actual cipher being used */
1083const char *SSL_CIPHER_get_name(const SSL_CIPHER *c)
1084 {
1085 if (c != NULL)
1086 return(c->name);
1087 return("(NONE)");
1088 }
1089
1090/* number of bits for symmetric cipher */
1091int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits)
1092 {
1093 int ret=0;
1094
1095 if (c != NULL)
1096 {
1097 if (alg_bits != NULL) *alg_bits = c->alg_bits;
1098 ret = c->strength_bits;
1099 }
1100 return(ret);
1101 }
1102
1103SSL_COMP *ssl3_comp_find(STACK_OF(SSL_COMP) *sk, int n)
1104 {
1105 SSL_COMP *ctmp;
1106 int i,nn;
1107
1108 if ((n == 0) || (sk == NULL)) return(NULL);
1109 nn=sk_SSL_COMP_num(sk);
1110 for (i=0; i<nn; i++)
1111 {
1112 ctmp=sk_SSL_COMP_value(sk,i);
1113 if (ctmp->id == n)
1114 return(ctmp);
1115 }
1116 return(NULL);
1117 }
1118
1119static int sk_comp_cmp(const SSL_COMP * const *a,
1120 const SSL_COMP * const *b)
1121 {
1122 return((*a)->id-(*b)->id);
1123 }
1124
1125STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void)
1126 {
1127 return(ssl_comp_methods);
1128 }
1129
1130int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm)
1131 {
1132 SSL_COMP *comp;
1133 STACK_OF(SSL_COMP) *sk;
1134
1135 if (cm == NULL || cm->type == NID_undef)
1136 return 1;
1137
1138 MemCheck_off();
1139 comp=(SSL_COMP *)OPENSSL_malloc(sizeof(SSL_COMP));
1140 comp->id=id;
1141 comp->method=cm;
1142 if (ssl_comp_methods == NULL)
1143 sk=ssl_comp_methods=sk_SSL_COMP_new(sk_comp_cmp);
1144 else
1145 sk=ssl_comp_methods;
1146 if ((sk == NULL) || !sk_SSL_COMP_push(sk,comp))
1147 {
1148 MemCheck_on();
1149 SSLerr(SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD,ERR_R_MALLOC_FAILURE);
1150 return(1);
1151 }
1152 else
1153 {
1154 MemCheck_on();
1155 return(0);
1156 }
1157 }
diff --git a/src/lib/libssl/ssl_err.c b/src/lib/libssl/ssl_err.c
new file mode 100644
index 0000000000..29b8ff4788
--- /dev/null
+++ b/src/lib/libssl/ssl_err.c
@@ -0,0 +1,463 @@
1/* ssl/ssl_err.c */
2/* ====================================================================
3 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in
14 * the documentation and/or other materials provided with the
15 * distribution.
16 *
17 * 3. All advertising materials mentioning features or use of this
18 * software must display the following acknowledgment:
19 * "This product includes software developed by the OpenSSL Project
20 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
21 *
22 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
23 * endorse or promote products derived from this software without
24 * prior written permission. For written permission, please contact
25 * openssl-core@OpenSSL.org.
26 *
27 * 5. Products derived from this software may not be called "OpenSSL"
28 * nor may "OpenSSL" appear in their names without prior written
29 * permission of the OpenSSL Project.
30 *
31 * 6. Redistributions of any form whatsoever must retain the following
32 * acknowledgment:
33 * "This product includes software developed by the OpenSSL Project
34 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
35 *
36 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
37 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
38 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
39 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
40 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
42 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
43 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
44 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
45 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
46 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
47 * OF THE POSSIBILITY OF SUCH DAMAGE.
48 * ====================================================================
49 *
50 * This product includes cryptographic software written by Eric Young
51 * (eay@cryptsoft.com). This product includes software written by Tim
52 * Hudson (tjh@cryptsoft.com).
53 *
54 */
55
56/* NOTE: this file was auto generated by the mkerr.pl script: any changes
57 * made to it will be overwritten when the script next updates this file,
58 * only reason strings will be preserved.
59 */
60
61#include <stdio.h>
62#include <openssl/err.h>
63#include <openssl/ssl.h>
64
65/* BEGIN ERROR CODES */
66#ifndef OPENSSL_NO_ERR
67static ERR_STRING_DATA SSL_str_functs[]=
68 {
69{ERR_PACK(0,SSL_F_CLIENT_CERTIFICATE,0), "CLIENT_CERTIFICATE"},
70{ERR_PACK(0,SSL_F_CLIENT_FINISHED,0), "CLIENT_FINISHED"},
71{ERR_PACK(0,SSL_F_CLIENT_HELLO,0), "CLIENT_HELLO"},
72{ERR_PACK(0,SSL_F_CLIENT_MASTER_KEY,0), "CLIENT_MASTER_KEY"},
73{ERR_PACK(0,SSL_F_D2I_SSL_SESSION,0), "d2i_SSL_SESSION"},
74{ERR_PACK(0,SSL_F_DO_SSL3_WRITE,0), "DO_SSL3_WRITE"},
75{ERR_PACK(0,SSL_F_GET_CLIENT_FINISHED,0), "GET_CLIENT_FINISHED"},
76{ERR_PACK(0,SSL_F_GET_CLIENT_HELLO,0), "GET_CLIENT_HELLO"},
77{ERR_PACK(0,SSL_F_GET_CLIENT_MASTER_KEY,0), "GET_CLIENT_MASTER_KEY"},
78{ERR_PACK(0,SSL_F_GET_SERVER_FINISHED,0), "GET_SERVER_FINISHED"},
79{ERR_PACK(0,SSL_F_GET_SERVER_HELLO,0), "GET_SERVER_HELLO"},
80{ERR_PACK(0,SSL_F_GET_SERVER_VERIFY,0), "GET_SERVER_VERIFY"},
81{ERR_PACK(0,SSL_F_I2D_SSL_SESSION,0), "i2d_SSL_SESSION"},
82{ERR_PACK(0,SSL_F_READ_N,0), "READ_N"},
83{ERR_PACK(0,SSL_F_REQUEST_CERTIFICATE,0), "REQUEST_CERTIFICATE"},
84{ERR_PACK(0,SSL_F_SERVER_FINISH,0), "SERVER_FINISH"},
85{ERR_PACK(0,SSL_F_SERVER_HELLO,0), "SERVER_HELLO"},
86{ERR_PACK(0,SSL_F_SERVER_VERIFY,0), "SERVER_VERIFY"},
87{ERR_PACK(0,SSL_F_SSL23_ACCEPT,0), "SSL23_ACCEPT"},
88{ERR_PACK(0,SSL_F_SSL23_CLIENT_HELLO,0), "SSL23_CLIENT_HELLO"},
89{ERR_PACK(0,SSL_F_SSL23_CONNECT,0), "SSL23_CONNECT"},
90{ERR_PACK(0,SSL_F_SSL23_GET_CLIENT_HELLO,0), "SSL23_GET_CLIENT_HELLO"},
91{ERR_PACK(0,SSL_F_SSL23_GET_SERVER_HELLO,0), "SSL23_GET_SERVER_HELLO"},
92{ERR_PACK(0,SSL_F_SSL23_PEEK,0), "SSL23_PEEK"},
93{ERR_PACK(0,SSL_F_SSL23_READ,0), "SSL23_READ"},
94{ERR_PACK(0,SSL_F_SSL23_WRITE,0), "SSL23_WRITE"},
95{ERR_PACK(0,SSL_F_SSL2_ACCEPT,0), "SSL2_ACCEPT"},
96{ERR_PACK(0,SSL_F_SSL2_CONNECT,0), "SSL2_CONNECT"},
97{ERR_PACK(0,SSL_F_SSL2_ENC_INIT,0), "SSL2_ENC_INIT"},
98{ERR_PACK(0,SSL_F_SSL2_GENERATE_KEY_MATERIAL,0), "SSL2_GENERATE_KEY_MATERIAL"},
99{ERR_PACK(0,SSL_F_SSL2_PEEK,0), "SSL2_PEEK"},
100{ERR_PACK(0,SSL_F_SSL2_READ,0), "SSL2_READ"},
101{ERR_PACK(0,SSL_F_SSL2_READ_INTERNAL,0), "SSL2_READ_INTERNAL"},
102{ERR_PACK(0,SSL_F_SSL2_SET_CERTIFICATE,0), "SSL2_SET_CERTIFICATE"},
103{ERR_PACK(0,SSL_F_SSL2_WRITE,0), "SSL2_WRITE"},
104{ERR_PACK(0,SSL_F_SSL3_ACCEPT,0), "SSL3_ACCEPT"},
105{ERR_PACK(0,SSL_F_SSL3_CALLBACK_CTRL,0), "SSL3_CALLBACK_CTRL"},
106{ERR_PACK(0,SSL_F_SSL3_CHANGE_CIPHER_STATE,0), "SSL3_CHANGE_CIPHER_STATE"},
107{ERR_PACK(0,SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,0), "SSL3_CHECK_CERT_AND_ALGORITHM"},
108{ERR_PACK(0,SSL_F_SSL3_CLIENT_HELLO,0), "SSL3_CLIENT_HELLO"},
109{ERR_PACK(0,SSL_F_SSL3_CONNECT,0), "SSL3_CONNECT"},
110{ERR_PACK(0,SSL_F_SSL3_CTRL,0), "SSL3_CTRL"},
111{ERR_PACK(0,SSL_F_SSL3_CTX_CTRL,0), "SSL3_CTX_CTRL"},
112{ERR_PACK(0,SSL_F_SSL3_ENC,0), "SSL3_ENC"},
113{ERR_PACK(0,SSL_F_SSL3_GENERATE_KEY_BLOCK,0), "SSL3_GENERATE_KEY_BLOCK"},
114{ERR_PACK(0,SSL_F_SSL3_GET_CERTIFICATE_REQUEST,0), "SSL3_GET_CERTIFICATE_REQUEST"},
115{ERR_PACK(0,SSL_F_SSL3_GET_CERT_VERIFY,0), "SSL3_GET_CERT_VERIFY"},
116{ERR_PACK(0,SSL_F_SSL3_GET_CLIENT_CERTIFICATE,0), "SSL3_GET_CLIENT_CERTIFICATE"},
117{ERR_PACK(0,SSL_F_SSL3_GET_CLIENT_HELLO,0), "SSL3_GET_CLIENT_HELLO"},
118{ERR_PACK(0,SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,0), "SSL3_GET_CLIENT_KEY_EXCHANGE"},
119{ERR_PACK(0,SSL_F_SSL3_GET_FINISHED,0), "SSL3_GET_FINISHED"},
120{ERR_PACK(0,SSL_F_SSL3_GET_KEY_EXCHANGE,0), "SSL3_GET_KEY_EXCHANGE"},
121{ERR_PACK(0,SSL_F_SSL3_GET_MESSAGE,0), "SSL3_GET_MESSAGE"},
122{ERR_PACK(0,SSL_F_SSL3_GET_RECORD,0), "SSL3_GET_RECORD"},
123{ERR_PACK(0,SSL_F_SSL3_GET_SERVER_CERTIFICATE,0), "SSL3_GET_SERVER_CERTIFICATE"},
124{ERR_PACK(0,SSL_F_SSL3_GET_SERVER_DONE,0), "SSL3_GET_SERVER_DONE"},
125{ERR_PACK(0,SSL_F_SSL3_GET_SERVER_HELLO,0), "SSL3_GET_SERVER_HELLO"},
126{ERR_PACK(0,SSL_F_SSL3_OUTPUT_CERT_CHAIN,0), "SSL3_OUTPUT_CERT_CHAIN"},
127{ERR_PACK(0,SSL_F_SSL3_PEEK,0), "SSL3_PEEK"},
128{ERR_PACK(0,SSL_F_SSL3_READ_BYTES,0), "SSL3_READ_BYTES"},
129{ERR_PACK(0,SSL_F_SSL3_READ_N,0), "SSL3_READ_N"},
130{ERR_PACK(0,SSL_F_SSL3_SEND_CERTIFICATE_REQUEST,0), "SSL3_SEND_CERTIFICATE_REQUEST"},
131{ERR_PACK(0,SSL_F_SSL3_SEND_CLIENT_CERTIFICATE,0), "SSL3_SEND_CLIENT_CERTIFICATE"},
132{ERR_PACK(0,SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,0), "SSL3_SEND_CLIENT_KEY_EXCHANGE"},
133{ERR_PACK(0,SSL_F_SSL3_SEND_CLIENT_VERIFY,0), "SSL3_SEND_CLIENT_VERIFY"},
134{ERR_PACK(0,SSL_F_SSL3_SEND_SERVER_CERTIFICATE,0), "SSL3_SEND_SERVER_CERTIFICATE"},
135{ERR_PACK(0,SSL_F_SSL3_SEND_SERVER_HELLO,0), "SSL3_SEND_SERVER_HELLO"},
136{ERR_PACK(0,SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,0), "SSL3_SEND_SERVER_KEY_EXCHANGE"},
137{ERR_PACK(0,SSL_F_SSL3_SETUP_BUFFERS,0), "SSL3_SETUP_BUFFERS"},
138{ERR_PACK(0,SSL_F_SSL3_SETUP_KEY_BLOCK,0), "SSL3_SETUP_KEY_BLOCK"},
139{ERR_PACK(0,SSL_F_SSL3_WRITE_BYTES,0), "SSL3_WRITE_BYTES"},
140{ERR_PACK(0,SSL_F_SSL3_WRITE_PENDING,0), "SSL3_WRITE_PENDING"},
141{ERR_PACK(0,SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK,0), "SSL_add_dir_cert_subjects_to_stack"},
142{ERR_PACK(0,SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK,0), "SSL_add_file_cert_subjects_to_stack"},
143{ERR_PACK(0,SSL_F_SSL_BAD_METHOD,0), "SSL_BAD_METHOD"},
144{ERR_PACK(0,SSL_F_SSL_BYTES_TO_CIPHER_LIST,0), "SSL_BYTES_TO_CIPHER_LIST"},
145{ERR_PACK(0,SSL_F_SSL_CERT_DUP,0), "SSL_CERT_DUP"},
146{ERR_PACK(0,SSL_F_SSL_CERT_INST,0), "SSL_CERT_INST"},
147{ERR_PACK(0,SSL_F_SSL_CERT_INSTANTIATE,0), "SSL_CERT_INSTANTIATE"},
148{ERR_PACK(0,SSL_F_SSL_CERT_NEW,0), "SSL_CERT_NEW"},
149{ERR_PACK(0,SSL_F_SSL_CHECK_PRIVATE_KEY,0), "SSL_check_private_key"},
150{ERR_PACK(0,SSL_F_SSL_CIPHER_PROCESS_RULESTR,0), "SSL_CIPHER_PROCESS_RULESTR"},
151{ERR_PACK(0,SSL_F_SSL_CIPHER_STRENGTH_SORT,0), "SSL_CIPHER_STRENGTH_SORT"},
152{ERR_PACK(0,SSL_F_SSL_CLEAR,0), "SSL_clear"},
153{ERR_PACK(0,SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD,0), "SSL_COMP_add_compression_method"},
154{ERR_PACK(0,SSL_F_SSL_CREATE_CIPHER_LIST,0), "SSL_CREATE_CIPHER_LIST"},
155{ERR_PACK(0,SSL_F_SSL_CTRL,0), "SSL_ctrl"},
156{ERR_PACK(0,SSL_F_SSL_CTX_CHECK_PRIVATE_KEY,0), "SSL_CTX_check_private_key"},
157{ERR_PACK(0,SSL_F_SSL_CTX_NEW,0), "SSL_CTX_new"},
158{ERR_PACK(0,SSL_F_SSL_CTX_SET_PURPOSE,0), "SSL_CTX_set_purpose"},
159{ERR_PACK(0,SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT,0), "SSL_CTX_set_session_id_context"},
160{ERR_PACK(0,SSL_F_SSL_CTX_SET_SSL_VERSION,0), "SSL_CTX_set_ssl_version"},
161{ERR_PACK(0,SSL_F_SSL_CTX_SET_TRUST,0), "SSL_CTX_set_trust"},
162{ERR_PACK(0,SSL_F_SSL_CTX_USE_CERTIFICATE,0), "SSL_CTX_use_certificate"},
163{ERR_PACK(0,SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1,0), "SSL_CTX_use_certificate_ASN1"},
164{ERR_PACK(0,SSL_F_SSL_CTX_USE_CERTIFICATE_CHAIN_FILE,0), "SSL_CTX_use_certificate_chain_file"},
165{ERR_PACK(0,SSL_F_SSL_CTX_USE_CERTIFICATE_FILE,0), "SSL_CTX_use_certificate_file"},
166{ERR_PACK(0,SSL_F_SSL_CTX_USE_PRIVATEKEY,0), "SSL_CTX_use_PrivateKey"},
167{ERR_PACK(0,SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1,0), "SSL_CTX_use_PrivateKey_ASN1"},
168{ERR_PACK(0,SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE,0), "SSL_CTX_use_PrivateKey_file"},
169{ERR_PACK(0,SSL_F_SSL_CTX_USE_RSAPRIVATEKEY,0), "SSL_CTX_use_RSAPrivateKey"},
170{ERR_PACK(0,SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1,0), "SSL_CTX_use_RSAPrivateKey_ASN1"},
171{ERR_PACK(0,SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE,0), "SSL_CTX_use_RSAPrivateKey_file"},
172{ERR_PACK(0,SSL_F_SSL_DO_HANDSHAKE,0), "SSL_do_handshake"},
173{ERR_PACK(0,SSL_F_SSL_GET_NEW_SESSION,0), "SSL_GET_NEW_SESSION"},
174{ERR_PACK(0,SSL_F_SSL_GET_PREV_SESSION,0), "SSL_GET_PREV_SESSION"},
175{ERR_PACK(0,SSL_F_SSL_GET_SERVER_SEND_CERT,0), "SSL_GET_SERVER_SEND_CERT"},
176{ERR_PACK(0,SSL_F_SSL_GET_SIGN_PKEY,0), "SSL_GET_SIGN_PKEY"},
177{ERR_PACK(0,SSL_F_SSL_INIT_WBIO_BUFFER,0), "SSL_INIT_WBIO_BUFFER"},
178{ERR_PACK(0,SSL_F_SSL_LOAD_CLIENT_CA_FILE,0), "SSL_load_client_CA_file"},
179{ERR_PACK(0,SSL_F_SSL_NEW,0), "SSL_new"},
180{ERR_PACK(0,SSL_F_SSL_READ,0), "SSL_read"},
181{ERR_PACK(0,SSL_F_SSL_RSA_PRIVATE_DECRYPT,0), "SSL_RSA_PRIVATE_DECRYPT"},
182{ERR_PACK(0,SSL_F_SSL_RSA_PUBLIC_ENCRYPT,0), "SSL_RSA_PUBLIC_ENCRYPT"},
183{ERR_PACK(0,SSL_F_SSL_SESSION_NEW,0), "SSL_SESSION_new"},
184{ERR_PACK(0,SSL_F_SSL_SESSION_PRINT_FP,0), "SSL_SESSION_print_fp"},
185{ERR_PACK(0,SSL_F_SSL_SESS_CERT_NEW,0), "SSL_SESS_CERT_NEW"},
186{ERR_PACK(0,SSL_F_SSL_SET_CERT,0), "SSL_SET_CERT"},
187{ERR_PACK(0,SSL_F_SSL_SET_FD,0), "SSL_set_fd"},
188{ERR_PACK(0,SSL_F_SSL_SET_PKEY,0), "SSL_SET_PKEY"},
189{ERR_PACK(0,SSL_F_SSL_SET_PURPOSE,0), "SSL_set_purpose"},
190{ERR_PACK(0,SSL_F_SSL_SET_RFD,0), "SSL_set_rfd"},
191{ERR_PACK(0,SSL_F_SSL_SET_SESSION,0), "SSL_set_session"},
192{ERR_PACK(0,SSL_F_SSL_SET_SESSION_ID_CONTEXT,0), "SSL_set_session_id_context"},
193{ERR_PACK(0,SSL_F_SSL_SET_TRUST,0), "SSL_set_trust"},
194{ERR_PACK(0,SSL_F_SSL_SET_WFD,0), "SSL_set_wfd"},
195{ERR_PACK(0,SSL_F_SSL_SHUTDOWN,0), "SSL_shutdown"},
196{ERR_PACK(0,SSL_F_SSL_UNDEFINED_CONST_FUNCTION,0), "SSL_UNDEFINED_CONST_FUNCTION"},
197{ERR_PACK(0,SSL_F_SSL_UNDEFINED_FUNCTION,0), "SSL_UNDEFINED_FUNCTION"},
198{ERR_PACK(0,SSL_F_SSL_USE_CERTIFICATE,0), "SSL_use_certificate"},
199{ERR_PACK(0,SSL_F_SSL_USE_CERTIFICATE_ASN1,0), "SSL_use_certificate_ASN1"},
200{ERR_PACK(0,SSL_F_SSL_USE_CERTIFICATE_FILE,0), "SSL_use_certificate_file"},
201{ERR_PACK(0,SSL_F_SSL_USE_PRIVATEKEY,0), "SSL_use_PrivateKey"},
202{ERR_PACK(0,SSL_F_SSL_USE_PRIVATEKEY_ASN1,0), "SSL_use_PrivateKey_ASN1"},
203{ERR_PACK(0,SSL_F_SSL_USE_PRIVATEKEY_FILE,0), "SSL_use_PrivateKey_file"},
204{ERR_PACK(0,SSL_F_SSL_USE_RSAPRIVATEKEY,0), "SSL_use_RSAPrivateKey"},
205{ERR_PACK(0,SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1,0), "SSL_use_RSAPrivateKey_ASN1"},
206{ERR_PACK(0,SSL_F_SSL_USE_RSAPRIVATEKEY_FILE,0), "SSL_use_RSAPrivateKey_file"},
207{ERR_PACK(0,SSL_F_SSL_VERIFY_CERT_CHAIN,0), "SSL_VERIFY_CERT_CHAIN"},
208{ERR_PACK(0,SSL_F_SSL_WRITE,0), "SSL_write"},
209{ERR_PACK(0,SSL_F_TLS1_CHANGE_CIPHER_STATE,0), "TLS1_CHANGE_CIPHER_STATE"},
210{ERR_PACK(0,SSL_F_TLS1_ENC,0), "TLS1_ENC"},
211{ERR_PACK(0,SSL_F_TLS1_SETUP_KEY_BLOCK,0), "TLS1_SETUP_KEY_BLOCK"},
212{ERR_PACK(0,SSL_F_WRITE_PENDING,0), "WRITE_PENDING"},
213{0,NULL}
214 };
215
216static ERR_STRING_DATA SSL_str_reasons[]=
217 {
218{SSL_R_APP_DATA_IN_HANDSHAKE ,"app data in handshake"},
219{SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT,"attempt to reuse session in different context"},
220{SSL_R_BAD_ALERT_RECORD ,"bad alert record"},
221{SSL_R_BAD_AUTHENTICATION_TYPE ,"bad authentication type"},
222{SSL_R_BAD_CHANGE_CIPHER_SPEC ,"bad change cipher spec"},
223{SSL_R_BAD_CHECKSUM ,"bad checksum"},
224{SSL_R_BAD_DATA_RETURNED_BY_CALLBACK ,"bad data returned by callback"},
225{SSL_R_BAD_DECOMPRESSION ,"bad decompression"},
226{SSL_R_BAD_DH_G_LENGTH ,"bad dh g length"},
227{SSL_R_BAD_DH_PUB_KEY_LENGTH ,"bad dh pub key length"},
228{SSL_R_BAD_DH_P_LENGTH ,"bad dh p length"},
229{SSL_R_BAD_DIGEST_LENGTH ,"bad digest length"},
230{SSL_R_BAD_DSA_SIGNATURE ,"bad dsa signature"},
231{SSL_R_BAD_HELLO_REQUEST ,"bad hello request"},
232{SSL_R_BAD_LENGTH ,"bad length"},
233{SSL_R_BAD_MAC_DECODE ,"bad mac decode"},
234{SSL_R_BAD_MESSAGE_TYPE ,"bad message type"},
235{SSL_R_BAD_PACKET_LENGTH ,"bad packet length"},
236{SSL_R_BAD_PROTOCOL_VERSION_NUMBER ,"bad protocol version number"},
237{SSL_R_BAD_RESPONSE_ARGUMENT ,"bad response argument"},
238{SSL_R_BAD_RSA_DECRYPT ,"bad rsa decrypt"},
239{SSL_R_BAD_RSA_ENCRYPT ,"bad rsa encrypt"},
240{SSL_R_BAD_RSA_E_LENGTH ,"bad rsa e length"},
241{SSL_R_BAD_RSA_MODULUS_LENGTH ,"bad rsa modulus length"},
242{SSL_R_BAD_RSA_SIGNATURE ,"bad rsa signature"},
243{SSL_R_BAD_SIGNATURE ,"bad signature"},
244{SSL_R_BAD_SSL_FILETYPE ,"bad ssl filetype"},
245{SSL_R_BAD_SSL_SESSION_ID_LENGTH ,"bad ssl session id length"},
246{SSL_R_BAD_STATE ,"bad state"},
247{SSL_R_BAD_WRITE_RETRY ,"bad write retry"},
248{SSL_R_BIO_NOT_SET ,"bio not set"},
249{SSL_R_BLOCK_CIPHER_PAD_IS_WRONG ,"block cipher pad is wrong"},
250{SSL_R_BN_LIB ,"bn lib"},
251{SSL_R_CA_DN_LENGTH_MISMATCH ,"ca dn length mismatch"},
252{SSL_R_CA_DN_TOO_LONG ,"ca dn too long"},
253{SSL_R_CCS_RECEIVED_EARLY ,"ccs received early"},
254{SSL_R_CERTIFICATE_VERIFY_FAILED ,"certificate verify failed"},
255{SSL_R_CERT_LENGTH_MISMATCH ,"cert length mismatch"},
256{SSL_R_CHALLENGE_IS_DIFFERENT ,"challenge is different"},
257{SSL_R_CIPHER_CODE_WRONG_LENGTH ,"cipher code wrong length"},
258{SSL_R_CIPHER_OR_HASH_UNAVAILABLE ,"cipher or hash unavailable"},
259{SSL_R_CIPHER_TABLE_SRC_ERROR ,"cipher table src error"},
260{SSL_R_COMPRESSED_LENGTH_TOO_LONG ,"compressed length too long"},
261{SSL_R_COMPRESSION_FAILURE ,"compression failure"},
262{SSL_R_COMPRESSION_LIBRARY_ERROR ,"compression library error"},
263{SSL_R_CONNECTION_ID_IS_DIFFERENT ,"connection id is different"},
264{SSL_R_CONNECTION_TYPE_NOT_SET ,"connection type not set"},
265{SSL_R_DATA_BETWEEN_CCS_AND_FINISHED ,"data between ccs and finished"},
266{SSL_R_DATA_LENGTH_TOO_LONG ,"data length too long"},
267{SSL_R_DECRYPTION_FAILED ,"decryption failed"},
268{SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC,"decryption failed or bad record mac"},
269{SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG ,"dh public value length is wrong"},
270{SSL_R_DIGEST_CHECK_FAILED ,"digest check failed"},
271{SSL_R_ENCRYPTED_LENGTH_TOO_LONG ,"encrypted length too long"},
272{SSL_R_ERROR_GENERATING_TMP_RSA_KEY ,"error generating tmp rsa key"},
273{SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST ,"error in received cipher list"},
274{SSL_R_EXCESSIVE_MESSAGE_SIZE ,"excessive message size"},
275{SSL_R_EXTRA_DATA_IN_MESSAGE ,"extra data in message"},
276{SSL_R_GOT_A_FIN_BEFORE_A_CCS ,"got a fin before a ccs"},
277{SSL_R_HTTPS_PROXY_REQUEST ,"https proxy request"},
278{SSL_R_HTTP_REQUEST ,"http request"},
279{SSL_R_ILLEGAL_PADDING ,"illegal padding"},
280{SSL_R_INVALID_CHALLENGE_LENGTH ,"invalid challenge length"},
281{SSL_R_INVALID_COMMAND ,"invalid command"},
282{SSL_R_INVALID_PURPOSE ,"invalid purpose"},
283{SSL_R_INVALID_TRUST ,"invalid trust"},
284{SSL_R_KEY_ARG_TOO_LONG ,"key arg too long"},
285{SSL_R_KRB5 ,"krb5"},
286{SSL_R_KRB5_C_CC_PRINC ,"krb5 client cc principal (no tkt?)"},
287{SSL_R_KRB5_C_GET_CRED ,"krb5 client get cred"},
288{SSL_R_KRB5_C_INIT ,"krb5 client init"},
289{SSL_R_KRB5_C_MK_REQ ,"krb5 client mk_req (expired tkt?)"},
290{SSL_R_KRB5_S_BAD_TICKET ,"krb5 server bad ticket"},
291{SSL_R_KRB5_S_INIT ,"krb5 server init"},
292{SSL_R_KRB5_S_RD_REQ ,"krb5 server rd_req (keytab perms?)"},
293{SSL_R_KRB5_S_TKT_EXPIRED ,"krb5 server tkt expired"},
294{SSL_R_KRB5_S_TKT_NYV ,"krb5 server tkt not yet valid"},
295{SSL_R_KRB5_S_TKT_SKEW ,"krb5 server tkt skew"},
296{SSL_R_LENGTH_MISMATCH ,"length mismatch"},
297{SSL_R_LENGTH_TOO_SHORT ,"length too short"},
298{SSL_R_LIBRARY_BUG ,"library bug"},
299{SSL_R_LIBRARY_HAS_NO_CIPHERS ,"library has no ciphers"},
300{SSL_R_MASTER_KEY_TOO_LONG ,"master key too long"},
301{SSL_R_MESSAGE_TOO_LONG ,"message too long"},
302{SSL_R_MISSING_DH_DSA_CERT ,"missing dh dsa cert"},
303{SSL_R_MISSING_DH_KEY ,"missing dh key"},
304{SSL_R_MISSING_DH_RSA_CERT ,"missing dh rsa cert"},
305{SSL_R_MISSING_DSA_SIGNING_CERT ,"missing dsa signing cert"},
306{SSL_R_MISSING_EXPORT_TMP_DH_KEY ,"missing export tmp dh key"},
307{SSL_R_MISSING_EXPORT_TMP_RSA_KEY ,"missing export tmp rsa key"},
308{SSL_R_MISSING_RSA_CERTIFICATE ,"missing rsa certificate"},
309{SSL_R_MISSING_RSA_ENCRYPTING_CERT ,"missing rsa encrypting cert"},
310{SSL_R_MISSING_RSA_SIGNING_CERT ,"missing rsa signing cert"},
311{SSL_R_MISSING_TMP_DH_KEY ,"missing tmp dh key"},
312{SSL_R_MISSING_TMP_RSA_KEY ,"missing tmp rsa key"},
313{SSL_R_MISSING_TMP_RSA_PKEY ,"missing tmp rsa pkey"},
314{SSL_R_MISSING_VERIFY_MESSAGE ,"missing verify message"},
315{SSL_R_NON_SSLV2_INITIAL_PACKET ,"non sslv2 initial packet"},
316{SSL_R_NO_CERTIFICATES_RETURNED ,"no certificates returned"},
317{SSL_R_NO_CERTIFICATE_ASSIGNED ,"no certificate assigned"},
318{SSL_R_NO_CERTIFICATE_RETURNED ,"no certificate returned"},
319{SSL_R_NO_CERTIFICATE_SET ,"no certificate set"},
320{SSL_R_NO_CERTIFICATE_SPECIFIED ,"no certificate specified"},
321{SSL_R_NO_CIPHERS_AVAILABLE ,"no ciphers available"},
322{SSL_R_NO_CIPHERS_PASSED ,"no ciphers passed"},
323{SSL_R_NO_CIPHERS_SPECIFIED ,"no ciphers specified"},
324{SSL_R_NO_CIPHER_LIST ,"no cipher list"},
325{SSL_R_NO_CIPHER_MATCH ,"no cipher match"},
326{SSL_R_NO_CLIENT_CERT_RECEIVED ,"no client cert received"},
327{SSL_R_NO_COMPRESSION_SPECIFIED ,"no compression specified"},
328{SSL_R_NO_METHOD_SPECIFIED ,"no method specified"},
329{SSL_R_NO_PRIVATEKEY ,"no privatekey"},
330{SSL_R_NO_PRIVATE_KEY_ASSIGNED ,"no private key assigned"},
331{SSL_R_NO_PROTOCOLS_AVAILABLE ,"no protocols available"},
332{SSL_R_NO_PUBLICKEY ,"no publickey"},
333{SSL_R_NO_SHARED_CIPHER ,"no shared cipher"},
334{SSL_R_NO_VERIFY_CALLBACK ,"no verify callback"},
335{SSL_R_NULL_SSL_CTX ,"null ssl ctx"},
336{SSL_R_NULL_SSL_METHOD_PASSED ,"null ssl method passed"},
337{SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED ,"old session cipher not returned"},
338{SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE ,"only tls allowed in fips mode"},
339{SSL_R_PACKET_LENGTH_TOO_LONG ,"packet length too long"},
340{SSL_R_PATH_TOO_LONG ,"path too long"},
341{SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE ,"peer did not return a certificate"},
342{SSL_R_PEER_ERROR ,"peer error"},
343{SSL_R_PEER_ERROR_CERTIFICATE ,"peer error certificate"},
344{SSL_R_PEER_ERROR_NO_CERTIFICATE ,"peer error no certificate"},
345{SSL_R_PEER_ERROR_NO_CIPHER ,"peer error no cipher"},
346{SSL_R_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE,"peer error unsupported certificate type"},
347{SSL_R_PRE_MAC_LENGTH_TOO_LONG ,"pre mac length too long"},
348{SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS ,"problems mapping cipher functions"},
349{SSL_R_PROTOCOL_IS_SHUTDOWN ,"protocol is shutdown"},
350{SSL_R_PUBLIC_KEY_ENCRYPT_ERROR ,"public key encrypt error"},
351{SSL_R_PUBLIC_KEY_IS_NOT_RSA ,"public key is not rsa"},
352{SSL_R_PUBLIC_KEY_NOT_RSA ,"public key not rsa"},
353{SSL_R_READ_BIO_NOT_SET ,"read bio not set"},
354{SSL_R_READ_WRONG_PACKET_TYPE ,"read wrong packet type"},
355{SSL_R_RECORD_LENGTH_MISMATCH ,"record length mismatch"},
356{SSL_R_RECORD_TOO_LARGE ,"record too large"},
357{SSL_R_RECORD_TOO_SMALL ,"record too small"},
358{SSL_R_REQUIRED_CIPHER_MISSING ,"required cipher missing"},
359{SSL_R_REUSE_CERT_LENGTH_NOT_ZERO ,"reuse cert length not zero"},
360{SSL_R_REUSE_CERT_TYPE_NOT_ZERO ,"reuse cert type not zero"},
361{SSL_R_REUSE_CIPHER_LIST_NOT_ZERO ,"reuse cipher list not zero"},
362{SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED ,"session id context uninitialized"},
363{SSL_R_SHORT_READ ,"short read"},
364{SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE,"signature for non signing certificate"},
365{SSL_R_SSL23_DOING_SESSION_ID_REUSE ,"ssl23 doing session id reuse"},
366{SSL_R_SSL2_CONNECTION_ID_TOO_LONG ,"ssl2 connection id too long"},
367{SSL_R_SSL3_SESSION_ID_TOO_LONG ,"ssl3 session id too long"},
368{SSL_R_SSL3_SESSION_ID_TOO_SHORT ,"ssl3 session id too short"},
369{SSL_R_SSLV3_ALERT_BAD_CERTIFICATE ,"sslv3 alert bad certificate"},
370{SSL_R_SSLV3_ALERT_BAD_RECORD_MAC ,"sslv3 alert bad record mac"},
371{SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED ,"sslv3 alert certificate expired"},
372{SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED ,"sslv3 alert certificate revoked"},
373{SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN ,"sslv3 alert certificate unknown"},
374{SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE ,"sslv3 alert decompression failure"},
375{SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE ,"sslv3 alert handshake failure"},
376{SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER ,"sslv3 alert illegal parameter"},
377{SSL_R_SSLV3_ALERT_NO_CERTIFICATE ,"sslv3 alert no certificate"},
378{SSL_R_SSLV3_ALERT_PEER_ERROR_CERTIFICATE,"sslv3 alert peer error certificate"},
379{SSL_R_SSLV3_ALERT_PEER_ERROR_NO_CERTIFICATE,"sslv3 alert peer error no certificate"},
380{SSL_R_SSLV3_ALERT_PEER_ERROR_NO_CIPHER ,"sslv3 alert peer error no cipher"},
381{SSL_R_SSLV3_ALERT_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE,"sslv3 alert peer error unsupported certificate type"},
382{SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE ,"sslv3 alert unexpected message"},
383{SSL_R_SSLV3_ALERT_UNKNOWN_REMOTE_ERROR_TYPE,"sslv3 alert unknown remote error type"},
384{SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE,"sslv3 alert unsupported certificate"},
385{SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION,"ssl ctx has no default ssl version"},
386{SSL_R_SSL_HANDSHAKE_FAILURE ,"ssl handshake failure"},
387{SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS ,"ssl library has no ciphers"},
388{SSL_R_SSL_SESSION_ID_CALLBACK_FAILED ,"ssl session id callback failed"},
389{SSL_R_SSL_SESSION_ID_CONFLICT ,"ssl session id conflict"},
390{SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG ,"ssl session id context too long"},
391{SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH ,"ssl session id has bad length"},
392{SSL_R_SSL_SESSION_ID_IS_DIFFERENT ,"ssl session id is different"},
393{SSL_R_TLSV1_ALERT_ACCESS_DENIED ,"tlsv1 alert access denied"},
394{SSL_R_TLSV1_ALERT_DECODE_ERROR ,"tlsv1 alert decode error"},
395{SSL_R_TLSV1_ALERT_DECRYPTION_FAILED ,"tlsv1 alert decryption failed"},
396{SSL_R_TLSV1_ALERT_DECRYPT_ERROR ,"tlsv1 alert decrypt error"},
397{SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION ,"tlsv1 alert export restriction"},
398{SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY ,"tlsv1 alert insufficient security"},
399{SSL_R_TLSV1_ALERT_INTERNAL_ERROR ,"tlsv1 alert internal error"},
400{SSL_R_TLSV1_ALERT_NO_RENEGOTIATION ,"tlsv1 alert no renegotiation"},
401{SSL_R_TLSV1_ALERT_PROTOCOL_VERSION ,"tlsv1 alert protocol version"},
402{SSL_R_TLSV1_ALERT_RECORD_OVERFLOW ,"tlsv1 alert record overflow"},
403{SSL_R_TLSV1_ALERT_UNKNOWN_CA ,"tlsv1 alert unknown ca"},
404{SSL_R_TLSV1_ALERT_USER_CANCELLED ,"tlsv1 alert user cancelled"},
405{SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER,"tls client cert req with anon cipher"},
406{SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST,"tls peer did not respond with certificate list"},
407{SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG,"tls rsa encrypted value length is wrong"},
408{SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER ,"tried to use unsupported cipher"},
409{SSL_R_UNABLE_TO_DECODE_DH_CERTS ,"unable to decode dh certs"},
410{SSL_R_UNABLE_TO_EXTRACT_PUBLIC_KEY ,"unable to extract public key"},
411{SSL_R_UNABLE_TO_FIND_DH_PARAMETERS ,"unable to find dh parameters"},
412{SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS,"unable to find public key parameters"},
413{SSL_R_UNABLE_TO_FIND_SSL_METHOD ,"unable to find ssl method"},
414{SSL_R_UNABLE_TO_LOAD_SSL2_MD5_ROUTINES ,"unable to load ssl2 md5 routines"},
415{SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES ,"unable to load ssl3 md5 routines"},
416{SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES ,"unable to load ssl3 sha1 routines"},
417{SSL_R_UNEXPECTED_MESSAGE ,"unexpected message"},
418{SSL_R_UNEXPECTED_RECORD ,"unexpected record"},
419{SSL_R_UNINITIALIZED ,"uninitialized"},
420{SSL_R_UNKNOWN_ALERT_TYPE ,"unknown alert type"},
421{SSL_R_UNKNOWN_CERTIFICATE_TYPE ,"unknown certificate type"},
422{SSL_R_UNKNOWN_CIPHER_RETURNED ,"unknown cipher returned"},
423{SSL_R_UNKNOWN_CIPHER_TYPE ,"unknown cipher type"},
424{SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE ,"unknown key exchange type"},
425{SSL_R_UNKNOWN_PKEY_TYPE ,"unknown pkey type"},
426{SSL_R_UNKNOWN_PROTOCOL ,"unknown protocol"},
427{SSL_R_UNKNOWN_REMOTE_ERROR_TYPE ,"unknown remote error type"},
428{SSL_R_UNKNOWN_SSL_VERSION ,"unknown ssl version"},
429{SSL_R_UNKNOWN_STATE ,"unknown state"},
430{SSL_R_UNSUPPORTED_CIPHER ,"unsupported cipher"},
431{SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM ,"unsupported compression algorithm"},
432{SSL_R_UNSUPPORTED_OPTION ,"unsupported option"},
433{SSL_R_UNSUPPORTED_PROTOCOL ,"unsupported protocol"},
434{SSL_R_UNSUPPORTED_SSL_VERSION ,"unsupported ssl version"},
435{SSL_R_WRITE_BIO_NOT_SET ,"write bio not set"},
436{SSL_R_WRONG_CIPHER_RETURNED ,"wrong cipher returned"},
437{SSL_R_WRONG_MESSAGE_TYPE ,"wrong message type"},
438{SSL_R_WRONG_NUMBER_OF_KEY_BITS ,"wrong number of key bits"},
439{SSL_R_WRONG_SIGNATURE_LENGTH ,"wrong signature length"},
440{SSL_R_WRONG_SIGNATURE_SIZE ,"wrong signature size"},
441{SSL_R_WRONG_SSL_VERSION ,"wrong ssl version"},
442{SSL_R_WRONG_VERSION_NUMBER ,"wrong version number"},
443{SSL_R_X509_LIB ,"x509 lib"},
444{SSL_R_X509_VERIFICATION_SETUP_PROBLEMS ,"x509 verification setup problems"},
445{0,NULL}
446 };
447
448#endif
449
450void ERR_load_SSL_strings(void)
451 {
452 static int init=1;
453
454 if (init)
455 {
456 init=0;
457#ifndef OPENSSL_NO_ERR
458 ERR_load_strings(ERR_LIB_SSL,SSL_str_functs);
459 ERR_load_strings(ERR_LIB_SSL,SSL_str_reasons);
460#endif
461
462 }
463 }
diff --git a/src/lib/libssl/ssl_err2.c b/src/lib/libssl/ssl_err2.c
new file mode 100644
index 0000000000..ea95a5f983
--- /dev/null
+++ b/src/lib/libssl/ssl_err2.c
@@ -0,0 +1,70 @@
1/* ssl/ssl_err2.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include <openssl/err.h>
61#include <openssl/ssl.h>
62
63void SSL_load_error_strings(void)
64 {
65#ifndef OPENSSL_NO_ERR
66 ERR_load_crypto_strings();
67 ERR_load_SSL_strings();
68#endif
69 }
70
diff --git a/src/lib/libssl/ssl_lib.c b/src/lib/libssl/ssl_lib.c
new file mode 100644
index 0000000000..631229558f
--- /dev/null
+++ b/src/lib/libssl/ssl_lib.c
@@ -0,0 +1,2336 @@
1/*! \file ssl/ssl_lib.c
2 * \brief Version independent SSL functions.
3 */
4/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
5 * All rights reserved.
6 *
7 * This package is an SSL implementation written
8 * by Eric Young (eay@cryptsoft.com).
9 * The implementation was written so as to conform with Netscapes SSL.
10 *
11 * This library is free for commercial and non-commercial use as long as
12 * the following conditions are aheared to. The following conditions
13 * apply to all code found in this distribution, be it the RC4, RSA,
14 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
15 * included with this distribution is covered by the same copyright terms
16 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
17 *
18 * Copyright remains Eric Young's, and as such any Copyright notices in
19 * the code are not to be removed.
20 * If this package is used in a product, Eric Young should be given attribution
21 * as the author of the parts of the library used.
22 * This can be in the form of a textual message at program startup or
23 * in documentation (online or textual) provided with the package.
24 *
25 * Redistribution and use in source and binary forms, with or without
26 * modification, are permitted provided that the following conditions
27 * are met:
28 * 1. Redistributions of source code must retain the copyright
29 * notice, this list of conditions and the following disclaimer.
30 * 2. Redistributions in binary form must reproduce the above copyright
31 * notice, this list of conditions and the following disclaimer in the
32 * documentation and/or other materials provided with the distribution.
33 * 3. All advertising materials mentioning features or use of this software
34 * must display the following acknowledgement:
35 * "This product includes cryptographic software written by
36 * Eric Young (eay@cryptsoft.com)"
37 * The word 'cryptographic' can be left out if the rouines from the library
38 * being used are not cryptographic related :-).
39 * 4. If you include any Windows specific code (or a derivative thereof) from
40 * the apps directory (application code) you must include an acknowledgement:
41 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
42 *
43 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
44 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
45 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
46 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
47 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
48 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
49 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
50 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
51 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
52 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
53 * SUCH DAMAGE.
54 *
55 * The licence and distribution terms for any publically available version or
56 * derivative of this code cannot be changed. i.e. this code cannot simply be
57 * copied and put under another distribution licence
58 * [including the GNU Public Licence.]
59 */
60/* ====================================================================
61 * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved.
62 *
63 * Redistribution and use in source and binary forms, with or without
64 * modification, are permitted provided that the following conditions
65 * are met:
66 *
67 * 1. Redistributions of source code must retain the above copyright
68 * notice, this list of conditions and the following disclaimer.
69 *
70 * 2. Redistributions in binary form must reproduce the above copyright
71 * notice, this list of conditions and the following disclaimer in
72 * the documentation and/or other materials provided with the
73 * distribution.
74 *
75 * 3. All advertising materials mentioning features or use of this
76 * software must display the following acknowledgment:
77 * "This product includes software developed by the OpenSSL Project
78 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
79 *
80 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
81 * endorse or promote products derived from this software without
82 * prior written permission. For written permission, please contact
83 * openssl-core@openssl.org.
84 *
85 * 5. Products derived from this software may not be called "OpenSSL"
86 * nor may "OpenSSL" appear in their names without prior written
87 * permission of the OpenSSL Project.
88 *
89 * 6. Redistributions of any form whatsoever must retain the following
90 * acknowledgment:
91 * "This product includes software developed by the OpenSSL Project
92 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
93 *
94 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
95 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
96 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
97 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
98 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
99 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
100 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
101 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
102 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
103 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
104 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
105 * OF THE POSSIBILITY OF SUCH DAMAGE.
106 * ====================================================================
107 *
108 * This product includes cryptographic software written by Eric Young
109 * (eay@cryptsoft.com). This product includes software written by Tim
110 * Hudson (tjh@cryptsoft.com).
111 *
112 */
113
114
115#ifdef REF_CHECK
116# include <assert.h>
117#endif
118#include <stdio.h>
119#include "ssl_locl.h"
120#include "kssl_lcl.h"
121#include <openssl/objects.h>
122#include <openssl/lhash.h>
123#include <openssl/x509v3.h>
124#include <openssl/fips.h>
125
126const char *SSL_version_str=OPENSSL_VERSION_TEXT;
127
128OPENSSL_GLOBAL SSL3_ENC_METHOD ssl3_undef_enc_method={
129 /* evil casts, but these functions are only called if there's a library bug */
130 (int (*)(SSL *,int))ssl_undefined_function,
131 (int (*)(SSL *, unsigned char *, int))ssl_undefined_function,
132 ssl_undefined_function,
133 (int (*)(SSL *, unsigned char *, unsigned char *, int))ssl_undefined_function,
134 (int (*)(SSL*, int))ssl_undefined_function,
135 (int (*)(SSL *, EVP_MD_CTX *, EVP_MD_CTX *, const char*, int, unsigned char *))ssl_undefined_function
136 };
137
138int SSL_clear(SSL *s)
139 {
140
141 if (s->method == NULL)
142 {
143 SSLerr(SSL_F_SSL_CLEAR,SSL_R_NO_METHOD_SPECIFIED);
144 return(0);
145 }
146
147 if (ssl_clear_bad_session(s))
148 {
149 SSL_SESSION_free(s->session);
150 s->session=NULL;
151 }
152
153 s->error=0;
154 s->hit=0;
155 s->shutdown=0;
156
157#if 0 /* Disabled since version 1.10 of this file (early return not
158 * needed because SSL_clear is not called when doing renegotiation) */
159 /* This is set if we are doing dynamic renegotiation so keep
160 * the old cipher. It is sort of a SSL_clear_lite :-) */
161 if (s->new_session) return(1);
162#else
163 if (s->new_session)
164 {
165 SSLerr(SSL_F_SSL_CLEAR,ERR_R_INTERNAL_ERROR);
166 return 0;
167 }
168#endif
169
170 s->type=0;
171
172 s->state=SSL_ST_BEFORE|((s->server)?SSL_ST_ACCEPT:SSL_ST_CONNECT);
173
174 s->version=s->method->version;
175 s->client_version=s->version;
176 s->rwstate=SSL_NOTHING;
177 s->rstate=SSL_ST_READ_HEADER;
178#if 0
179 s->read_ahead=s->ctx->read_ahead;
180#endif
181
182 if (s->init_buf != NULL)
183 {
184 BUF_MEM_free(s->init_buf);
185 s->init_buf=NULL;
186 }
187
188 ssl_clear_cipher_ctx(s);
189
190 s->first_packet=0;
191
192#if 1
193 /* Check to see if we were changed into a different method, if
194 * so, revert back if we are not doing session-id reuse. */
195 if (!s->in_handshake && (s->session == NULL) && (s->method != s->ctx->method))
196 {
197 s->method->ssl_free(s);
198 s->method=s->ctx->method;
199 if (!s->method->ssl_new(s))
200 return(0);
201 }
202 else
203#endif
204 s->method->ssl_clear(s);
205 return(1);
206 }
207
208/** Used to change an SSL_CTXs default SSL method type */
209int SSL_CTX_set_ssl_version(SSL_CTX *ctx,SSL_METHOD *meth)
210 {
211 STACK_OF(SSL_CIPHER) *sk;
212
213 ctx->method=meth;
214
215 sk=ssl_create_cipher_list(ctx->method,&(ctx->cipher_list),
216 &(ctx->cipher_list_by_id),SSL_DEFAULT_CIPHER_LIST);
217 if ((sk == NULL) || (sk_SSL_CIPHER_num(sk) <= 0))
218 {
219 SSLerr(SSL_F_SSL_CTX_SET_SSL_VERSION,SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS);
220 return(0);
221 }
222 return(1);
223 }
224
225SSL *SSL_new(SSL_CTX *ctx)
226 {
227 SSL *s;
228
229 if (ctx == NULL)
230 {
231 SSLerr(SSL_F_SSL_NEW,SSL_R_NULL_SSL_CTX);
232 return(NULL);
233 }
234 if (ctx->method == NULL)
235 {
236 SSLerr(SSL_F_SSL_NEW,SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION);
237 return(NULL);
238 }
239
240 s=(SSL *)OPENSSL_malloc(sizeof(SSL));
241 if (s == NULL) goto err;
242 memset(s,0,sizeof(SSL));
243
244#ifndef OPENSSL_NO_KRB5
245 s->kssl_ctx = kssl_ctx_new();
246#endif /* OPENSSL_NO_KRB5 */
247
248 s->options=ctx->options;
249 s->mode=ctx->mode;
250 s->max_cert_list=ctx->max_cert_list;
251
252 if (ctx->cert != NULL)
253 {
254 /* Earlier library versions used to copy the pointer to
255 * the CERT, not its contents; only when setting new
256 * parameters for the per-SSL copy, ssl_cert_new would be
257 * called (and the direct reference to the per-SSL_CTX
258 * settings would be lost, but those still were indirectly
259 * accessed for various purposes, and for that reason they
260 * used to be known as s->ctx->default_cert).
261 * Now we don't look at the SSL_CTX's CERT after having
262 * duplicated it once. */
263
264 s->cert = ssl_cert_dup(ctx->cert);
265 if (s->cert == NULL)
266 goto err;
267 }
268 else
269 s->cert=NULL; /* Cannot really happen (see SSL_CTX_new) */
270
271 s->read_ahead=ctx->read_ahead;
272 s->msg_callback=ctx->msg_callback;
273 s->msg_callback_arg=ctx->msg_callback_arg;
274 s->verify_mode=ctx->verify_mode;
275 s->verify_depth=ctx->verify_depth;
276 s->sid_ctx_length=ctx->sid_ctx_length;
277 OPENSSL_assert(s->sid_ctx_length <= sizeof s->sid_ctx);
278 memcpy(&s->sid_ctx,&ctx->sid_ctx,sizeof(s->sid_ctx));
279 s->verify_callback=ctx->default_verify_callback;
280 s->generate_session_id=ctx->generate_session_id;
281 s->purpose = ctx->purpose;
282 s->trust = ctx->trust;
283 s->quiet_shutdown=ctx->quiet_shutdown;
284
285 CRYPTO_add(&ctx->references,1,CRYPTO_LOCK_SSL_CTX);
286 s->ctx=ctx;
287
288 s->verify_result=X509_V_OK;
289
290 s->method=ctx->method;
291
292 if (!s->method->ssl_new(s))
293 goto err;
294
295 s->references=1;
296 s->server=(ctx->method->ssl_accept == ssl_undefined_function)?0:1;
297
298 SSL_clear(s);
299
300 CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL, s, &s->ex_data);
301
302 return(s);
303err:
304 if (s != NULL)
305 {
306 if (s->cert != NULL)
307 ssl_cert_free(s->cert);
308 if (s->ctx != NULL)
309 SSL_CTX_free(s->ctx); /* decrement reference count */
310 OPENSSL_free(s);
311 }
312 SSLerr(SSL_F_SSL_NEW,ERR_R_MALLOC_FAILURE);
313 return(NULL);
314 }
315
316int SSL_CTX_set_session_id_context(SSL_CTX *ctx,const unsigned char *sid_ctx,
317 unsigned int sid_ctx_len)
318 {
319 if(sid_ctx_len > sizeof ctx->sid_ctx)
320 {
321 SSLerr(SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT,SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG);
322 return 0;
323 }
324 ctx->sid_ctx_length=sid_ctx_len;
325 memcpy(ctx->sid_ctx,sid_ctx,sid_ctx_len);
326
327 return 1;
328 }
329
330int SSL_set_session_id_context(SSL *ssl,const unsigned char *sid_ctx,
331 unsigned int sid_ctx_len)
332 {
333 if(sid_ctx_len > SSL_MAX_SID_CTX_LENGTH)
334 {
335 SSLerr(SSL_F_SSL_SET_SESSION_ID_CONTEXT,SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG);
336 return 0;
337 }
338 ssl->sid_ctx_length=sid_ctx_len;
339 memcpy(ssl->sid_ctx,sid_ctx,sid_ctx_len);
340
341 return 1;
342 }
343
344int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb)
345 {
346 CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX);
347 ctx->generate_session_id = cb;
348 CRYPTO_w_unlock(CRYPTO_LOCK_SSL_CTX);
349 return 1;
350 }
351
352int SSL_set_generate_session_id(SSL *ssl, GEN_SESSION_CB cb)
353 {
354 CRYPTO_w_lock(CRYPTO_LOCK_SSL);
355 ssl->generate_session_id = cb;
356 CRYPTO_w_unlock(CRYPTO_LOCK_SSL);
357 return 1;
358 }
359
360int SSL_has_matching_session_id(const SSL *ssl, const unsigned char *id,
361 unsigned int id_len)
362 {
363 /* A quick examination of SSL_SESSION_hash and SSL_SESSION_cmp shows how
364 * we can "construct" a session to give us the desired check - ie. to
365 * find if there's a session in the hash table that would conflict with
366 * any new session built out of this id/id_len and the ssl_version in
367 * use by this SSL. */
368 SSL_SESSION r, *p;
369
370 if(id_len > sizeof r.session_id)
371 return 0;
372
373 r.ssl_version = ssl->version;
374 r.session_id_length = id_len;
375 memcpy(r.session_id, id, id_len);
376 /* NB: SSLv2 always uses a fixed 16-byte session ID, so even if a
377 * callback is calling us to check the uniqueness of a shorter ID, it
378 * must be compared as a padded-out ID because that is what it will be
379 * converted to when the callback has finished choosing it. */
380 if((r.ssl_version == SSL2_VERSION) &&
381 (id_len < SSL2_SSL_SESSION_ID_LENGTH))
382 {
383 memset(r.session_id + id_len, 0,
384 SSL2_SSL_SESSION_ID_LENGTH - id_len);
385 r.session_id_length = SSL2_SSL_SESSION_ID_LENGTH;
386 }
387
388 CRYPTO_r_lock(CRYPTO_LOCK_SSL_CTX);
389 p = (SSL_SESSION *)lh_retrieve(ssl->ctx->sessions, &r);
390 CRYPTO_r_unlock(CRYPTO_LOCK_SSL_CTX);
391 return (p != NULL);
392 }
393
394int SSL_CTX_set_purpose(SSL_CTX *s, int purpose)
395 {
396 return X509_PURPOSE_set(&s->purpose, purpose);
397 }
398
399int SSL_set_purpose(SSL *s, int purpose)
400 {
401 return X509_PURPOSE_set(&s->purpose, purpose);
402 }
403
404int SSL_CTX_set_trust(SSL_CTX *s, int trust)
405 {
406 return X509_TRUST_set(&s->trust, trust);
407 }
408
409int SSL_set_trust(SSL *s, int trust)
410 {
411 return X509_TRUST_set(&s->trust, trust);
412 }
413
414void SSL_free(SSL *s)
415 {
416 int i;
417
418 if(s == NULL)
419 return;
420
421 i=CRYPTO_add(&s->references,-1,CRYPTO_LOCK_SSL);
422#ifdef REF_PRINT
423 REF_PRINT("SSL",s);
424#endif
425 if (i > 0) return;
426#ifdef REF_CHECK
427 if (i < 0)
428 {
429 fprintf(stderr,"SSL_free, bad reference count\n");
430 abort(); /* ok */
431 }
432#endif
433
434 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_SSL, s, &s->ex_data);
435
436 if (s->bbio != NULL)
437 {
438 /* If the buffering BIO is in place, pop it off */
439 if (s->bbio == s->wbio)
440 {
441 s->wbio=BIO_pop(s->wbio);
442 }
443 BIO_free(s->bbio);
444 s->bbio=NULL;
445 }
446 if (s->rbio != NULL)
447 BIO_free_all(s->rbio);
448 if ((s->wbio != NULL) && (s->wbio != s->rbio))
449 BIO_free_all(s->wbio);
450
451 if (s->init_buf != NULL) BUF_MEM_free(s->init_buf);
452
453 /* add extra stuff */
454 if (s->cipher_list != NULL) sk_SSL_CIPHER_free(s->cipher_list);
455 if (s->cipher_list_by_id != NULL) sk_SSL_CIPHER_free(s->cipher_list_by_id);
456
457 /* Make the next call work :-) */
458 if (s->session != NULL)
459 {
460 ssl_clear_bad_session(s);
461 SSL_SESSION_free(s->session);
462 }
463
464 ssl_clear_cipher_ctx(s);
465
466 if (s->cert != NULL) ssl_cert_free(s->cert);
467 /* Free up if allocated */
468
469 if (s->ctx) SSL_CTX_free(s->ctx);
470
471 if (s->client_CA != NULL)
472 sk_X509_NAME_pop_free(s->client_CA,X509_NAME_free);
473
474 if (s->method != NULL) s->method->ssl_free(s);
475
476#ifndef OPENSSL_NO_KRB5
477 if (s->kssl_ctx != NULL)
478 kssl_ctx_free(s->kssl_ctx);
479#endif /* OPENSSL_NO_KRB5 */
480
481 OPENSSL_free(s);
482 }
483
484void SSL_set_bio(SSL *s,BIO *rbio,BIO *wbio)
485 {
486 /* If the output buffering BIO is still in place, remove it
487 */
488 if (s->bbio != NULL)
489 {
490 if (s->wbio == s->bbio)
491 {
492 s->wbio=s->wbio->next_bio;
493 s->bbio->next_bio=NULL;
494 }
495 }
496 if ((s->rbio != NULL) && (s->rbio != rbio))
497 BIO_free_all(s->rbio);
498 if ((s->wbio != NULL) && (s->wbio != wbio) && (s->rbio != s->wbio))
499 BIO_free_all(s->wbio);
500 s->rbio=rbio;
501 s->wbio=wbio;
502 }
503
504BIO *SSL_get_rbio(const SSL *s)
505 { return(s->rbio); }
506
507BIO *SSL_get_wbio(const SSL *s)
508 { return(s->wbio); }
509
510int SSL_get_fd(const SSL *s)
511 {
512 return(SSL_get_rfd(s));
513 }
514
515int SSL_get_rfd(const SSL *s)
516 {
517 int ret= -1;
518 BIO *b,*r;
519
520 b=SSL_get_rbio(s);
521 r=BIO_find_type(b,BIO_TYPE_DESCRIPTOR);
522 if (r != NULL)
523 BIO_get_fd(r,&ret);
524 return(ret);
525 }
526
527int SSL_get_wfd(const SSL *s)
528 {
529 int ret= -1;
530 BIO *b,*r;
531
532 b=SSL_get_wbio(s);
533 r=BIO_find_type(b,BIO_TYPE_DESCRIPTOR);
534 if (r != NULL)
535 BIO_get_fd(r,&ret);
536 return(ret);
537 }
538
539#ifndef OPENSSL_NO_SOCK
540int SSL_set_fd(SSL *s,int fd)
541 {
542 int ret=0;
543 BIO *bio=NULL;
544
545 bio=BIO_new(BIO_s_socket());
546
547 if (bio == NULL)
548 {
549 SSLerr(SSL_F_SSL_SET_FD,ERR_R_BUF_LIB);
550 goto err;
551 }
552 BIO_set_fd(bio,fd,BIO_NOCLOSE);
553 SSL_set_bio(s,bio,bio);
554 ret=1;
555err:
556 return(ret);
557 }
558
559int SSL_set_wfd(SSL *s,int fd)
560 {
561 int ret=0;
562 BIO *bio=NULL;
563
564 if ((s->rbio == NULL) || (BIO_method_type(s->rbio) != BIO_TYPE_SOCKET)
565 || ((int)BIO_get_fd(s->rbio,NULL) != fd))
566 {
567 bio=BIO_new(BIO_s_socket());
568
569 if (bio == NULL)
570 { SSLerr(SSL_F_SSL_SET_WFD,ERR_R_BUF_LIB); goto err; }
571 BIO_set_fd(bio,fd,BIO_NOCLOSE);
572 SSL_set_bio(s,SSL_get_rbio(s),bio);
573 }
574 else
575 SSL_set_bio(s,SSL_get_rbio(s),SSL_get_rbio(s));
576 ret=1;
577err:
578 return(ret);
579 }
580
581int SSL_set_rfd(SSL *s,int fd)
582 {
583 int ret=0;
584 BIO *bio=NULL;
585
586 if ((s->wbio == NULL) || (BIO_method_type(s->wbio) != BIO_TYPE_SOCKET)
587 || ((int)BIO_get_fd(s->wbio,NULL) != fd))
588 {
589 bio=BIO_new(BIO_s_socket());
590
591 if (bio == NULL)
592 {
593 SSLerr(SSL_F_SSL_SET_RFD,ERR_R_BUF_LIB);
594 goto err;
595 }
596 BIO_set_fd(bio,fd,BIO_NOCLOSE);
597 SSL_set_bio(s,bio,SSL_get_wbio(s));
598 }
599 else
600 SSL_set_bio(s,SSL_get_wbio(s),SSL_get_wbio(s));
601 ret=1;
602err:
603 return(ret);
604 }
605#endif
606
607
608/* return length of latest Finished message we sent, copy to 'buf' */
609size_t SSL_get_finished(const SSL *s, void *buf, size_t count)
610 {
611 size_t ret = 0;
612
613 if (s->s3 != NULL)
614 {
615 ret = s->s3->tmp.finish_md_len;
616 if (count > ret)
617 count = ret;
618 memcpy(buf, s->s3->tmp.finish_md, count);
619 }
620 return ret;
621 }
622
623/* return length of latest Finished message we expected, copy to 'buf' */
624size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count)
625 {
626 size_t ret = 0;
627
628 if (s->s3 != NULL)
629 {
630 ret = s->s3->tmp.peer_finish_md_len;
631 if (count > ret)
632 count = ret;
633 memcpy(buf, s->s3->tmp.peer_finish_md, count);
634 }
635 return ret;
636 }
637
638
639int SSL_get_verify_mode(const SSL *s)
640 {
641 return(s->verify_mode);
642 }
643
644int SSL_get_verify_depth(const SSL *s)
645 {
646 return(s->verify_depth);
647 }
648
649int (*SSL_get_verify_callback(const SSL *s))(int,X509_STORE_CTX *)
650 {
651 return(s->verify_callback);
652 }
653
654int SSL_CTX_get_verify_mode(const SSL_CTX *ctx)
655 {
656 return(ctx->verify_mode);
657 }
658
659int SSL_CTX_get_verify_depth(const SSL_CTX *ctx)
660 {
661 return(ctx->verify_depth);
662 }
663
664int (*SSL_CTX_get_verify_callback(const SSL_CTX *ctx))(int,X509_STORE_CTX *)
665 {
666 return(ctx->default_verify_callback);
667 }
668
669void SSL_set_verify(SSL *s,int mode,
670 int (*callback)(int ok,X509_STORE_CTX *ctx))
671 {
672 s->verify_mode=mode;
673 if (callback != NULL)
674 s->verify_callback=callback;
675 }
676
677void SSL_set_verify_depth(SSL *s,int depth)
678 {
679 s->verify_depth=depth;
680 }
681
682void SSL_set_read_ahead(SSL *s,int yes)
683 {
684 s->read_ahead=yes;
685 }
686
687int SSL_get_read_ahead(const SSL *s)
688 {
689 return(s->read_ahead);
690 }
691
692int SSL_pending(const SSL *s)
693 {
694 /* SSL_pending cannot work properly if read-ahead is enabled
695 * (SSL_[CTX_]ctrl(..., SSL_CTRL_SET_READ_AHEAD, 1, NULL)),
696 * and it is impossible to fix since SSL_pending cannot report
697 * errors that may be observed while scanning the new data.
698 * (Note that SSL_pending() is often used as a boolean value,
699 * so we'd better not return -1.)
700 */
701 return(s->method->ssl_pending(s));
702 }
703
704X509 *SSL_get_peer_certificate(const SSL *s)
705 {
706 X509 *r;
707
708 if ((s == NULL) || (s->session == NULL))
709 r=NULL;
710 else
711 r=s->session->peer;
712
713 if (r == NULL) return(r);
714
715 CRYPTO_add(&r->references,1,CRYPTO_LOCK_X509);
716
717 return(r);
718 }
719
720STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s)
721 {
722 STACK_OF(X509) *r;
723
724 if ((s == NULL) || (s->session == NULL) || (s->session->sess_cert == NULL))
725 r=NULL;
726 else
727 r=s->session->sess_cert->cert_chain;
728
729 /* If we are a client, cert_chain includes the peer's own
730 * certificate; if we are a server, it does not. */
731
732 return(r);
733 }
734
735/* Now in theory, since the calling process own 't' it should be safe to
736 * modify. We need to be able to read f without being hassled */
737void SSL_copy_session_id(SSL *t,const SSL *f)
738 {
739 CERT *tmp;
740
741 /* Do we need to to SSL locking? */
742 SSL_set_session(t,SSL_get_session(f));
743
744 /* what if we are setup as SSLv2 but want to talk SSLv3 or
745 * vice-versa */
746 if (t->method != f->method)
747 {
748 t->method->ssl_free(t); /* cleanup current */
749 t->method=f->method; /* change method */
750 t->method->ssl_new(t); /* setup new */
751 }
752
753 tmp=t->cert;
754 if (f->cert != NULL)
755 {
756 CRYPTO_add(&f->cert->references,1,CRYPTO_LOCK_SSL_CERT);
757 t->cert=f->cert;
758 }
759 else
760 t->cert=NULL;
761 if (tmp != NULL) ssl_cert_free(tmp);
762 SSL_set_session_id_context(t,f->sid_ctx,f->sid_ctx_length);
763 }
764
765/* Fix this so it checks all the valid key/cert options */
766int SSL_CTX_check_private_key(const SSL_CTX *ctx)
767 {
768 if ( (ctx == NULL) ||
769 (ctx->cert == NULL) ||
770 (ctx->cert->key->x509 == NULL))
771 {
772 SSLerr(SSL_F_SSL_CTX_CHECK_PRIVATE_KEY,SSL_R_NO_CERTIFICATE_ASSIGNED);
773 return(0);
774 }
775 if (ctx->cert->key->privatekey == NULL)
776 {
777 SSLerr(SSL_F_SSL_CTX_CHECK_PRIVATE_KEY,SSL_R_NO_PRIVATE_KEY_ASSIGNED);
778 return(0);
779 }
780 return(X509_check_private_key(ctx->cert->key->x509, ctx->cert->key->privatekey));
781 }
782
783/* Fix this function so that it takes an optional type parameter */
784int SSL_check_private_key(const SSL *ssl)
785 {
786 if (ssl == NULL)
787 {
788 SSLerr(SSL_F_SSL_CHECK_PRIVATE_KEY,ERR_R_PASSED_NULL_PARAMETER);
789 return(0);
790 }
791 if (ssl->cert == NULL)
792 {
793 SSLerr(SSL_F_SSL_CHECK_PRIVATE_KEY,SSL_R_NO_CERTIFICATE_ASSIGNED);
794 return 0;
795 }
796 if (ssl->cert->key->x509 == NULL)
797 {
798 SSLerr(SSL_F_SSL_CHECK_PRIVATE_KEY,SSL_R_NO_CERTIFICATE_ASSIGNED);
799 return(0);
800 }
801 if (ssl->cert->key->privatekey == NULL)
802 {
803 SSLerr(SSL_F_SSL_CHECK_PRIVATE_KEY,SSL_R_NO_PRIVATE_KEY_ASSIGNED);
804 return(0);
805 }
806 return(X509_check_private_key(ssl->cert->key->x509,
807 ssl->cert->key->privatekey));
808 }
809
810int SSL_accept(SSL *s)
811 {
812 if (s->handshake_func == 0)
813 /* Not properly initialized yet */
814 SSL_set_accept_state(s);
815
816 return(s->method->ssl_accept(s));
817 }
818
819int SSL_connect(SSL *s)
820 {
821 if (s->handshake_func == 0)
822 /* Not properly initialized yet */
823 SSL_set_connect_state(s);
824
825 return(s->method->ssl_connect(s));
826 }
827
828long SSL_get_default_timeout(const SSL *s)
829 {
830 return(s->method->get_timeout());
831 }
832
833int SSL_read(SSL *s,void *buf,int num)
834 {
835 if (s->handshake_func == 0)
836 {
837 SSLerr(SSL_F_SSL_READ, SSL_R_UNINITIALIZED);
838 return -1;
839 }
840
841 if (s->shutdown & SSL_RECEIVED_SHUTDOWN)
842 {
843 s->rwstate=SSL_NOTHING;
844 return(0);
845 }
846 return(s->method->ssl_read(s,buf,num));
847 }
848
849int SSL_peek(SSL *s,void *buf,int num)
850 {
851 if (s->handshake_func == 0)
852 {
853 SSLerr(SSL_F_SSL_READ, SSL_R_UNINITIALIZED);
854 return -1;
855 }
856
857 if (s->shutdown & SSL_RECEIVED_SHUTDOWN)
858 {
859 return(0);
860 }
861 return(s->method->ssl_peek(s,buf,num));
862 }
863
864int SSL_write(SSL *s,const void *buf,int num)
865 {
866 if (s->handshake_func == 0)
867 {
868 SSLerr(SSL_F_SSL_WRITE, SSL_R_UNINITIALIZED);
869 return -1;
870 }
871
872 if (s->shutdown & SSL_SENT_SHUTDOWN)
873 {
874 s->rwstate=SSL_NOTHING;
875 SSLerr(SSL_F_SSL_WRITE,SSL_R_PROTOCOL_IS_SHUTDOWN);
876 return(-1);
877 }
878 return(s->method->ssl_write(s,buf,num));
879 }
880
881int SSL_shutdown(SSL *s)
882 {
883 /* Note that this function behaves differently from what one might
884 * expect. Return values are 0 for no success (yet),
885 * 1 for success; but calling it once is usually not enough,
886 * even if blocking I/O is used (see ssl3_shutdown).
887 */
888
889 if (s->handshake_func == 0)
890 {
891 SSLerr(SSL_F_SSL_SHUTDOWN, SSL_R_UNINITIALIZED);
892 return -1;
893 }
894
895 if ((s != NULL) && !SSL_in_init(s))
896 return(s->method->ssl_shutdown(s));
897 else
898 return(1);
899 }
900
901int SSL_renegotiate(SSL *s)
902 {
903 if (s->new_session == 0)
904 {
905 s->new_session=1;
906 }
907 return(s->method->ssl_renegotiate(s));
908 }
909
910int SSL_renegotiate_pending(SSL *s)
911 {
912 /* becomes true when negotiation is requested;
913 * false again once a handshake has finished */
914 return (s->new_session != 0);
915 }
916
917long SSL_ctrl(SSL *s,int cmd,long larg,void *parg)
918 {
919 long l;
920
921 switch (cmd)
922 {
923 case SSL_CTRL_GET_READ_AHEAD:
924 return(s->read_ahead);
925 case SSL_CTRL_SET_READ_AHEAD:
926 l=s->read_ahead;
927 s->read_ahead=larg;
928 return(l);
929
930 case SSL_CTRL_SET_MSG_CALLBACK_ARG:
931 s->msg_callback_arg = parg;
932 return 1;
933
934 case SSL_CTRL_OPTIONS:
935 return(s->options|=larg);
936 case SSL_CTRL_MODE:
937 return(s->mode|=larg);
938 case SSL_CTRL_GET_MAX_CERT_LIST:
939 return(s->max_cert_list);
940 case SSL_CTRL_SET_MAX_CERT_LIST:
941 l=s->max_cert_list;
942 s->max_cert_list=larg;
943 return(l);
944 default:
945 return(s->method->ssl_ctrl(s,cmd,larg,parg));
946 }
947 }
948
949long SSL_callback_ctrl(SSL *s, int cmd, void (*fp)())
950 {
951 switch(cmd)
952 {
953 case SSL_CTRL_SET_MSG_CALLBACK:
954 s->msg_callback = (void (*)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg))(fp);
955 return 1;
956
957 default:
958 return(s->method->ssl_callback_ctrl(s,cmd,fp));
959 }
960 }
961
962struct lhash_st *SSL_CTX_sessions(SSL_CTX *ctx)
963 {
964 return ctx->sessions;
965 }
966
967long SSL_CTX_ctrl(SSL_CTX *ctx,int cmd,long larg,void *parg)
968 {
969 long l;
970
971 switch (cmd)
972 {
973 case SSL_CTRL_GET_READ_AHEAD:
974 return(ctx->read_ahead);
975 case SSL_CTRL_SET_READ_AHEAD:
976 l=ctx->read_ahead;
977 ctx->read_ahead=larg;
978 return(l);
979
980 case SSL_CTRL_SET_MSG_CALLBACK_ARG:
981 ctx->msg_callback_arg = parg;
982 return 1;
983
984 case SSL_CTRL_GET_MAX_CERT_LIST:
985 return(ctx->max_cert_list);
986 case SSL_CTRL_SET_MAX_CERT_LIST:
987 l=ctx->max_cert_list;
988 ctx->max_cert_list=larg;
989 return(l);
990
991 case SSL_CTRL_SET_SESS_CACHE_SIZE:
992 l=ctx->session_cache_size;
993 ctx->session_cache_size=larg;
994 return(l);
995 case SSL_CTRL_GET_SESS_CACHE_SIZE:
996 return(ctx->session_cache_size);
997 case SSL_CTRL_SET_SESS_CACHE_MODE:
998 l=ctx->session_cache_mode;
999 ctx->session_cache_mode=larg;
1000 return(l);
1001 case SSL_CTRL_GET_SESS_CACHE_MODE:
1002 return(ctx->session_cache_mode);
1003
1004 case SSL_CTRL_SESS_NUMBER:
1005 return(ctx->sessions->num_items);
1006 case SSL_CTRL_SESS_CONNECT:
1007 return(ctx->stats.sess_connect);
1008 case SSL_CTRL_SESS_CONNECT_GOOD:
1009 return(ctx->stats.sess_connect_good);
1010 case SSL_CTRL_SESS_CONNECT_RENEGOTIATE:
1011 return(ctx->stats.sess_connect_renegotiate);
1012 case SSL_CTRL_SESS_ACCEPT:
1013 return(ctx->stats.sess_accept);
1014 case SSL_CTRL_SESS_ACCEPT_GOOD:
1015 return(ctx->stats.sess_accept_good);
1016 case SSL_CTRL_SESS_ACCEPT_RENEGOTIATE:
1017 return(ctx->stats.sess_accept_renegotiate);
1018 case SSL_CTRL_SESS_HIT:
1019 return(ctx->stats.sess_hit);
1020 case SSL_CTRL_SESS_CB_HIT:
1021 return(ctx->stats.sess_cb_hit);
1022 case SSL_CTRL_SESS_MISSES:
1023 return(ctx->stats.sess_miss);
1024 case SSL_CTRL_SESS_TIMEOUTS:
1025 return(ctx->stats.sess_timeout);
1026 case SSL_CTRL_SESS_CACHE_FULL:
1027 return(ctx->stats.sess_cache_full);
1028 case SSL_CTRL_OPTIONS:
1029 return(ctx->options|=larg);
1030 case SSL_CTRL_MODE:
1031 return(ctx->mode|=larg);
1032 default:
1033 return(ctx->method->ssl_ctx_ctrl(ctx,cmd,larg,parg));
1034 }
1035 }
1036
1037long SSL_CTX_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp)())
1038 {
1039 switch(cmd)
1040 {
1041 case SSL_CTRL_SET_MSG_CALLBACK:
1042 ctx->msg_callback = (void (*)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg))(fp);
1043 return 1;
1044
1045 default:
1046 return(ctx->method->ssl_ctx_callback_ctrl(ctx,cmd,fp));
1047 }
1048 }
1049
1050int ssl_cipher_id_cmp(const SSL_CIPHER *a, const SSL_CIPHER *b)
1051 {
1052 long l;
1053
1054 l=a->id-b->id;
1055 if (l == 0L)
1056 return(0);
1057 else
1058 return((l > 0)?1:-1);
1059 }
1060
1061int ssl_cipher_ptr_id_cmp(const SSL_CIPHER * const *ap,
1062 const SSL_CIPHER * const *bp)
1063 {
1064 long l;
1065
1066 l=(*ap)->id-(*bp)->id;
1067 if (l == 0L)
1068 return(0);
1069 else
1070 return((l > 0)?1:-1);
1071 }
1072
1073/** return a STACK of the ciphers available for the SSL and in order of
1074 * preference */
1075STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s)
1076 {
1077 if (s != NULL)
1078 {
1079 if (s->cipher_list != NULL)
1080 {
1081 return(s->cipher_list);
1082 }
1083 else if ((s->ctx != NULL) &&
1084 (s->ctx->cipher_list != NULL))
1085 {
1086 return(s->ctx->cipher_list);
1087 }
1088 }
1089 return(NULL);
1090 }
1091
1092/** return a STACK of the ciphers available for the SSL and in order of
1093 * algorithm id */
1094STACK_OF(SSL_CIPHER) *ssl_get_ciphers_by_id(SSL *s)
1095 {
1096 if (s != NULL)
1097 {
1098 if (s->cipher_list_by_id != NULL)
1099 {
1100 return(s->cipher_list_by_id);
1101 }
1102 else if ((s->ctx != NULL) &&
1103 (s->ctx->cipher_list_by_id != NULL))
1104 {
1105 return(s->ctx->cipher_list_by_id);
1106 }
1107 }
1108 return(NULL);
1109 }
1110
1111/** The old interface to get the same thing as SSL_get_ciphers() */
1112const char *SSL_get_cipher_list(const SSL *s,int n)
1113 {
1114 SSL_CIPHER *c;
1115 STACK_OF(SSL_CIPHER) *sk;
1116
1117 if (s == NULL) return(NULL);
1118 sk=SSL_get_ciphers(s);
1119 if ((sk == NULL) || (sk_SSL_CIPHER_num(sk) <= n))
1120 return(NULL);
1121 c=sk_SSL_CIPHER_value(sk,n);
1122 if (c == NULL) return(NULL);
1123 return(c->name);
1124 }
1125
1126/** specify the ciphers to be used by default by the SSL_CTX */
1127int SSL_CTX_set_cipher_list(SSL_CTX *ctx, const char *str)
1128 {
1129 STACK_OF(SSL_CIPHER) *sk;
1130
1131 sk=ssl_create_cipher_list(ctx->method,&ctx->cipher_list,
1132 &ctx->cipher_list_by_id,str);
1133/* XXXX */
1134 return((sk == NULL)?0:1);
1135 }
1136
1137/** specify the ciphers to be used by the SSL */
1138int SSL_set_cipher_list(SSL *s,const char *str)
1139 {
1140 STACK_OF(SSL_CIPHER) *sk;
1141
1142 sk=ssl_create_cipher_list(s->ctx->method,&s->cipher_list,
1143 &s->cipher_list_by_id,str);
1144/* XXXX */
1145 return((sk == NULL)?0:1);
1146 }
1147
1148/* works well for SSLv2, not so good for SSLv3 */
1149char *SSL_get_shared_ciphers(const SSL *s,char *buf,int len)
1150 {
1151 char *p;
1152 const char *cp;
1153 STACK_OF(SSL_CIPHER) *sk;
1154 SSL_CIPHER *c;
1155 int i;
1156
1157 if ((s->session == NULL) || (s->session->ciphers == NULL) ||
1158 (len < 2))
1159 return(NULL);
1160
1161 p=buf;
1162 sk=s->session->ciphers;
1163 for (i=0; i<sk_SSL_CIPHER_num(sk); i++)
1164 {
1165 /* Decrement for either the ':' or a '\0' */
1166 len--;
1167 c=sk_SSL_CIPHER_value(sk,i);
1168 for (cp=c->name; *cp; )
1169 {
1170 if (len-- == 0)
1171 {
1172 *p='\0';
1173 return(buf);
1174 }
1175 else
1176 *(p++)= *(cp++);
1177 }
1178 *(p++)=':';
1179 }
1180 p[-1]='\0';
1181 return(buf);
1182 }
1183
1184int ssl_cipher_list_to_bytes(SSL *s,STACK_OF(SSL_CIPHER) *sk,unsigned char *p)
1185 {
1186 int i,j=0;
1187 SSL_CIPHER *c;
1188 unsigned char *q;
1189#ifndef OPENSSL_NO_KRB5
1190 int nokrb5 = !kssl_tgt_is_available(s->kssl_ctx);
1191#endif /* OPENSSL_NO_KRB5 */
1192
1193 if (sk == NULL) return(0);
1194 q=p;
1195
1196 for (i=0; i<sk_SSL_CIPHER_num(sk); i++)
1197 {
1198 c=sk_SSL_CIPHER_value(sk,i);
1199#ifndef OPENSSL_NO_KRB5
1200 if ((c->algorithms & SSL_KRB5) && nokrb5)
1201 continue;
1202#endif /* OPENSSL_NO_KRB5 */
1203 j=ssl_put_cipher_by_char(s,c,p);
1204 p+=j;
1205 }
1206 return(p-q);
1207 }
1208
1209STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s,unsigned char *p,int num,
1210 STACK_OF(SSL_CIPHER) **skp)
1211 {
1212 SSL_CIPHER *c;
1213 STACK_OF(SSL_CIPHER) *sk;
1214 int i,n;
1215
1216 n=ssl_put_cipher_by_char(s,NULL,NULL);
1217 if ((num%n) != 0)
1218 {
1219 SSLerr(SSL_F_SSL_BYTES_TO_CIPHER_LIST,SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST);
1220 return(NULL);
1221 }
1222 if ((skp == NULL) || (*skp == NULL))
1223 sk=sk_SSL_CIPHER_new_null(); /* change perhaps later */
1224 else
1225 {
1226 sk= *skp;
1227 sk_SSL_CIPHER_zero(sk);
1228 }
1229
1230 for (i=0; i<num; i+=n)
1231 {
1232 c=ssl_get_cipher_by_char(s,p);
1233 p+=n;
1234 if (c != NULL)
1235 {
1236 if (!sk_SSL_CIPHER_push(sk,c))
1237 {
1238 SSLerr(SSL_F_SSL_BYTES_TO_CIPHER_LIST,ERR_R_MALLOC_FAILURE);
1239 goto err;
1240 }
1241 }
1242 }
1243
1244 if (skp != NULL)
1245 *skp=sk;
1246 return(sk);
1247err:
1248 if ((skp == NULL) || (*skp == NULL))
1249 sk_SSL_CIPHER_free(sk);
1250 return(NULL);
1251 }
1252
1253unsigned long SSL_SESSION_hash(const SSL_SESSION *a)
1254 {
1255 unsigned long l;
1256
1257 l=(unsigned long)
1258 ((unsigned int) a->session_id[0] )|
1259 ((unsigned int) a->session_id[1]<< 8L)|
1260 ((unsigned long)a->session_id[2]<<16L)|
1261 ((unsigned long)a->session_id[3]<<24L);
1262 return(l);
1263 }
1264
1265/* NB: If this function (or indeed the hash function which uses a sort of
1266 * coarser function than this one) is changed, ensure
1267 * SSL_CTX_has_matching_session_id() is checked accordingly. It relies on being
1268 * able to construct an SSL_SESSION that will collide with any existing session
1269 * with a matching session ID. */
1270int SSL_SESSION_cmp(const SSL_SESSION *a,const SSL_SESSION *b)
1271 {
1272 if (a->ssl_version != b->ssl_version)
1273 return(1);
1274 if (a->session_id_length != b->session_id_length)
1275 return(1);
1276 return(memcmp(a->session_id,b->session_id,a->session_id_length));
1277 }
1278
1279/* These wrapper functions should remain rather than redeclaring
1280 * SSL_SESSION_hash and SSL_SESSION_cmp for void* types and casting each
1281 * variable. The reason is that the functions aren't static, they're exposed via
1282 * ssl.h. */
1283static IMPLEMENT_LHASH_HASH_FN(SSL_SESSION_hash, SSL_SESSION *)
1284static IMPLEMENT_LHASH_COMP_FN(SSL_SESSION_cmp, SSL_SESSION *)
1285
1286SSL_CTX *SSL_CTX_new(SSL_METHOD *meth)
1287 {
1288 SSL_CTX *ret=NULL;
1289
1290 if (meth == NULL)
1291 {
1292 SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_NULL_SSL_METHOD_PASSED);
1293 return(NULL);
1294 }
1295
1296#ifdef OPENSSL_FIPS
1297 if (FIPS_mode() && (meth->version < TLS1_VERSION))
1298 {
1299 SSLerr(SSL_F_SSL_CTX_NEW, SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE);
1300 return NULL;
1301 }
1302#endif
1303
1304 if (SSL_get_ex_data_X509_STORE_CTX_idx() < 0)
1305 {
1306 SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_X509_VERIFICATION_SETUP_PROBLEMS);
1307 goto err;
1308 }
1309 ret=(SSL_CTX *)OPENSSL_malloc(sizeof(SSL_CTX));
1310 if (ret == NULL)
1311 goto err;
1312
1313 memset(ret,0,sizeof(SSL_CTX));
1314
1315 ret->method=meth;
1316
1317 ret->cert_store=NULL;
1318 ret->session_cache_mode=SSL_SESS_CACHE_SERVER;
1319 ret->session_cache_size=SSL_SESSION_CACHE_MAX_SIZE_DEFAULT;
1320 ret->session_cache_head=NULL;
1321 ret->session_cache_tail=NULL;
1322
1323 /* We take the system default */
1324 ret->session_timeout=meth->get_timeout();
1325
1326 ret->new_session_cb=0;
1327 ret->remove_session_cb=0;
1328 ret->get_session_cb=0;
1329 ret->generate_session_id=0;
1330
1331 memset((char *)&ret->stats,0,sizeof(ret->stats));
1332
1333 ret->references=1;
1334 ret->quiet_shutdown=0;
1335
1336/* ret->cipher=NULL;*/
1337/* ret->s2->challenge=NULL;
1338 ret->master_key=NULL;
1339 ret->key_arg=NULL;
1340 ret->s2->conn_id=NULL; */
1341
1342 ret->info_callback=NULL;
1343
1344 ret->app_verify_callback=0;
1345 ret->app_verify_arg=NULL;
1346
1347 ret->max_cert_list=SSL_MAX_CERT_LIST_DEFAULT;
1348 ret->read_ahead=0;
1349 ret->msg_callback=0;
1350 ret->msg_callback_arg=NULL;
1351 ret->verify_mode=SSL_VERIFY_NONE;
1352 ret->verify_depth=-1; /* Don't impose a limit (but x509_lu.c does) */
1353 ret->sid_ctx_length=0;
1354 ret->default_verify_callback=NULL;
1355 if ((ret->cert=ssl_cert_new()) == NULL)
1356 goto err;
1357
1358 ret->default_passwd_callback=0;
1359 ret->default_passwd_callback_userdata=NULL;
1360 ret->client_cert_cb=0;
1361
1362 ret->sessions=lh_new(LHASH_HASH_FN(SSL_SESSION_hash),
1363 LHASH_COMP_FN(SSL_SESSION_cmp));
1364 if (ret->sessions == NULL) goto err;
1365 ret->cert_store=X509_STORE_new();
1366 if (ret->cert_store == NULL) goto err;
1367
1368 ssl_create_cipher_list(ret->method,
1369 &ret->cipher_list,&ret->cipher_list_by_id,
1370 SSL_DEFAULT_CIPHER_LIST);
1371 if (ret->cipher_list == NULL
1372 || sk_SSL_CIPHER_num(ret->cipher_list) <= 0)
1373 {
1374 SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_LIBRARY_HAS_NO_CIPHERS);
1375 goto err2;
1376 }
1377
1378 if ((ret->rsa_md5=EVP_get_digestbyname("ssl2-md5")) == NULL)
1379 {
1380 SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_UNABLE_TO_LOAD_SSL2_MD5_ROUTINES);
1381 goto err2;
1382 }
1383 if ((ret->md5=EVP_get_digestbyname("ssl3-md5")) == NULL)
1384 {
1385 SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES);
1386 goto err2;
1387 }
1388 if ((ret->sha1=EVP_get_digestbyname("ssl3-sha1")) == NULL)
1389 {
1390 SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES);
1391 goto err2;
1392 }
1393
1394 if ((ret->client_CA=sk_X509_NAME_new_null()) == NULL)
1395 goto err;
1396
1397 CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL_CTX, ret, &ret->ex_data);
1398
1399 ret->extra_certs=NULL;
1400 ret->comp_methods=SSL_COMP_get_compression_methods();
1401
1402 return(ret);
1403err:
1404 SSLerr(SSL_F_SSL_CTX_NEW,ERR_R_MALLOC_FAILURE);
1405err2:
1406 if (ret != NULL) SSL_CTX_free(ret);
1407 return(NULL);
1408 }
1409
1410#if 0
1411static void SSL_COMP_free(SSL_COMP *comp)
1412 { OPENSSL_free(comp); }
1413#endif
1414
1415void SSL_CTX_free(SSL_CTX *a)
1416 {
1417 int i;
1418
1419 if (a == NULL) return;
1420
1421 i=CRYPTO_add(&a->references,-1,CRYPTO_LOCK_SSL_CTX);
1422#ifdef REF_PRINT
1423 REF_PRINT("SSL_CTX",a);
1424#endif
1425 if (i > 0) return;
1426#ifdef REF_CHECK
1427 if (i < 0)
1428 {
1429 fprintf(stderr,"SSL_CTX_free, bad reference count\n");
1430 abort(); /* ok */
1431 }
1432#endif
1433
1434 /*
1435 * Free internal session cache. However: the remove_cb() may reference
1436 * the ex_data of SSL_CTX, thus the ex_data store can only be removed
1437 * after the sessions were flushed.
1438 * As the ex_data handling routines might also touch the session cache,
1439 * the most secure solution seems to be: empty (flush) the cache, then
1440 * free ex_data, then finally free the cache.
1441 * (See ticket [openssl.org #212].)
1442 */
1443 if (a->sessions != NULL)
1444 SSL_CTX_flush_sessions(a,0);
1445
1446 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_SSL_CTX, a, &a->ex_data);
1447
1448 if (a->sessions != NULL)
1449 lh_free(a->sessions);
1450
1451 if (a->cert_store != NULL)
1452 X509_STORE_free(a->cert_store);
1453 if (a->cipher_list != NULL)
1454 sk_SSL_CIPHER_free(a->cipher_list);
1455 if (a->cipher_list_by_id != NULL)
1456 sk_SSL_CIPHER_free(a->cipher_list_by_id);
1457 if (a->cert != NULL)
1458 ssl_cert_free(a->cert);
1459 if (a->client_CA != NULL)
1460 sk_X509_NAME_pop_free(a->client_CA,X509_NAME_free);
1461 if (a->extra_certs != NULL)
1462 sk_X509_pop_free(a->extra_certs,X509_free);
1463#if 0 /* This should never be done, since it removes a global database */
1464 if (a->comp_methods != NULL)
1465 sk_SSL_COMP_pop_free(a->comp_methods,SSL_COMP_free);
1466#else
1467 a->comp_methods = NULL;
1468#endif
1469 OPENSSL_free(a);
1470 }
1471
1472void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb)
1473 {
1474 ctx->default_passwd_callback=cb;
1475 }
1476
1477void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx,void *u)
1478 {
1479 ctx->default_passwd_callback_userdata=u;
1480 }
1481
1482void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, int (*cb)(X509_STORE_CTX *,void *), void *arg)
1483 {
1484 ctx->app_verify_callback=cb;
1485 ctx->app_verify_arg=arg;
1486 }
1487
1488void SSL_CTX_set_verify(SSL_CTX *ctx,int mode,int (*cb)(int, X509_STORE_CTX *))
1489 {
1490 ctx->verify_mode=mode;
1491 ctx->default_verify_callback=cb;
1492 }
1493
1494void SSL_CTX_set_verify_depth(SSL_CTX *ctx,int depth)
1495 {
1496 ctx->verify_depth=depth;
1497 }
1498
1499void ssl_set_cert_masks(CERT *c, SSL_CIPHER *cipher)
1500 {
1501 CERT_PKEY *cpk;
1502 int rsa_enc,rsa_tmp,rsa_sign,dh_tmp,dh_rsa,dh_dsa,dsa_sign;
1503 int rsa_enc_export,dh_rsa_export,dh_dsa_export;
1504 int rsa_tmp_export,dh_tmp_export,kl;
1505 unsigned long mask,emask;
1506
1507 if (c == NULL) return;
1508
1509 kl=SSL_C_EXPORT_PKEYLENGTH(cipher);
1510
1511#ifndef OPENSSL_NO_RSA
1512 rsa_tmp=(c->rsa_tmp != NULL || c->rsa_tmp_cb != NULL);
1513 rsa_tmp_export=(c->rsa_tmp_cb != NULL ||
1514 (rsa_tmp && RSA_size(c->rsa_tmp)*8 <= kl));
1515#else
1516 rsa_tmp=rsa_tmp_export=0;
1517#endif
1518#ifndef OPENSSL_NO_DH
1519 dh_tmp=(c->dh_tmp != NULL || c->dh_tmp_cb != NULL);
1520 dh_tmp_export=(c->dh_tmp_cb != NULL ||
1521 (dh_tmp && DH_size(c->dh_tmp)*8 <= kl));
1522#else
1523 dh_tmp=dh_tmp_export=0;
1524#endif
1525
1526 cpk= &(c->pkeys[SSL_PKEY_RSA_ENC]);
1527 rsa_enc= (cpk->x509 != NULL && cpk->privatekey != NULL);
1528 rsa_enc_export=(rsa_enc && EVP_PKEY_size(cpk->privatekey)*8 <= kl);
1529 cpk= &(c->pkeys[SSL_PKEY_RSA_SIGN]);
1530 rsa_sign=(cpk->x509 != NULL && cpk->privatekey != NULL);
1531 cpk= &(c->pkeys[SSL_PKEY_DSA_SIGN]);
1532 dsa_sign=(cpk->x509 != NULL && cpk->privatekey != NULL);
1533 cpk= &(c->pkeys[SSL_PKEY_DH_RSA]);
1534 dh_rsa= (cpk->x509 != NULL && cpk->privatekey != NULL);
1535 dh_rsa_export=(dh_rsa && EVP_PKEY_size(cpk->privatekey)*8 <= kl);
1536 cpk= &(c->pkeys[SSL_PKEY_DH_DSA]);
1537/* FIX THIS EAY EAY EAY */
1538 dh_dsa= (cpk->x509 != NULL && cpk->privatekey != NULL);
1539 dh_dsa_export=(dh_dsa && EVP_PKEY_size(cpk->privatekey)*8 <= kl);
1540
1541 mask=0;
1542 emask=0;
1543
1544#ifdef CIPHER_DEBUG
1545 printf("rt=%d rte=%d dht=%d re=%d ree=%d rs=%d ds=%d dhr=%d dhd=%d\n",
1546 rsa_tmp,rsa_tmp_export,dh_tmp,
1547 rsa_enc,rsa_enc_export,rsa_sign,dsa_sign,dh_rsa,dh_dsa);
1548#endif
1549
1550 if (rsa_enc || (rsa_tmp && rsa_sign))
1551 mask|=SSL_kRSA;
1552 if (rsa_enc_export || (rsa_tmp_export && (rsa_sign || rsa_enc)))
1553 emask|=SSL_kRSA;
1554
1555#if 0
1556 /* The match needs to be both kEDH and aRSA or aDSA, so don't worry */
1557 if ( (dh_tmp || dh_rsa || dh_dsa) &&
1558 (rsa_enc || rsa_sign || dsa_sign))
1559 mask|=SSL_kEDH;
1560 if ((dh_tmp_export || dh_rsa_export || dh_dsa_export) &&
1561 (rsa_enc || rsa_sign || dsa_sign))
1562 emask|=SSL_kEDH;
1563#endif
1564
1565 if (dh_tmp_export)
1566 emask|=SSL_kEDH;
1567
1568 if (dh_tmp)
1569 mask|=SSL_kEDH;
1570
1571 if (dh_rsa) mask|=SSL_kDHr;
1572 if (dh_rsa_export) emask|=SSL_kDHr;
1573
1574 if (dh_dsa) mask|=SSL_kDHd;
1575 if (dh_dsa_export) emask|=SSL_kDHd;
1576
1577 if (rsa_enc || rsa_sign)
1578 {
1579 mask|=SSL_aRSA;
1580 emask|=SSL_aRSA;
1581 }
1582
1583 if (dsa_sign)
1584 {
1585 mask|=SSL_aDSS;
1586 emask|=SSL_aDSS;
1587 }
1588
1589 mask|=SSL_aNULL;
1590 emask|=SSL_aNULL;
1591
1592#ifndef OPENSSL_NO_KRB5
1593 mask|=SSL_kKRB5|SSL_aKRB5;
1594 emask|=SSL_kKRB5|SSL_aKRB5;
1595#endif
1596
1597 c->mask=mask;
1598 c->export_mask=emask;
1599 c->valid=1;
1600 }
1601
1602/* THIS NEEDS CLEANING UP */
1603X509 *ssl_get_server_send_cert(SSL *s)
1604 {
1605 unsigned long alg,mask,kalg;
1606 CERT *c;
1607 int i,is_export;
1608
1609 c=s->cert;
1610 ssl_set_cert_masks(c, s->s3->tmp.new_cipher);
1611 alg=s->s3->tmp.new_cipher->algorithms;
1612 is_export=SSL_C_IS_EXPORT(s->s3->tmp.new_cipher);
1613 mask=is_export?c->export_mask:c->mask;
1614 kalg=alg&(SSL_MKEY_MASK|SSL_AUTH_MASK);
1615
1616 if (kalg & SSL_kDHr)
1617 i=SSL_PKEY_DH_RSA;
1618 else if (kalg & SSL_kDHd)
1619 i=SSL_PKEY_DH_DSA;
1620 else if (kalg & SSL_aDSS)
1621 i=SSL_PKEY_DSA_SIGN;
1622 else if (kalg & SSL_aRSA)
1623 {
1624 if (c->pkeys[SSL_PKEY_RSA_ENC].x509 == NULL)
1625 i=SSL_PKEY_RSA_SIGN;
1626 else
1627 i=SSL_PKEY_RSA_ENC;
1628 }
1629 else if (kalg & SSL_aKRB5)
1630 {
1631 /* VRS something else here? */
1632 return(NULL);
1633 }
1634 else /* if (kalg & SSL_aNULL) */
1635 {
1636 SSLerr(SSL_F_SSL_GET_SERVER_SEND_CERT,ERR_R_INTERNAL_ERROR);
1637 return(NULL);
1638 }
1639 if (c->pkeys[i].x509 == NULL) return(NULL);
1640 return(c->pkeys[i].x509);
1641 }
1642
1643EVP_PKEY *ssl_get_sign_pkey(SSL *s,SSL_CIPHER *cipher)
1644 {
1645 unsigned long alg;
1646 CERT *c;
1647
1648 alg=cipher->algorithms;
1649 c=s->cert;
1650
1651 if ((alg & SSL_aDSS) &&
1652 (c->pkeys[SSL_PKEY_DSA_SIGN].privatekey != NULL))
1653 return(c->pkeys[SSL_PKEY_DSA_SIGN].privatekey);
1654 else if (alg & SSL_aRSA)
1655 {
1656 if (c->pkeys[SSL_PKEY_RSA_SIGN].privatekey != NULL)
1657 return(c->pkeys[SSL_PKEY_RSA_SIGN].privatekey);
1658 else if (c->pkeys[SSL_PKEY_RSA_ENC].privatekey != NULL)
1659 return(c->pkeys[SSL_PKEY_RSA_ENC].privatekey);
1660 else
1661 return(NULL);
1662 }
1663 else /* if (alg & SSL_aNULL) */
1664 {
1665 SSLerr(SSL_F_SSL_GET_SIGN_PKEY,ERR_R_INTERNAL_ERROR);
1666 return(NULL);
1667 }
1668 }
1669
1670void ssl_update_cache(SSL *s,int mode)
1671 {
1672 int i;
1673
1674 /* If the session_id_length is 0, we are not supposed to cache it,
1675 * and it would be rather hard to do anyway :-) */
1676 if (s->session->session_id_length == 0) return;
1677
1678 i=s->ctx->session_cache_mode;
1679 if ((i & mode) && (!s->hit)
1680 && ((i & SSL_SESS_CACHE_NO_INTERNAL_STORE)
1681 || SSL_CTX_add_session(s->ctx,s->session))
1682 && (s->ctx->new_session_cb != NULL))
1683 {
1684 CRYPTO_add(&s->session->references,1,CRYPTO_LOCK_SSL_SESSION);
1685 if (!s->ctx->new_session_cb(s,s->session))
1686 SSL_SESSION_free(s->session);
1687 }
1688
1689 /* auto flush every 255 connections */
1690 if ((!(i & SSL_SESS_CACHE_NO_AUTO_CLEAR)) &&
1691 ((i & mode) == mode))
1692 {
1693 if ( (((mode & SSL_SESS_CACHE_CLIENT)
1694 ?s->ctx->stats.sess_connect_good
1695 :s->ctx->stats.sess_accept_good) & 0xff) == 0xff)
1696 {
1697 SSL_CTX_flush_sessions(s->ctx,time(NULL));
1698 }
1699 }
1700 }
1701
1702SSL_METHOD *SSL_get_ssl_method(SSL *s)
1703 {
1704 return(s->method);
1705 }
1706
1707int SSL_set_ssl_method(SSL *s,SSL_METHOD *meth)
1708 {
1709 int conn= -1;
1710 int ret=1;
1711
1712 if (s->method != meth)
1713 {
1714 if (s->handshake_func != NULL)
1715 conn=(s->handshake_func == s->method->ssl_connect);
1716
1717 if (s->method->version == meth->version)
1718 s->method=meth;
1719 else
1720 {
1721 s->method->ssl_free(s);
1722 s->method=meth;
1723 ret=s->method->ssl_new(s);
1724 }
1725
1726 if (conn == 1)
1727 s->handshake_func=meth->ssl_connect;
1728 else if (conn == 0)
1729 s->handshake_func=meth->ssl_accept;
1730 }
1731 return(ret);
1732 }
1733
1734int SSL_get_error(const SSL *s,int i)
1735 {
1736 int reason;
1737 unsigned long l;
1738 BIO *bio;
1739
1740 if (i > 0) return(SSL_ERROR_NONE);
1741
1742 /* Make things return SSL_ERROR_SYSCALL when doing SSL_do_handshake
1743 * etc, where we do encode the error */
1744 if ((l=ERR_peek_error()) != 0)
1745 {
1746 if (ERR_GET_LIB(l) == ERR_LIB_SYS)
1747 return(SSL_ERROR_SYSCALL);
1748 else
1749 return(SSL_ERROR_SSL);
1750 }
1751
1752 if ((i < 0) && SSL_want_read(s))
1753 {
1754 bio=SSL_get_rbio(s);
1755 if (BIO_should_read(bio))
1756 return(SSL_ERROR_WANT_READ);
1757 else if (BIO_should_write(bio))
1758 /* This one doesn't make too much sense ... We never try
1759 * to write to the rbio, and an application program where
1760 * rbio and wbio are separate couldn't even know what it
1761 * should wait for.
1762 * However if we ever set s->rwstate incorrectly
1763 * (so that we have SSL_want_read(s) instead of
1764 * SSL_want_write(s)) and rbio and wbio *are* the same,
1765 * this test works around that bug; so it might be safer
1766 * to keep it. */
1767 return(SSL_ERROR_WANT_WRITE);
1768 else if (BIO_should_io_special(bio))
1769 {
1770 reason=BIO_get_retry_reason(bio);
1771 if (reason == BIO_RR_CONNECT)
1772 return(SSL_ERROR_WANT_CONNECT);
1773 else if (reason == BIO_RR_ACCEPT)
1774 return(SSL_ERROR_WANT_ACCEPT);
1775 else
1776 return(SSL_ERROR_SYSCALL); /* unknown */
1777 }
1778 }
1779
1780 if ((i < 0) && SSL_want_write(s))
1781 {
1782 bio=SSL_get_wbio(s);
1783 if (BIO_should_write(bio))
1784 return(SSL_ERROR_WANT_WRITE);
1785 else if (BIO_should_read(bio))
1786 /* See above (SSL_want_read(s) with BIO_should_write(bio)) */
1787 return(SSL_ERROR_WANT_READ);
1788 else if (BIO_should_io_special(bio))
1789 {
1790 reason=BIO_get_retry_reason(bio);
1791 if (reason == BIO_RR_CONNECT)
1792 return(SSL_ERROR_WANT_CONNECT);
1793 else if (reason == BIO_RR_ACCEPT)
1794 return(SSL_ERROR_WANT_ACCEPT);
1795 else
1796 return(SSL_ERROR_SYSCALL);
1797 }
1798 }
1799 if ((i < 0) && SSL_want_x509_lookup(s))
1800 {
1801 return(SSL_ERROR_WANT_X509_LOOKUP);
1802 }
1803
1804 if (i == 0)
1805 {
1806 if (s->version == SSL2_VERSION)
1807 {
1808 /* assume it is the socket being closed */
1809 return(SSL_ERROR_ZERO_RETURN);
1810 }
1811 else
1812 {
1813 if ((s->shutdown & SSL_RECEIVED_SHUTDOWN) &&
1814 (s->s3->warn_alert == SSL_AD_CLOSE_NOTIFY))
1815 return(SSL_ERROR_ZERO_RETURN);
1816 }
1817 }
1818 return(SSL_ERROR_SYSCALL);
1819 }
1820
1821int SSL_do_handshake(SSL *s)
1822 {
1823 int ret=1;
1824
1825 if (s->handshake_func == NULL)
1826 {
1827 SSLerr(SSL_F_SSL_DO_HANDSHAKE,SSL_R_CONNECTION_TYPE_NOT_SET);
1828 return(-1);
1829 }
1830
1831 s->method->ssl_renegotiate_check(s);
1832
1833 if (SSL_in_init(s) || SSL_in_before(s))
1834 {
1835 ret=s->handshake_func(s);
1836 }
1837 return(ret);
1838 }
1839
1840/* For the next 2 functions, SSL_clear() sets shutdown and so
1841 * one of these calls will reset it */
1842void SSL_set_accept_state(SSL *s)
1843 {
1844 s->server=1;
1845 s->shutdown=0;
1846 s->state=SSL_ST_ACCEPT|SSL_ST_BEFORE;
1847 s->handshake_func=s->method->ssl_accept;
1848 /* clear the current cipher */
1849 ssl_clear_cipher_ctx(s);
1850 }
1851
1852void SSL_set_connect_state(SSL *s)
1853 {
1854 s->server=0;
1855 s->shutdown=0;
1856 s->state=SSL_ST_CONNECT|SSL_ST_BEFORE;
1857 s->handshake_func=s->method->ssl_connect;
1858 /* clear the current cipher */
1859 ssl_clear_cipher_ctx(s);
1860 }
1861
1862int ssl_undefined_function(SSL *s)
1863 {
1864 SSLerr(SSL_F_SSL_UNDEFINED_FUNCTION,ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
1865 return(0);
1866 }
1867
1868int ssl_undefined_const_function(const SSL *s)
1869 {
1870 SSLerr(SSL_F_SSL_UNDEFINED_CONST_FUNCTION,ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
1871 return(0);
1872 }
1873
1874SSL_METHOD *ssl_bad_method(int ver)
1875 {
1876 SSLerr(SSL_F_SSL_BAD_METHOD,ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
1877 return(NULL);
1878 }
1879
1880const char *SSL_get_version(const SSL *s)
1881 {
1882 if (s->version == TLS1_VERSION)
1883 return("TLSv1");
1884 else if (s->version == SSL3_VERSION)
1885 return("SSLv3");
1886 else if (s->version == SSL2_VERSION)
1887 return("SSLv2");
1888 else
1889 return("unknown");
1890 }
1891
1892SSL *SSL_dup(SSL *s)
1893 {
1894 STACK_OF(X509_NAME) *sk;
1895 X509_NAME *xn;
1896 SSL *ret;
1897 int i;
1898
1899 if ((ret=SSL_new(SSL_get_SSL_CTX(s))) == NULL)
1900 return(NULL);
1901
1902 ret->version = s->version;
1903 ret->type = s->type;
1904 ret->method = s->method;
1905
1906 if (s->session != NULL)
1907 {
1908 /* This copies session-id, SSL_METHOD, sid_ctx, and 'cert' */
1909 SSL_copy_session_id(ret,s);
1910 }
1911 else
1912 {
1913 /* No session has been established yet, so we have to expect
1914 * that s->cert or ret->cert will be changed later --
1915 * they should not both point to the same object,
1916 * and thus we can't use SSL_copy_session_id. */
1917
1918 ret->method->ssl_free(ret);
1919 ret->method = s->method;
1920 ret->method->ssl_new(ret);
1921
1922 if (s->cert != NULL)
1923 {
1924 if (ret->cert != NULL)
1925 {
1926 ssl_cert_free(ret->cert);
1927 }
1928 ret->cert = ssl_cert_dup(s->cert);
1929 if (ret->cert == NULL)
1930 goto err;
1931 }
1932
1933 SSL_set_session_id_context(ret,
1934 s->sid_ctx, s->sid_ctx_length);
1935 }
1936
1937 ret->options=s->options;
1938 ret->mode=s->mode;
1939 SSL_set_max_cert_list(ret,SSL_get_max_cert_list(s));
1940 SSL_set_read_ahead(ret,SSL_get_read_ahead(s));
1941 ret->msg_callback = s->msg_callback;
1942 ret->msg_callback_arg = s->msg_callback_arg;
1943 SSL_set_verify(ret,SSL_get_verify_mode(s),
1944 SSL_get_verify_callback(s));
1945 SSL_set_verify_depth(ret,SSL_get_verify_depth(s));
1946 ret->generate_session_id = s->generate_session_id;
1947
1948 SSL_set_info_callback(ret,SSL_get_info_callback(s));
1949
1950 ret->debug=s->debug;
1951
1952 /* copy app data, a little dangerous perhaps */
1953 if (!CRYPTO_dup_ex_data(CRYPTO_EX_INDEX_SSL, &ret->ex_data, &s->ex_data))
1954 goto err;
1955
1956 /* setup rbio, and wbio */
1957 if (s->rbio != NULL)
1958 {
1959 if (!BIO_dup_state(s->rbio,(char *)&ret->rbio))
1960 goto err;
1961 }
1962 if (s->wbio != NULL)
1963 {
1964 if (s->wbio != s->rbio)
1965 {
1966 if (!BIO_dup_state(s->wbio,(char *)&ret->wbio))
1967 goto err;
1968 }
1969 else
1970 ret->wbio=ret->rbio;
1971 }
1972 ret->rwstate = s->rwstate;
1973 ret->in_handshake = s->in_handshake;
1974 ret->handshake_func = s->handshake_func;
1975 ret->server = s->server;
1976 ret->new_session = s->new_session;
1977 ret->quiet_shutdown = s->quiet_shutdown;
1978 ret->shutdown=s->shutdown;
1979 ret->state=s->state; /* SSL_dup does not really work at any state, though */
1980 ret->rstate=s->rstate;
1981 ret->init_num = 0; /* would have to copy ret->init_buf, ret->init_msg, ret->init_num, ret->init_off */
1982 ret->hit=s->hit;
1983 ret->purpose=s->purpose;
1984 ret->trust=s->trust;
1985
1986 /* dup the cipher_list and cipher_list_by_id stacks */
1987 if (s->cipher_list != NULL)
1988 {
1989 if ((ret->cipher_list=sk_SSL_CIPHER_dup(s->cipher_list)) == NULL)
1990 goto err;
1991 }
1992 if (s->cipher_list_by_id != NULL)
1993 if ((ret->cipher_list_by_id=sk_SSL_CIPHER_dup(s->cipher_list_by_id))
1994 == NULL)
1995 goto err;
1996
1997 /* Dup the client_CA list */
1998 if (s->client_CA != NULL)
1999 {
2000 if ((sk=sk_X509_NAME_dup(s->client_CA)) == NULL) goto err;
2001 ret->client_CA=sk;
2002 for (i=0; i<sk_X509_NAME_num(sk); i++)
2003 {
2004 xn=sk_X509_NAME_value(sk,i);
2005 if (sk_X509_NAME_set(sk,i,X509_NAME_dup(xn)) == NULL)
2006 {
2007 X509_NAME_free(xn);
2008 goto err;
2009 }
2010 }
2011 }
2012
2013 if (0)
2014 {
2015err:
2016 if (ret != NULL) SSL_free(ret);
2017 ret=NULL;
2018 }
2019 return(ret);
2020 }
2021
2022void ssl_clear_cipher_ctx(SSL *s)
2023 {
2024 if (s->enc_read_ctx != NULL)
2025 {
2026 EVP_CIPHER_CTX_cleanup(s->enc_read_ctx);
2027 OPENSSL_free(s->enc_read_ctx);
2028 s->enc_read_ctx=NULL;
2029 }
2030 if (s->enc_write_ctx != NULL)
2031 {
2032 EVP_CIPHER_CTX_cleanup(s->enc_write_ctx);
2033 OPENSSL_free(s->enc_write_ctx);
2034 s->enc_write_ctx=NULL;
2035 }
2036 if (s->expand != NULL)
2037 {
2038 COMP_CTX_free(s->expand);
2039 s->expand=NULL;
2040 }
2041 if (s->compress != NULL)
2042 {
2043 COMP_CTX_free(s->compress);
2044 s->compress=NULL;
2045 }
2046 }
2047
2048/* Fix this function so that it takes an optional type parameter */
2049X509 *SSL_get_certificate(const SSL *s)
2050 {
2051 if (s->cert != NULL)
2052 return(s->cert->key->x509);
2053 else
2054 return(NULL);
2055 }
2056
2057/* Fix this function so that it takes an optional type parameter */
2058EVP_PKEY *SSL_get_privatekey(SSL *s)
2059 {
2060 if (s->cert != NULL)
2061 return(s->cert->key->privatekey);
2062 else
2063 return(NULL);
2064 }
2065
2066SSL_CIPHER *SSL_get_current_cipher(const SSL *s)
2067 {
2068 if ((s->session != NULL) && (s->session->cipher != NULL))
2069 return(s->session->cipher);
2070 return(NULL);
2071 }
2072
2073int ssl_init_wbio_buffer(SSL *s,int push)
2074 {
2075 BIO *bbio;
2076
2077 if (s->bbio == NULL)
2078 {
2079 bbio=BIO_new(BIO_f_buffer());
2080 if (bbio == NULL) return(0);
2081 s->bbio=bbio;
2082 }
2083 else
2084 {
2085 bbio=s->bbio;
2086 if (s->bbio == s->wbio)
2087 s->wbio=BIO_pop(s->wbio);
2088 }
2089 (void)BIO_reset(bbio);
2090/* if (!BIO_set_write_buffer_size(bbio,16*1024)) */
2091 if (!BIO_set_read_buffer_size(bbio,1))
2092 {
2093 SSLerr(SSL_F_SSL_INIT_WBIO_BUFFER,ERR_R_BUF_LIB);
2094 return(0);
2095 }
2096 if (push)
2097 {
2098 if (s->wbio != bbio)
2099 s->wbio=BIO_push(bbio,s->wbio);
2100 }
2101 else
2102 {
2103 if (s->wbio == bbio)
2104 s->wbio=BIO_pop(bbio);
2105 }
2106 return(1);
2107 }
2108
2109void ssl_free_wbio_buffer(SSL *s)
2110 {
2111 if (s->bbio == NULL) return;
2112
2113 if (s->bbio == s->wbio)
2114 {
2115 /* remove buffering */
2116 s->wbio=BIO_pop(s->wbio);
2117#ifdef REF_CHECK /* not the usual REF_CHECK, but this avoids adding one more preprocessor symbol */
2118 assert(s->wbio != NULL);
2119#endif
2120 }
2121 BIO_free(s->bbio);
2122 s->bbio=NULL;
2123 }
2124
2125void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx,int mode)
2126 {
2127 ctx->quiet_shutdown=mode;
2128 }
2129
2130int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx)
2131 {
2132 return(ctx->quiet_shutdown);
2133 }
2134
2135void SSL_set_quiet_shutdown(SSL *s,int mode)
2136 {
2137 s->quiet_shutdown=mode;
2138 }
2139
2140int SSL_get_quiet_shutdown(const SSL *s)
2141 {
2142 return(s->quiet_shutdown);
2143 }
2144
2145void SSL_set_shutdown(SSL *s,int mode)
2146 {
2147 s->shutdown=mode;
2148 }
2149
2150int SSL_get_shutdown(const SSL *s)
2151 {
2152 return(s->shutdown);
2153 }
2154
2155int SSL_version(const SSL *s)
2156 {
2157 return(s->version);
2158 }
2159
2160SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl)
2161 {
2162 return(ssl->ctx);
2163 }
2164
2165#ifndef OPENSSL_NO_STDIO
2166int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx)
2167 {
2168 return(X509_STORE_set_default_paths(ctx->cert_store));
2169 }
2170
2171int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile,
2172 const char *CApath)
2173 {
2174 int r;
2175 r=X509_STORE_load_locations(ctx->cert_store,CAfile,CApath);
2176 return r;
2177 }
2178#endif
2179
2180void SSL_set_info_callback(SSL *ssl,
2181 void (*cb)(const SSL *ssl,int type,int val))
2182 {
2183 ssl->info_callback=cb;
2184 }
2185
2186void (*SSL_get_info_callback(const SSL *ssl))(const SSL *ssl,int type,int val)
2187 {
2188 return ssl->info_callback;
2189 }
2190
2191int SSL_state(const SSL *ssl)
2192 {
2193 return(ssl->state);
2194 }
2195
2196void SSL_set_verify_result(SSL *ssl,long arg)
2197 {
2198 ssl->verify_result=arg;
2199 }
2200
2201long SSL_get_verify_result(const SSL *ssl)
2202 {
2203 return(ssl->verify_result);
2204 }
2205
2206int SSL_get_ex_new_index(long argl,void *argp,CRYPTO_EX_new *new_func,
2207 CRYPTO_EX_dup *dup_func,CRYPTO_EX_free *free_func)
2208 {
2209 return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, argl, argp,
2210 new_func, dup_func, free_func);
2211 }
2212
2213int SSL_set_ex_data(SSL *s,int idx,void *arg)
2214 {
2215 return(CRYPTO_set_ex_data(&s->ex_data,idx,arg));
2216 }
2217
2218void *SSL_get_ex_data(const SSL *s,int idx)
2219 {
2220 return(CRYPTO_get_ex_data(&s->ex_data,idx));
2221 }
2222
2223int SSL_CTX_get_ex_new_index(long argl,void *argp,CRYPTO_EX_new *new_func,
2224 CRYPTO_EX_dup *dup_func,CRYPTO_EX_free *free_func)
2225 {
2226 return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, argl, argp,
2227 new_func, dup_func, free_func);
2228 }
2229
2230int SSL_CTX_set_ex_data(SSL_CTX *s,int idx,void *arg)
2231 {
2232 return(CRYPTO_set_ex_data(&s->ex_data,idx,arg));
2233 }
2234
2235void *SSL_CTX_get_ex_data(const SSL_CTX *s,int idx)
2236 {
2237 return(CRYPTO_get_ex_data(&s->ex_data,idx));
2238 }
2239
2240int ssl_ok(SSL *s)
2241 {
2242 return(1);
2243 }
2244
2245X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *ctx)
2246 {
2247 return(ctx->cert_store);
2248 }
2249
2250void SSL_CTX_set_cert_store(SSL_CTX *ctx,X509_STORE *store)
2251 {
2252 if (ctx->cert_store != NULL)
2253 X509_STORE_free(ctx->cert_store);
2254 ctx->cert_store=store;
2255 }
2256
2257int SSL_want(const SSL *s)
2258 {
2259 return(s->rwstate);
2260 }
2261
2262/*!
2263 * \brief Set the callback for generating temporary RSA keys.
2264 * \param ctx the SSL context.
2265 * \param cb the callback
2266 */
2267
2268#ifndef OPENSSL_NO_RSA
2269void SSL_CTX_set_tmp_rsa_callback(SSL_CTX *ctx,RSA *(*cb)(SSL *ssl,
2270 int is_export,
2271 int keylength))
2272 {
2273 SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TMP_RSA_CB,(void (*)())cb);
2274 }
2275
2276void SSL_set_tmp_rsa_callback(SSL *ssl,RSA *(*cb)(SSL *ssl,
2277 int is_export,
2278 int keylength))
2279 {
2280 SSL_callback_ctrl(ssl,SSL_CTRL_SET_TMP_RSA_CB,(void (*)())cb);
2281 }
2282#endif
2283
2284#ifdef DOXYGEN
2285/*!
2286 * \brief The RSA temporary key callback function.
2287 * \param ssl the SSL session.
2288 * \param is_export \c TRUE if the temp RSA key is for an export ciphersuite.
2289 * \param keylength if \c is_export is \c TRUE, then \c keylength is the size
2290 * of the required key in bits.
2291 * \return the temporary RSA key.
2292 * \sa SSL_CTX_set_tmp_rsa_callback, SSL_set_tmp_rsa_callback
2293 */
2294
2295RSA *cb(SSL *ssl,int is_export,int keylength)
2296 {}
2297#endif
2298
2299/*!
2300 * \brief Set the callback for generating temporary DH keys.
2301 * \param ctx the SSL context.
2302 * \param dh the callback
2303 */
2304
2305#ifndef OPENSSL_NO_DH
2306void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx,DH *(*dh)(SSL *ssl,int is_export,
2307 int keylength))
2308 {
2309 SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TMP_DH_CB,(void (*)())dh);
2310 }
2311
2312void SSL_set_tmp_dh_callback(SSL *ssl,DH *(*dh)(SSL *ssl,int is_export,
2313 int keylength))
2314 {
2315 SSL_callback_ctrl(ssl,SSL_CTRL_SET_TMP_DH_CB,(void (*)())dh);
2316 }
2317#endif
2318
2319
2320void 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))
2321 {
2322 SSL_CTX_callback_ctrl(ctx, SSL_CTRL_SET_MSG_CALLBACK, (void (*)())cb);
2323 }
2324void 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))
2325 {
2326 SSL_callback_ctrl(ssl, SSL_CTRL_SET_MSG_CALLBACK, (void (*)())cb);
2327 }
2328
2329
2330
2331#if defined(_WINDLL) && defined(OPENSSL_SYS_WIN16)
2332#include "../crypto/bio/bss_file.c"
2333#endif
2334
2335IMPLEMENT_STACK_OF(SSL_CIPHER)
2336IMPLEMENT_STACK_OF(SSL_COMP)
diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h
new file mode 100644
index 0000000000..25a144a0d0
--- /dev/null
+++ b/src/lib/libssl/ssl_locl.h
@@ -0,0 +1,622 @@
1/* ssl/ssl_locl.h */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58/* ====================================================================
59 * Copyright (c) 1998-2001 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#ifndef HEADER_SSL_LOCL_H
113#define HEADER_SSL_LOCL_H
114#include <stdlib.h>
115#include <time.h>
116#include <string.h>
117#include <errno.h>
118
119#include "e_os.h"
120
121#include <openssl/buffer.h>
122#include <openssl/comp.h>
123#include <openssl/bio.h>
124#include <openssl/crypto.h>
125#include <openssl/evp.h>
126#include <openssl/stack.h>
127#include <openssl/x509.h>
128#include <openssl/err.h>
129#include <openssl/ssl.h>
130#include <openssl/symhacks.h>
131
132#ifdef OPENSSL_BUILD_SHLIBSSL
133# undef OPENSSL_EXTERN
134# define OPENSSL_EXTERN OPENSSL_EXPORT
135#endif
136
137#define PKCS1_CHECK
138
139#define c2l(c,l) (l = ((unsigned long)(*((c)++))) , \
140 l|=(((unsigned long)(*((c)++)))<< 8), \
141 l|=(((unsigned long)(*((c)++)))<<16), \
142 l|=(((unsigned long)(*((c)++)))<<24))
143
144/* NOTE - c is not incremented as per c2l */
145#define c2ln(c,l1,l2,n) { \
146 c+=n; \
147 l1=l2=0; \
148 switch (n) { \
149 case 8: l2 =((unsigned long)(*(--(c))))<<24; \
150 case 7: l2|=((unsigned long)(*(--(c))))<<16; \
151 case 6: l2|=((unsigned long)(*(--(c))))<< 8; \
152 case 5: l2|=((unsigned long)(*(--(c)))); \
153 case 4: l1 =((unsigned long)(*(--(c))))<<24; \
154 case 3: l1|=((unsigned long)(*(--(c))))<<16; \
155 case 2: l1|=((unsigned long)(*(--(c))))<< 8; \
156 case 1: l1|=((unsigned long)(*(--(c)))); \
157 } \
158 }
159
160#define l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \
161 *((c)++)=(unsigned char)(((l)>> 8)&0xff), \
162 *((c)++)=(unsigned char)(((l)>>16)&0xff), \
163 *((c)++)=(unsigned char)(((l)>>24)&0xff))
164
165#define n2l(c,l) (l =((unsigned long)(*((c)++)))<<24, \
166 l|=((unsigned long)(*((c)++)))<<16, \
167 l|=((unsigned long)(*((c)++)))<< 8, \
168 l|=((unsigned long)(*((c)++))))
169
170#define l2n(l,c) (*((c)++)=(unsigned char)(((l)>>24)&0xff), \
171 *((c)++)=(unsigned char)(((l)>>16)&0xff), \
172 *((c)++)=(unsigned char)(((l)>> 8)&0xff), \
173 *((c)++)=(unsigned char)(((l) )&0xff))
174
175/* NOTE - c is not incremented as per l2c */
176#define l2cn(l1,l2,c,n) { \
177 c+=n; \
178 switch (n) { \
179 case 8: *(--(c))=(unsigned char)(((l2)>>24)&0xff); \
180 case 7: *(--(c))=(unsigned char)(((l2)>>16)&0xff); \
181 case 6: *(--(c))=(unsigned char)(((l2)>> 8)&0xff); \
182 case 5: *(--(c))=(unsigned char)(((l2) )&0xff); \
183 case 4: *(--(c))=(unsigned char)(((l1)>>24)&0xff); \
184 case 3: *(--(c))=(unsigned char)(((l1)>>16)&0xff); \
185 case 2: *(--(c))=(unsigned char)(((l1)>> 8)&0xff); \
186 case 1: *(--(c))=(unsigned char)(((l1) )&0xff); \
187 } \
188 }
189
190#define n2s(c,s) ((s=(((unsigned int)(c[0]))<< 8)| \
191 (((unsigned int)(c[1])) )),c+=2)
192#define s2n(s,c) ((c[0]=(unsigned char)(((s)>> 8)&0xff), \
193 c[1]=(unsigned char)(((s) )&0xff)),c+=2)
194
195#define n2l3(c,l) ((l =(((unsigned long)(c[0]))<<16)| \
196 (((unsigned long)(c[1]))<< 8)| \
197 (((unsigned long)(c[2])) )),c+=3)
198
199#define l2n3(l,c) ((c[0]=(unsigned char)(((l)>>16)&0xff), \
200 c[1]=(unsigned char)(((l)>> 8)&0xff), \
201 c[2]=(unsigned char)(((l) )&0xff)),c+=3)
202
203/* LOCAL STUFF */
204
205#define SSL_DECRYPT 0
206#define SSL_ENCRYPT 1
207
208#define TWO_BYTE_BIT 0x80
209#define SEC_ESC_BIT 0x40
210#define TWO_BYTE_MASK 0x7fff
211#define THREE_BYTE_MASK 0x3fff
212
213#define INC32(a) ((a)=((a)+1)&0xffffffffL)
214#define DEC32(a) ((a)=((a)-1)&0xffffffffL)
215#define MAX_MAC_SIZE 20 /* up from 16 for SSLv3 */
216
217/*
218 * Define the Bitmasks for SSL_CIPHER.algorithms.
219 * This bits are used packed as dense as possible. If new methods/ciphers
220 * etc will be added, the bits a likely to change, so this information
221 * is for internal library use only, even though SSL_CIPHER.algorithms
222 * can be publicly accessed.
223 * Use the according functions for cipher management instead.
224 *
225 * The bit mask handling in the selection and sorting scheme in
226 * ssl_create_cipher_list() has only limited capabilities, reflecting
227 * that the different entities within are mutually exclusive:
228 * ONLY ONE BIT PER MASK CAN BE SET AT A TIME.
229 */
230#define SSL_MKEY_MASK 0x0000003FL
231#define SSL_kRSA 0x00000001L /* RSA key exchange */
232#define SSL_kDHr 0x00000002L /* DH cert RSA CA cert */
233#define SSL_kDHd 0x00000004L /* DH cert DSA CA cert */
234#define SSL_kFZA 0x00000008L
235#define SSL_kEDH 0x00000010L /* tmp DH key no DH cert */
236#define SSL_kKRB5 0x00000020L /* Kerberos5 key exchange */
237#define SSL_EDH (SSL_kEDH|(SSL_AUTH_MASK^SSL_aNULL))
238
239#define SSL_AUTH_MASK 0x00000FC0L
240#define SSL_aRSA 0x00000040L /* Authenticate with RSA */
241#define SSL_aDSS 0x00000080L /* Authenticate with DSS */
242#define SSL_DSS SSL_aDSS
243#define SSL_aFZA 0x00000100L
244#define SSL_aNULL 0x00000200L /* no Authenticate, ADH */
245#define SSL_aDH 0x00000400L /* no Authenticate, ADH */
246#define SSL_aKRB5 0x00000800L /* Authenticate with KRB5 */
247
248#define SSL_NULL (SSL_eNULL)
249#define SSL_ADH (SSL_kEDH|SSL_aNULL)
250#define SSL_RSA (SSL_kRSA|SSL_aRSA)
251#define SSL_DH (SSL_kDHr|SSL_kDHd|SSL_kEDH)
252#define SSL_FZA (SSL_aFZA|SSL_kFZA|SSL_eFZA)
253#define SSL_KRB5 (SSL_kKRB5|SSL_aKRB5)
254
255#define SSL_ENC_MASK 0x0087F000L
256#define SSL_DES 0x00001000L
257#define SSL_3DES 0x00002000L
258#define SSL_RC4 0x00004000L
259#define SSL_RC2 0x00008000L
260#define SSL_IDEA 0x00010000L
261#define SSL_eFZA 0x00020000L
262#define SSL_eNULL 0x00040000L
263#define SSL_AES 0x00800000L
264
265#define SSL_MAC_MASK 0x00180000L
266#define SSL_MD5 0x00080000L
267#define SSL_SHA1 0x00100000L
268#define SSL_SHA (SSL_SHA1)
269
270#define SSL_SSL_MASK 0x00600000L
271#define SSL_SSLV2 0x00200000L
272#define SSL_SSLV3 0x00400000L
273#define SSL_TLSV1 SSL_SSLV3 /* for now */
274
275/* we have used 007fffff - 9 bits left to go */
276
277/*
278 * Export and cipher strength information. For each cipher we have to decide
279 * whether it is exportable or not. This information is likely to change
280 * over time, since the export control rules are no static technical issue.
281 *
282 * Independent of the export flag the cipher strength is sorted into classes.
283 * SSL_EXP40 was denoting the 40bit US export limit of past times, which now
284 * is at 56bit (SSL_EXP56). If the exportable cipher class is going to change
285 * again (eg. to 64bit) the use of "SSL_EXP*" becomes blurred even more,
286 * since SSL_EXP64 could be similar to SSL_LOW.
287 * For this reason SSL_MICRO and SSL_MINI macros are included to widen the
288 * namespace of SSL_LOW-SSL_HIGH to lower values. As development of speed
289 * and ciphers goes, another extension to SSL_SUPER and/or SSL_ULTRA would
290 * be possible.
291 */
292#define SSL_EXP_MASK 0x00000003L
293#define SSL_NOT_EXP 0x00000001L
294#define SSL_EXPORT 0x00000002L
295
296#define SSL_STRONG_MASK 0x000000fcL
297#define SSL_STRONG_NONE 0x00000004L
298#define SSL_EXP40 0x00000008L
299#define SSL_MICRO (SSL_EXP40)
300#define SSL_EXP56 0x00000010L
301#define SSL_MINI (SSL_EXP56)
302#define SSL_LOW 0x00000020L
303#define SSL_MEDIUM 0x00000040L
304#define SSL_HIGH 0x00000080L
305#define SSL_FIPS 0x00000100L
306
307/* we have used 000001ff - 23 bits left to go */
308
309/*
310 * Macros to check the export status and cipher strength for export ciphers.
311 * Even though the macros for EXPORT and EXPORT40/56 have similar names,
312 * their meaning is different:
313 * *_EXPORT macros check the 'exportable' status.
314 * *_EXPORT40/56 macros are used to check whether a certain cipher strength
315 * is given.
316 * Since the SSL_IS_EXPORT* and SSL_EXPORT* macros depend on the correct
317 * algorithm structure element to be passed (algorithms, algo_strength) and no
318 * typechecking can be done as they are all of type unsigned long, their
319 * direct usage is discouraged.
320 * Use the SSL_C_* macros instead.
321 */
322#define SSL_IS_EXPORT(a) ((a)&SSL_EXPORT)
323#define SSL_IS_EXPORT56(a) ((a)&SSL_EXP56)
324#define SSL_IS_EXPORT40(a) ((a)&SSL_EXP40)
325#define SSL_C_IS_EXPORT(c) SSL_IS_EXPORT((c)->algo_strength)
326#define SSL_C_IS_EXPORT56(c) SSL_IS_EXPORT56((c)->algo_strength)
327#define SSL_C_IS_EXPORT40(c) SSL_IS_EXPORT40((c)->algo_strength)
328
329#define SSL_EXPORT_KEYLENGTH(a,s) (SSL_IS_EXPORT40(s) ? 5 : \
330 ((a)&SSL_ENC_MASK) == SSL_DES ? 8 : 7)
331#define SSL_EXPORT_PKEYLENGTH(a) (SSL_IS_EXPORT40(a) ? 512 : 1024)
332#define SSL_C_EXPORT_KEYLENGTH(c) SSL_EXPORT_KEYLENGTH((c)->algorithms, \
333 (c)->algo_strength)
334#define SSL_C_EXPORT_PKEYLENGTH(c) SSL_EXPORT_PKEYLENGTH((c)->algo_strength)
335
336
337#define SSL_ALL 0xffffffffL
338#define SSL_ALL_CIPHERS (SSL_MKEY_MASK|SSL_AUTH_MASK|SSL_ENC_MASK|\
339 SSL_MAC_MASK)
340#define SSL_ALL_STRENGTHS (SSL_EXP_MASK|SSL_STRONG_MASK)
341
342/* Mostly for SSLv3 */
343#define SSL_PKEY_RSA_ENC 0
344#define SSL_PKEY_RSA_SIGN 1
345#define SSL_PKEY_DSA_SIGN 2
346#define SSL_PKEY_DH_RSA 3
347#define SSL_PKEY_DH_DSA 4
348#define SSL_PKEY_NUM 5
349
350/* SSL_kRSA <- RSA_ENC | (RSA_TMP & RSA_SIGN) |
351 * <- (EXPORT & (RSA_ENC | RSA_TMP) & RSA_SIGN)
352 * SSL_kDH <- DH_ENC & (RSA_ENC | RSA_SIGN | DSA_SIGN)
353 * SSL_kEDH <- RSA_ENC | RSA_SIGN | DSA_SIGN
354 * SSL_aRSA <- RSA_ENC | RSA_SIGN
355 * SSL_aDSS <- DSA_SIGN
356 */
357
358/*
359#define CERT_INVALID 0
360#define CERT_PUBLIC_KEY 1
361#define CERT_PRIVATE_KEY 2
362*/
363
364typedef struct cert_pkey_st
365 {
366 X509 *x509;
367 EVP_PKEY *privatekey;
368 } CERT_PKEY;
369
370typedef struct cert_st
371 {
372 /* Current active set */
373 CERT_PKEY *key; /* ALWAYS points to an element of the pkeys array
374 * Probably it would make more sense to store
375 * an index, not a pointer. */
376
377 /* The following masks are for the key and auth
378 * algorithms that are supported by the certs below */
379 int valid;
380 unsigned long mask;
381 unsigned long export_mask;
382#ifndef OPENSSL_NO_RSA
383 RSA *rsa_tmp;
384 RSA *(*rsa_tmp_cb)(SSL *ssl,int is_export,int keysize);
385#endif
386#ifndef OPENSSL_NO_DH
387 DH *dh_tmp;
388 DH *(*dh_tmp_cb)(SSL *ssl,int is_export,int keysize);
389#endif
390
391 CERT_PKEY pkeys[SSL_PKEY_NUM];
392
393 int references; /* >1 only if SSL_copy_session_id is used */
394 } CERT;
395
396
397typedef struct sess_cert_st
398 {
399 STACK_OF(X509) *cert_chain; /* as received from peer (not for SSL2) */
400
401 /* The 'peer_...' members are used only by clients. */
402 int peer_cert_type;
403
404 CERT_PKEY *peer_key; /* points to an element of peer_pkeys (never NULL!) */
405 CERT_PKEY peer_pkeys[SSL_PKEY_NUM];
406 /* Obviously we don't have the private keys of these,
407 * so maybe we shouldn't even use the CERT_PKEY type here. */
408
409#ifndef OPENSSL_NO_RSA
410 RSA *peer_rsa_tmp; /* not used for SSL 2 */
411#endif
412#ifndef OPENSSL_NO_DH
413 DH *peer_dh_tmp; /* not used for SSL 2 */
414#endif
415
416 int references; /* actually always 1 at the moment */
417 } SESS_CERT;
418
419
420/*#define MAC_DEBUG */
421
422/*#define ERR_DEBUG */
423/*#define ABORT_DEBUG */
424/*#define PKT_DEBUG 1 */
425/*#define DES_DEBUG */
426/*#define DES_OFB_DEBUG */
427/*#define SSL_DEBUG */
428/*#define RSA_DEBUG */
429/*#define IDEA_DEBUG */
430
431#define FP_ICC (int (*)(const void *,const void *))
432#define ssl_put_cipher_by_char(ssl,ciph,ptr) \
433 ((ssl)->method->put_cipher_by_char((ciph),(ptr)))
434#define ssl_get_cipher_by_char(ssl,ptr) \
435 ((ssl)->method->get_cipher_by_char(ptr))
436
437/* This is for the SSLv3/TLSv1.0 differences in crypto/hash stuff
438 * It is a bit of a mess of functions, but hell, think of it as
439 * an opaque structure :-) */
440typedef struct ssl3_enc_method
441 {
442 int (*enc)(SSL *, int);
443 int (*mac)(SSL *, unsigned char *, int);
444 int (*setup_key_block)(SSL *);
445 int (*generate_master_secret)(SSL *, unsigned char *, unsigned char *, int);
446 int (*change_cipher_state)(SSL *, int);
447 int (*final_finish_mac)(SSL *, EVP_MD_CTX *, EVP_MD_CTX *, const char *, int, unsigned char *);
448 int finish_mac_length;
449 int (*cert_verify_mac)(SSL *, EVP_MD_CTX *, unsigned char *);
450 const char *client_finished_label;
451 int client_finished_label_len;
452 const char *server_finished_label;
453 int server_finished_label_len;
454 int (*alert_value)(int);
455 } SSL3_ENC_METHOD;
456
457/* Used for holding the relevant compression methods loaded into SSL_CTX */
458typedef struct ssl3_comp_st
459 {
460 int comp_id; /* The identifier byte for this compression type */
461 char *name; /* Text name used for the compression type */
462 COMP_METHOD *method; /* The method :-) */
463 } SSL3_COMP;
464
465OPENSSL_EXTERN SSL3_ENC_METHOD ssl3_undef_enc_method;
466OPENSSL_EXTERN SSL_CIPHER ssl2_ciphers[];
467OPENSSL_EXTERN SSL_CIPHER ssl3_ciphers[];
468
469#ifdef OPENSSL_SYS_VMS
470#undef SSL_COMP_get_compression_methods
471#define SSL_COMP_get_compression_methods SSL_COMP_get_compress_methods
472#endif
473
474
475SSL_METHOD *ssl_bad_method(int ver);
476SSL_METHOD *sslv2_base_method(void);
477SSL_METHOD *sslv23_base_method(void);
478SSL_METHOD *sslv3_base_method(void);
479
480void ssl_clear_cipher_ctx(SSL *s);
481int ssl_clear_bad_session(SSL *s);
482CERT *ssl_cert_new(void);
483CERT *ssl_cert_dup(CERT *cert);
484int ssl_cert_inst(CERT **o);
485void ssl_cert_free(CERT *c);
486SESS_CERT *ssl_sess_cert_new(void);
487void ssl_sess_cert_free(SESS_CERT *sc);
488int ssl_set_peer_cert_type(SESS_CERT *c, int type);
489int ssl_get_new_session(SSL *s, int session);
490int ssl_get_prev_session(SSL *s, unsigned char *session,int len);
491int ssl_cipher_id_cmp(const SSL_CIPHER *a,const SSL_CIPHER *b);
492int ssl_cipher_ptr_id_cmp(const SSL_CIPHER * const *ap,
493 const SSL_CIPHER * const *bp);
494STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s,unsigned char *p,int num,
495 STACK_OF(SSL_CIPHER) **skp);
496int ssl_cipher_list_to_bytes(SSL *s,STACK_OF(SSL_CIPHER) *sk,unsigned char *p);
497STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *meth,
498 STACK_OF(SSL_CIPHER) **pref,
499 STACK_OF(SSL_CIPHER) **sorted,
500 const char *rule_str);
501void ssl_update_cache(SSL *s, int mode);
502int ssl_cipher_get_evp(const SSL_SESSION *s,const EVP_CIPHER **enc,
503 const EVP_MD **md,SSL_COMP **comp);
504int ssl_verify_cert_chain(SSL *s,STACK_OF(X509) *sk);
505int ssl_undefined_function(SSL *s);
506int ssl_undefined_const_function(const SSL *s);
507X509 *ssl_get_server_send_cert(SSL *);
508EVP_PKEY *ssl_get_sign_pkey(SSL *,SSL_CIPHER *);
509int ssl_cert_type(X509 *x,EVP_PKEY *pkey);
510void ssl_set_cert_masks(CERT *c, SSL_CIPHER *cipher);
511STACK_OF(SSL_CIPHER) *ssl_get_ciphers_by_id(SSL *s);
512int ssl_verify_alarm_type(long type);
513
514int ssl2_enc_init(SSL *s, int client);
515int ssl2_generate_key_material(SSL *s);
516void ssl2_enc(SSL *s,int send_data);
517void ssl2_mac(SSL *s,unsigned char *mac,int send_data);
518SSL_CIPHER *ssl2_get_cipher_by_char(const unsigned char *p);
519int ssl2_put_cipher_by_char(const SSL_CIPHER *c,unsigned char *p);
520int ssl2_part_read(SSL *s, unsigned long f, int i);
521int ssl2_do_write(SSL *s);
522int ssl2_set_certificate(SSL *s, int type, int len, unsigned char *data);
523void ssl2_return_error(SSL *s,int reason);
524void ssl2_write_error(SSL *s);
525int ssl2_num_ciphers(void);
526SSL_CIPHER *ssl2_get_cipher(unsigned int u);
527int ssl2_new(SSL *s);
528void ssl2_free(SSL *s);
529int ssl2_accept(SSL *s);
530int ssl2_connect(SSL *s);
531int ssl2_read(SSL *s, void *buf, int len);
532int ssl2_peek(SSL *s, void *buf, int len);
533int ssl2_write(SSL *s, const void *buf, int len);
534int ssl2_shutdown(SSL *s);
535void ssl2_clear(SSL *s);
536long ssl2_ctrl(SSL *s,int cmd, long larg, void *parg);
537long ssl2_ctx_ctrl(SSL_CTX *s,int cmd, long larg, void *parg);
538long ssl2_callback_ctrl(SSL *s,int cmd, void (*fp)());
539long ssl2_ctx_callback_ctrl(SSL_CTX *s,int cmd, void (*fp)());
540int ssl2_pending(const SSL *s);
541
542SSL_CIPHER *ssl3_get_cipher_by_char(const unsigned char *p);
543int ssl3_put_cipher_by_char(const SSL_CIPHER *c,unsigned char *p);
544void ssl3_init_finished_mac(SSL *s);
545int ssl3_send_server_certificate(SSL *s);
546int ssl3_get_finished(SSL *s,int state_a,int state_b);
547int ssl3_setup_key_block(SSL *s);
548int ssl3_send_change_cipher_spec(SSL *s,int state_a,int state_b);
549int ssl3_change_cipher_state(SSL *s,int which);
550void ssl3_cleanup_key_block(SSL *s);
551int ssl3_do_write(SSL *s,int type);
552void ssl3_send_alert(SSL *s,int level, int desc);
553int ssl3_generate_master_secret(SSL *s, unsigned char *out,
554 unsigned char *p, int len);
555int ssl3_get_req_cert_type(SSL *s,unsigned char *p);
556long ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok);
557int ssl3_send_finished(SSL *s, int a, int b, const char *sender,int slen);
558int ssl3_num_ciphers(void);
559SSL_CIPHER *ssl3_get_cipher(unsigned int u);
560int ssl3_renegotiate(SSL *ssl);
561int ssl3_renegotiate_check(SSL *ssl);
562int ssl3_dispatch_alert(SSL *s);
563int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek);
564int ssl3_write_bytes(SSL *s, int type, const void *buf, int len);
565int ssl3_final_finish_mac(SSL *s, EVP_MD_CTX *ctx1, EVP_MD_CTX *ctx2,
566 const char *sender, int slen,unsigned char *p);
567int ssl3_cert_verify_mac(SSL *s, EVP_MD_CTX *in, unsigned char *p);
568void ssl3_finish_mac(SSL *s, const unsigned char *buf, int len);
569int ssl3_enc(SSL *s, int send_data);
570int ssl3_mac(SSL *ssl, unsigned char *md, int send_data);
571unsigned long ssl3_output_cert_chain(SSL *s, X509 *x);
572SSL_CIPHER *ssl3_choose_cipher(SSL *ssl,STACK_OF(SSL_CIPHER) *clnt,
573 STACK_OF(SSL_CIPHER) *srvr);
574int ssl3_setup_buffers(SSL *s);
575int ssl3_new(SSL *s);
576void ssl3_free(SSL *s);
577int ssl3_accept(SSL *s);
578int ssl3_connect(SSL *s);
579int ssl3_read(SSL *s, void *buf, int len);
580int ssl3_peek(SSL *s, void *buf, int len);
581int ssl3_write(SSL *s, const void *buf, int len);
582int ssl3_shutdown(SSL *s);
583void ssl3_clear(SSL *s);
584long ssl3_ctrl(SSL *s,int cmd, long larg, void *parg);
585long ssl3_ctx_ctrl(SSL_CTX *s,int cmd, long larg, void *parg);
586long ssl3_callback_ctrl(SSL *s,int cmd, void (*fp)());
587long ssl3_ctx_callback_ctrl(SSL_CTX *s,int cmd, void (*fp)());
588int ssl3_pending(const SSL *s);
589
590int ssl23_accept(SSL *s);
591int ssl23_connect(SSL *s);
592int ssl23_read_bytes(SSL *s, int n);
593int ssl23_write_bytes(SSL *s);
594
595int tls1_new(SSL *s);
596void tls1_free(SSL *s);
597void tls1_clear(SSL *s);
598long tls1_ctrl(SSL *s,int cmd, long larg, void *parg);
599long tls1_callback_ctrl(SSL *s,int cmd, void (*fp)());
600SSL_METHOD *tlsv1_base_method(void );
601
602int ssl_init_wbio_buffer(SSL *s, int push);
603void ssl_free_wbio_buffer(SSL *s);
604
605int tls1_change_cipher_state(SSL *s, int which);
606int tls1_setup_key_block(SSL *s);
607int tls1_enc(SSL *s, int snd);
608int tls1_final_finish_mac(SSL *s, EVP_MD_CTX *in1_ctx, EVP_MD_CTX *in2_ctx,
609 const char *str, int slen, unsigned char *p);
610int tls1_cert_verify_mac(SSL *s, EVP_MD_CTX *in, unsigned char *p);
611int tls1_mac(SSL *ssl, unsigned char *md, int snd);
612int tls1_generate_master_secret(SSL *s, unsigned char *out,
613 unsigned char *p, int len);
614int tls1_alert_code(int code);
615int ssl3_alert_code(int code);
616int ssl_ok(SSL *s);
617
618SSL_COMP *ssl3_comp_find(STACK_OF(SSL_COMP) *sk, int n);
619STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void);
620
621
622#endif
diff --git a/src/lib/libssl/ssl_rsa.c b/src/lib/libssl/ssl_rsa.c
new file mode 100644
index 0000000000..fb0bd4d045
--- /dev/null
+++ b/src/lib/libssl/ssl_rsa.c
@@ -0,0 +1,817 @@
1/* ssl/ssl_rsa.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include "ssl_locl.h"
61#include <openssl/bio.h>
62#include <openssl/objects.h>
63#include <openssl/evp.h>
64#include <openssl/x509.h>
65#include <openssl/pem.h>
66
67static int ssl_set_cert(CERT *c, X509 *x509);
68static int ssl_set_pkey(CERT *c, EVP_PKEY *pkey);
69int SSL_use_certificate(SSL *ssl, X509 *x)
70 {
71 if (x == NULL)
72 {
73 SSLerr(SSL_F_SSL_USE_CERTIFICATE,ERR_R_PASSED_NULL_PARAMETER);
74 return(0);
75 }
76 if (!ssl_cert_inst(&ssl->cert))
77 {
78 SSLerr(SSL_F_SSL_USE_CERTIFICATE,ERR_R_MALLOC_FAILURE);
79 return(0);
80 }
81 return(ssl_set_cert(ssl->cert,x));
82 }
83
84#ifndef OPENSSL_NO_STDIO
85int SSL_use_certificate_file(SSL *ssl, const char *file, int type)
86 {
87 int j;
88 BIO *in;
89 int ret=0;
90 X509 *x=NULL;
91
92 in=BIO_new(BIO_s_file_internal());
93 if (in == NULL)
94 {
95 SSLerr(SSL_F_SSL_USE_CERTIFICATE_FILE,ERR_R_BUF_LIB);
96 goto end;
97 }
98
99 if (BIO_read_filename(in,file) <= 0)
100 {
101 SSLerr(SSL_F_SSL_USE_CERTIFICATE_FILE,ERR_R_SYS_LIB);
102 goto end;
103 }
104 if (type == SSL_FILETYPE_ASN1)
105 {
106 j=ERR_R_ASN1_LIB;
107 x=d2i_X509_bio(in,NULL);
108 }
109 else if (type == SSL_FILETYPE_PEM)
110 {
111 j=ERR_R_PEM_LIB;
112 x=PEM_read_bio_X509(in,NULL,ssl->ctx->default_passwd_callback,ssl->ctx->default_passwd_callback_userdata);
113 }
114 else
115 {
116 SSLerr(SSL_F_SSL_USE_CERTIFICATE_FILE,SSL_R_BAD_SSL_FILETYPE);
117 goto end;
118 }
119
120 if (x == NULL)
121 {
122 SSLerr(SSL_F_SSL_USE_CERTIFICATE_FILE,j);
123 goto end;
124 }
125
126 ret=SSL_use_certificate(ssl,x);
127end:
128 if (x != NULL) X509_free(x);
129 if (in != NULL) BIO_free(in);
130 return(ret);
131 }
132#endif
133
134int SSL_use_certificate_ASN1(SSL *ssl, unsigned char *d, int len)
135 {
136 X509 *x;
137 int ret;
138
139 x=d2i_X509(NULL,&d,(long)len);
140 if (x == NULL)
141 {
142 SSLerr(SSL_F_SSL_USE_CERTIFICATE_ASN1,ERR_R_ASN1_LIB);
143 return(0);
144 }
145
146 ret=SSL_use_certificate(ssl,x);
147 X509_free(x);
148 return(ret);
149 }
150
151#ifndef OPENSSL_NO_RSA
152int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa)
153 {
154 EVP_PKEY *pkey;
155 int ret;
156
157 if (rsa == NULL)
158 {
159 SSLerr(SSL_F_SSL_USE_RSAPRIVATEKEY,ERR_R_PASSED_NULL_PARAMETER);
160 return(0);
161 }
162 if (!ssl_cert_inst(&ssl->cert))
163 {
164 SSLerr(SSL_F_SSL_USE_RSAPRIVATEKEY,ERR_R_MALLOC_FAILURE);
165 return(0);
166 }
167 if ((pkey=EVP_PKEY_new()) == NULL)
168 {
169 SSLerr(SSL_F_SSL_USE_RSAPRIVATEKEY,ERR_R_EVP_LIB);
170 return(0);
171 }
172
173 RSA_up_ref(rsa);
174 EVP_PKEY_assign_RSA(pkey,rsa);
175
176 ret=ssl_set_pkey(ssl->cert,pkey);
177 EVP_PKEY_free(pkey);
178 return(ret);
179 }
180#endif
181
182static int ssl_set_pkey(CERT *c, EVP_PKEY *pkey)
183 {
184 int i,ok=0,bad=0;
185
186 i=ssl_cert_type(NULL,pkey);
187 if (i < 0)
188 {
189 SSLerr(SSL_F_SSL_SET_PKEY,SSL_R_UNKNOWN_CERTIFICATE_TYPE);
190 return(0);
191 }
192
193 if (c->pkeys[i].x509 != NULL)
194 {
195 EVP_PKEY *pktmp;
196 pktmp = X509_get_pubkey(c->pkeys[i].x509);
197 EVP_PKEY_copy_parameters(pktmp,pkey);
198 EVP_PKEY_free(pktmp);
199 ERR_clear_error();
200
201#ifndef OPENSSL_NO_RSA
202 /* Don't check the public/private key, this is mostly
203 * for smart cards. */
204 if ((pkey->type == EVP_PKEY_RSA) &&
205 (RSA_flags(pkey->pkey.rsa) &
206 RSA_METHOD_FLAG_NO_CHECK))
207 ok=1;
208 else
209#endif
210 if (!X509_check_private_key(c->pkeys[i].x509,pkey))
211 {
212 if ((i == SSL_PKEY_DH_RSA) || (i == SSL_PKEY_DH_DSA))
213 {
214 i=(i == SSL_PKEY_DH_RSA)?
215 SSL_PKEY_DH_DSA:SSL_PKEY_DH_RSA;
216
217 if (c->pkeys[i].x509 == NULL)
218 ok=1;
219 else
220 {
221 if (!X509_check_private_key(
222 c->pkeys[i].x509,pkey))
223 bad=1;
224 else
225 ok=1;
226 }
227 }
228 else
229 bad=1;
230 }
231 else
232 ok=1;
233 }
234 else
235 ok=1;
236
237 if (bad)
238 {
239 X509_free(c->pkeys[i].x509);
240 c->pkeys[i].x509=NULL;
241 return(0);
242 }
243
244 ERR_clear_error(); /* make sure no error from X509_check_private_key()
245 * is left if we have chosen to ignore it */
246 if (c->pkeys[i].privatekey != NULL)
247 EVP_PKEY_free(c->pkeys[i].privatekey);
248 CRYPTO_add(&pkey->references,1,CRYPTO_LOCK_EVP_PKEY);
249 c->pkeys[i].privatekey=pkey;
250 c->key= &(c->pkeys[i]);
251
252 c->valid=0;
253 return(1);
254 }
255
256#ifndef OPENSSL_NO_RSA
257#ifndef OPENSSL_NO_STDIO
258int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type)
259 {
260 int j,ret=0;
261 BIO *in;
262 RSA *rsa=NULL;
263
264 in=BIO_new(BIO_s_file_internal());
265 if (in == NULL)
266 {
267 SSLerr(SSL_F_SSL_USE_RSAPRIVATEKEY_FILE,ERR_R_BUF_LIB);
268 goto end;
269 }
270
271 if (BIO_read_filename(in,file) <= 0)
272 {
273 SSLerr(SSL_F_SSL_USE_RSAPRIVATEKEY_FILE,ERR_R_SYS_LIB);
274 goto end;
275 }
276 if (type == SSL_FILETYPE_ASN1)
277 {
278 j=ERR_R_ASN1_LIB;
279 rsa=d2i_RSAPrivateKey_bio(in,NULL);
280 }
281 else if (type == SSL_FILETYPE_PEM)
282 {
283 j=ERR_R_PEM_LIB;
284 rsa=PEM_read_bio_RSAPrivateKey(in,NULL,
285 ssl->ctx->default_passwd_callback,ssl->ctx->default_passwd_callback_userdata);
286 }
287 else
288 {
289 SSLerr(SSL_F_SSL_USE_RSAPRIVATEKEY_FILE,SSL_R_BAD_SSL_FILETYPE);
290 goto end;
291 }
292 if (rsa == NULL)
293 {
294 SSLerr(SSL_F_SSL_USE_RSAPRIVATEKEY_FILE,j);
295 goto end;
296 }
297 ret=SSL_use_RSAPrivateKey(ssl,rsa);
298 RSA_free(rsa);
299end:
300 if (in != NULL) BIO_free(in);
301 return(ret);
302 }
303#endif
304
305int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, unsigned char *d, long len)
306 {
307 int ret;
308 const unsigned char *p;
309 RSA *rsa;
310
311 p=d;
312 if ((rsa=d2i_RSAPrivateKey(NULL,&p,(long)len)) == NULL)
313 {
314 SSLerr(SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1,ERR_R_ASN1_LIB);
315 return(0);
316 }
317
318 ret=SSL_use_RSAPrivateKey(ssl,rsa);
319 RSA_free(rsa);
320 return(ret);
321 }
322#endif /* !OPENSSL_NO_RSA */
323
324int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey)
325 {
326 int ret;
327
328 if (pkey == NULL)
329 {
330 SSLerr(SSL_F_SSL_USE_PRIVATEKEY,ERR_R_PASSED_NULL_PARAMETER);
331 return(0);
332 }
333 if (!ssl_cert_inst(&ssl->cert))
334 {
335 SSLerr(SSL_F_SSL_USE_PRIVATEKEY,ERR_R_MALLOC_FAILURE);
336 return(0);
337 }
338 ret=ssl_set_pkey(ssl->cert,pkey);
339 return(ret);
340 }
341
342#ifndef OPENSSL_NO_STDIO
343int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type)
344 {
345 int j,ret=0;
346 BIO *in;
347 EVP_PKEY *pkey=NULL;
348
349 in=BIO_new(BIO_s_file_internal());
350 if (in == NULL)
351 {
352 SSLerr(SSL_F_SSL_USE_PRIVATEKEY_FILE,ERR_R_BUF_LIB);
353 goto end;
354 }
355
356 if (BIO_read_filename(in,file) <= 0)
357 {
358 SSLerr(SSL_F_SSL_USE_PRIVATEKEY_FILE,ERR_R_SYS_LIB);
359 goto end;
360 }
361 if (type == SSL_FILETYPE_PEM)
362 {
363 j=ERR_R_PEM_LIB;
364 pkey=PEM_read_bio_PrivateKey(in,NULL,
365 ssl->ctx->default_passwd_callback,ssl->ctx->default_passwd_callback_userdata);
366 }
367 else
368 {
369 SSLerr(SSL_F_SSL_USE_PRIVATEKEY_FILE,SSL_R_BAD_SSL_FILETYPE);
370 goto end;
371 }
372 if (pkey == NULL)
373 {
374 SSLerr(SSL_F_SSL_USE_PRIVATEKEY_FILE,j);
375 goto end;
376 }
377 ret=SSL_use_PrivateKey(ssl,pkey);
378 EVP_PKEY_free(pkey);
379end:
380 if (in != NULL) BIO_free(in);
381 return(ret);
382 }
383#endif
384
385int SSL_use_PrivateKey_ASN1(int type, SSL *ssl, unsigned char *d, long len)
386 {
387 int ret;
388 unsigned char *p;
389 EVP_PKEY *pkey;
390
391 p=d;
392 if ((pkey=d2i_PrivateKey(type,NULL,&p,(long)len)) == NULL)
393 {
394 SSLerr(SSL_F_SSL_USE_PRIVATEKEY_ASN1,ERR_R_ASN1_LIB);
395 return(0);
396 }
397
398 ret=SSL_use_PrivateKey(ssl,pkey);
399 EVP_PKEY_free(pkey);
400 return(ret);
401 }
402
403int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x)
404 {
405 if (x == NULL)
406 {
407 SSLerr(SSL_F_SSL_CTX_USE_CERTIFICATE,ERR_R_PASSED_NULL_PARAMETER);
408 return(0);
409 }
410 if (!ssl_cert_inst(&ctx->cert))
411 {
412 SSLerr(SSL_F_SSL_CTX_USE_CERTIFICATE,ERR_R_MALLOC_FAILURE);
413 return(0);
414 }
415 return(ssl_set_cert(ctx->cert, x));
416 }
417
418static int ssl_set_cert(CERT *c, X509 *x)
419 {
420 EVP_PKEY *pkey;
421 int i,ok=0,bad=0;
422
423 pkey=X509_get_pubkey(x);
424 if (pkey == NULL)
425 {
426 SSLerr(SSL_F_SSL_SET_CERT,SSL_R_X509_LIB);
427 return(0);
428 }
429
430 i=ssl_cert_type(x,pkey);
431 if (i < 0)
432 {
433 SSLerr(SSL_F_SSL_SET_CERT,SSL_R_UNKNOWN_CERTIFICATE_TYPE);
434 EVP_PKEY_free(pkey);
435 return(0);
436 }
437
438 if (c->pkeys[i].privatekey != NULL)
439 {
440 EVP_PKEY_copy_parameters(pkey,c->pkeys[i].privatekey);
441 ERR_clear_error();
442
443#ifndef OPENSSL_NO_RSA
444 /* Don't check the public/private key, this is mostly
445 * for smart cards. */
446 if ((c->pkeys[i].privatekey->type == EVP_PKEY_RSA) &&
447 (RSA_flags(c->pkeys[i].privatekey->pkey.rsa) &
448 RSA_METHOD_FLAG_NO_CHECK))
449 ok=1;
450 else
451#endif
452 {
453 if (!X509_check_private_key(x,c->pkeys[i].privatekey))
454 {
455 if ((i == SSL_PKEY_DH_RSA) || (i == SSL_PKEY_DH_DSA))
456 {
457 i=(i == SSL_PKEY_DH_RSA)?
458 SSL_PKEY_DH_DSA:SSL_PKEY_DH_RSA;
459
460 if (c->pkeys[i].privatekey == NULL)
461 ok=1;
462 else
463 {
464 if (!X509_check_private_key(x,
465 c->pkeys[i].privatekey))
466 bad=1;
467 else
468 ok=1;
469 }
470 }
471 else
472 bad=1;
473 }
474 else
475 ok=1;
476 } /* OPENSSL_NO_RSA */
477 }
478 else
479 ok=1;
480
481 EVP_PKEY_free(pkey);
482 if (bad)
483 {
484 EVP_PKEY_free(c->pkeys[i].privatekey);
485 c->pkeys[i].privatekey=NULL;
486 }
487
488 if (c->pkeys[i].x509 != NULL)
489 X509_free(c->pkeys[i].x509);
490 CRYPTO_add(&x->references,1,CRYPTO_LOCK_X509);
491 c->pkeys[i].x509=x;
492 c->key= &(c->pkeys[i]);
493
494 c->valid=0;
495 return(1);
496 }
497
498#ifndef OPENSSL_NO_STDIO
499int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type)
500 {
501 int j;
502 BIO *in;
503 int ret=0;
504 X509 *x=NULL;
505
506 in=BIO_new(BIO_s_file_internal());
507 if (in == NULL)
508 {
509 SSLerr(SSL_F_SSL_CTX_USE_CERTIFICATE_FILE,ERR_R_BUF_LIB);
510 goto end;
511 }
512
513 if (BIO_read_filename(in,file) <= 0)
514 {
515 SSLerr(SSL_F_SSL_CTX_USE_CERTIFICATE_FILE,ERR_R_SYS_LIB);
516 goto end;
517 }
518 if (type == SSL_FILETYPE_ASN1)
519 {
520 j=ERR_R_ASN1_LIB;
521 x=d2i_X509_bio(in,NULL);
522 }
523 else if (type == SSL_FILETYPE_PEM)
524 {
525 j=ERR_R_PEM_LIB;
526 x=PEM_read_bio_X509(in,NULL,ctx->default_passwd_callback,ctx->default_passwd_callback_userdata);
527 }
528 else
529 {
530 SSLerr(SSL_F_SSL_CTX_USE_CERTIFICATE_FILE,SSL_R_BAD_SSL_FILETYPE);
531 goto end;
532 }
533
534 if (x == NULL)
535 {
536 SSLerr(SSL_F_SSL_CTX_USE_CERTIFICATE_FILE,j);
537 goto end;
538 }
539
540 ret=SSL_CTX_use_certificate(ctx,x);
541end:
542 if (x != NULL) X509_free(x);
543 if (in != NULL) BIO_free(in);
544 return(ret);
545 }
546#endif
547
548int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, unsigned char *d)
549 {
550 X509 *x;
551 int ret;
552
553 x=d2i_X509(NULL,&d,(long)len);
554 if (x == NULL)
555 {
556 SSLerr(SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1,ERR_R_ASN1_LIB);
557 return(0);
558 }
559
560 ret=SSL_CTX_use_certificate(ctx,x);
561 X509_free(x);
562 return(ret);
563 }
564
565#ifndef OPENSSL_NO_RSA
566int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa)
567 {
568 int ret;
569 EVP_PKEY *pkey;
570
571 if (rsa == NULL)
572 {
573 SSLerr(SSL_F_SSL_CTX_USE_RSAPRIVATEKEY,ERR_R_PASSED_NULL_PARAMETER);
574 return(0);
575 }
576 if (!ssl_cert_inst(&ctx->cert))
577 {
578 SSLerr(SSL_F_SSL_CTX_USE_RSAPRIVATEKEY,ERR_R_MALLOC_FAILURE);
579 return(0);
580 }
581 if ((pkey=EVP_PKEY_new()) == NULL)
582 {
583 SSLerr(SSL_F_SSL_CTX_USE_RSAPRIVATEKEY,ERR_R_EVP_LIB);
584 return(0);
585 }
586
587 RSA_up_ref(rsa);
588 EVP_PKEY_assign_RSA(pkey,rsa);
589
590 ret=ssl_set_pkey(ctx->cert, pkey);
591 EVP_PKEY_free(pkey);
592 return(ret);
593 }
594
595#ifndef OPENSSL_NO_STDIO
596int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, int type)
597 {
598 int j,ret=0;
599 BIO *in;
600 RSA *rsa=NULL;
601
602 in=BIO_new(BIO_s_file_internal());
603 if (in == NULL)
604 {
605 SSLerr(SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE,ERR_R_BUF_LIB);
606 goto end;
607 }
608
609 if (BIO_read_filename(in,file) <= 0)
610 {
611 SSLerr(SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE,ERR_R_SYS_LIB);
612 goto end;
613 }
614 if (type == SSL_FILETYPE_ASN1)
615 {
616 j=ERR_R_ASN1_LIB;
617 rsa=d2i_RSAPrivateKey_bio(in,NULL);
618 }
619 else if (type == SSL_FILETYPE_PEM)
620 {
621 j=ERR_R_PEM_LIB;
622 rsa=PEM_read_bio_RSAPrivateKey(in,NULL,
623 ctx->default_passwd_callback,ctx->default_passwd_callback_userdata);
624 }
625 else
626 {
627 SSLerr(SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE,SSL_R_BAD_SSL_FILETYPE);
628 goto end;
629 }
630 if (rsa == NULL)
631 {
632 SSLerr(SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE,j);
633 goto end;
634 }
635 ret=SSL_CTX_use_RSAPrivateKey(ctx,rsa);
636 RSA_free(rsa);
637end:
638 if (in != NULL) BIO_free(in);
639 return(ret);
640 }
641#endif
642
643int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, unsigned char *d, long len)
644 {
645 int ret;
646 const unsigned char *p;
647 RSA *rsa;
648
649 p=d;
650 if ((rsa=d2i_RSAPrivateKey(NULL,&p,(long)len)) == NULL)
651 {
652 SSLerr(SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1,ERR_R_ASN1_LIB);
653 return(0);
654 }
655
656 ret=SSL_CTX_use_RSAPrivateKey(ctx,rsa);
657 RSA_free(rsa);
658 return(ret);
659 }
660#endif /* !OPENSSL_NO_RSA */
661
662int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey)
663 {
664 if (pkey == NULL)
665 {
666 SSLerr(SSL_F_SSL_CTX_USE_PRIVATEKEY,ERR_R_PASSED_NULL_PARAMETER);
667 return(0);
668 }
669 if (!ssl_cert_inst(&ctx->cert))
670 {
671 SSLerr(SSL_F_SSL_CTX_USE_PRIVATEKEY,ERR_R_MALLOC_FAILURE);
672 return(0);
673 }
674 return(ssl_set_pkey(ctx->cert,pkey));
675 }
676
677#ifndef OPENSSL_NO_STDIO
678int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type)
679 {
680 int j,ret=0;
681 BIO *in;
682 EVP_PKEY *pkey=NULL;
683
684 in=BIO_new(BIO_s_file_internal());
685 if (in == NULL)
686 {
687 SSLerr(SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE,ERR_R_BUF_LIB);
688 goto end;
689 }
690
691 if (BIO_read_filename(in,file) <= 0)
692 {
693 SSLerr(SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE,ERR_R_SYS_LIB);
694 goto end;
695 }
696 if (type == SSL_FILETYPE_PEM)
697 {
698 j=ERR_R_PEM_LIB;
699 pkey=PEM_read_bio_PrivateKey(in,NULL,
700 ctx->default_passwd_callback,ctx->default_passwd_callback_userdata);
701 }
702 else
703 {
704 SSLerr(SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE,SSL_R_BAD_SSL_FILETYPE);
705 goto end;
706 }
707 if (pkey == NULL)
708 {
709 SSLerr(SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE,j);
710 goto end;
711 }
712 ret=SSL_CTX_use_PrivateKey(ctx,pkey);
713 EVP_PKEY_free(pkey);
714end:
715 if (in != NULL) BIO_free(in);
716 return(ret);
717 }
718#endif
719
720int SSL_CTX_use_PrivateKey_ASN1(int type, SSL_CTX *ctx, unsigned char *d,
721 long len)
722 {
723 int ret;
724 unsigned char *p;
725 EVP_PKEY *pkey;
726
727 p=d;
728 if ((pkey=d2i_PrivateKey(type,NULL,&p,(long)len)) == NULL)
729 {
730 SSLerr(SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1,ERR_R_ASN1_LIB);
731 return(0);
732 }
733
734 ret=SSL_CTX_use_PrivateKey(ctx,pkey);
735 EVP_PKEY_free(pkey);
736 return(ret);
737 }
738
739
740#ifndef OPENSSL_NO_STDIO
741/* Read a file that contains our certificate in "PEM" format,
742 * possibly followed by a sequence of CA certificates that should be
743 * sent to the peer in the Certificate message.
744 */
745int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file)
746 {
747 BIO *in;
748 int ret=0;
749 X509 *x=NULL;
750
751 in=BIO_new(BIO_s_file_internal());
752 if (in == NULL)
753 {
754 SSLerr(SSL_F_SSL_CTX_USE_CERTIFICATE_CHAIN_FILE,ERR_R_BUF_LIB);
755 goto end;
756 }
757
758 if (BIO_read_filename(in,file) <= 0)
759 {
760 SSLerr(SSL_F_SSL_CTX_USE_CERTIFICATE_CHAIN_FILE,ERR_R_SYS_LIB);
761 goto end;
762 }
763
764 x=PEM_read_bio_X509(in,NULL,ctx->default_passwd_callback,ctx->default_passwd_callback_userdata);
765 if (x == NULL)
766 {
767 SSLerr(SSL_F_SSL_CTX_USE_CERTIFICATE_CHAIN_FILE,ERR_R_PEM_LIB);
768 goto end;
769 }
770
771 ret=SSL_CTX_use_certificate(ctx,x);
772 if (ERR_peek_error() != 0)
773 ret = 0; /* Key/certificate mismatch doesn't imply ret==0 ... */
774 if (ret)
775 {
776 /* If we could set up our certificate, now proceed to
777 * the CA certificates.
778 */
779 X509 *ca;
780 int r;
781 unsigned long err;
782
783 if (ctx->extra_certs != NULL)
784 {
785 sk_X509_pop_free(ctx->extra_certs, X509_free);
786 ctx->extra_certs = NULL;
787 }
788
789 while ((ca = PEM_read_bio_X509(in,NULL,ctx->default_passwd_callback,ctx->default_passwd_callback_userdata))
790 != NULL)
791 {
792 r = SSL_CTX_add_extra_chain_cert(ctx, ca);
793 if (!r)
794 {
795 X509_free(ca);
796 ret = 0;
797 goto end;
798 }
799 /* Note that we must not free r if it was successfully
800 * added to the chain (while we must free the main
801 * certificate, since its reference count is increased
802 * by SSL_CTX_use_certificate). */
803 }
804 /* When the while loop ends, it's usually just EOF. */
805 err = ERR_peek_last_error();
806 if (ERR_GET_LIB(err) == ERR_LIB_PEM && ERR_GET_REASON(err) == PEM_R_NO_START_LINE)
807 ERR_clear_error();
808 else
809 ret = 0; /* some real error */
810 }
811
812end:
813 if (x != NULL) X509_free(x);
814 if (in != NULL) BIO_free(in);
815 return(ret);
816 }
817#endif
diff --git a/src/lib/libssl/ssl_sess.c b/src/lib/libssl/ssl_sess.c
new file mode 100644
index 0000000000..5f12aa361c
--- /dev/null
+++ b/src/lib/libssl/ssl_sess.c
@@ -0,0 +1,755 @@
1/* ssl/ssl_sess.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include <openssl/lhash.h>
61#include <openssl/rand.h>
62#include "ssl_locl.h"
63
64static void SSL_SESSION_list_remove(SSL_CTX *ctx, SSL_SESSION *s);
65static void SSL_SESSION_list_add(SSL_CTX *ctx,SSL_SESSION *s);
66static int remove_session_lock(SSL_CTX *ctx, SSL_SESSION *c, int lck);
67
68SSL_SESSION *SSL_get_session(const SSL *ssl)
69/* aka SSL_get0_session; gets 0 objects, just returns a copy of the pointer */
70 {
71 return(ssl->session);
72 }
73
74SSL_SESSION *SSL_get1_session(SSL *ssl)
75/* variant of SSL_get_session: caller really gets something */
76 {
77 SSL_SESSION *sess;
78 /* Need to lock this all up rather than just use CRYPTO_add so that
79 * somebody doesn't free ssl->session between when we check it's
80 * non-null and when we up the reference count. */
81 CRYPTO_w_lock(CRYPTO_LOCK_SSL_SESSION);
82 sess = ssl->session;
83 if(sess)
84 sess->references++;
85 CRYPTO_w_unlock(CRYPTO_LOCK_SSL_SESSION);
86 return(sess);
87 }
88
89int SSL_SESSION_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
90 CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func)
91 {
92 return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_SESSION, argl, argp,
93 new_func, dup_func, free_func);
94 }
95
96int SSL_SESSION_set_ex_data(SSL_SESSION *s, int idx, void *arg)
97 {
98 return(CRYPTO_set_ex_data(&s->ex_data,idx,arg));
99 }
100
101void *SSL_SESSION_get_ex_data(const SSL_SESSION *s, int idx)
102 {
103 return(CRYPTO_get_ex_data(&s->ex_data,idx));
104 }
105
106SSL_SESSION *SSL_SESSION_new(void)
107 {
108 SSL_SESSION *ss;
109
110 ss=(SSL_SESSION *)OPENSSL_malloc(sizeof(SSL_SESSION));
111 if (ss == NULL)
112 {
113 SSLerr(SSL_F_SSL_SESSION_NEW,ERR_R_MALLOC_FAILURE);
114 return(0);
115 }
116 memset(ss,0,sizeof(SSL_SESSION));
117
118 ss->verify_result = 1; /* avoid 0 (= X509_V_OK) just in case */
119 ss->references=1;
120 ss->timeout=60*5+4; /* 5 minute timeout by default */
121 ss->time=time(NULL);
122 ss->prev=NULL;
123 ss->next=NULL;
124 ss->compress_meth=0;
125 CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL_SESSION, ss, &ss->ex_data);
126 return(ss);
127 }
128
129/* Even with SSLv2, we have 16 bytes (128 bits) of session ID space. SSLv3/TLSv1
130 * has 32 bytes (256 bits). As such, filling the ID with random gunk repeatedly
131 * until we have no conflict is going to complete in one iteration pretty much
132 * "most" of the time (btw: understatement). So, if it takes us 10 iterations
133 * and we still can't avoid a conflict - well that's a reasonable point to call
134 * it quits. Either the RAND code is broken or someone is trying to open roughly
135 * very close to 2^128 (or 2^256) SSL sessions to our server. How you might
136 * store that many sessions is perhaps a more interesting question ... */
137
138#define MAX_SESS_ID_ATTEMPTS 10
139static int def_generate_session_id(const SSL *ssl, unsigned char *id,
140 unsigned int *id_len)
141{
142 unsigned int retry = 0;
143 do
144 if(RAND_pseudo_bytes(id, *id_len) <= 0)
145 return 0;
146 while(SSL_has_matching_session_id(ssl, id, *id_len) &&
147 (++retry < MAX_SESS_ID_ATTEMPTS));
148 if(retry < MAX_SESS_ID_ATTEMPTS)
149 return 1;
150 /* else - woops a session_id match */
151 /* XXX We should also check the external cache --
152 * but the probability of a collision is negligible, and
153 * we could not prevent the concurrent creation of sessions
154 * with identical IDs since we currently don't have means
155 * to atomically check whether a session ID already exists
156 * and make a reservation for it if it does not
157 * (this problem applies to the internal cache as well).
158 */
159 return 0;
160}
161
162int ssl_get_new_session(SSL *s, int session)
163 {
164 /* This gets used by clients and servers. */
165
166 unsigned int tmp;
167 SSL_SESSION *ss=NULL;
168 GEN_SESSION_CB cb = def_generate_session_id;
169
170 if ((ss=SSL_SESSION_new()) == NULL) return(0);
171
172 /* If the context has a default timeout, use it */
173 if (s->ctx->session_timeout == 0)
174 ss->timeout=SSL_get_default_timeout(s);
175 else
176 ss->timeout=s->ctx->session_timeout;
177
178 if (s->session != NULL)
179 {
180 SSL_SESSION_free(s->session);
181 s->session=NULL;
182 }
183
184 if (session)
185 {
186 if (s->version == SSL2_VERSION)
187 {
188 ss->ssl_version=SSL2_VERSION;
189 ss->session_id_length=SSL2_SSL_SESSION_ID_LENGTH;
190 }
191 else if (s->version == SSL3_VERSION)
192 {
193 ss->ssl_version=SSL3_VERSION;
194 ss->session_id_length=SSL3_SSL_SESSION_ID_LENGTH;
195 }
196 else if (s->version == TLS1_VERSION)
197 {
198 ss->ssl_version=TLS1_VERSION;
199 ss->session_id_length=SSL3_SSL_SESSION_ID_LENGTH;
200 }
201 else
202 {
203 SSLerr(SSL_F_SSL_GET_NEW_SESSION,SSL_R_UNSUPPORTED_SSL_VERSION);
204 SSL_SESSION_free(ss);
205 return(0);
206 }
207 /* Choose which callback will set the session ID */
208 CRYPTO_r_lock(CRYPTO_LOCK_SSL_CTX);
209 if(s->generate_session_id)
210 cb = s->generate_session_id;
211 else if(s->ctx->generate_session_id)
212 cb = s->ctx->generate_session_id;
213 CRYPTO_r_unlock(CRYPTO_LOCK_SSL_CTX);
214 /* Choose a session ID */
215 tmp = ss->session_id_length;
216 if(!cb(s, ss->session_id, &tmp))
217 {
218 /* The callback failed */
219 SSLerr(SSL_F_SSL_GET_NEW_SESSION,
220 SSL_R_SSL_SESSION_ID_CALLBACK_FAILED);
221 SSL_SESSION_free(ss);
222 return(0);
223 }
224 /* Don't allow the callback to set the session length to zero.
225 * nor set it higher than it was. */
226 if(!tmp || (tmp > ss->session_id_length))
227 {
228 /* The callback set an illegal length */
229 SSLerr(SSL_F_SSL_GET_NEW_SESSION,
230 SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH);
231 SSL_SESSION_free(ss);
232 return(0);
233 }
234 /* If the session length was shrunk and we're SSLv2, pad it */
235 if((tmp < ss->session_id_length) && (s->version == SSL2_VERSION))
236 memset(ss->session_id + tmp, 0, ss->session_id_length - tmp);
237 else
238 ss->session_id_length = tmp;
239 /* Finally, check for a conflict */
240 if(SSL_has_matching_session_id(s, ss->session_id,
241 ss->session_id_length))
242 {
243 SSLerr(SSL_F_SSL_GET_NEW_SESSION,
244 SSL_R_SSL_SESSION_ID_CONFLICT);
245 SSL_SESSION_free(ss);
246 return(0);
247 }
248 }
249 else
250 {
251 ss->session_id_length=0;
252 }
253
254 if (s->sid_ctx_length > sizeof ss->sid_ctx)
255 {
256 SSLerr(SSL_F_SSL_GET_NEW_SESSION, ERR_R_INTERNAL_ERROR);
257 SSL_SESSION_free(ss);
258 return 0;
259 }
260 memcpy(ss->sid_ctx,s->sid_ctx,s->sid_ctx_length);
261 ss->sid_ctx_length=s->sid_ctx_length;
262 s->session=ss;
263 ss->ssl_version=s->version;
264 ss->verify_result = X509_V_OK;
265
266 return(1);
267 }
268
269int ssl_get_prev_session(SSL *s, unsigned char *session_id, int len)
270 {
271 /* This is used only by servers. */
272
273 SSL_SESSION *ret=NULL,data;
274 int fatal = 0;
275
276 data.ssl_version=s->version;
277 data.session_id_length=len;
278 if (len > SSL_MAX_SSL_SESSION_ID_LENGTH)
279 goto err;
280 memcpy(data.session_id,session_id,len);
281
282 if (!(s->ctx->session_cache_mode & SSL_SESS_CACHE_NO_INTERNAL_LOOKUP))
283 {
284 CRYPTO_r_lock(CRYPTO_LOCK_SSL_CTX);
285 ret=(SSL_SESSION *)lh_retrieve(s->ctx->sessions,&data);
286 if (ret != NULL)
287 /* don't allow other threads to steal it: */
288 CRYPTO_add(&ret->references,1,CRYPTO_LOCK_SSL_SESSION);
289 CRYPTO_r_unlock(CRYPTO_LOCK_SSL_CTX);
290 }
291
292 if (ret == NULL)
293 {
294 int copy=1;
295
296 s->ctx->stats.sess_miss++;
297 ret=NULL;
298 if (s->ctx->get_session_cb != NULL
299 && (ret=s->ctx->get_session_cb(s,session_id,len,&copy))
300 != NULL)
301 {
302 s->ctx->stats.sess_cb_hit++;
303
304 /* Increment reference count now if the session callback
305 * asks us to do so (note that if the session structures
306 * returned by the callback are shared between threads,
307 * it must handle the reference count itself [i.e. copy == 0],
308 * or things won't be thread-safe). */
309 if (copy)
310 CRYPTO_add(&ret->references,1,CRYPTO_LOCK_SSL_SESSION);
311
312 /* Add the externally cached session to the internal
313 * cache as well if and only if we are supposed to. */
314 if(!(s->ctx->session_cache_mode & SSL_SESS_CACHE_NO_INTERNAL_STORE))
315 /* The following should not return 1, otherwise,
316 * things are very strange */
317 SSL_CTX_add_session(s->ctx,ret);
318 }
319 if (ret == NULL)
320 goto err;
321 }
322
323 /* Now ret is non-NULL, and we own one of its reference counts. */
324
325 if((s->verify_mode&SSL_VERIFY_PEER)
326 && (!s->sid_ctx_length || ret->sid_ctx_length != s->sid_ctx_length
327 || memcmp(ret->sid_ctx,s->sid_ctx,ret->sid_ctx_length)))
328 {
329 /* We've found the session named by the client, but we don't
330 * want to use it in this context. */
331
332 if (s->sid_ctx_length == 0)
333 {
334 /* application should have used SSL[_CTX]_set_session_id_context
335 * -- we could tolerate this and just pretend we never heard
336 * of this session, but then applications could effectively
337 * disable the session cache by accident without anyone noticing */
338
339 SSLerr(SSL_F_SSL_GET_PREV_SESSION,SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED);
340 fatal = 1;
341 goto err;
342 }
343 else
344 {
345#if 0 /* The client cannot always know when a session is not appropriate,
346 * so we shouldn't generate an error message. */
347
348 SSLerr(SSL_F_SSL_GET_PREV_SESSION,SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT);
349#endif
350 goto err; /* treat like cache miss */
351 }
352 }
353
354 if (ret->cipher == NULL)
355 {
356 unsigned char buf[5],*p;
357 unsigned long l;
358
359 p=buf;
360 l=ret->cipher_id;
361 l2n(l,p);
362 if ((ret->ssl_version>>8) == SSL3_VERSION_MAJOR)
363 ret->cipher=ssl_get_cipher_by_char(s,&(buf[2]));
364 else
365 ret->cipher=ssl_get_cipher_by_char(s,&(buf[1]));
366 if (ret->cipher == NULL)
367 goto err;
368 }
369
370
371#if 0 /* This is way too late. */
372
373 /* If a thread got the session, then 'swaped', and another got
374 * it and then due to a time-out decided to 'OPENSSL_free' it we could
375 * be in trouble. So I'll increment it now, then double decrement
376 * later - am I speaking rubbish?. */
377 CRYPTO_add(&ret->references,1,CRYPTO_LOCK_SSL_SESSION);
378#endif
379
380 if ((long)(ret->time+ret->timeout) < (long)time(NULL)) /* timeout */
381 {
382 s->ctx->stats.sess_timeout++;
383 /* remove it from the cache */
384 SSL_CTX_remove_session(s->ctx,ret);
385 goto err;
386 }
387
388 s->ctx->stats.sess_hit++;
389
390 /* ret->time=time(NULL); */ /* rezero timeout? */
391 /* again, just leave the session
392 * if it is the same session, we have just incremented and
393 * then decremented the reference count :-) */
394 if (s->session != NULL)
395 SSL_SESSION_free(s->session);
396 s->session=ret;
397 s->verify_result = s->session->verify_result;
398 return(1);
399
400 err:
401 if (ret != NULL)
402 SSL_SESSION_free(ret);
403 if (fatal)
404 return -1;
405 else
406 return 0;
407 }
408
409int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *c)
410 {
411 int ret=0;
412 SSL_SESSION *s;
413
414 /* add just 1 reference count for the SSL_CTX's session cache
415 * even though it has two ways of access: each session is in a
416 * doubly linked list and an lhash */
417 CRYPTO_add(&c->references,1,CRYPTO_LOCK_SSL_SESSION);
418 /* if session c is in already in cache, we take back the increment later */
419
420 CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX);
421 s=(SSL_SESSION *)lh_insert(ctx->sessions,c);
422
423 /* s != NULL iff we already had a session with the given PID.
424 * In this case, s == c should hold (then we did not really modify
425 * ctx->sessions), or we're in trouble. */
426 if (s != NULL && s != c)
427 {
428 /* We *are* in trouble ... */
429 SSL_SESSION_list_remove(ctx,s);
430 SSL_SESSION_free(s);
431 /* ... so pretend the other session did not exist in cache
432 * (we cannot handle two SSL_SESSION structures with identical
433 * session ID in the same cache, which could happen e.g. when
434 * two threads concurrently obtain the same session from an external
435 * cache) */
436 s = NULL;
437 }
438
439 /* Put at the head of the queue unless it is already in the cache */
440 if (s == NULL)
441 SSL_SESSION_list_add(ctx,c);
442
443 if (s != NULL)
444 {
445 /* existing cache entry -- decrement previously incremented reference
446 * count because it already takes into account the cache */
447
448 SSL_SESSION_free(s); /* s == c */
449 ret=0;
450 }
451 else
452 {
453 /* new cache entry -- remove old ones if cache has become too large */
454
455 ret=1;
456
457 if (SSL_CTX_sess_get_cache_size(ctx) > 0)
458 {
459 while (SSL_CTX_sess_number(ctx) >
460 SSL_CTX_sess_get_cache_size(ctx))
461 {
462 if (!remove_session_lock(ctx,
463 ctx->session_cache_tail, 0))
464 break;
465 else
466 ctx->stats.sess_cache_full++;
467 }
468 }
469 }
470 CRYPTO_w_unlock(CRYPTO_LOCK_SSL_CTX);
471 return(ret);
472 }
473
474int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *c)
475{
476 return remove_session_lock(ctx, c, 1);
477}
478
479static int remove_session_lock(SSL_CTX *ctx, SSL_SESSION *c, int lck)
480 {
481 SSL_SESSION *r;
482 int ret=0;
483
484 if ((c != NULL) && (c->session_id_length != 0))
485 {
486 if(lck) CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX);
487 if ((r = (SSL_SESSION *)lh_retrieve(ctx->sessions,c)) == c)
488 {
489 ret=1;
490 r=(SSL_SESSION *)lh_delete(ctx->sessions,c);
491 SSL_SESSION_list_remove(ctx,c);
492 }
493
494 if(lck) CRYPTO_w_unlock(CRYPTO_LOCK_SSL_CTX);
495
496 if (ret)
497 {
498 r->not_resumable=1;
499 if (ctx->remove_session_cb != NULL)
500 ctx->remove_session_cb(ctx,r);
501 SSL_SESSION_free(r);
502 }
503 }
504 else
505 ret=0;
506 return(ret);
507 }
508
509void SSL_SESSION_free(SSL_SESSION *ss)
510 {
511 int i;
512
513 if(ss == NULL)
514 return;
515
516 i=CRYPTO_add(&ss->references,-1,CRYPTO_LOCK_SSL_SESSION);
517#ifdef REF_PRINT
518 REF_PRINT("SSL_SESSION",ss);
519#endif
520 if (i > 0) return;
521#ifdef REF_CHECK
522 if (i < 0)
523 {
524 fprintf(stderr,"SSL_SESSION_free, bad reference count\n");
525 abort(); /* ok */
526 }
527#endif
528
529 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_SSL_SESSION, ss, &ss->ex_data);
530
531 OPENSSL_cleanse(ss->key_arg,sizeof ss->key_arg);
532 OPENSSL_cleanse(ss->master_key,sizeof ss->master_key);
533 OPENSSL_cleanse(ss->session_id,sizeof ss->session_id);
534 if (ss->sess_cert != NULL) ssl_sess_cert_free(ss->sess_cert);
535 if (ss->peer != NULL) X509_free(ss->peer);
536 if (ss->ciphers != NULL) sk_SSL_CIPHER_free(ss->ciphers);
537 OPENSSL_cleanse(ss,sizeof(*ss));
538 OPENSSL_free(ss);
539 }
540
541int SSL_set_session(SSL *s, SSL_SESSION *session)
542 {
543 int ret=0;
544 SSL_METHOD *meth;
545
546 if (session != NULL)
547 {
548 meth=s->ctx->method->get_ssl_method(session->ssl_version);
549 if (meth == NULL)
550 meth=s->method->get_ssl_method(session->ssl_version);
551 if (meth == NULL)
552 {
553 SSLerr(SSL_F_SSL_SET_SESSION,SSL_R_UNABLE_TO_FIND_SSL_METHOD);
554 return(0);
555 }
556
557 if (meth != s->method)
558 {
559 if (!SSL_set_ssl_method(s,meth))
560 return(0);
561 if (s->ctx->session_timeout == 0)
562 session->timeout=SSL_get_default_timeout(s);
563 else
564 session->timeout=s->ctx->session_timeout;
565 }
566
567#ifndef OPENSSL_NO_KRB5
568 if (s->kssl_ctx && !s->kssl_ctx->client_princ &&
569 session->krb5_client_princ_len > 0)
570 {
571 s->kssl_ctx->client_princ = (char *)malloc(session->krb5_client_princ_len + 1);
572 memcpy(s->kssl_ctx->client_princ,session->krb5_client_princ,
573 session->krb5_client_princ_len);
574 s->kssl_ctx->client_princ[session->krb5_client_princ_len] = '\0';
575 }
576#endif /* OPENSSL_NO_KRB5 */
577
578 /* CRYPTO_w_lock(CRYPTO_LOCK_SSL);*/
579 CRYPTO_add(&session->references,1,CRYPTO_LOCK_SSL_SESSION);
580 if (s->session != NULL)
581 SSL_SESSION_free(s->session);
582 s->session=session;
583 s->verify_result = s->session->verify_result;
584 /* CRYPTO_w_unlock(CRYPTO_LOCK_SSL);*/
585 ret=1;
586 }
587 else
588 {
589 if (s->session != NULL)
590 {
591 SSL_SESSION_free(s->session);
592 s->session=NULL;
593 }
594
595 meth=s->ctx->method;
596 if (meth != s->method)
597 {
598 if (!SSL_set_ssl_method(s,meth))
599 return(0);
600 }
601 ret=1;
602 }
603 return(ret);
604 }
605
606long SSL_SESSION_set_timeout(SSL_SESSION *s, long t)
607 {
608 if (s == NULL) return(0);
609 s->timeout=t;
610 return(1);
611 }
612
613long SSL_SESSION_get_timeout(const SSL_SESSION *s)
614 {
615 if (s == NULL) return(0);
616 return(s->timeout);
617 }
618
619long SSL_SESSION_get_time(const SSL_SESSION *s)
620 {
621 if (s == NULL) return(0);
622 return(s->time);
623 }
624
625long SSL_SESSION_set_time(SSL_SESSION *s, long t)
626 {
627 if (s == NULL) return(0);
628 s->time=t;
629 return(t);
630 }
631
632long SSL_CTX_set_timeout(SSL_CTX *s, long t)
633 {
634 long l;
635 if (s == NULL) return(0);
636 l=s->session_timeout;
637 s->session_timeout=t;
638 return(l);
639 }
640
641long SSL_CTX_get_timeout(const SSL_CTX *s)
642 {
643 if (s == NULL) return(0);
644 return(s->session_timeout);
645 }
646
647typedef struct timeout_param_st
648 {
649 SSL_CTX *ctx;
650 long time;
651 LHASH *cache;
652 } TIMEOUT_PARAM;
653
654static void timeout(SSL_SESSION *s, TIMEOUT_PARAM *p)
655 {
656 if ((p->time == 0) || (p->time > (s->time+s->timeout))) /* timeout */
657 {
658 /* The reason we don't call SSL_CTX_remove_session() is to
659 * save on locking overhead */
660 lh_delete(p->cache,s);
661 SSL_SESSION_list_remove(p->ctx,s);
662 s->not_resumable=1;
663 if (p->ctx->remove_session_cb != NULL)
664 p->ctx->remove_session_cb(p->ctx,s);
665 SSL_SESSION_free(s);
666 }
667 }
668
669static IMPLEMENT_LHASH_DOALL_ARG_FN(timeout, SSL_SESSION *, TIMEOUT_PARAM *)
670
671void SSL_CTX_flush_sessions(SSL_CTX *s, long t)
672 {
673 unsigned long i;
674 TIMEOUT_PARAM tp;
675
676 tp.ctx=s;
677 tp.cache=s->sessions;
678 if (tp.cache == NULL) return;
679 tp.time=t;
680 CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX);
681 i=tp.cache->down_load;
682 tp.cache->down_load=0;
683 lh_doall_arg(tp.cache, LHASH_DOALL_ARG_FN(timeout), &tp);
684 tp.cache->down_load=i;
685 CRYPTO_w_unlock(CRYPTO_LOCK_SSL_CTX);
686 }
687
688int ssl_clear_bad_session(SSL *s)
689 {
690 if ( (s->session != NULL) &&
691 !(s->shutdown & SSL_SENT_SHUTDOWN) &&
692 !(SSL_in_init(s) || SSL_in_before(s)))
693 {
694 SSL_CTX_remove_session(s->ctx,s->session);
695 return(1);
696 }
697 else
698 return(0);
699 }
700
701/* locked by SSL_CTX in the calling function */
702static void SSL_SESSION_list_remove(SSL_CTX *ctx, SSL_SESSION *s)
703 {
704 if ((s->next == NULL) || (s->prev == NULL)) return;
705
706 if (s->next == (SSL_SESSION *)&(ctx->session_cache_tail))
707 { /* last element in list */
708 if (s->prev == (SSL_SESSION *)&(ctx->session_cache_head))
709 { /* only one element in list */
710 ctx->session_cache_head=NULL;
711 ctx->session_cache_tail=NULL;
712 }
713 else
714 {
715 ctx->session_cache_tail=s->prev;
716 s->prev->next=(SSL_SESSION *)&(ctx->session_cache_tail);
717 }
718 }
719 else
720 {
721 if (s->prev == (SSL_SESSION *)&(ctx->session_cache_head))
722 { /* first element in list */
723 ctx->session_cache_head=s->next;
724 s->next->prev=(SSL_SESSION *)&(ctx->session_cache_head);
725 }
726 else
727 { /* middle of list */
728 s->next->prev=s->prev;
729 s->prev->next=s->next;
730 }
731 }
732 s->prev=s->next=NULL;
733 }
734
735static void SSL_SESSION_list_add(SSL_CTX *ctx, SSL_SESSION *s)
736 {
737 if ((s->next != NULL) && (s->prev != NULL))
738 SSL_SESSION_list_remove(ctx,s);
739
740 if (ctx->session_cache_head == NULL)
741 {
742 ctx->session_cache_head=s;
743 ctx->session_cache_tail=s;
744 s->prev=(SSL_SESSION *)&(ctx->session_cache_head);
745 s->next=(SSL_SESSION *)&(ctx->session_cache_tail);
746 }
747 else
748 {
749 s->next=ctx->session_cache_head;
750 s->next->prev=s;
751 s->prev=(SSL_SESSION *)&(ctx->session_cache_head);
752 ctx->session_cache_head=s;
753 }
754 }
755
diff --git a/src/lib/libssl/ssl_stat.c b/src/lib/libssl/ssl_stat.c
new file mode 100644
index 0000000000..b16d253081
--- /dev/null
+++ b/src/lib/libssl/ssl_stat.c
@@ -0,0 +1,502 @@
1/* ssl/ssl_stat.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include "ssl_locl.h"
61
62const char *SSL_state_string_long(const SSL *s)
63 {
64 const char *str;
65
66 switch (s->state)
67 {
68case SSL_ST_BEFORE: str="before SSL initialization"; break;
69case SSL_ST_ACCEPT: str="before accept initialization"; break;
70case SSL_ST_CONNECT: str="before connect initialization"; break;
71case SSL_ST_OK: str="SSL negotiation finished successfully"; break;
72case SSL_ST_RENEGOTIATE: str="SSL renegotiate ciphers"; break;
73case SSL_ST_BEFORE|SSL_ST_CONNECT: str="before/connect initialization"; break;
74case SSL_ST_OK|SSL_ST_CONNECT: str="ok/connect SSL initialization"; break;
75case SSL_ST_BEFORE|SSL_ST_ACCEPT: str="before/accept initialization"; break;
76case SSL_ST_OK|SSL_ST_ACCEPT: str="ok/accept SSL initialization"; break;
77#ifndef OPENSSL_NO_SSL2
78case SSL2_ST_CLIENT_START_ENCRYPTION: str="SSLv2 client start encryption"; break;
79case SSL2_ST_SERVER_START_ENCRYPTION: str="SSLv2 server start encryption"; break;
80case SSL2_ST_SEND_CLIENT_HELLO_A: str="SSLv2 write client hello A"; break;
81case SSL2_ST_SEND_CLIENT_HELLO_B: str="SSLv2 write client hello B"; break;
82case SSL2_ST_GET_SERVER_HELLO_A: str="SSLv2 read server hello A"; break;
83case SSL2_ST_GET_SERVER_HELLO_B: str="SSLv2 read server hello B"; break;
84case SSL2_ST_SEND_CLIENT_MASTER_KEY_A: str="SSLv2 write client master key A"; break;
85case SSL2_ST_SEND_CLIENT_MASTER_KEY_B: str="SSLv2 write client master key B"; break;
86case SSL2_ST_SEND_CLIENT_FINISHED_A: str="SSLv2 write client finished A"; break;
87case SSL2_ST_SEND_CLIENT_FINISHED_B: str="SSLv2 write client finished B"; break;
88case SSL2_ST_SEND_CLIENT_CERTIFICATE_A: str="SSLv2 write client certificate A"; break;
89case SSL2_ST_SEND_CLIENT_CERTIFICATE_B: str="SSLv2 write client certificate B"; break;
90case SSL2_ST_SEND_CLIENT_CERTIFICATE_C: str="SSLv2 write client certificate C"; break;
91case SSL2_ST_SEND_CLIENT_CERTIFICATE_D: str="SSLv2 write client certificate D"; break;
92case SSL2_ST_GET_SERVER_VERIFY_A: str="SSLv2 read server verify A"; break;
93case SSL2_ST_GET_SERVER_VERIFY_B: str="SSLv2 read server verify B"; break;
94case SSL2_ST_GET_SERVER_FINISHED_A: str="SSLv2 read server finished A"; break;
95case SSL2_ST_GET_SERVER_FINISHED_B: str="SSLv2 read server finished B"; break;
96case SSL2_ST_GET_CLIENT_HELLO_A: str="SSLv2 read client hello A"; break;
97case SSL2_ST_GET_CLIENT_HELLO_B: str="SSLv2 read client hello B"; break;
98case SSL2_ST_GET_CLIENT_HELLO_C: str="SSLv2 read client hello C"; break;
99case SSL2_ST_SEND_SERVER_HELLO_A: str="SSLv2 write server hello A"; break;
100case SSL2_ST_SEND_SERVER_HELLO_B: str="SSLv2 write server hello B"; break;
101case SSL2_ST_GET_CLIENT_MASTER_KEY_A: str="SSLv2 read client master key A"; break;
102case SSL2_ST_GET_CLIENT_MASTER_KEY_B: str="SSLv2 read client master key B"; break;
103case SSL2_ST_SEND_SERVER_VERIFY_A: str="SSLv2 write server verify A"; break;
104case SSL2_ST_SEND_SERVER_VERIFY_B: str="SSLv2 write server verify B"; break;
105case SSL2_ST_SEND_SERVER_VERIFY_C: str="SSLv2 write server verify C"; break;
106case SSL2_ST_GET_CLIENT_FINISHED_A: str="SSLv2 read client finished A"; break;
107case SSL2_ST_GET_CLIENT_FINISHED_B: str="SSLv2 read client finished B"; break;
108case SSL2_ST_SEND_SERVER_FINISHED_A: str="SSLv2 write server finished A"; break;
109case SSL2_ST_SEND_SERVER_FINISHED_B: str="SSLv2 write server finished B"; break;
110case SSL2_ST_SEND_REQUEST_CERTIFICATE_A: str="SSLv2 write request certificate A"; break;
111case SSL2_ST_SEND_REQUEST_CERTIFICATE_B: str="SSLv2 write request certificate B"; break;
112case SSL2_ST_SEND_REQUEST_CERTIFICATE_C: str="SSLv2 write request certificate C"; break;
113case SSL2_ST_SEND_REQUEST_CERTIFICATE_D: str="SSLv2 write request certificate D"; break;
114case SSL2_ST_X509_GET_SERVER_CERTIFICATE: str="SSLv2 X509 read server certificate"; break;
115case SSL2_ST_X509_GET_CLIENT_CERTIFICATE: str="SSLv2 X509 read client certificate"; break;
116#endif
117
118#ifndef OPENSSL_NO_SSL3
119/* SSLv3 additions */
120case SSL3_ST_CW_CLNT_HELLO_A: str="SSLv3 write client hello A"; break;
121case SSL3_ST_CW_CLNT_HELLO_B: str="SSLv3 write client hello B"; break;
122case SSL3_ST_CR_SRVR_HELLO_A: str="SSLv3 read server hello A"; break;
123case SSL3_ST_CR_SRVR_HELLO_B: str="SSLv3 read server hello B"; break;
124case SSL3_ST_CR_CERT_A: str="SSLv3 read server certificate A"; break;
125case SSL3_ST_CR_CERT_B: str="SSLv3 read server certificate B"; break;
126case SSL3_ST_CR_KEY_EXCH_A: str="SSLv3 read server key exchange A"; break;
127case SSL3_ST_CR_KEY_EXCH_B: str="SSLv3 read server key exchange B"; break;
128case SSL3_ST_CR_CERT_REQ_A: str="SSLv3 read server certificate request A"; break;
129case SSL3_ST_CR_CERT_REQ_B: str="SSLv3 read server certificate request B"; break;
130case SSL3_ST_CR_SRVR_DONE_A: str="SSLv3 read server done A"; break;
131case SSL3_ST_CR_SRVR_DONE_B: str="SSLv3 read server done B"; break;
132case SSL3_ST_CW_CERT_A: str="SSLv3 write client certificate A"; break;
133case SSL3_ST_CW_CERT_B: str="SSLv3 write client certificate B"; break;
134case SSL3_ST_CW_CERT_C: str="SSLv3 write client certificate C"; break;
135case SSL3_ST_CW_CERT_D: str="SSLv3 write client certificate D"; break;
136case SSL3_ST_CW_KEY_EXCH_A: str="SSLv3 write client key exchange A"; break;
137case SSL3_ST_CW_KEY_EXCH_B: str="SSLv3 write client key exchange B"; break;
138case SSL3_ST_CW_CERT_VRFY_A: str="SSLv3 write certificate verify A"; break;
139case SSL3_ST_CW_CERT_VRFY_B: str="SSLv3 write certificate verify B"; break;
140
141case SSL3_ST_CW_CHANGE_A:
142case SSL3_ST_SW_CHANGE_A: str="SSLv3 write change cipher spec A"; break;
143case SSL3_ST_CW_CHANGE_B:
144case SSL3_ST_SW_CHANGE_B: str="SSLv3 write change cipher spec B"; break;
145case SSL3_ST_CW_FINISHED_A:
146case SSL3_ST_SW_FINISHED_A: str="SSLv3 write finished A"; break;
147case SSL3_ST_CW_FINISHED_B:
148case SSL3_ST_SW_FINISHED_B: str="SSLv3 write finished B"; break;
149case SSL3_ST_CR_CHANGE_A:
150case SSL3_ST_SR_CHANGE_A: str="SSLv3 read change cipher spec A"; break;
151case SSL3_ST_CR_CHANGE_B:
152case SSL3_ST_SR_CHANGE_B: str="SSLv3 read change cipher spec B"; break;
153case SSL3_ST_CR_FINISHED_A:
154case SSL3_ST_SR_FINISHED_A: str="SSLv3 read finished A"; break;
155case SSL3_ST_CR_FINISHED_B:
156case SSL3_ST_SR_FINISHED_B: str="SSLv3 read finished B"; break;
157
158case SSL3_ST_CW_FLUSH:
159case SSL3_ST_SW_FLUSH: str="SSLv3 flush data"; break;
160
161case SSL3_ST_SR_CLNT_HELLO_A: str="SSLv3 read client hello A"; break;
162case SSL3_ST_SR_CLNT_HELLO_B: str="SSLv3 read client hello B"; break;
163case SSL3_ST_SR_CLNT_HELLO_C: str="SSLv3 read client hello C"; break;
164case SSL3_ST_SW_HELLO_REQ_A: str="SSLv3 write hello request A"; break;
165case SSL3_ST_SW_HELLO_REQ_B: str="SSLv3 write hello request B"; break;
166case SSL3_ST_SW_HELLO_REQ_C: str="SSLv3 write hello request C"; break;
167case SSL3_ST_SW_SRVR_HELLO_A: str="SSLv3 write server hello A"; break;
168case SSL3_ST_SW_SRVR_HELLO_B: str="SSLv3 write server hello B"; break;
169case SSL3_ST_SW_CERT_A: str="SSLv3 write certificate A"; break;
170case SSL3_ST_SW_CERT_B: str="SSLv3 write certificate B"; break;
171case SSL3_ST_SW_KEY_EXCH_A: str="SSLv3 write key exchange A"; break;
172case SSL3_ST_SW_KEY_EXCH_B: str="SSLv3 write key exchange B"; break;
173case SSL3_ST_SW_CERT_REQ_A: str="SSLv3 write certificate request A"; break;
174case SSL3_ST_SW_CERT_REQ_B: str="SSLv3 write certificate request B"; break;
175case SSL3_ST_SW_SRVR_DONE_A: str="SSLv3 write server done A"; break;
176case SSL3_ST_SW_SRVR_DONE_B: str="SSLv3 write server done B"; break;
177case SSL3_ST_SR_CERT_A: str="SSLv3 read client certificate A"; break;
178case SSL3_ST_SR_CERT_B: str="SSLv3 read client certificate B"; break;
179case SSL3_ST_SR_KEY_EXCH_A: str="SSLv3 read client key exchange A"; break;
180case SSL3_ST_SR_KEY_EXCH_B: str="SSLv3 read client key exchange B"; break;
181case SSL3_ST_SR_CERT_VRFY_A: str="SSLv3 read certificate verify A"; break;
182case SSL3_ST_SR_CERT_VRFY_B: str="SSLv3 read certificate verify B"; break;
183#endif
184
185#if !defined(OPENSSL_NO_SSL2) && !defined(OPENSSL_NO_SSL3)
186/* SSLv2/v3 compatibility states */
187/* client */
188case SSL23_ST_CW_CLNT_HELLO_A: str="SSLv2/v3 write client hello A"; break;
189case SSL23_ST_CW_CLNT_HELLO_B: str="SSLv2/v3 write client hello B"; break;
190case SSL23_ST_CR_SRVR_HELLO_A: str="SSLv2/v3 read server hello A"; break;
191case SSL23_ST_CR_SRVR_HELLO_B: str="SSLv2/v3 read server hello B"; break;
192/* server */
193case SSL23_ST_SR_CLNT_HELLO_A: str="SSLv2/v3 read client hello A"; break;
194case SSL23_ST_SR_CLNT_HELLO_B: str="SSLv2/v3 read client hello B"; break;
195#endif
196
197default: str="unknown state"; break;
198 }
199 return(str);
200 }
201
202const char *SSL_rstate_string_long(const SSL *s)
203 {
204 const char *str;
205
206 switch (s->rstate)
207 {
208 case SSL_ST_READ_HEADER: str="read header"; break;
209 case SSL_ST_READ_BODY: str="read body"; break;
210 case SSL_ST_READ_DONE: str="read done"; break;
211 default: str="unknown"; break;
212 }
213 return(str);
214 }
215
216const char *SSL_state_string(const SSL *s)
217 {
218 const char *str;
219
220 switch (s->state)
221 {
222case SSL_ST_BEFORE: str="PINIT "; break;
223case SSL_ST_ACCEPT: str="AINIT "; break;
224case SSL_ST_CONNECT: str="CINIT "; break;
225case SSL_ST_OK: str="SSLOK "; break;
226#ifndef OPENSSL_NO_SSL2
227case SSL2_ST_CLIENT_START_ENCRYPTION: str="2CSENC"; break;
228case SSL2_ST_SERVER_START_ENCRYPTION: str="2SSENC"; break;
229case SSL2_ST_SEND_CLIENT_HELLO_A: str="2SCH_A"; break;
230case SSL2_ST_SEND_CLIENT_HELLO_B: str="2SCH_B"; break;
231case SSL2_ST_GET_SERVER_HELLO_A: str="2GSH_A"; break;
232case SSL2_ST_GET_SERVER_HELLO_B: str="2GSH_B"; break;
233case SSL2_ST_SEND_CLIENT_MASTER_KEY_A: str="2SCMKA"; break;
234case SSL2_ST_SEND_CLIENT_MASTER_KEY_B: str="2SCMKB"; break;
235case SSL2_ST_SEND_CLIENT_FINISHED_A: str="2SCF_A"; break;
236case SSL2_ST_SEND_CLIENT_FINISHED_B: str="2SCF_B"; break;
237case SSL2_ST_SEND_CLIENT_CERTIFICATE_A: str="2SCC_A"; break;
238case SSL2_ST_SEND_CLIENT_CERTIFICATE_B: str="2SCC_B"; break;
239case SSL2_ST_SEND_CLIENT_CERTIFICATE_C: str="2SCC_C"; break;
240case SSL2_ST_SEND_CLIENT_CERTIFICATE_D: str="2SCC_D"; break;
241case SSL2_ST_GET_SERVER_VERIFY_A: str="2GSV_A"; break;
242case SSL2_ST_GET_SERVER_VERIFY_B: str="2GSV_B"; break;
243case SSL2_ST_GET_SERVER_FINISHED_A: str="2GSF_A"; break;
244case SSL2_ST_GET_SERVER_FINISHED_B: str="2GSF_B"; break;
245case SSL2_ST_GET_CLIENT_HELLO_A: str="2GCH_A"; break;
246case SSL2_ST_GET_CLIENT_HELLO_B: str="2GCH_B"; break;
247case SSL2_ST_GET_CLIENT_HELLO_C: str="2GCH_C"; break;
248case SSL2_ST_SEND_SERVER_HELLO_A: str="2SSH_A"; break;
249case SSL2_ST_SEND_SERVER_HELLO_B: str="2SSH_B"; break;
250case SSL2_ST_GET_CLIENT_MASTER_KEY_A: str="2GCMKA"; break;
251case SSL2_ST_GET_CLIENT_MASTER_KEY_B: str="2GCMKA"; break;
252case SSL2_ST_SEND_SERVER_VERIFY_A: str="2SSV_A"; break;
253case SSL2_ST_SEND_SERVER_VERIFY_B: str="2SSV_B"; break;
254case SSL2_ST_SEND_SERVER_VERIFY_C: str="2SSV_C"; break;
255case SSL2_ST_GET_CLIENT_FINISHED_A: str="2GCF_A"; break;
256case SSL2_ST_GET_CLIENT_FINISHED_B: str="2GCF_B"; break;
257case SSL2_ST_SEND_SERVER_FINISHED_A: str="2SSF_A"; break;
258case SSL2_ST_SEND_SERVER_FINISHED_B: str="2SSF_B"; break;
259case SSL2_ST_SEND_REQUEST_CERTIFICATE_A: str="2SRC_A"; break;
260case SSL2_ST_SEND_REQUEST_CERTIFICATE_B: str="2SRC_B"; break;
261case SSL2_ST_SEND_REQUEST_CERTIFICATE_C: str="2SRC_C"; break;
262case SSL2_ST_SEND_REQUEST_CERTIFICATE_D: str="2SRC_D"; break;
263case SSL2_ST_X509_GET_SERVER_CERTIFICATE: str="2X9GSC"; break;
264case SSL2_ST_X509_GET_CLIENT_CERTIFICATE: str="2X9GCC"; break;
265#endif
266
267#ifndef OPENSSL_NO_SSL3
268/* SSLv3 additions */
269case SSL3_ST_SW_FLUSH:
270case SSL3_ST_CW_FLUSH: str="3FLUSH"; break;
271case SSL3_ST_CW_CLNT_HELLO_A: str="3WCH_A"; break;
272case SSL3_ST_CW_CLNT_HELLO_B: str="3WCH_B"; break;
273case SSL3_ST_CR_SRVR_HELLO_A: str="3RSH_A"; break;
274case SSL3_ST_CR_SRVR_HELLO_B: str="3RSH_B"; break;
275case SSL3_ST_CR_CERT_A: str="3RSC_A"; break;
276case SSL3_ST_CR_CERT_B: str="3RSC_B"; break;
277case SSL3_ST_CR_KEY_EXCH_A: str="3RSKEA"; break;
278case SSL3_ST_CR_KEY_EXCH_B: str="3RSKEB"; break;
279case SSL3_ST_CR_CERT_REQ_A: str="3RCR_A"; break;
280case SSL3_ST_CR_CERT_REQ_B: str="3RCR_B"; break;
281case SSL3_ST_CR_SRVR_DONE_A: str="3RSD_A"; break;
282case SSL3_ST_CR_SRVR_DONE_B: str="3RSD_B"; break;
283case SSL3_ST_CW_CERT_A: str="3WCC_A"; break;
284case SSL3_ST_CW_CERT_B: str="3WCC_B"; break;
285case SSL3_ST_CW_CERT_C: str="3WCC_C"; break;
286case SSL3_ST_CW_CERT_D: str="3WCC_D"; break;
287case SSL3_ST_CW_KEY_EXCH_A: str="3WCKEA"; break;
288case SSL3_ST_CW_KEY_EXCH_B: str="3WCKEB"; break;
289case SSL3_ST_CW_CERT_VRFY_A: str="3WCV_A"; break;
290case SSL3_ST_CW_CERT_VRFY_B: str="3WCV_B"; break;
291
292case SSL3_ST_SW_CHANGE_A:
293case SSL3_ST_CW_CHANGE_A: str="3WCCSA"; break;
294case SSL3_ST_SW_CHANGE_B:
295case SSL3_ST_CW_CHANGE_B: str="3WCCSB"; break;
296case SSL3_ST_SW_FINISHED_A:
297case SSL3_ST_CW_FINISHED_A: str="3WFINA"; break;
298case SSL3_ST_SW_FINISHED_B:
299case SSL3_ST_CW_FINISHED_B: str="3WFINB"; break;
300case SSL3_ST_SR_CHANGE_A:
301case SSL3_ST_CR_CHANGE_A: str="3RCCSA"; break;
302case SSL3_ST_SR_CHANGE_B:
303case SSL3_ST_CR_CHANGE_B: str="3RCCSB"; break;
304case SSL3_ST_SR_FINISHED_A:
305case SSL3_ST_CR_FINISHED_A: str="3RFINA"; break;
306case SSL3_ST_SR_FINISHED_B:
307case SSL3_ST_CR_FINISHED_B: str="3RFINB"; break;
308
309case SSL3_ST_SW_HELLO_REQ_A: str="3WHR_A"; break;
310case SSL3_ST_SW_HELLO_REQ_B: str="3WHR_B"; break;
311case SSL3_ST_SW_HELLO_REQ_C: str="3WHR_C"; break;
312case SSL3_ST_SR_CLNT_HELLO_A: str="3RCH_A"; break;
313case SSL3_ST_SR_CLNT_HELLO_B: str="3RCH_B"; break;
314case SSL3_ST_SR_CLNT_HELLO_C: str="3RCH_C"; break;
315case SSL3_ST_SW_SRVR_HELLO_A: str="3WSH_A"; break;
316case SSL3_ST_SW_SRVR_HELLO_B: str="3WSH_B"; break;
317case SSL3_ST_SW_CERT_A: str="3WSC_A"; break;
318case SSL3_ST_SW_CERT_B: str="3WSC_B"; break;
319case SSL3_ST_SW_KEY_EXCH_A: str="3WSKEA"; break;
320case SSL3_ST_SW_KEY_EXCH_B: str="3WSKEB"; break;
321case SSL3_ST_SW_CERT_REQ_A: str="3WCR_A"; break;
322case SSL3_ST_SW_CERT_REQ_B: str="3WCR_B"; break;
323case SSL3_ST_SW_SRVR_DONE_A: str="3WSD_A"; break;
324case SSL3_ST_SW_SRVR_DONE_B: str="3WSD_B"; break;
325case SSL3_ST_SR_CERT_A: str="3RCC_A"; break;
326case SSL3_ST_SR_CERT_B: str="3RCC_B"; break;
327case SSL3_ST_SR_KEY_EXCH_A: str="3RCKEA"; break;
328case SSL3_ST_SR_KEY_EXCH_B: str="3RCKEB"; break;
329case SSL3_ST_SR_CERT_VRFY_A: str="3RCV_A"; break;
330case SSL3_ST_SR_CERT_VRFY_B: str="3RCV_B"; break;
331#endif
332
333#if !defined(OPENSSL_NO_SSL2) && !defined(OPENSSL_NO_SSL3)
334/* SSLv2/v3 compatibility states */
335/* client */
336case SSL23_ST_CW_CLNT_HELLO_A: str="23WCHA"; break;
337case SSL23_ST_CW_CLNT_HELLO_B: str="23WCHB"; break;
338case SSL23_ST_CR_SRVR_HELLO_A: str="23RSHA"; break;
339case SSL23_ST_CR_SRVR_HELLO_B: str="23RSHA"; break;
340/* server */
341case SSL23_ST_SR_CLNT_HELLO_A: str="23RCHA"; break;
342case SSL23_ST_SR_CLNT_HELLO_B: str="23RCHB"; break;
343#endif
344
345default: str="UNKWN "; break;
346 }
347 return(str);
348 }
349
350const char *SSL_alert_type_string_long(int value)
351 {
352 value>>=8;
353 if (value == SSL3_AL_WARNING)
354 return("warning");
355 else if (value == SSL3_AL_FATAL)
356 return("fatal");
357 else
358 return("unknown");
359 }
360
361const char *SSL_alert_type_string(int value)
362 {
363 value>>=8;
364 if (value == SSL3_AL_WARNING)
365 return("W");
366 else if (value == SSL3_AL_FATAL)
367 return("F");
368 else
369 return("U");
370 }
371
372const char *SSL_alert_desc_string(int value)
373 {
374 const char *str;
375
376 switch (value & 0xff)
377 {
378 case SSL3_AD_CLOSE_NOTIFY: str="CN"; break;
379 case SSL3_AD_UNEXPECTED_MESSAGE: str="UM"; break;
380 case SSL3_AD_BAD_RECORD_MAC: str="BM"; break;
381 case SSL3_AD_DECOMPRESSION_FAILURE: str="DF"; break;
382 case SSL3_AD_HANDSHAKE_FAILURE: str="HF"; break;
383 case SSL3_AD_NO_CERTIFICATE: str="NC"; break;
384 case SSL3_AD_BAD_CERTIFICATE: str="BC"; break;
385 case SSL3_AD_UNSUPPORTED_CERTIFICATE: str="UC"; break;
386 case SSL3_AD_CERTIFICATE_REVOKED: str="CR"; break;
387 case SSL3_AD_CERTIFICATE_EXPIRED: str="CE"; break;
388 case SSL3_AD_CERTIFICATE_UNKNOWN: str="CU"; break;
389 case SSL3_AD_ILLEGAL_PARAMETER: str="IP"; break;
390 case TLS1_AD_DECRYPTION_FAILED: str="DC"; break;
391 case TLS1_AD_RECORD_OVERFLOW: str="RO"; break;
392 case TLS1_AD_UNKNOWN_CA: str="CA"; break;
393 case TLS1_AD_ACCESS_DENIED: str="AD"; break;
394 case TLS1_AD_DECODE_ERROR: str="DE"; break;
395 case TLS1_AD_DECRYPT_ERROR: str="CY"; break;
396 case TLS1_AD_EXPORT_RESTRICTION: str="ER"; break;
397 case TLS1_AD_PROTOCOL_VERSION: str="PV"; break;
398 case TLS1_AD_INSUFFICIENT_SECURITY: str="IS"; break;
399 case TLS1_AD_INTERNAL_ERROR: str="IE"; break;
400 case TLS1_AD_USER_CANCELLED: str="US"; break;
401 case TLS1_AD_NO_RENEGOTIATION: str="NR"; break;
402 default: str="UK"; break;
403 }
404 return(str);
405 }
406
407const char *SSL_alert_desc_string_long(int value)
408 {
409 const char *str;
410
411 switch (value & 0xff)
412 {
413 case SSL3_AD_CLOSE_NOTIFY:
414 str="close notify";
415 break;
416 case SSL3_AD_UNEXPECTED_MESSAGE:
417 str="unexpected_message";
418 break;
419 case SSL3_AD_BAD_RECORD_MAC:
420 str="bad record mac";
421 break;
422 case SSL3_AD_DECOMPRESSION_FAILURE:
423 str="decompression failure";
424 break;
425 case SSL3_AD_HANDSHAKE_FAILURE:
426 str="handshake failure";
427 break;
428 case SSL3_AD_NO_CERTIFICATE:
429 str="no certificate";
430 break;
431 case SSL3_AD_BAD_CERTIFICATE:
432 str="bad certificate";
433 break;
434 case SSL3_AD_UNSUPPORTED_CERTIFICATE:
435 str="unsupported certificate";
436 break;
437 case SSL3_AD_CERTIFICATE_REVOKED:
438 str="certificate revoked";
439 break;
440 case SSL3_AD_CERTIFICATE_EXPIRED:
441 str="certificate expired";
442 break;
443 case SSL3_AD_CERTIFICATE_UNKNOWN:
444 str="certificate unknown";
445 break;
446 case SSL3_AD_ILLEGAL_PARAMETER:
447 str="illegal parameter";
448 break;
449 case TLS1_AD_DECRYPTION_FAILED:
450 str="decryption failed";
451 break;
452 case TLS1_AD_RECORD_OVERFLOW:
453 str="record overflow";
454 break;
455 case TLS1_AD_UNKNOWN_CA:
456 str="unknown CA";
457 break;
458 case TLS1_AD_ACCESS_DENIED:
459 str="access denied";
460 break;
461 case TLS1_AD_DECODE_ERROR:
462 str="decode error";
463 break;
464 case TLS1_AD_DECRYPT_ERROR:
465 str="decrypt error";
466 break;
467 case TLS1_AD_EXPORT_RESTRICTION:
468 str="export restriction";
469 break;
470 case TLS1_AD_PROTOCOL_VERSION:
471 str="protocol version";
472 break;
473 case TLS1_AD_INSUFFICIENT_SECURITY:
474 str="insufficient security";
475 break;
476 case TLS1_AD_INTERNAL_ERROR:
477 str="internal error";
478 break;
479 case TLS1_AD_USER_CANCELLED:
480 str="user canceled";
481 break;
482 case TLS1_AD_NO_RENEGOTIATION:
483 str="no renegotiation";
484 break;
485 default: str="unknown"; break;
486 }
487 return(str);
488 }
489
490const char *SSL_rstate_string(const SSL *s)
491 {
492 const char *str;
493
494 switch (s->rstate)
495 {
496 case SSL_ST_READ_HEADER:str="RH"; break;
497 case SSL_ST_READ_BODY: str="RB"; break;
498 case SSL_ST_READ_DONE: str="RD"; break;
499 default: str="unknown"; break;
500 }
501 return(str);
502 }
diff --git a/src/lib/libssl/ssl_txt.c b/src/lib/libssl/ssl_txt.c
new file mode 100644
index 0000000000..8655a31333
--- /dev/null
+++ b/src/lib/libssl/ssl_txt.c
@@ -0,0 +1,186 @@
1/* ssl/ssl_txt.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include <openssl/buffer.h>
61#include "ssl_locl.h"
62
63#ifndef OPENSSL_NO_FP_API
64int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *x)
65 {
66 BIO *b;
67 int ret;
68
69 if ((b=BIO_new(BIO_s_file_internal())) == NULL)
70 {
71 SSLerr(SSL_F_SSL_SESSION_PRINT_FP,ERR_R_BUF_LIB);
72 return(0);
73 }
74 BIO_set_fp(b,fp,BIO_NOCLOSE);
75 ret=SSL_SESSION_print(b,x);
76 BIO_free(b);
77 return(ret);
78 }
79#endif
80
81int SSL_SESSION_print(BIO *bp, const SSL_SESSION *x)
82 {
83 unsigned int i;
84 char *s;
85
86 if (x == NULL) goto err;
87 if (BIO_puts(bp,"SSL-Session:\n") <= 0) goto err;
88 if (x->ssl_version == SSL2_VERSION)
89 s="SSLv2";
90 else if (x->ssl_version == SSL3_VERSION)
91 s="SSLv3";
92 else if (x->ssl_version == TLS1_VERSION)
93 s="TLSv1";
94 else
95 s="unknown";
96 if (BIO_printf(bp," Protocol : %s\n",s) <= 0) goto err;
97
98 if (x->cipher == NULL)
99 {
100 if (((x->cipher_id) & 0xff000000) == 0x02000000)
101 {
102 if (BIO_printf(bp," Cipher : %06lX\n",x->cipher_id&0xffffff) <= 0)
103 goto err;
104 }
105 else
106 {
107 if (BIO_printf(bp," Cipher : %04lX\n",x->cipher_id&0xffff) <= 0)
108 goto err;
109 }
110 }
111 else
112 {
113 if (BIO_printf(bp," Cipher : %s\n",((x->cipher == NULL)?"unknown":x->cipher->name)) <= 0)
114 goto err;
115 }
116 if (BIO_puts(bp," Session-ID: ") <= 0) goto err;
117 for (i=0; i<x->session_id_length; i++)
118 {
119 if (BIO_printf(bp,"%02X",x->session_id[i]) <= 0) goto err;
120 }
121 if (BIO_puts(bp,"\n Session-ID-ctx: ") <= 0) goto err;
122 for (i=0; i<x->sid_ctx_length; i++)
123 {
124 if (BIO_printf(bp,"%02X",x->sid_ctx[i]) <= 0)
125 goto err;
126 }
127 if (BIO_puts(bp,"\n Master-Key: ") <= 0) goto err;
128 for (i=0; i<(unsigned int)x->master_key_length; i++)
129 {
130 if (BIO_printf(bp,"%02X",x->master_key[i]) <= 0) goto err;
131 }
132 if (BIO_puts(bp,"\n Key-Arg : ") <= 0) goto err;
133 if (x->key_arg_length == 0)
134 {
135 if (BIO_puts(bp,"None") <= 0) goto err;
136 }
137 else
138 for (i=0; i<x->key_arg_length; i++)
139 {
140 if (BIO_printf(bp,"%02X",x->key_arg[i]) <= 0) goto err;
141 }
142#ifndef OPENSSL_NO_KRB5
143 if (BIO_puts(bp,"\n Krb5 Principal: ") <= 0) goto err;
144 if (x->krb5_client_princ_len == 0)
145 {
146 if (BIO_puts(bp,"None") <= 0) goto err;
147 }
148 else
149 for (i=0; i<x->krb5_client_princ_len; i++)
150 {
151 if (BIO_printf(bp,"%02X",x->krb5_client_princ[i]) <= 0) goto err;
152 }
153#endif /* OPENSSL_NO_KRB5 */
154 if (x->compress_meth != 0)
155 {
156 SSL_COMP *comp;
157
158 ssl_cipher_get_evp(x,NULL,NULL,&comp);
159 if (comp == NULL)
160 {
161 if (BIO_printf(bp,"\n Compression: %d",x->compress_meth) <= 0) goto err;
162 }
163 else
164 {
165 if (BIO_printf(bp,"\n Compression: %d (%s)", comp->id,comp->method->name) <= 0) goto err;
166 }
167 }
168 if (x->time != 0L)
169 {
170 if (BIO_printf(bp, "\n Start Time: %ld",x->time) <= 0) goto err;
171 }
172 if (x->timeout != 0L)
173 {
174 if (BIO_printf(bp, "\n Timeout : %ld (sec)",x->timeout) <= 0) goto err;
175 }
176 if (BIO_puts(bp,"\n") <= 0) goto err;
177
178 if (BIO_puts(bp, " Verify return code: ") <= 0) goto err;
179 if (BIO_printf(bp, "%ld (%s)\n", x->verify_result,
180 X509_verify_cert_error_string(x->verify_result)) <= 0) goto err;
181
182 return(1);
183err:
184 return(0);
185 }
186
diff --git a/src/lib/libssl/ssleay.cnf b/src/lib/libssl/ssleay.cnf
new file mode 100644
index 0000000000..c6480ee465
--- /dev/null
+++ b/src/lib/libssl/ssleay.cnf
@@ -0,0 +1,65 @@
1#
2# SSLeay example configuration file.
3# This is mostly being used for generation of certificate requests.
4#
5
6RANDFILE = /dev/arandom
7
8####################################################################
9[ req ]
10default_bits = 1024
11default_keyfile = privkey.pem
12distinguished_name = req_distinguished_name
13attributes = req_attributes
14
15[ req_distinguished_name ]
16countryName = Country Name (2 letter code)
17#countryName_default = AU
18countryName_min = 2
19countryName_max = 2
20
21stateOrProvinceName = State or Province Name (full name)
22#stateOrProvinceName_default = Some-State
23
24localityName = Locality Name (eg, city)
25
260.organizationName = Organization Name (eg, company)
27#0.organizationName_default = Internet Widgits Pty Ltd
28
29# we can do this but it is not needed normally :-)
30#1.organizationName = Second Organization Name (eg, company)
31#1.organizationName_default = CryptSoft Pty Ltd
32
33organizationalUnitName = Organizational Unit Name (eg, section)
34#organizationalUnitName_default =
35
36commonName = Common Name (eg, fully qualified host name)
37commonName_max = 64
38
39emailAddress = Email Address
40emailAddress_max = 64
41
42[ req_attributes ]
43challengePassword = A challenge password
44challengePassword_min = 4
45challengePassword_max = 20
46
47unstructuredName = An optional company name
48
49[ x509v3_extensions ]
50
51nsCaRevocationUrl = http://www.cryptsoft.com/ca-crl.pem
52nsComment = "This is a comment"
53
54# under ASN.1, the 0 bit would be encoded as 80
55nsCertType = 0x40
56
57#nsBaseUrl
58#nsRevocationUrl
59#nsRenewalUrl
60#nsCaPolicyUrl
61#nsSslServerName
62#nsCertSequence
63#nsCertExt
64#nsDataType
65
diff --git a/src/lib/libssl/t1_clnt.c b/src/lib/libssl/t1_clnt.c
new file mode 100644
index 0000000000..57205fb429
--- /dev/null
+++ b/src/lib/libssl/t1_clnt.c
@@ -0,0 +1,97 @@
1/* ssl/t1_clnt.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include "ssl_locl.h"
61#include <openssl/buffer.h>
62#include <openssl/rand.h>
63#include <openssl/objects.h>
64#include <openssl/evp.h>
65
66static SSL_METHOD *tls1_get_client_method(int ver);
67static SSL_METHOD *tls1_get_client_method(int ver)
68 {
69 if (ver == TLS1_VERSION)
70 return(TLSv1_client_method());
71 else
72 return(NULL);
73 }
74
75SSL_METHOD *TLSv1_client_method(void)
76 {
77 static int init=1;
78 static SSL_METHOD TLSv1_client_data;
79
80 if (init)
81 {
82 CRYPTO_w_lock(CRYPTO_LOCK_SSL_METHOD);
83
84 if (init)
85 {
86 memcpy((char *)&TLSv1_client_data,(char *)tlsv1_base_method(),
87 sizeof(SSL_METHOD));
88 TLSv1_client_data.ssl_connect=ssl3_connect;
89 TLSv1_client_data.get_ssl_method=tls1_get_client_method;
90 init=0;
91 }
92
93 CRYPTO_w_unlock(CRYPTO_LOCK_SSL_METHOD);
94 }
95 return(&TLSv1_client_data);
96 }
97
diff --git a/src/lib/libssl/t1_enc.c b/src/lib/libssl/t1_enc.c
new file mode 100644
index 0000000000..2c6246abf5
--- /dev/null
+++ b/src/lib/libssl/t1_enc.c
@@ -0,0 +1,816 @@
1/* ssl/t1_enc.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58/* ====================================================================
59 * Copyright (c) 1998-2002 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#include <stdio.h>
113#include "ssl_locl.h"
114#include <openssl/comp.h>
115#include <openssl/evp.h>
116#include <openssl/hmac.h>
117#include <openssl/md5.h>
118#include <openssl/fips.h>
119
120static void tls1_P_hash(const EVP_MD *md, const unsigned char *sec,
121 int sec_len, unsigned char *seed, int seed_len,
122 unsigned char *out, int olen)
123 {
124 int chunk,n;
125 unsigned int j;
126 HMAC_CTX ctx;
127 HMAC_CTX ctx_tmp;
128 unsigned char A1[EVP_MAX_MD_SIZE];
129 unsigned int A1_len;
130
131 chunk=EVP_MD_size(md);
132
133 HMAC_CTX_init(&ctx);
134 HMAC_CTX_init(&ctx_tmp);
135 HMAC_CTX_set_flags(&ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
136 HMAC_CTX_set_flags(&ctx_tmp, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
137 HMAC_Init_ex(&ctx,sec,sec_len,md, NULL);
138 HMAC_Init_ex(&ctx_tmp,sec,sec_len,md, NULL);
139 HMAC_Update(&ctx,seed,seed_len);
140 HMAC_Final(&ctx,A1,&A1_len);
141
142 n=0;
143 for (;;)
144 {
145 HMAC_Init_ex(&ctx,NULL,0,NULL,NULL); /* re-init */
146 HMAC_Init_ex(&ctx_tmp,NULL,0,NULL,NULL); /* re-init */
147 HMAC_Update(&ctx,A1,A1_len);
148 HMAC_Update(&ctx_tmp,A1,A1_len);
149 HMAC_Update(&ctx,seed,seed_len);
150
151 if (olen > chunk)
152 {
153 HMAC_Final(&ctx,out,&j);
154 out+=j;
155 olen-=j;
156 HMAC_Final(&ctx_tmp,A1,&A1_len); /* calc the next A1 value */
157 }
158 else /* last one */
159 {
160 HMAC_Final(&ctx,A1,&A1_len);
161 memcpy(out,A1,olen);
162 break;
163 }
164 }
165 HMAC_CTX_cleanup(&ctx);
166 HMAC_CTX_cleanup(&ctx_tmp);
167 OPENSSL_cleanse(A1,sizeof(A1));
168 }
169
170static void tls1_PRF(const EVP_MD *md5, const EVP_MD *sha1,
171 unsigned char *label, int label_len,
172 const unsigned char *sec, int slen, unsigned char *out1,
173 unsigned char *out2, int olen)
174 {
175 int len,i;
176 const unsigned char *S1,*S2;
177
178 len=slen/2;
179 S1=sec;
180 S2= &(sec[len]);
181 len+=(slen&1); /* add for odd, make longer */
182
183 tls1_P_hash(md5 ,S1,len,label,label_len,out1,olen);
184 tls1_P_hash(sha1,S2,len,label,label_len,out2,olen);
185
186 for (i=0; i<olen; i++)
187 out1[i]^=out2[i];
188 }
189
190static void tls1_generate_key_block(SSL *s, unsigned char *km,
191 unsigned char *tmp, int num)
192 {
193 unsigned char *p;
194 unsigned char buf[SSL3_RANDOM_SIZE*2+
195 TLS_MD_MAX_CONST_SIZE];
196 p=buf;
197
198 memcpy(p,TLS_MD_KEY_EXPANSION_CONST,
199 TLS_MD_KEY_EXPANSION_CONST_SIZE);
200 p+=TLS_MD_KEY_EXPANSION_CONST_SIZE;
201 memcpy(p,s->s3->server_random,SSL3_RANDOM_SIZE);
202 p+=SSL3_RANDOM_SIZE;
203 memcpy(p,s->s3->client_random,SSL3_RANDOM_SIZE);
204 p+=SSL3_RANDOM_SIZE;
205
206 tls1_PRF(s->ctx->md5,s->ctx->sha1,buf,(int)(p-buf),
207 s->session->master_key,s->session->master_key_length,
208 km,tmp,num);
209#ifdef KSSL_DEBUG
210 printf("tls1_generate_key_block() ==> %d byte master_key =\n\t",
211 s->session->master_key_length);
212 {
213 int i;
214 for (i=0; i < s->session->master_key_length; i++)
215 {
216 printf("%02X", s->session->master_key[i]);
217 }
218 printf("\n"); }
219#endif /* KSSL_DEBUG */
220 }
221
222int tls1_change_cipher_state(SSL *s, int which)
223 {
224 static const unsigned char empty[]="";
225 unsigned char *p,*key_block,*mac_secret;
226 unsigned char *exp_label,buf[TLS_MD_MAX_CONST_SIZE+
227 SSL3_RANDOM_SIZE*2];
228 unsigned char tmp1[EVP_MAX_KEY_LENGTH];
229 unsigned char tmp2[EVP_MAX_KEY_LENGTH];
230 unsigned char iv1[EVP_MAX_IV_LENGTH*2];
231 unsigned char iv2[EVP_MAX_IV_LENGTH*2];
232 unsigned char *ms,*key,*iv,*er1,*er2;
233 int client_write;
234 EVP_CIPHER_CTX *dd;
235 const EVP_CIPHER *c;
236 const SSL_COMP *comp;
237 const EVP_MD *m;
238 int is_export,n,i,j,k,exp_label_len,cl;
239 int reuse_dd = 0;
240
241 is_export=SSL_C_IS_EXPORT(s->s3->tmp.new_cipher);
242 c=s->s3->tmp.new_sym_enc;
243 m=s->s3->tmp.new_hash;
244 comp=s->s3->tmp.new_compression;
245 key_block=s->s3->tmp.key_block;
246
247#ifdef KSSL_DEBUG
248 printf("tls1_change_cipher_state(which= %d) w/\n", which);
249 printf("\talg= %ld, comp= %p\n", s->s3->tmp.new_cipher->algorithms,
250 comp);
251 printf("\tevp_cipher == %p ==? &d_cbc_ede_cipher3\n", c);
252 printf("\tevp_cipher: nid, blksz= %d, %d, keylen=%d, ivlen=%d\n",
253 c->nid,c->block_size,c->key_len,c->iv_len);
254 printf("\tkey_block: len= %d, data= ", s->s3->tmp.key_block_length);
255 {
256 int i;
257 for (i=0; i<s->s3->tmp.key_block_length; i++)
258 printf("%02x", key_block[i]); printf("\n");
259 }
260#endif /* KSSL_DEBUG */
261
262 if (which & SSL3_CC_READ)
263 {
264 if (s->enc_read_ctx != NULL)
265 reuse_dd = 1;
266 else if ((s->enc_read_ctx=OPENSSL_malloc(sizeof(EVP_CIPHER_CTX))) == NULL)
267 goto err;
268 dd= s->enc_read_ctx;
269 s->read_hash=m;
270 if (s->expand != NULL)
271 {
272 COMP_CTX_free(s->expand);
273 s->expand=NULL;
274 }
275 if (comp != NULL)
276 {
277 s->expand=COMP_CTX_new(comp->method);
278 if (s->expand == NULL)
279 {
280 SSLerr(SSL_F_TLS1_CHANGE_CIPHER_STATE,SSL_R_COMPRESSION_LIBRARY_ERROR);
281 goto err2;
282 }
283 if (s->s3->rrec.comp == NULL)
284 s->s3->rrec.comp=(unsigned char *)
285 OPENSSL_malloc(SSL3_RT_MAX_ENCRYPTED_LENGTH);
286 if (s->s3->rrec.comp == NULL)
287 goto err;
288 }
289 memset(&(s->s3->read_sequence[0]),0,8);
290 mac_secret= &(s->s3->read_mac_secret[0]);
291 }
292 else
293 {
294 if (s->enc_write_ctx != NULL)
295 reuse_dd = 1;
296 else if ((s->enc_write_ctx=OPENSSL_malloc(sizeof(EVP_CIPHER_CTX))) == NULL)
297 goto err;
298 if ((s->enc_write_ctx == NULL) &&
299 ((s->enc_write_ctx=(EVP_CIPHER_CTX *)
300 OPENSSL_malloc(sizeof(EVP_CIPHER_CTX))) == NULL))
301 goto err;
302 dd= s->enc_write_ctx;
303 s->write_hash=m;
304 if (s->compress != NULL)
305 {
306 COMP_CTX_free(s->compress);
307 s->compress=NULL;
308 }
309 if (comp != NULL)
310 {
311 s->compress=COMP_CTX_new(comp->method);
312 if (s->compress == NULL)
313 {
314 SSLerr(SSL_F_TLS1_CHANGE_CIPHER_STATE,SSL_R_COMPRESSION_LIBRARY_ERROR);
315 goto err2;
316 }
317 }
318 memset(&(s->s3->write_sequence[0]),0,8);
319 mac_secret= &(s->s3->write_mac_secret[0]);
320 }
321
322 if (reuse_dd)
323 EVP_CIPHER_CTX_cleanup(dd);
324 EVP_CIPHER_CTX_init(dd);
325
326 p=s->s3->tmp.key_block;
327 i=EVP_MD_size(m);
328 cl=EVP_CIPHER_key_length(c);
329 j=is_export ? (cl < SSL_C_EXPORT_KEYLENGTH(s->s3->tmp.new_cipher) ?
330 cl : SSL_C_EXPORT_KEYLENGTH(s->s3->tmp.new_cipher)) : cl;
331 /* Was j=(exp)?5:EVP_CIPHER_key_length(c); */
332 k=EVP_CIPHER_iv_length(c);
333 er1= &(s->s3->client_random[0]);
334 er2= &(s->s3->server_random[0]);
335 if ( (which == SSL3_CHANGE_CIPHER_CLIENT_WRITE) ||
336 (which == SSL3_CHANGE_CIPHER_SERVER_READ))
337 {
338 ms= &(p[ 0]); n=i+i;
339 key= &(p[ n]); n+=j+j;
340 iv= &(p[ n]); n+=k+k;
341 exp_label=(unsigned char *)TLS_MD_CLIENT_WRITE_KEY_CONST;
342 exp_label_len=TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE;
343 client_write=1;
344 }
345 else
346 {
347 n=i;
348 ms= &(p[ n]); n+=i+j;
349 key= &(p[ n]); n+=j+k;
350 iv= &(p[ n]); n+=k;
351 exp_label=(unsigned char *)TLS_MD_SERVER_WRITE_KEY_CONST;
352 exp_label_len=TLS_MD_SERVER_WRITE_KEY_CONST_SIZE;
353 client_write=0;
354 }
355
356 if (n > s->s3->tmp.key_block_length)
357 {
358 SSLerr(SSL_F_TLS1_CHANGE_CIPHER_STATE,ERR_R_INTERNAL_ERROR);
359 goto err2;
360 }
361
362 memcpy(mac_secret,ms,i);
363#ifdef TLS_DEBUG
364printf("which = %04X\nmac key=",which);
365{ int z; for (z=0; z<i; z++) printf("%02X%c",ms[z],((z+1)%16)?' ':'\n'); }
366#endif
367 if (is_export)
368 {
369 /* In here I set both the read and write key/iv to the
370 * same value since only the correct one will be used :-).
371 */
372 p=buf;
373 memcpy(p,exp_label,exp_label_len);
374 p+=exp_label_len;
375 memcpy(p,s->s3->client_random,SSL3_RANDOM_SIZE);
376 p+=SSL3_RANDOM_SIZE;
377 memcpy(p,s->s3->server_random,SSL3_RANDOM_SIZE);
378 p+=SSL3_RANDOM_SIZE;
379 tls1_PRF(s->ctx->md5,s->ctx->sha1,buf,(int)(p-buf),key,j,
380 tmp1,tmp2,EVP_CIPHER_key_length(c));
381 key=tmp1;
382
383 if (k > 0)
384 {
385 p=buf;
386 memcpy(p,TLS_MD_IV_BLOCK_CONST,
387 TLS_MD_IV_BLOCK_CONST_SIZE);
388 p+=TLS_MD_IV_BLOCK_CONST_SIZE;
389 memcpy(p,s->s3->client_random,SSL3_RANDOM_SIZE);
390 p+=SSL3_RANDOM_SIZE;
391 memcpy(p,s->s3->server_random,SSL3_RANDOM_SIZE);
392 p+=SSL3_RANDOM_SIZE;
393 tls1_PRF(s->ctx->md5,s->ctx->sha1,buf,p-buf,empty,0,
394 iv1,iv2,k*2);
395 if (client_write)
396 iv=iv1;
397 else
398 iv= &(iv1[k]);
399 }
400 }
401
402 s->session->key_arg_length=0;
403#ifdef KSSL_DEBUG
404 {
405 int i;
406 printf("EVP_CipherInit_ex(dd,c,key=,iv=,which)\n");
407 printf("\tkey= "); for (i=0; i<c->key_len; i++) printf("%02x", key[i]);
408 printf("\n");
409 printf("\t iv= "); for (i=0; i<c->iv_len; i++) printf("%02x", iv[i]);
410 printf("\n");
411 }
412#endif /* KSSL_DEBUG */
413
414 EVP_CipherInit_ex(dd,c,NULL,key,iv,(which & SSL3_CC_WRITE));
415#ifdef TLS_DEBUG
416printf("which = %04X\nkey=",which);
417{ int z; for (z=0; z<EVP_CIPHER_key_length(c); z++) printf("%02X%c",key[z],((z+1)%16)?' ':'\n'); }
418printf("\niv=");
419{ int z; for (z=0; z<k; z++) printf("%02X%c",iv[z],((z+1)%16)?' ':'\n'); }
420printf("\n");
421#endif
422
423 OPENSSL_cleanse(tmp1,sizeof(tmp1));
424 OPENSSL_cleanse(tmp2,sizeof(tmp1));
425 OPENSSL_cleanse(iv1,sizeof(iv1));
426 OPENSSL_cleanse(iv2,sizeof(iv2));
427 return(1);
428err:
429 SSLerr(SSL_F_TLS1_CHANGE_CIPHER_STATE,ERR_R_MALLOC_FAILURE);
430err2:
431 return(0);
432 }
433
434int tls1_setup_key_block(SSL *s)
435 {
436 unsigned char *p1,*p2;
437 const EVP_CIPHER *c;
438 const EVP_MD *hash;
439 int num;
440 SSL_COMP *comp;
441
442#ifdef KSSL_DEBUG
443 printf ("tls1_setup_key_block()\n");
444#endif /* KSSL_DEBUG */
445
446 if (s->s3->tmp.key_block_length != 0)
447 return(1);
448
449 if (!ssl_cipher_get_evp(s->session,&c,&hash,&comp))
450 {
451 SSLerr(SSL_F_TLS1_SETUP_KEY_BLOCK,SSL_R_CIPHER_OR_HASH_UNAVAILABLE);
452 return(0);
453 }
454
455 s->s3->tmp.new_sym_enc=c;
456 s->s3->tmp.new_hash=hash;
457
458 num=EVP_CIPHER_key_length(c)+EVP_MD_size(hash)+EVP_CIPHER_iv_length(c);
459 num*=2;
460
461 ssl3_cleanup_key_block(s);
462
463 if ((p1=(unsigned char *)OPENSSL_malloc(num)) == NULL)
464 goto err;
465 if ((p2=(unsigned char *)OPENSSL_malloc(num)) == NULL)
466 goto err;
467
468 s->s3->tmp.key_block_length=num;
469 s->s3->tmp.key_block=p1;
470
471
472#ifdef TLS_DEBUG
473printf("client random\n");
474{ int z; for (z=0; z<SSL3_RANDOM_SIZE; z++) printf("%02X%c",s->s3->client_random[z],((z+1)%16)?' ':'\n'); }
475printf("server random\n");
476{ int z; for (z=0; z<SSL3_RANDOM_SIZE; z++) printf("%02X%c",s->s3->server_random[z],((z+1)%16)?' ':'\n'); }
477printf("pre-master\n");
478{ int z; for (z=0; z<s->session->master_key_length; z++) printf("%02X%c",s->session->master_key[z],((z+1)%16)?' ':'\n'); }
479#endif
480 tls1_generate_key_block(s,p1,p2,num);
481 OPENSSL_cleanse(p2,num);
482 OPENSSL_free(p2);
483#ifdef TLS_DEBUG
484printf("\nkey block\n");
485{ int z; for (z=0; z<num; z++) printf("%02X%c",p1[z],((z+1)%16)?' ':'\n'); }
486#endif
487
488 if (!(s->options & SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS))
489 {
490 /* enable vulnerability countermeasure for CBC ciphers with
491 * known-IV problem (http://www.openssl.org/~bodo/tls-cbc.txt)
492 */
493 s->s3->need_empty_fragments = 1;
494
495 if (s->session->cipher != NULL)
496 {
497 if ((s->session->cipher->algorithms & SSL_ENC_MASK) == SSL_eNULL)
498 s->s3->need_empty_fragments = 0;
499
500#ifndef OPENSSL_NO_RC4
501 if ((s->session->cipher->algorithms & SSL_ENC_MASK) == SSL_RC4)
502 s->s3->need_empty_fragments = 0;
503#endif
504 }
505 }
506
507 return(1);
508err:
509 SSLerr(SSL_F_TLS1_SETUP_KEY_BLOCK,ERR_R_MALLOC_FAILURE);
510 return(0);
511 }
512
513int tls1_enc(SSL *s, int send)
514 {
515 SSL3_RECORD *rec;
516 EVP_CIPHER_CTX *ds;
517 unsigned long l;
518 int bs,i,ii,j,k,n=0;
519 const EVP_CIPHER *enc;
520
521 if (send)
522 {
523 if (s->write_hash != NULL)
524 n=EVP_MD_size(s->write_hash);
525 ds=s->enc_write_ctx;
526 rec= &(s->s3->wrec);
527 if (s->enc_write_ctx == NULL)
528 enc=NULL;
529 else
530 enc=EVP_CIPHER_CTX_cipher(s->enc_write_ctx);
531 }
532 else
533 {
534 if (s->read_hash != NULL)
535 n=EVP_MD_size(s->read_hash);
536 ds=s->enc_read_ctx;
537 rec= &(s->s3->rrec);
538 if (s->enc_read_ctx == NULL)
539 enc=NULL;
540 else
541 enc=EVP_CIPHER_CTX_cipher(s->enc_read_ctx);
542 }
543
544#ifdef KSSL_DEBUG
545 printf("tls1_enc(%d)\n", send);
546#endif /* KSSL_DEBUG */
547
548 if ((s->session == NULL) || (ds == NULL) ||
549 (enc == NULL))
550 {
551 memmove(rec->data,rec->input,rec->length);
552 rec->input=rec->data;
553 }
554 else
555 {
556 l=rec->length;
557 bs=EVP_CIPHER_block_size(ds->cipher);
558
559 if ((bs != 1) && send)
560 {
561 i=bs-((int)l%bs);
562
563 /* Add weird padding of upto 256 bytes */
564
565 /* we need to add 'i' padding bytes of value j */
566 j=i-1;
567 if (s->options & SSL_OP_TLS_BLOCK_PADDING_BUG)
568 {
569 if (s->s3->flags & TLS1_FLAGS_TLS_PADDING_BUG)
570 j++;
571 }
572 for (k=(int)l; k<(int)(l+i); k++)
573 rec->input[k]=j;
574 l+=i;
575 rec->length+=i;
576 }
577
578#ifdef KSSL_DEBUG
579 {
580 unsigned long ui;
581 printf("EVP_Cipher(ds=%p,rec->data=%p,rec->input=%p,l=%ld) ==>\n",
582 ds,rec->data,rec->input,l);
583 printf("\tEVP_CIPHER_CTX: %d buf_len, %d key_len [%d %d], %d iv_len\n",
584 ds->buf_len, ds->cipher->key_len,
585 DES_KEY_SZ, DES_SCHEDULE_SZ,
586 ds->cipher->iv_len);
587 printf("\t\tIV: ");
588 for (i=0; i<ds->cipher->iv_len; i++) printf("%02X", ds->iv[i]);
589 printf("\n");
590 printf("\trec->input=");
591 for (ui=0; ui<l; ui++) printf(" %02x", rec->input[ui]);
592 printf("\n");
593 }
594#endif /* KSSL_DEBUG */
595
596 if (!send)
597 {
598 if (l == 0 || l%bs != 0)
599 {
600 SSLerr(SSL_F_TLS1_ENC,SSL_R_BLOCK_CIPHER_PAD_IS_WRONG);
601 ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_DECRYPTION_FAILED);
602 return 0;
603 }
604 }
605
606 EVP_Cipher(ds,rec->data,rec->input,l);
607
608#ifdef KSSL_DEBUG
609 {
610 unsigned long i;
611 printf("\trec->data=");
612 for (i=0; i<l; i++)
613 printf(" %02x", rec->data[i]); printf("\n");
614 }
615#endif /* KSSL_DEBUG */
616
617 if ((bs != 1) && !send)
618 {
619 ii=i=rec->data[l-1]; /* padding_length */
620 i++;
621 if (s->options&SSL_OP_TLS_BLOCK_PADDING_BUG)
622 {
623 /* First packet is even in size, so check */
624 if ((memcmp(s->s3->read_sequence,
625 "\0\0\0\0\0\0\0\0",8) == 0) && !(ii & 1))
626 s->s3->flags|=TLS1_FLAGS_TLS_PADDING_BUG;
627 if (s->s3->flags & TLS1_FLAGS_TLS_PADDING_BUG)
628 i--;
629 }
630 /* TLS 1.0 does not bound the number of padding bytes by the block size.
631 * All of them must have value 'padding_length'. */
632 if (i > (int)rec->length)
633 {
634 /* Incorrect padding. SSLerr() and ssl3_alert are done
635 * by caller: we don't want to reveal whether this is
636 * a decryption error or a MAC verification failure
637 * (see http://www.openssl.org/~bodo/tls-cbc.txt) */
638 return -1;
639 }
640 for (j=(int)(l-i); j<(int)l; j++)
641 {
642 if (rec->data[j] != ii)
643 {
644 /* Incorrect padding */
645 return -1;
646 }
647 }
648 rec->length-=i;
649 }
650 }
651 return(1);
652 }
653
654int tls1_cert_verify_mac(SSL *s, EVP_MD_CTX *in_ctx, unsigned char *out)
655 {
656 unsigned int ret;
657 EVP_MD_CTX ctx;
658
659 EVP_MD_CTX_init(&ctx);
660 EVP_MD_CTX_copy_ex(&ctx,in_ctx);
661 EVP_DigestFinal_ex(&ctx,out,&ret);
662 EVP_MD_CTX_cleanup(&ctx);
663 return((int)ret);
664 }
665
666int tls1_final_finish_mac(SSL *s, EVP_MD_CTX *in1_ctx, EVP_MD_CTX *in2_ctx,
667 const char *str, int slen, unsigned char *out)
668 {
669 unsigned int i;
670 EVP_MD_CTX ctx;
671 unsigned char buf[TLS_MD_MAX_CONST_SIZE+MD5_DIGEST_LENGTH+SHA_DIGEST_LENGTH];
672 unsigned char *q,buf2[12];
673
674 q=buf;
675 memcpy(q,str,slen);
676 q+=slen;
677
678 EVP_MD_CTX_init(&ctx);
679 EVP_MD_CTX_copy_ex(&ctx,in1_ctx);
680 EVP_DigestFinal_ex(&ctx,q,&i);
681 q+=i;
682 EVP_MD_CTX_copy_ex(&ctx,in2_ctx);
683 EVP_DigestFinal_ex(&ctx,q,&i);
684 q+=i;
685
686 tls1_PRF(s->ctx->md5,s->ctx->sha1,buf,(int)(q-buf),
687 s->session->master_key,s->session->master_key_length,
688 out,buf2,sizeof buf2);
689 EVP_MD_CTX_cleanup(&ctx);
690
691 return sizeof buf2;
692 }
693
694int tls1_mac(SSL *ssl, unsigned char *md, int send)
695 {
696 SSL3_RECORD *rec;
697 unsigned char *mac_sec,*seq;
698 const EVP_MD *hash;
699 unsigned int md_size;
700 int i;
701 HMAC_CTX hmac;
702 unsigned char buf[5];
703
704 if (send)
705 {
706 rec= &(ssl->s3->wrec);
707 mac_sec= &(ssl->s3->write_mac_secret[0]);
708 seq= &(ssl->s3->write_sequence[0]);
709 hash=ssl->write_hash;
710 }
711 else
712 {
713 rec= &(ssl->s3->rrec);
714 mac_sec= &(ssl->s3->read_mac_secret[0]);
715 seq= &(ssl->s3->read_sequence[0]);
716 hash=ssl->read_hash;
717 }
718
719 md_size=EVP_MD_size(hash);
720
721 buf[0]=rec->type;
722 buf[1]=TLS1_VERSION_MAJOR;
723 buf[2]=TLS1_VERSION_MINOR;
724 buf[3]=rec->length>>8;
725 buf[4]=rec->length&0xff;
726
727 /* I should fix this up TLS TLS TLS TLS TLS XXXXXXXX */
728 HMAC_CTX_init(&hmac);
729 HMAC_Init_ex(&hmac,mac_sec,EVP_MD_size(hash),hash,NULL);
730 HMAC_Update(&hmac,seq,8);
731 HMAC_Update(&hmac,buf,5);
732 HMAC_Update(&hmac,rec->input,rec->length);
733 HMAC_Final(&hmac,md,&md_size);
734 HMAC_CTX_cleanup(&hmac);
735
736#ifdef TLS_DEBUG
737printf("sec=");
738{unsigned int z; for (z=0; z<md_size; z++) printf("%02X ",mac_sec[z]); printf("\n"); }
739printf("seq=");
740{int z; for (z=0; z<8; z++) printf("%02X ",seq[z]); printf("\n"); }
741printf("buf=");
742{int z; for (z=0; z<5; z++) printf("%02X ",buf[z]); printf("\n"); }
743printf("rec=");
744{unsigned int z; for (z=0; z<rec->length; z++) printf("%02X ",buf[z]); printf("\n"); }
745#endif
746
747 for (i=7; i>=0; i--)
748 {
749 ++seq[i];
750 if (seq[i] != 0) break;
751 }
752
753#ifdef TLS_DEBUG
754{unsigned int z; for (z=0; z<md_size; z++) printf("%02X ",md[z]); printf("\n"); }
755#endif
756 return(md_size);
757 }
758
759int tls1_generate_master_secret(SSL *s, unsigned char *out, unsigned char *p,
760 int len)
761 {
762 unsigned char buf[SSL3_RANDOM_SIZE*2+TLS_MD_MASTER_SECRET_CONST_SIZE];
763 unsigned char buff[SSL_MAX_MASTER_KEY_LENGTH];
764
765#ifdef KSSL_DEBUG
766 printf ("tls1_generate_master_secret(%p,%p, %p, %d)\n", s,out, p,len);
767#endif /* KSSL_DEBUG */
768
769 /* Setup the stuff to munge */
770 memcpy(buf,TLS_MD_MASTER_SECRET_CONST,
771 TLS_MD_MASTER_SECRET_CONST_SIZE);
772 memcpy(&(buf[TLS_MD_MASTER_SECRET_CONST_SIZE]),
773 s->s3->client_random,SSL3_RANDOM_SIZE);
774 memcpy(&(buf[SSL3_RANDOM_SIZE+TLS_MD_MASTER_SECRET_CONST_SIZE]),
775 s->s3->server_random,SSL3_RANDOM_SIZE);
776 tls1_PRF(s->ctx->md5,s->ctx->sha1,
777 buf,TLS_MD_MASTER_SECRET_CONST_SIZE+SSL3_RANDOM_SIZE*2,p,len,
778 s->session->master_key,buff,sizeof buff);
779#ifdef KSSL_DEBUG
780 printf ("tls1_generate_master_secret() complete\n");
781#endif /* KSSL_DEBUG */
782 return(SSL3_MASTER_SECRET_SIZE);
783 }
784
785int tls1_alert_code(int code)
786 {
787 switch (code)
788 {
789 case SSL_AD_CLOSE_NOTIFY: return(SSL3_AD_CLOSE_NOTIFY);
790 case SSL_AD_UNEXPECTED_MESSAGE: return(SSL3_AD_UNEXPECTED_MESSAGE);
791 case SSL_AD_BAD_RECORD_MAC: return(SSL3_AD_BAD_RECORD_MAC);
792 case SSL_AD_DECRYPTION_FAILED: return(TLS1_AD_DECRYPTION_FAILED);
793 case SSL_AD_RECORD_OVERFLOW: return(TLS1_AD_RECORD_OVERFLOW);
794 case SSL_AD_DECOMPRESSION_FAILURE:return(SSL3_AD_DECOMPRESSION_FAILURE);
795 case SSL_AD_HANDSHAKE_FAILURE: return(SSL3_AD_HANDSHAKE_FAILURE);
796 case SSL_AD_NO_CERTIFICATE: return(-1);
797 case SSL_AD_BAD_CERTIFICATE: return(SSL3_AD_BAD_CERTIFICATE);
798 case SSL_AD_UNSUPPORTED_CERTIFICATE:return(SSL3_AD_UNSUPPORTED_CERTIFICATE);
799 case SSL_AD_CERTIFICATE_REVOKED:return(SSL3_AD_CERTIFICATE_REVOKED);
800 case SSL_AD_CERTIFICATE_EXPIRED:return(SSL3_AD_CERTIFICATE_EXPIRED);
801 case SSL_AD_CERTIFICATE_UNKNOWN:return(SSL3_AD_CERTIFICATE_UNKNOWN);
802 case SSL_AD_ILLEGAL_PARAMETER: return(SSL3_AD_ILLEGAL_PARAMETER);
803 case SSL_AD_UNKNOWN_CA: return(TLS1_AD_UNKNOWN_CA);
804 case SSL_AD_ACCESS_DENIED: return(TLS1_AD_ACCESS_DENIED);
805 case SSL_AD_DECODE_ERROR: return(TLS1_AD_DECODE_ERROR);
806 case SSL_AD_DECRYPT_ERROR: return(TLS1_AD_DECRYPT_ERROR);
807 case SSL_AD_EXPORT_RESTRICTION: return(TLS1_AD_EXPORT_RESTRICTION);
808 case SSL_AD_PROTOCOL_VERSION: return(TLS1_AD_PROTOCOL_VERSION);
809 case SSL_AD_INSUFFICIENT_SECURITY:return(TLS1_AD_INSUFFICIENT_SECURITY);
810 case SSL_AD_INTERNAL_ERROR: return(TLS1_AD_INTERNAL_ERROR);
811 case SSL_AD_USER_CANCELLED: return(TLS1_AD_USER_CANCELLED);
812 case SSL_AD_NO_RENEGOTIATION: return(TLS1_AD_NO_RENEGOTIATION);
813 default: return(-1);
814 }
815 }
816
diff --git a/src/lib/libssl/t1_lib.c b/src/lib/libssl/t1_lib.c
new file mode 100644
index 0000000000..ca6c03d5af
--- /dev/null
+++ b/src/lib/libssl/t1_lib.c
@@ -0,0 +1,149 @@
1/* ssl/t1_lib.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include <openssl/objects.h>
61#include "ssl_locl.h"
62
63const char *tls1_version_str="TLSv1" OPENSSL_VERSION_PTEXT;
64
65static long tls1_default_timeout(void);
66
67static SSL3_ENC_METHOD TLSv1_enc_data={
68 tls1_enc,
69 tls1_mac,
70 tls1_setup_key_block,
71 tls1_generate_master_secret,
72 tls1_change_cipher_state,
73 tls1_final_finish_mac,
74 TLS1_FINISH_MAC_LENGTH,
75 tls1_cert_verify_mac,
76 TLS_MD_CLIENT_FINISH_CONST,TLS_MD_CLIENT_FINISH_CONST_SIZE,
77 TLS_MD_SERVER_FINISH_CONST,TLS_MD_SERVER_FINISH_CONST_SIZE,
78 tls1_alert_code,
79 };
80
81static SSL_METHOD TLSv1_data= {
82 TLS1_VERSION,
83 tls1_new,
84 tls1_clear,
85 tls1_free,
86 ssl_undefined_function,
87 ssl_undefined_function,
88 ssl3_read,
89 ssl3_peek,
90 ssl3_write,
91 ssl3_shutdown,
92 ssl3_renegotiate,
93 ssl3_renegotiate_check,
94 ssl3_ctrl,
95 ssl3_ctx_ctrl,
96 ssl3_get_cipher_by_char,
97 ssl3_put_cipher_by_char,
98 ssl3_pending,
99 ssl3_num_ciphers,
100 ssl3_get_cipher,
101 ssl_bad_method,
102 tls1_default_timeout,
103 &TLSv1_enc_data,
104 ssl_undefined_function,
105 ssl3_callback_ctrl,
106 ssl3_ctx_callback_ctrl,
107 };
108
109static long tls1_default_timeout(void)
110 {
111 /* 2 hours, the 24 hours mentioned in the TLSv1 spec
112 * is way too long for http, the cache would over fill */
113 return(60*60*2);
114 }
115
116SSL_METHOD *tlsv1_base_method(void)
117 {
118 return(&TLSv1_data);
119 }
120
121int tls1_new(SSL *s)
122 {
123 if (!ssl3_new(s)) return(0);
124 s->method->ssl_clear(s);
125 return(1);
126 }
127
128void tls1_free(SSL *s)
129 {
130 ssl3_free(s);
131 }
132
133void tls1_clear(SSL *s)
134 {
135 ssl3_clear(s);
136 s->version=TLS1_VERSION;
137 }
138
139#if 0
140long tls1_ctrl(SSL *s, int cmd, long larg, char *parg)
141 {
142 return(0);
143 }
144
145long tls1_callback_ctrl(SSL *s, int cmd, void *(*fp)())
146 {
147 return(0);
148 }
149#endif
diff --git a/src/lib/libssl/t1_meth.c b/src/lib/libssl/t1_meth.c
new file mode 100644
index 0000000000..fcc243f782
--- /dev/null
+++ b/src/lib/libssl/t1_meth.c
@@ -0,0 +1,96 @@
1/* ssl/t1_meth.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include <openssl/objects.h>
61#include "ssl_locl.h"
62
63static SSL_METHOD *tls1_get_method(int ver);
64static SSL_METHOD *tls1_get_method(int ver)
65 {
66 if (ver == TLS1_VERSION)
67 return(TLSv1_method());
68 else
69 return(NULL);
70 }
71
72SSL_METHOD *TLSv1_method(void)
73 {
74 static int init=1;
75 static SSL_METHOD TLSv1_data;
76
77 if (init)
78 {
79 CRYPTO_w_lock(CRYPTO_LOCK_SSL_METHOD);
80
81 if (init)
82 {
83 memcpy((char *)&TLSv1_data,(char *)tlsv1_base_method(),
84 sizeof(SSL_METHOD));
85 TLSv1_data.ssl_connect=ssl3_connect;
86 TLSv1_data.ssl_accept=ssl3_accept;
87 TLSv1_data.get_ssl_method=tls1_get_method;
88 init=0;
89 }
90
91 CRYPTO_w_unlock(CRYPTO_LOCK_SSL_METHOD);
92 }
93
94 return(&TLSv1_data);
95 }
96
diff --git a/src/lib/libssl/t1_srvr.c b/src/lib/libssl/t1_srvr.c
new file mode 100644
index 0000000000..1c1149e49f
--- /dev/null
+++ b/src/lib/libssl/t1_srvr.c
@@ -0,0 +1,98 @@
1/* ssl/t1_srvr.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include "ssl_locl.h"
61#include <openssl/buffer.h>
62#include <openssl/rand.h>
63#include <openssl/objects.h>
64#include <openssl/evp.h>
65#include <openssl/x509.h>
66
67static SSL_METHOD *tls1_get_server_method(int ver);
68static SSL_METHOD *tls1_get_server_method(int ver)
69 {
70 if (ver == TLS1_VERSION)
71 return(TLSv1_server_method());
72 else
73 return(NULL);
74 }
75
76SSL_METHOD *TLSv1_server_method(void)
77 {
78 static int init=1;
79 static SSL_METHOD TLSv1_server_data;
80
81 if (init)
82 {
83 CRYPTO_w_lock(CRYPTO_LOCK_SSL_METHOD);
84
85 if (init)
86 {
87 memcpy((char *)&TLSv1_server_data,(char *)tlsv1_base_method(),
88 sizeof(SSL_METHOD));
89 TLSv1_server_data.ssl_accept=ssl3_accept;
90 TLSv1_server_data.get_ssl_method=tls1_get_server_method;
91 init=0;
92 }
93
94 CRYPTO_w_unlock(CRYPTO_LOCK_SSL_METHOD);
95 }
96 return(&TLSv1_server_data);
97 }
98
diff --git a/src/lib/libssl/test/CAss.cnf b/src/lib/libssl/test/CAss.cnf
new file mode 100644
index 0000000000..21da59a73a
--- /dev/null
+++ b/src/lib/libssl/test/CAss.cnf
@@ -0,0 +1,33 @@
1#
2# SSLeay example configuration file.
3# This is mostly being used for generation of certificate requests.
4#
5
6RANDFILE = ./.rnd
7
8####################################################################
9[ req ]
10default_bits = 512
11default_keyfile = keySS.pem
12distinguished_name = req_distinguished_name
13encrypt_rsa_key = no
14default_md = sha1
15
16[ req_distinguished_name ]
17countryName = Country Name (2 letter code)
18countryName_default = AU
19countryName_value = AU
20
21organizationName = Organization Name (eg, company)
22organizationName_value = Dodgy Brothers
23
24commonName = Common Name (eg, YOUR name)
25commonName_value = Dodgy CA
26
27[ v3_ca ]
28subjectKeyIdentifier=hash
29authorityKeyIdentifier=keyid:always,issuer:always
30basicConstraints = CA:true,pathlen:1
31keyUsage = cRLSign, keyCertSign
32issuerAltName=issuer:copy
33
diff --git a/src/lib/libssl/test/CAssdh.cnf b/src/lib/libssl/test/CAssdh.cnf
new file mode 100644
index 0000000000..4e0a908679
--- /dev/null
+++ b/src/lib/libssl/test/CAssdh.cnf
@@ -0,0 +1,24 @@
1#
2# SSLeay example configuration file.
3# This is mostly being used for generation of certificate requests.
4#
5# hacked by iang to do DH certs - CA
6
7RANDFILE = ./.rnd
8
9####################################################################
10[ req ]
11distinguished_name = req_distinguished_name
12encrypt_rsa_key = no
13
14[ req_distinguished_name ]
15countryName = Country Name (2 letter code)
16countryName_default = CU
17countryName_value = CU
18
19organizationName = Organization Name (eg, company)
20organizationName_value = La Junta de la Revolucion
21
22commonName = Common Name (eg, YOUR name)
23commonName_value = Junta
24
diff --git a/src/lib/libssl/test/CAssdsa.cnf b/src/lib/libssl/test/CAssdsa.cnf
new file mode 100644
index 0000000000..a6b4d1810c
--- /dev/null
+++ b/src/lib/libssl/test/CAssdsa.cnf
@@ -0,0 +1,23 @@
1#
2# SSLeay example configuration file.
3# This is mostly being used for generation of certificate requests.
4#
5# hacked by iang to do DSA certs - CA
6
7RANDFILE = ./.rnd
8
9####################################################################
10[ req ]
11distinguished_name = req_distinguished_name
12encrypt_rsa_key = no
13
14[ req_distinguished_name ]
15countryName = Country Name (2 letter code)
16countryName_default = ES
17countryName_value = ES
18
19organizationName = Organization Name (eg, company)
20organizationName_value = Hermanos Locos
21
22commonName = Common Name (eg, YOUR name)
23commonName_value = Hermanos Locos CA
diff --git a/src/lib/libssl/test/CAssrsa.cnf b/src/lib/libssl/test/CAssrsa.cnf
new file mode 100644
index 0000000000..eb24a6dfc0
--- /dev/null
+++ b/src/lib/libssl/test/CAssrsa.cnf
@@ -0,0 +1,24 @@
1#
2# SSLeay example configuration file.
3# This is mostly being used for generation of certificate requests.
4#
5# create RSA certs - CA
6
7RANDFILE = ./.rnd
8
9####################################################################
10[ req ]
11distinguished_name = req_distinguished_name
12encrypt_key = no
13
14[ req_distinguished_name ]
15countryName = Country Name (2 letter code)
16countryName_default = ES
17countryName_value = ES
18
19organizationName = Organization Name (eg, company)
20organizationName_value = Hermanos Locos
21
22commonName = Common Name (eg, YOUR name)
23commonName_value = Hermanos Locos CA
24
diff --git a/src/lib/libssl/test/Makefile.ssl b/src/lib/libssl/test/Makefile.ssl
new file mode 100644
index 0000000000..373f17a929
--- /dev/null
+++ b/src/lib/libssl/test/Makefile.ssl
@@ -0,0 +1,796 @@
1#
2# test/Makefile.ssl
3#
4
5DIR= test
6TOP= ..
7CC= cc
8INCLUDES= -I$(TOP) -I../include $(KRB5_INCLUDES)
9CFLAG= -g
10INSTALL_PREFIX=
11OPENSSLDIR= /usr/local/ssl
12INSTALLTOP= /usr/local/ssl
13MAKEFILE= Makefile.ssl
14MAKE= make -f $(MAKEFILE)
15MAKEDEPPROG= makedepend
16MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
17PERL= perl
18# KRB5 stuff
19KRB5_INCLUDES=
20LIBKRB5=
21
22PEX_LIBS=
23EX_LIBS= #-lnsl -lsocket
24
25CFLAGS= $(INCLUDES) $(CFLAG)
26
27GENERAL=Makefile.ssl maketests.com \
28 tests.com testenc.com tx509.com trsa.com tcrl.com tsid.com treq.com \
29 tpkcs7.com tpkcs7d.com tverify.com testgen.com testss.com testssl.com \
30 testca.com VMSca-response.1 VMSca-response.2
31
32DLIBCRYPTO= ../libcrypto.a
33DLIBSSL= ../libssl.a
34LIBCRYPTO= -L.. -lcrypto
35LIBSSL= -L.. -lssl
36
37BNTEST= bntest
38ECTEST= ectest
39EXPTEST= exptest
40IDEATEST= ideatest
41SHATEST= shatest
42SHA1TEST= sha1test
43MDC2TEST= mdc2test
44RMDTEST= rmdtest
45MD2TEST= md2test
46MD4TEST= md4test
47MD5TEST= md5test
48HMACTEST= hmactest
49RC2TEST= rc2test
50RC4TEST= rc4test
51RC5TEST= rc5test
52BFTEST= bftest
53CASTTEST= casttest
54DESTEST= destest
55RANDTEST= randtest
56DHTEST= dhtest
57DSATEST= dsatest
58METHTEST= methtest
59SSLTEST= ssltest
60RSATEST= rsa_test
61ENGINETEST= enginetest
62EVPTEST= evp_test
63
64TESTS= alltests
65
66EXE= $(BNTEST) $(ECTEST) $(IDEATEST) $(MD2TEST) $(MD4TEST) $(MD5TEST) $(HMACTEST) \
67 $(RC2TEST) $(RC4TEST) $(RC5TEST) \
68 $(DESTEST) $(SHATEST) $(SHA1TEST) $(MDC2TEST) $(RMDTEST) \
69 $(RANDTEST) $(DHTEST) $(ENGINETEST) \
70 $(BFTEST) $(CASTTEST) $(SSLTEST) $(EXPTEST) $(DSATEST) $(RSATEST) \
71 $(EVPTEST)
72
73# $(METHTEST)
74
75OBJ= $(BNTEST).o $(ECTEST).o $(IDEATEST).o $(MD2TEST).o $(MD4TEST).o $(MD5TEST).o \
76 $(HMACTEST).o \
77 $(RC2TEST).o $(RC4TEST).o $(RC5TEST).o \
78 $(DESTEST).o $(SHATEST).o $(SHA1TEST).o $(MDC2TEST).o $(RMDTEST).o \
79 $(RANDTEST).o $(DHTEST).o $(ENGINETEST).o $(CASTTEST).o \
80 $(BFTEST).o $(SSLTEST).o $(DSATEST).o $(EXPTEST).o $(RSATEST).o \
81 $(EVPTEST).o
82SRC= $(BNTEST).c $(ECTEST).c $(IDEATEST).c $(MD2TEST).c $(MD4TEST).c $(MD5TEST).c \
83 $(HMACTEST).c \
84 $(RC2TEST).c $(RC4TEST).c $(RC5TEST).c \
85 $(DESTEST).c $(SHATEST).c $(SHA1TEST).c $(MDC2TEST).c $(RMDTEST).c \
86 $(RANDTEST).c $(DHTEST).c $(ENGINETEST).c $(CASTTEST).c \
87 $(BFTEST).c $(SSLTEST).c $(DSATEST).c $(EXPTEST).c $(RSATEST).c \
88 $(EVPTEST).c
89
90EXHEADER=
91HEADER= $(EXHEADER)
92
93ALL= $(GENERAL) $(SRC) $(HEADER)
94
95top:
96 (cd ..; $(MAKE) DIRS=$(DIR) TESTS=$(TESTS) all)
97
98all: exe
99
100exe: $(EXE) dummytest
101
102files:
103 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
104
105links:
106 @sh $(TOP)/util/point.sh Makefile.ssl Makefile
107
108generate: $(SRC)
109$(SRC):
110 @sh $(TOP)/util/point.sh dummytest.c $@
111
112errors:
113
114install:
115
116tags:
117 ctags $(SRC)
118
119tests: exe apps $(TESTS)
120
121apps:
122 @(cd ..; $(MAKE) DIRS=apps all)
123
124SET_SO_PATHS=OSSL_LIBPATH="`cd ..; pwd`"; \
125 LD_LIBRARY_PATH="$$OSSL_LIBPATH:$$LD_LIBRARY_PATH"; \
126 DYLD_LIBRARY_PATH="$$OSSL_LIBPATH:$$DYLD_LIBRARY_PATH"; \
127 SHLIB_PATH="$$OSSL_LIBPATH:$$SHLIB_PATH"; \
128 LIBPATH="$$OSSL_LIBPATH:$$LIBPATH"; \
129 if [ "$(PLATFORM)" = "Cygwin" ]; then PATH="$${LIBPATH}:$$PATH"; fi; \
130 export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH PATH
131
132alltests: \
133 test_des test_idea test_sha test_md4 test_md5 test_hmac \
134 test_md2 test_mdc2 \
135 test_rmd test_rc2 test_rc4 test_rc5 test_bf test_cast test_aes \
136 test_rand test_bn test_ec test_enc test_x509 test_rsa test_crl test_sid \
137 test_gen test_req test_pkcs7 test_verify test_dh test_dsa \
138 test_ss test_ca test_engine test_evp test_ssl
139
140test_evp:
141 $(SET_SO_PATHS); ./$(EVPTEST) evptests.txt
142
143test_des:
144 $(SET_SO_PATHS); ./$(DESTEST)
145
146test_idea:
147 $(SET_SO_PATHS); ./$(IDEATEST)
148
149test_sha:
150 $(SET_SO_PATHS); ./$(SHATEST)
151 $(SET_SO_PATHS); ./$(SHA1TEST)
152
153test_mdc2:
154 $(SET_SO_PATHS); ./$(MDC2TEST)
155
156test_md5:
157 $(SET_SO_PATHS); ./$(MD5TEST)
158
159test_md4:
160 $(SET_SO_PATHS); ./$(MD4TEST)
161
162test_hmac:
163 $(SET_SO_PATHS); ./$(HMACTEST)
164
165test_md2:
166 $(SET_SO_PATHS); ./$(MD2TEST)
167
168test_rmd:
169 $(SET_SO_PATHS); ./$(RMDTEST)
170
171test_bf:
172 $(SET_SO_PATHS); ./$(BFTEST)
173
174test_cast:
175 $(SET_SO_PATHS); ./$(CASTTEST)
176
177test_rc2:
178 $(SET_SO_PATHS); ./$(RC2TEST)
179
180test_rc4:
181 $(SET_SO_PATHS); ./$(RC4TEST)
182
183test_rc5:
184 $(SET_SO_PATHS); ./$(RC5TEST)
185
186test_rand:
187 $(SET_SO_PATHS); ./$(RANDTEST)
188
189test_enc:
190 @$(SET_SO_PATHS); sh ./testenc
191
192test_x509:
193 echo test normal x509v1 certificate
194 $(SET_SO_PATHS); sh ./tx509 2>/dev/null
195 echo test first x509v3 certificate
196 $(SET_SO_PATHS); sh ./tx509 v3-cert1.pem 2>/dev/null
197 echo test second x509v3 certificate
198 $(SET_SO_PATHS); sh ./tx509 v3-cert2.pem 2>/dev/null
199
200test_rsa:
201 @$(SET_SO_PATHS); sh ./trsa 2>/dev/null
202 $(SET_SO_PATHS); ./$(RSATEST)
203
204test_crl:
205 @$(SET_SO_PATHS); sh ./tcrl 2>/dev/null
206
207test_sid:
208 @$(SET_SO_PATHS); sh ./tsid 2>/dev/null
209
210test_req:
211 @$(SET_SO_PATHS); sh ./treq 2>/dev/null
212 @$(SET_SO_PATHS); sh ./treq testreq2.pem 2>/dev/null
213
214test_pkcs7:
215 @$(SET_SO_PATHS); sh ./tpkcs7 2>/dev/null
216 @$(SET_SO_PATHS); sh ./tpkcs7d 2>/dev/null
217
218test_bn:
219 @echo starting big number library test, could take a while...
220 @$(SET_SO_PATHS); ./$(BNTEST) >tmp.bntest
221 @echo quit >>tmp.bntest
222 @echo "running bc"
223 @<tmp.bntest sh -c "`sh ./bctest ignore`" | $(PERL) -e '$$i=0; while (<STDIN>) {if (/^test (.*)/) {print STDERR "\nverify $$1";} elsif (!/^0$$/) {die "\nFailed! bc: $$_";} else {print STDERR "."; $$i++;}} print STDERR "\n$$i tests passed\n"'
224 @echo 'test a^b%c implementations'
225 $(SET_SO_PATHS); ./$(EXPTEST)
226
227test_ec:
228 @echo 'test elliptic curves'
229 $(SET_SO_PATHS); ./$(ECTEST)
230
231test_verify:
232 @echo "The following command should have some OK's and some failures"
233 @echo "There are definitly a few expired certificates"
234 -$(SET_SO_PATHS); ../apps/openssl verify -CApath ../certs ../certs/*.pem
235
236test_dh:
237 @echo "Generate a set of DH parameters"
238 $(SET_SO_PATHS); ./$(DHTEST)
239
240test_dsa:
241 @echo "Generate a set of DSA parameters"
242 $(SET_SO_PATHS); ./$(DSATEST)
243 $(SET_SO_PATHS); ./$(DSATEST) -app2_1
244
245test_gen:
246 @echo "Generate and verify a certificate request"
247 @$(SET_SO_PATHS); sh ./testgen
248
249test_ss keyU.ss certU.ss certCA.ss: testss
250 @echo "Generate and certify a test certificate"
251 @$(SET_SO_PATHS); sh ./testss
252
253test_engine:
254 @echo "Manipulate the ENGINE structures"
255 $(SET_SO_PATHS); ./$(ENGINETEST)
256
257test_ssl: keyU.ss certU.ss certCA.ss
258 @echo "test SSL protocol"
259 @$(SET_SO_PATHS); sh ./testssl keyU.ss certU.ss certCA.ss
260
261test_ca:
262 @$(SET_SO_PATHS); if ../apps/openssl no-rsa; then \
263 echo "skipping CA.sh test -- requires RSA"; \
264 else \
265 echo "Generate and certify a test certificate via the 'ca' program"; \
266 sh ./testca; \
267 fi
268
269test_aes: #$(AESTEST)
270# @echo "test Rijndael"
271# $(SET_SO_PATHS); ./$(AESTEST)
272
273lint:
274 lint -DLINT $(INCLUDES) $(SRC)>fluff
275
276depend:
277 $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(SRC)
278
279dclean:
280 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
281 mv -f Makefile.new $(MAKEFILE)
282
283clean:
284 rm -f .rnd tmp.bntest tmp.bctest *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff $(EXE) *.ss *.srl log
285
286$(DLIBSSL):
287 (cd ..; $(MAKE) DIRS=ssl all)
288
289$(DLIBCRYPTO):
290 (cd ..; $(MAKE) DIRS=crypto all)
291
292$(RSATEST): $(RSATEST).o $(DLIBCRYPTO)
293 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
294 $(CC) -o $(RSATEST) $(CFLAGS) $(RSATEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
295 else \
296 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
297 $(CC) -o $(RSATEST) $(CFLAGS) $(RSATEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
298 fi
299
300$(BNTEST): $(BNTEST).o $(DLIBCRYPTO)
301 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
302 $(CC) -o $(BNTEST) $(CFLAGS) $(BNTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
303 else \
304 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
305 $(CC) -o $(BNTEST) $(CFLAGS) $(BNTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
306 fi
307
308$(ECTEST): $(ECTEST).o $(DLIBCRYPTO)
309 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
310 $(CC) -o $(ECTEST) $(CFLAGS) $(ECTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
311 else \
312 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
313 $(CC) -o $(ECTEST) $(CFLAGS) $(ECTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
314 fi
315
316$(EXPTEST): $(EXPTEST).o $(DLIBCRYPTO)
317 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
318 $(CC) -o $(EXPTEST) $(CFLAGS) $(EXPTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
319 else \
320 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
321 $(CC) -o $(EXPTEST) $(CFLAGS) $(EXPTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
322 fi
323
324$(IDEATEST): $(IDEATEST).o $(DLIBCRYPTO)
325 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
326 $(CC) -o $(IDEATEST) $(CFLAGS) $(IDEATEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
327 else \
328 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
329 $(CC) -o $(IDEATEST) $(CFLAGS) $(IDEATEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
330 fi
331
332$(MD2TEST): $(MD2TEST).o $(DLIBCRYPTO)
333 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
334 $(CC) -o $(MD2TEST) $(CFLAGS) $(MD2TEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
335 else \
336 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
337 $(CC) -o $(MD2TEST) $(CFLAGS) $(MD2TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
338 fi
339
340$(SHATEST): $(SHATEST).o $(DLIBCRYPTO)
341 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
342 $(CC) -o $(SHATEST) $(CFLAGS) $(SHATEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
343 else \
344 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
345 $(CC) -o $(SHATEST) $(CFLAGS) $(SHATEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
346 fi
347
348$(SHA1TEST): $(SHA1TEST).o $(DLIBCRYPTO)
349 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
350 $(CC) -o $(SHA1TEST) $(CFLAGS) $(SHA1TEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
351 else \
352 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
353 $(CC) -o $(SHA1TEST) $(CFLAGS) $(SHA1TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
354 fi
355
356$(RMDTEST): $(RMDTEST).o $(DLIBCRYPTO)
357 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
358 $(CC) -o $(RMDTEST) $(CFLAGS) $(RMDTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
359 else \
360 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
361 $(CC) -o $(RMDTEST) $(CFLAGS) $(RMDTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
362 fi
363
364$(MDC2TEST): $(MDC2TEST).o $(DLIBCRYPTO)
365 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
366 $(CC) -o $(MDC2TEST) $(CFLAGS) $(MDC2TEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
367 else \
368 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
369 $(CC) -o $(MDC2TEST) $(CFLAGS) $(MDC2TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
370 fi
371
372$(MD4TEST): $(MD4TEST).o $(DLIBCRYPTO)
373 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
374 $(CC) -o $(MD4TEST) $(CFLAGS) $(MD4TEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
375 else \
376 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
377 $(CC) -o $(MD4TEST) $(CFLAGS) $(MD4TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
378 fi
379
380$(MD5TEST): $(MD5TEST).o $(DLIBCRYPTO)
381 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
382 $(CC) -o $(MD5TEST) $(CFLAGS) $(MD5TEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
383 else \
384 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
385 $(CC) -o $(MD5TEST) $(CFLAGS) $(MD5TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
386 fi
387
388$(HMACTEST): $(HMACTEST).o $(DLIBCRYPTO)
389 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
390 $(CC) -o $(HMACTEST) $(CFLAGS) $(HMACTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
391 else \
392 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
393 $(CC) -o $(HMACTEST) $(CFLAGS) $(HMACTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
394 fi
395
396$(RC2TEST): $(RC2TEST).o $(DLIBCRYPTO)
397 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
398 $(CC) -o $(RC2TEST) $(CFLAGS) $(RC2TEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
399 else \
400 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
401 $(CC) -o $(RC2TEST) $(CFLAGS) $(RC2TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
402 fi
403
404$(BFTEST): $(BFTEST).o $(DLIBCRYPTO)
405 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
406 $(CC) -o $(BFTEST) $(CFLAGS) $(BFTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
407 else \
408 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
409 $(CC) -o $(BFTEST) $(CFLAGS) $(BFTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
410 fi
411
412$(CASTTEST): $(CASTTEST).o $(DLIBCRYPTO)
413 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
414 $(CC) -o $(CASTTEST) $(CFLAGS) $(CASTTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
415 else \
416 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
417 $(CC) -o $(CASTTEST) $(CFLAGS) $(CASTTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
418 fi
419
420$(RC4TEST): $(RC4TEST).o $(DLIBCRYPTO)
421 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
422 $(CC) -o $(RC4TEST) $(CFLAGS) $(RC4TEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
423 else \
424 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
425 $(CC) -o $(RC4TEST) $(CFLAGS) $(RC4TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
426 fi
427
428$(RC5TEST): $(RC5TEST).o $(DLIBCRYPTO)
429 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
430 $(CC) -o $(RC5TEST) $(CFLAGS) $(RC5TEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
431 else \
432 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
433 $(CC) -o $(RC5TEST) $(CFLAGS) $(RC5TEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
434 fi
435
436$(DESTEST): $(DESTEST).o $(DLIBCRYPTO)
437 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
438 $(CC) -o $(DESTEST) $(CFLAGS) $(DESTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
439 else \
440 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
441 $(CC) -o $(DESTEST) $(CFLAGS) $(DESTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
442 fi
443
444$(RANDTEST): $(RANDTEST).o $(DLIBCRYPTO)
445 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
446 $(CC) -o $(RANDTEST) $(CFLAGS) $(RANDTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
447 else \
448 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
449 $(CC) -o $(RANDTEST) $(CFLAGS) $(RANDTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
450 fi
451
452$(DHTEST): $(DHTEST).o $(DLIBCRYPTO)
453 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
454 $(CC) -o $(DHTEST) $(CFLAGS) $(DHTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
455 else \
456 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
457 $(CC) -o $(DHTEST) $(CFLAGS) $(DHTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
458 fi
459
460$(DSATEST): $(DSATEST).o $(DLIBCRYPTO)
461 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
462 $(CC) -o $(DSATEST) $(CFLAGS) $(DSATEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
463 else \
464 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
465 $(CC) -o $(DSATEST) $(CFLAGS) $(DSATEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
466 fi
467
468$(METHTEST): $(METHTEST).o $(DLIBCRYPTO)
469 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
470 $(CC) -o $(METHTEST) $(CFLAGS) $(METHTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
471 else \
472 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
473 $(CC) -o $(METHTEST) $(CFLAGS) $(METHTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
474 fi
475
476$(SSLTEST): $(SSLTEST).o $(DLIBSSL) $(DLIBCRYPTO)
477 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
478 $(CC) -o $(SSLTEST) $(CFLAGS) $(SSLTEST).o $(PEX_LIBS) $(DLIBSSL) $(LIBKRB5) $(DLIBCRYPTO) $(EX_LIBS) ; \
479 else \
480 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
481 $(CC) -o $(SSLTEST) $(CFLAGS) $(SSLTEST).o $(PEX_LIBS) $(LIBSSL) $(LIBKRB5) $(LIBCRYPTO) $(EX_LIBS) ; \
482 fi
483
484$(ENGINETEST): $(ENGINETEST).o $(DLIBCRYPTO)
485 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
486 $(CC) -o $(ENGINETEST) $(CFLAGS) $(ENGINETEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
487 else \
488 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
489 $(CC) -o $(ENGINETEST) $(CFLAGS) $(ENGINETEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
490 fi
491
492$(EVPTEST): $(EVPTEST).o $(DLIBCRYPTO)
493 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
494 $(CC) -o $(EVPTEST) $(CFLAGS) $(EVPTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
495 else \
496 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
497 $(CC) -o $(EVPTEST) $(CFLAGS) $(EVPTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
498 fi
499
500#$(AESTEST).o: $(AESTEST).c
501# $(CC) -c $(CFLAGS) -DINTERMEDIATE_VALUE_KAT -DTRACE_KAT_MCT $(AESTEST).c
502
503#$(AESTEST): $(AESTEST).o $(DLIBCRYPTO)
504# if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
505# $(CC) -o $(AESTEST) $(CFLAGS) $(AESTEST).o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
506# else \
507# LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
508# $(CC) -o $(AESTEST) $(CFLAGS) $(AESTEST).o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
509# fi
510
511dummytest: dummytest.o $(DLIBCRYPTO)
512 if [ "$(SHLIB_TARGET)" = "hpux-shared" -o "$(SHLIB_TARGET)" = "darwin-shared" ] ; then \
513 $(CC) -o dummytest $(CFLAGS) dummytest.o $(PEX_LIBS) $(DLIBCRYPTO) $(EX_LIBS) ; \
514 else \
515 LD_LIBRARY_PATH=..:$$LD_LIBRARY_PATH \
516 $(CC) -o dummytest $(CFLAGS) dummytest.o $(PEX_LIBS) $(LIBCRYPTO) $(EX_LIBS) ; \
517 fi
518
519# DO NOT DELETE THIS LINE -- make depend depends on it.
520
521bftest.o: ../e_os.h ../include/openssl/blowfish.h ../include/openssl/e_os2.h
522bftest.o: ../include/openssl/opensslconf.h bftest.c
523bntest.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
524bntest.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
525bntest.o: ../include/openssl/bn.h ../include/openssl/buffer.h
526bntest.o: ../include/openssl/cast.h ../include/openssl/crypto.h
527bntest.o: ../include/openssl/des.h ../include/openssl/des_old.h
528bntest.o: ../include/openssl/dh.h ../include/openssl/dsa.h
529bntest.o: ../include/openssl/e_os2.h ../include/openssl/err.h
530bntest.o: ../include/openssl/evp.h ../include/openssl/idea.h
531bntest.o: ../include/openssl/lhash.h ../include/openssl/md2.h
532bntest.o: ../include/openssl/md4.h ../include/openssl/md5.h
533bntest.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
534bntest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
535bntest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
536bntest.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
537bntest.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
538bntest.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
539bntest.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
540bntest.o: ../include/openssl/sha.h ../include/openssl/stack.h
541bntest.o: ../include/openssl/symhacks.h ../include/openssl/ui.h
542bntest.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
543bntest.o: ../include/openssl/x509_vfy.h bntest.c
544casttest.o: ../e_os.h ../include/openssl/cast.h ../include/openssl/e_os2.h
545casttest.o: ../include/openssl/opensslconf.h casttest.c
546destest.o: ../include/openssl/crypto.h ../include/openssl/des.h
547destest.o: ../include/openssl/des_old.h ../include/openssl/e_os2.h
548destest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
549destest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
550destest.o: ../include/openssl/symhacks.h ../include/openssl/ui.h
551destest.o: ../include/openssl/ui_compat.h destest.c
552dhtest.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/bn.h
553dhtest.o: ../include/openssl/crypto.h ../include/openssl/dh.h
554dhtest.o: ../include/openssl/e_os2.h ../include/openssl/err.h
555dhtest.o: ../include/openssl/lhash.h ../include/openssl/opensslconf.h
556dhtest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
557dhtest.o: ../include/openssl/rand.h ../include/openssl/safestack.h
558dhtest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h dhtest.c
559dsatest.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/bn.h
560dsatest.o: ../include/openssl/crypto.h ../include/openssl/dh.h
561dsatest.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
562dsatest.o: ../include/openssl/err.h ../include/openssl/lhash.h
563dsatest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
564dsatest.o: ../include/openssl/ossl_typ.h ../include/openssl/rand.h
565dsatest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
566dsatest.o: ../include/openssl/symhacks.h dsatest.c
567ectest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
568ectest.o: ../include/openssl/bn.h ../include/openssl/crypto.h
569ectest.o: ../include/openssl/dh.h ../include/openssl/dsa.h
570ectest.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
571ectest.o: ../include/openssl/engine.h ../include/openssl/err.h
572ectest.o: ../include/openssl/lhash.h ../include/openssl/opensslconf.h
573ectest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
574ectest.o: ../include/openssl/rand.h ../include/openssl/rsa.h
575ectest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
576ectest.o: ../include/openssl/symhacks.h ../include/openssl/ui.h ectest.c
577enginetest.o: ../include/openssl/asn1.h ../include/openssl/bio.h
578enginetest.o: ../include/openssl/bn.h ../include/openssl/buffer.h
579enginetest.o: ../include/openssl/crypto.h ../include/openssl/dh.h
580enginetest.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
581enginetest.o: ../include/openssl/engine.h ../include/openssl/err.h
582enginetest.o: ../include/openssl/lhash.h ../include/openssl/opensslconf.h
583enginetest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
584enginetest.o: ../include/openssl/rand.h ../include/openssl/rsa.h
585enginetest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
586enginetest.o: ../include/openssl/symhacks.h ../include/openssl/ui.h
587enginetest.o: enginetest.c
588evp_test.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
589evp_test.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
590evp_test.o: ../include/openssl/bn.h ../include/openssl/cast.h
591evp_test.o: ../include/openssl/conf.h ../include/openssl/crypto.h
592evp_test.o: ../include/openssl/des.h ../include/openssl/des_old.h
593evp_test.o: ../include/openssl/dh.h ../include/openssl/dsa.h
594evp_test.o: ../include/openssl/e_os2.h ../include/openssl/engine.h
595evp_test.o: ../include/openssl/err.h ../include/openssl/evp.h
596evp_test.o: ../include/openssl/idea.h ../include/openssl/lhash.h
597evp_test.o: ../include/openssl/md2.h ../include/openssl/md4.h
598evp_test.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
599evp_test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
600evp_test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
601evp_test.o: ../include/openssl/ossl_typ.h ../include/openssl/rand.h
602evp_test.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
603evp_test.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
604evp_test.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
605evp_test.o: ../include/openssl/sha.h ../include/openssl/stack.h
606evp_test.o: ../include/openssl/symhacks.h ../include/openssl/ui.h
607evp_test.o: ../include/openssl/ui_compat.h evp_test.c
608exptest.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/bn.h
609exptest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
610exptest.o: ../include/openssl/err.h ../include/openssl/lhash.h
611exptest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
612exptest.o: ../include/openssl/ossl_typ.h ../include/openssl/rand.h
613exptest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
614exptest.o: ../include/openssl/symhacks.h exptest.c
615hmactest.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
616hmactest.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
617hmactest.o: ../include/openssl/bn.h ../include/openssl/cast.h
618hmactest.o: ../include/openssl/crypto.h ../include/openssl/des.h
619hmactest.o: ../include/openssl/des_old.h ../include/openssl/dh.h
620hmactest.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
621hmactest.o: ../include/openssl/evp.h ../include/openssl/hmac.h
622hmactest.o: ../include/openssl/idea.h ../include/openssl/md2.h
623hmactest.o: ../include/openssl/md4.h ../include/openssl/md5.h
624hmactest.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
625hmactest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
626hmactest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
627hmactest.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
628hmactest.o: ../include/openssl/rc5.h ../include/openssl/ripemd.h
629hmactest.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
630hmactest.o: ../include/openssl/sha.h ../include/openssl/stack.h
631hmactest.o: ../include/openssl/symhacks.h ../include/openssl/ui.h
632hmactest.o: ../include/openssl/ui_compat.h hmactest.c
633ideatest.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/idea.h
634ideatest.o: ../include/openssl/opensslconf.h ideatest.c
635md2test.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
636md2test.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
637md2test.o: ../include/openssl/bn.h ../include/openssl/cast.h
638md2test.o: ../include/openssl/crypto.h ../include/openssl/des.h
639md2test.o: ../include/openssl/des_old.h ../include/openssl/dh.h
640md2test.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
641md2test.o: ../include/openssl/evp.h ../include/openssl/idea.h
642md2test.o: ../include/openssl/md2.h ../include/openssl/md4.h
643md2test.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
644md2test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
645md2test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
646md2test.o: ../include/openssl/ossl_typ.h ../include/openssl/rc2.h
647md2test.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
648md2test.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
649md2test.o: ../include/openssl/safestack.h ../include/openssl/sha.h
650md2test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
651md2test.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h md2test.c
652md4test.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
653md4test.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
654md4test.o: ../include/openssl/bn.h ../include/openssl/cast.h
655md4test.o: ../include/openssl/crypto.h ../include/openssl/des.h
656md4test.o: ../include/openssl/des_old.h ../include/openssl/dh.h
657md4test.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
658md4test.o: ../include/openssl/evp.h ../include/openssl/idea.h
659md4test.o: ../include/openssl/md2.h ../include/openssl/md4.h
660md4test.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
661md4test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
662md4test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
663md4test.o: ../include/openssl/ossl_typ.h ../include/openssl/rc2.h
664md4test.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
665md4test.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
666md4test.o: ../include/openssl/safestack.h ../include/openssl/sha.h
667md4test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
668md4test.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h md4test.c
669md5test.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
670md5test.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
671md5test.o: ../include/openssl/bn.h ../include/openssl/cast.h
672md5test.o: ../include/openssl/crypto.h ../include/openssl/des.h
673md5test.o: ../include/openssl/des_old.h ../include/openssl/dh.h
674md5test.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
675md5test.o: ../include/openssl/evp.h ../include/openssl/idea.h
676md5test.o: ../include/openssl/md2.h ../include/openssl/md4.h
677md5test.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
678md5test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
679md5test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
680md5test.o: ../include/openssl/ossl_typ.h ../include/openssl/rc2.h
681md5test.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
682md5test.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
683md5test.o: ../include/openssl/safestack.h ../include/openssl/sha.h
684md5test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
685md5test.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h md5test.c
686mdc2test.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
687mdc2test.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
688mdc2test.o: ../include/openssl/bn.h ../include/openssl/cast.h
689mdc2test.o: ../include/openssl/crypto.h ../include/openssl/des.h
690mdc2test.o: ../include/openssl/des_old.h ../include/openssl/dh.h
691mdc2test.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
692mdc2test.o: ../include/openssl/evp.h ../include/openssl/idea.h
693mdc2test.o: ../include/openssl/md2.h ../include/openssl/md4.h
694mdc2test.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
695mdc2test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
696mdc2test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
697mdc2test.o: ../include/openssl/ossl_typ.h ../include/openssl/rc2.h
698mdc2test.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
699mdc2test.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
700mdc2test.o: ../include/openssl/safestack.h ../include/openssl/sha.h
701mdc2test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
702mdc2test.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h mdc2test.c
703randtest.o: ../e_os.h ../include/openssl/e_os2.h
704randtest.o: ../include/openssl/opensslconf.h ../include/openssl/ossl_typ.h
705randtest.o: ../include/openssl/rand.h randtest.c
706rc2test.o: ../e_os.h ../include/openssl/e_os2.h
707rc2test.o: ../include/openssl/opensslconf.h ../include/openssl/rc2.h rc2test.c
708rc4test.o: ../e_os.h ../include/openssl/e_os2.h
709rc4test.o: ../include/openssl/opensslconf.h ../include/openssl/rc4.h rc4test.c
710rc5test.o: ../e_os.h ../include/openssl/e_os2.h
711rc5test.o: ../include/openssl/opensslconf.h ../include/openssl/rc5.h rc5test.c
712rmdtest.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
713rmdtest.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
714rmdtest.o: ../include/openssl/bn.h ../include/openssl/cast.h
715rmdtest.o: ../include/openssl/crypto.h ../include/openssl/des.h
716rmdtest.o: ../include/openssl/des_old.h ../include/openssl/dh.h
717rmdtest.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
718rmdtest.o: ../include/openssl/evp.h ../include/openssl/idea.h
719rmdtest.o: ../include/openssl/md2.h ../include/openssl/md4.h
720rmdtest.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
721rmdtest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
722rmdtest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
723rmdtest.o: ../include/openssl/ossl_typ.h ../include/openssl/rc2.h
724rmdtest.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
725rmdtest.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
726rmdtest.o: ../include/openssl/safestack.h ../include/openssl/sha.h
727rmdtest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
728rmdtest.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h rmdtest.c
729rsa_test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
730rsa_test.o: ../include/openssl/bn.h ../include/openssl/crypto.h
731rsa_test.o: ../include/openssl/e_os2.h ../include/openssl/err.h
732rsa_test.o: ../include/openssl/lhash.h ../include/openssl/opensslconf.h
733rsa_test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
734rsa_test.o: ../include/openssl/rand.h ../include/openssl/rsa.h
735rsa_test.o: ../include/openssl/safestack.h ../include/openssl/stack.h
736rsa_test.o: ../include/openssl/symhacks.h rsa_test.c
737sha1test.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
738sha1test.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
739sha1test.o: ../include/openssl/bn.h ../include/openssl/cast.h
740sha1test.o: ../include/openssl/crypto.h ../include/openssl/des.h
741sha1test.o: ../include/openssl/des_old.h ../include/openssl/dh.h
742sha1test.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
743sha1test.o: ../include/openssl/evp.h ../include/openssl/idea.h
744sha1test.o: ../include/openssl/md2.h ../include/openssl/md4.h
745sha1test.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
746sha1test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
747sha1test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
748sha1test.o: ../include/openssl/ossl_typ.h ../include/openssl/rc2.h
749sha1test.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
750sha1test.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
751sha1test.o: ../include/openssl/safestack.h ../include/openssl/sha.h
752sha1test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
753sha1test.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h sha1test.c
754shatest.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
755shatest.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
756shatest.o: ../include/openssl/bn.h ../include/openssl/cast.h
757shatest.o: ../include/openssl/crypto.h ../include/openssl/des.h
758shatest.o: ../include/openssl/des_old.h ../include/openssl/dh.h
759shatest.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
760shatest.o: ../include/openssl/evp.h ../include/openssl/idea.h
761shatest.o: ../include/openssl/md2.h ../include/openssl/md4.h
762shatest.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
763shatest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
764shatest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
765shatest.o: ../include/openssl/ossl_typ.h ../include/openssl/rc2.h
766shatest.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
767shatest.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
768shatest.o: ../include/openssl/safestack.h ../include/openssl/sha.h
769shatest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
770shatest.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h shatest.c
771ssltest.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
772ssltest.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
773ssltest.o: ../include/openssl/bn.h ../include/openssl/buffer.h
774ssltest.o: ../include/openssl/cast.h ../include/openssl/comp.h
775ssltest.o: ../include/openssl/crypto.h ../include/openssl/des.h
776ssltest.o: ../include/openssl/des_old.h ../include/openssl/dh.h
777ssltest.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
778ssltest.o: ../include/openssl/engine.h ../include/openssl/err.h
779ssltest.o: ../include/openssl/evp.h ../include/openssl/idea.h
780ssltest.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
781ssltest.o: ../include/openssl/md2.h ../include/openssl/md4.h
782ssltest.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
783ssltest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
784ssltest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
785ssltest.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
786ssltest.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
787ssltest.o: ../include/openssl/rand.h ../include/openssl/rc2.h
788ssltest.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
789ssltest.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
790ssltest.o: ../include/openssl/safestack.h ../include/openssl/sha.h
791ssltest.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
792ssltest.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
793ssltest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
794ssltest.o: ../include/openssl/tls1.h ../include/openssl/ui.h
795ssltest.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
796ssltest.o: ../include/openssl/x509_vfy.h ssltest.c
diff --git a/src/lib/libssl/test/P1ss.cnf b/src/lib/libssl/test/P1ss.cnf
new file mode 100644
index 0000000000..876a0d35f8
--- /dev/null
+++ b/src/lib/libssl/test/P1ss.cnf
@@ -0,0 +1,37 @@
1#
2# SSLeay example configuration file.
3# This is mostly being used for generation of certificate requests.
4#
5
6RANDFILE = ./.rnd
7
8####################################################################
9[ req ]
10default_bits = 512
11default_keyfile = keySS.pem
12distinguished_name = req_distinguished_name
13encrypt_rsa_key = no
14default_md = md2
15
16[ req_distinguished_name ]
17countryName = Country Name (2 letter code)
18countryName_default = AU
19countryName_value = AU
20
21organizationName = Organization Name (eg, company)
22organizationName_value = Dodgy Brothers
23
240.commonName = Common Name (eg, YOUR name)
250.commonName_value = Brother 1
26
271.commonName = Common Name (eg, YOUR name)
281.commonName_value = Brother 2
29
302.commonName = Common Name (eg, YOUR name)
312.commonName_value = Proxy 1
32
33[ v3_proxy ]
34basicConstraints=CA:FALSE
35subjectKeyIdentifier=hash
36authorityKeyIdentifier=keyid,issuer:always
37proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:1,policy:text:AB
diff --git a/src/lib/libssl/test/P2ss.cnf b/src/lib/libssl/test/P2ss.cnf
new file mode 100644
index 0000000000..373a87e7c2
--- /dev/null
+++ b/src/lib/libssl/test/P2ss.cnf
@@ -0,0 +1,45 @@
1#
2# SSLeay example configuration file.
3# This is mostly being used for generation of certificate requests.
4#
5
6RANDFILE = ./.rnd
7
8####################################################################
9[ req ]
10default_bits = 512
11default_keyfile = keySS.pem
12distinguished_name = req_distinguished_name
13encrypt_rsa_key = no
14default_md = md2
15
16[ req_distinguished_name ]
17countryName = Country Name (2 letter code)
18countryName_default = AU
19countryName_value = AU
20
21organizationName = Organization Name (eg, company)
22organizationName_value = Dodgy Brothers
23
240.commonName = Common Name (eg, YOUR name)
250.commonName_value = Brother 1
26
271.commonName = Common Name (eg, YOUR name)
281.commonName_value = Brother 2
29
302.commonName = Common Name (eg, YOUR name)
312.commonName_value = Proxy 1
32
333.commonName = Common Name (eg, YOUR name)
343.commonName_value = Proxy 2
35
36[ v3_proxy ]
37basicConstraints=CA:FALSE
38subjectKeyIdentifier=hash
39authorityKeyIdentifier=keyid,issuer:always
40proxyCertInfo=critical,@proxy_ext
41
42[ proxy_ext ]
43language=id-ppl-anyLanguage
44pathlen=0
45policy=text:BC
diff --git a/src/lib/libssl/test/Sssdsa.cnf b/src/lib/libssl/test/Sssdsa.cnf
new file mode 100644
index 0000000000..8e170a28ef
--- /dev/null
+++ b/src/lib/libssl/test/Sssdsa.cnf
@@ -0,0 +1,27 @@
1#
2# SSLeay example configuration file.
3# This is mostly being used for generation of certificate requests.
4#
5# hacked by iang to do DSA certs - Server
6
7RANDFILE = ./.rnd
8
9####################################################################
10[ req ]
11distinguished_name = req_distinguished_name
12encrypt_rsa_key = no
13
14[ req_distinguished_name ]
15countryName = Country Name (2 letter code)
16countryName_default = ES
17countryName_value = ES
18
19organizationName = Organization Name (eg, company)
20organizationName_value = Tortilleras S.A.
21
220.commonName = Common Name (eg, YOUR name)
230.commonName_value = Torti
24
251.commonName = Common Name (eg, YOUR name)
261.commonName_value = Gordita
27
diff --git a/src/lib/libssl/test/Sssrsa.cnf b/src/lib/libssl/test/Sssrsa.cnf
new file mode 100644
index 0000000000..8c79a03fca
--- /dev/null
+++ b/src/lib/libssl/test/Sssrsa.cnf
@@ -0,0 +1,26 @@
1#
2# SSLeay example configuration file.
3# This is mostly being used for generation of certificate requests.
4#
5# create RSA certs - Server
6
7RANDFILE = ./.rnd
8
9####################################################################
10[ req ]
11distinguished_name = req_distinguished_name
12encrypt_key = no
13
14[ req_distinguished_name ]
15countryName = Country Name (2 letter code)
16countryName_default = ES
17countryName_value = ES
18
19organizationName = Organization Name (eg, company)
20organizationName_value = Tortilleras S.A.
21
220.commonName = Common Name (eg, YOUR name)
230.commonName_value = Torti
24
251.commonName = Common Name (eg, YOUR name)
261.commonName_value = Gordita
diff --git a/src/lib/libssl/test/Uss.cnf b/src/lib/libssl/test/Uss.cnf
new file mode 100644
index 0000000000..0c0ebb5f67
--- /dev/null
+++ b/src/lib/libssl/test/Uss.cnf
@@ -0,0 +1,36 @@
1#
2# SSLeay example configuration file.
3# This is mostly being used for generation of certificate requests.
4#
5
6RANDFILE = ./.rnd
7
8####################################################################
9[ req ]
10default_bits = 512
11default_keyfile = keySS.pem
12distinguished_name = req_distinguished_name
13encrypt_rsa_key = no
14default_md = md2
15
16[ req_distinguished_name ]
17countryName = Country Name (2 letter code)
18countryName_default = AU
19countryName_value = AU
20
21organizationName = Organization Name (eg, company)
22organizationName_value = Dodgy Brothers
23
240.commonName = Common Name (eg, YOUR name)
250.commonName_value = Brother 1
26
271.commonName = Common Name (eg, YOUR name)
281.commonName_value = Brother 2
29
30[ v3_ee ]
31subjectKeyIdentifier=hash
32authorityKeyIdentifier=keyid,issuer:always
33basicConstraints = CA:false
34keyUsage = nonRepudiation, digitalSignature, keyEncipherment
35issuerAltName=issuer:copy
36
diff --git a/src/lib/libssl/test/VMSca-response.1 b/src/lib/libssl/test/VMSca-response.1
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/src/lib/libssl/test/VMSca-response.1
@@ -0,0 +1 @@
diff --git a/src/lib/libssl/test/VMSca-response.2 b/src/lib/libssl/test/VMSca-response.2
new file mode 100644
index 0000000000..9b48ee4cf9
--- /dev/null
+++ b/src/lib/libssl/test/VMSca-response.2
@@ -0,0 +1,2 @@
1y
2y
diff --git a/src/lib/libssl/test/bctest b/src/lib/libssl/test/bctest
new file mode 100644
index 0000000000..e81fc0733a
--- /dev/null
+++ b/src/lib/libssl/test/bctest
@@ -0,0 +1,111 @@
1#!/bin/sh
2
3# This script is used by test/Makefile to check whether a sane 'bc'
4# is installed.
5# ('make test_bn' should not try to run 'bc' if it does not exist or if
6# it is a broken 'bc' version that is known to cause trouble.)
7#
8# If 'bc' works, we also test if it knows the 'print' command.
9#
10# In any case, output an appropriate command line for running (or not
11# running) bc.
12
13
14IFS=:
15try_without_dir=true
16# First we try "bc", then "$dir/bc" for each item in $PATH.
17for dir in dummy:$PATH; do
18 if [ "$try_without_dir" = true ]; then
19 # first iteration
20 bc=bc
21 try_without_dir=false
22 else
23 # second and later iterations
24 bc="$dir/bc"
25 if [ ! -f "$bc" ]; then # '-x' is not available on Ultrix
26 bc=''
27 fi
28 fi
29
30 if [ ! "$bc" = '' ]; then
31 failure=none
32
33
34 # Test for SunOS 5.[78] bc bug
35 "$bc" >tmp.bctest <<\EOF
36obase=16
37ibase=16
38a=AD88C418F31B3FC712D0425001D522B3AE9134FF3A98C13C1FCC1682211195406C1A6C66C6A\
39CEEC1A0EC16950233F77F1C2F2363D56DD71A36C57E0B2511FC4BA8F22D261FE2E9356D99AF57\
4010F3817C0E05BF79C423C3F66FDF321BE8D3F18F625D91B670931C1EF25F28E489BDA1C5422D1\
41C3F6F7A1AD21585746ECC4F10A14A778AF56F08898E965E9909E965E0CB6F85B514150C644759\
423BE731877B16EA07B552088FF2EA728AC5E0FF3A23EB939304519AB8B60F2C33D6BA0945B66F0\
434FC3CADF855448B24A9D7640BCF473E
44b=DCE91E7D120B983EA9A104B5A96D634DD644C37657B1C7860B45E6838999B3DCE5A555583C6\
459209E41F413422954175A06E67FFEF6746DD652F0F48AEFECC3D8CAC13523BDAAD3F5AF4212BD\
468B3CD64126E1A82E190228020C05B91C8B141F1110086FC2A4C6ED631EBA129D04BB9A19FC53D\
473ED0E2017D60A68775B75481449
48(a/b)*b + (a%b) - a
49EOF
50 if [ 0 != "`cat tmp.bctest`" ]; then
51 failure=SunOStest
52 fi
53
54
55 if [ "$failure" = none ]; then
56 # Test for SCO bc bug.
57 "$bc" >tmp.bctest <<\EOF
58obase=16
59ibase=16
60-FFDD63BA1A4648F0D804F8A1C66C53F0D2110590E8A3907EC73B4AEC6F15AC177F176F2274D2\
619DC8022EA0D7DD3ABE9746D2D46DD3EA5B5F6F69DF12877E0AC5E7F5ADFACEE54573F5D256A06\
6211B5D2BC24947724E22AE4EC3FB0C39D9B4694A01AFE5E43B4D99FB9812A0E4A5773D8B254117\
631239157EC6E3D8D50199 * -FFDD63BA1A4648F0D804F8A1C66C53F0D2110590E8A3907EC73B4\
64AEC6F15AC177F176F2274D29DC8022EA0D7DD3ABE9746D2D46DD3EA5B5F6F69DF12877E0AC5E7\
65F5ADFACEE54573F5D256A0611B5D2BC24947724E22AE4EC3FB0C39D9B4694A01AFE5E43B4D99F\
66B9812A0E4A5773D8B2541171239157EC6E3D8D50199 - FFBACC221682DA464B6D7F123482522\
6702EDAEDCA38C3B69E9B7BBCD6165A9CD8716C4903417F23C09A85B851961F92C217258CEEB866\
6885EFCC5DD131853A02C07A873B8E2AF2E40C6D5ED598CD0E8F35AD49F3C3A17FDB7653E4E2DC4\
69A8D23CC34686EE4AD01F7407A7CD74429AC6D36DBF0CB6A3E302D0E5BDFCD048A3B90C1BE5AA8\
70E16C3D5884F9136B43FF7BB443764153D4AEC176C681B078F4CC53D6EB6AB76285537DDEE7C18\
718C72441B52EDBDDBC77E02D34E513F2AABF92F44109CAFE8242BD0ECBAC5604A94B02EA44D43C\
7204E9476E6FBC48043916BFA1485C6093603600273C9C33F13114D78064AE42F3DC466C7DA543D\
7389C8D71
74AD534AFBED2FA39EE9F40E20FCF9E2C861024DB98DDCBA1CD118C49CA55EEBC20D6BA51B2271C\
75928B693D6A73F67FEB1B4571448588B46194617D25D910C6A9A130CC963155CF34079CB218A44\
768A1F57E276D92A33386DDCA3D241DB78C8974ABD71DD05B0FA555709C9910D745185E6FE108E3\
7737F1907D0C56F8BFBF52B9704 % -E557905B56B13441574CAFCE2BD257A750B1A8B2C88D0E36\
78E18EF7C38DAC80D3948E17ED63AFF3B3467866E3B89D09A81B3D16B52F6A3C7134D3C6F5123E9\
79F617E3145BBFBE9AFD0D6E437EA4FF6F04BC67C4F1458B4F0F47B64 - 1C2BBBB19B74E86FD32\
809E8DB6A8C3B1B9986D57ED5419C2E855F7D5469E35E76334BB42F4C43E3F3A31B9697C171DAC4\
81D97935A7E1A14AD209D6CF811F55C6DB83AA9E6DFECFCD6669DED7171EE22A40C6181615CAF3F\
825296964
83EOF
84 if [ "0
850" != "`cat tmp.bctest`" ]; then
86 failure=SCOtest
87 fi
88 fi
89
90
91 if [ "$failure" = none ]; then
92 # bc works; now check if it knows the 'print' command.
93 if [ "OK" = "`echo 'print \"OK\"' | $bc 2>/dev/null`" ]
94 then
95 echo "$bc"
96 else
97 echo "sed 's/print.*//' | $bc"
98 fi
99 exit 0
100 fi
101
102 echo "$bc does not work properly ('$failure' failed). Looking for another bc ..." >&2
103 fi
104done
105
106echo "No working bc found. Consider installing GNU bc." >&2
107if [ "$1" = ignore ]; then
108 echo "cat >/dev/null"
109 exit 0
110fi
111exit 1
diff --git a/src/lib/libssl/test/enginetest.c b/src/lib/libssl/test/enginetest.c
new file mode 100644
index 0000000000..87fa8c57b7
--- /dev/null
+++ b/src/lib/libssl/test/enginetest.c
@@ -0,0 +1,274 @@
1/* crypto/engine/enginetest.c */
2/* Written by Geoff Thorpe (geoff@geoffthorpe.net) for the OpenSSL
3 * project 2000.
4 */
5/* ====================================================================
6 * Copyright (c) 1999-2001 The OpenSSL Project. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 *
12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 *
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in
17 * the documentation and/or other materials provided with the
18 * distribution.
19 *
20 * 3. All advertising materials mentioning features or use of this
21 * software must display the following acknowledgment:
22 * "This product includes software developed by the OpenSSL Project
23 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
24 *
25 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
26 * endorse or promote products derived from this software without
27 * prior written permission. For written permission, please contact
28 * licensing@OpenSSL.org.
29 *
30 * 5. Products derived from this software may not be called "OpenSSL"
31 * nor may "OpenSSL" appear in their names without prior written
32 * permission of the OpenSSL Project.
33 *
34 * 6. Redistributions of any form whatsoever must retain the following
35 * acknowledgment:
36 * "This product includes software developed by the OpenSSL Project
37 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
38 *
39 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
40 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
43 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
46 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
48 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50 * OF THE POSSIBILITY OF SUCH DAMAGE.
51 * ====================================================================
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 */
58
59#include <openssl/e_os2.h>
60#include <stdio.h>
61#include <string.h>
62#include <openssl/buffer.h>
63#include <openssl/crypto.h>
64#include <openssl/engine.h>
65#include <openssl/err.h>
66
67static void display_engine_list()
68 {
69 ENGINE *h;
70 int loop;
71
72 h = ENGINE_get_first();
73 loop = 0;
74 printf("listing available engine types\n");
75 while(h)
76 {
77 printf("engine %i, id = \"%s\", name = \"%s\"\n",
78 loop++, ENGINE_get_id(h), ENGINE_get_name(h));
79 h = ENGINE_get_next(h);
80 }
81 printf("end of list\n");
82 /* ENGINE_get_first() increases the struct_ref counter, so we
83 must call ENGINE_free() to decrease it again */
84 ENGINE_free(h);
85 }
86
87int main(int argc, char *argv[])
88 {
89 ENGINE *block[512];
90 char buf[256];
91 const char *id, *name;
92 ENGINE *ptr;
93 int loop;
94 int to_return = 1;
95 ENGINE *new_h1 = NULL;
96 ENGINE *new_h2 = NULL;
97 ENGINE *new_h3 = NULL;
98 ENGINE *new_h4 = NULL;
99
100 /* enable memory leak checking unless explicitly disabled */
101 if (!((getenv("OPENSSL_DEBUG_MEMORY") != NULL) && (0 == strcmp(getenv("OPENSSL_DEBUG_MEMORY"), "off"))))
102 {
103 CRYPTO_malloc_debug_init();
104 CRYPTO_set_mem_debug_options(V_CRYPTO_MDEBUG_ALL);
105 }
106 else
107 {
108 /* OPENSSL_DEBUG_MEMORY=off */
109 CRYPTO_set_mem_debug_functions(0, 0, 0, 0, 0);
110 }
111 CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
112 ERR_load_crypto_strings();
113
114 memset(block, 0, 512 * sizeof(ENGINE *));
115 if(((new_h1 = ENGINE_new()) == NULL) ||
116 !ENGINE_set_id(new_h1, "test_id0") ||
117 !ENGINE_set_name(new_h1, "First test item") ||
118 ((new_h2 = ENGINE_new()) == NULL) ||
119 !ENGINE_set_id(new_h2, "test_id1") ||
120 !ENGINE_set_name(new_h2, "Second test item") ||
121 ((new_h3 = ENGINE_new()) == NULL) ||
122 !ENGINE_set_id(new_h3, "test_id2") ||
123 !ENGINE_set_name(new_h3, "Third test item") ||
124 ((new_h4 = ENGINE_new()) == NULL) ||
125 !ENGINE_set_id(new_h4, "test_id3") ||
126 !ENGINE_set_name(new_h4, "Fourth test item"))
127 {
128 printf("Couldn't set up test ENGINE structures\n");
129 goto end;
130 }
131 printf("\nenginetest beginning\n\n");
132 display_engine_list();
133 if(!ENGINE_add(new_h1))
134 {
135 printf("Add failed!\n");
136 goto end;
137 }
138 display_engine_list();
139 ptr = ENGINE_get_first();
140 if(!ENGINE_remove(ptr))
141 {
142 printf("Remove failed!\n");
143 goto end;
144 }
145 if (ptr)
146 ENGINE_free(ptr);
147 display_engine_list();
148 if(!ENGINE_add(new_h3) || !ENGINE_add(new_h2))
149 {
150 printf("Add failed!\n");
151 goto end;
152 }
153 display_engine_list();
154 if(!ENGINE_remove(new_h2))
155 {
156 printf("Remove failed!\n");
157 goto end;
158 }
159 display_engine_list();
160 if(!ENGINE_add(new_h4))
161 {
162 printf("Add failed!\n");
163 goto end;
164 }
165 display_engine_list();
166 if(ENGINE_add(new_h3))
167 {
168 printf("Add *should* have failed but didn't!\n");
169 goto end;
170 }
171 else
172 printf("Add that should fail did.\n");
173 ERR_clear_error();
174 if(ENGINE_remove(new_h2))
175 {
176 printf("Remove *should* have failed but didn't!\n");
177 goto end;
178 }
179 else
180 printf("Remove that should fail did.\n");
181 ERR_clear_error();
182 if(!ENGINE_remove(new_h3))
183 {
184 printf("Remove failed!\n");
185 goto end;
186 }
187 display_engine_list();
188 if(!ENGINE_remove(new_h4))
189 {
190 printf("Remove failed!\n");
191 goto end;
192 }
193 display_engine_list();
194 /* Depending on whether there's any hardware support compiled
195 * in, this remove may be destined to fail. */
196 ptr = ENGINE_get_first();
197 if(ptr)
198 if(!ENGINE_remove(ptr))
199 printf("Remove failed!i - probably no hardware "
200 "support present.\n");
201 if (ptr)
202 ENGINE_free(ptr);
203 display_engine_list();
204 if(!ENGINE_add(new_h1) || !ENGINE_remove(new_h1))
205 {
206 printf("Couldn't add and remove to an empty list!\n");
207 goto end;
208 }
209 else
210 printf("Successfully added and removed to an empty list!\n");
211 printf("About to beef up the engine-type list\n");
212 for(loop = 0; loop < 512; loop++)
213 {
214 sprintf(buf, "id%i", loop);
215 id = BUF_strdup(buf);
216 sprintf(buf, "Fake engine type %i", loop);
217 name = BUF_strdup(buf);
218 if(((block[loop] = ENGINE_new()) == NULL) ||
219 !ENGINE_set_id(block[loop], id) ||
220 !ENGINE_set_name(block[loop], name))
221 {
222 printf("Couldn't create block of ENGINE structures.\n"
223 "I'll probably also core-dump now, damn.\n");
224 goto end;
225 }
226 }
227 for(loop = 0; loop < 512; loop++)
228 {
229 if(!ENGINE_add(block[loop]))
230 {
231 printf("\nAdding stopped at %i, (%s,%s)\n",
232 loop, ENGINE_get_id(block[loop]),
233 ENGINE_get_name(block[loop]));
234 goto cleanup_loop;
235 }
236 else
237 printf("."); fflush(stdout);
238 }
239cleanup_loop:
240 printf("\nAbout to empty the engine-type list\n");
241 while((ptr = ENGINE_get_first()) != NULL)
242 {
243 if(!ENGINE_remove(ptr))
244 {
245 printf("\nRemove failed!\n");
246 goto end;
247 }
248 ENGINE_free(ptr);
249 printf("."); fflush(stdout);
250 }
251 for(loop = 0; loop < 512; loop++)
252 {
253 OPENSSL_free((void *)ENGINE_get_id(block[loop]));
254 OPENSSL_free((void *)ENGINE_get_name(block[loop]));
255 }
256 printf("\nTests completed happily\n");
257 to_return = 0;
258end:
259 if(to_return)
260 ERR_print_errors_fp(stderr);
261 if(new_h1) ENGINE_free(new_h1);
262 if(new_h2) ENGINE_free(new_h2);
263 if(new_h3) ENGINE_free(new_h3);
264 if(new_h4) ENGINE_free(new_h4);
265 for(loop = 0; loop < 512; loop++)
266 if(block[loop])
267 ENGINE_free(block[loop]);
268 ENGINE_cleanup();
269 CRYPTO_cleanup_all_ex_data();
270 ERR_free_strings();
271 ERR_remove_state(0);
272 CRYPTO_mem_leaks_fp(stderr);
273 return to_return;
274 }
diff --git a/src/lib/libssl/test/maketests.com b/src/lib/libssl/test/maketests.com
index 94621a655b..dfbfef7b1b 100644
--- a/src/lib/libssl/test/maketests.com
+++ b/src/lib/libssl/test/maketests.com
@@ -586,7 +586,7 @@ $ CCDEFS = "TCPIP_TYPE_''P3'"
586$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS 586$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS
587$ CCEXTRAFLAGS = "" 587$ CCEXTRAFLAGS = ""
588$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS 588$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS
589$ CCDISABLEWARNINGS = "LONGLONGTYPE,LONGLONGSUFX,FOUNDCR" 589$ CCDISABLEWARNINGS = "LONGLONGTYPE,LONGLONGSUFX"
590$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN - 590$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN -
591 CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS 591 CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS
592$! 592$!
diff --git a/src/lib/libssl/test/md4test.c b/src/lib/libssl/test/md4test.c
new file mode 100644
index 0000000000..e0fdc42282
--- /dev/null
+++ b/src/lib/libssl/test/md4test.c
@@ -0,0 +1,134 @@
1/* crypto/md4/md4test.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include <string.h>
61#include <stdlib.h>
62
63#ifdef OPENSSL_NO_MD4
64int main(int argc, char *argv[])
65{
66 printf("No MD4 support\n");
67 return(0);
68}
69#else
70#include <openssl/evp.h>
71#include <openssl/md4.h>
72
73static char *test[]={
74 "",
75 "a",
76 "abc",
77 "message digest",
78 "abcdefghijklmnopqrstuvwxyz",
79 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
80 "12345678901234567890123456789012345678901234567890123456789012345678901234567890",
81 NULL,
82 };
83
84static char *ret[]={
85"31d6cfe0d16ae931b73c59d7e0c089c0",
86"bde52cb31de33e46245e05fbdbd6fb24",
87"a448017aaf21d8525fc10ae87aa6729d",
88"d9130a8164549fe818874806e1c7014b",
89"d79e1c308aa5bbcdeea8ed63df412da9",
90"043f8582f241db351ce627e153e7f0e4",
91"e33b4ddc9c38f2199c3e7b164fcc0536",
92};
93
94static char *pt(unsigned char *md);
95int main(int argc, char *argv[])
96 {
97 int i,err=0;
98 unsigned char **P,**R;
99 char *p;
100 unsigned char md[MD4_DIGEST_LENGTH];
101
102 P=(unsigned char **)test;
103 R=(unsigned char **)ret;
104 i=1;
105 while (*P != NULL)
106 {
107 EVP_Digest(&(P[0][0]),(unsigned long)strlen((char *)*P),md,NULL,EVP_md4(), NULL);
108 p=pt(md);
109 if (strcmp(p,(char *)*R) != 0)
110 {
111 printf("error calculating MD4 on '%s'\n",*P);
112 printf("got %s instead of %s\n",p,*R);
113 err++;
114 }
115 else
116 printf("test %d ok\n",i);
117 i++;
118 R++;
119 P++;
120 }
121 exit(err);
122 return(0);
123 }
124
125static char *pt(unsigned char *md)
126 {
127 int i;
128 static char buf[80];
129
130 for (i=0; i<MD4_DIGEST_LENGTH; i++)
131 sprintf(&(buf[i*2]),"%02x",md[i]);
132 return(buf);
133 }
134#endif
diff --git a/src/lib/libssl/test/methtest.c b/src/lib/libssl/test/methtest.c
new file mode 100644
index 0000000000..005c2f4822
--- /dev/null
+++ b/src/lib/libssl/test/methtest.c
@@ -0,0 +1,105 @@
1/* test/methtest.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include <stdlib.h>
61#include <openssl/rsa.h>
62#include <openssl/x509.h>
63#include "meth.h"
64#include <openssl/err.h>
65
66int main(argc,argv)
67int argc;
68char *argv[];
69 {
70 METHOD_CTX *top,*tmp1,*tmp2;
71
72 top=METH_new(x509_lookup()); /* get a top level context */
73 if (top == NULL) goto err;
74
75 tmp1=METH_new(x509_by_file());
76 if (top == NULL) goto err;
77 METH_arg(tmp1,METH_TYPE_FILE,"cafile1");
78 METH_arg(tmp1,METH_TYPE_FILE,"cafile2");
79 METH_push(top,METH_X509_CA_BY_SUBJECT,tmp1);
80
81 tmp2=METH_new(x509_by_dir());
82 METH_arg(tmp2,METH_TYPE_DIR,"/home/eay/.CAcerts");
83 METH_arg(tmp2,METH_TYPE_DIR,"/home/eay/SSLeay/certs");
84 METH_arg(tmp2,METH_TYPE_DIR,"/usr/local/ssl/certs");
85 METH_push(top,METH_X509_CA_BY_SUBJECT,tmp2);
86
87/* tmp=METH_new(x509_by_issuer_dir);
88 METH_arg(tmp,METH_TYPE_DIR,"/home/eay/.mycerts");
89 METH_push(top,METH_X509_BY_ISSUER,tmp);
90
91 tmp=METH_new(x509_by_issuer_primary);
92 METH_arg(tmp,METH_TYPE_FILE,"/home/eay/.mycerts/primary.pem");
93 METH_push(top,METH_X509_BY_ISSUER,tmp);
94*/
95
96 METH_init(top);
97 METH_control(tmp1,METH_CONTROL_DUMP,stdout);
98 METH_control(tmp2,METH_CONTROL_DUMP,stdout);
99 EXIT(0);
100err:
101 ERR_load_crypto_strings();
102 ERR_print_errors_fp(stderr);
103 EXIT(1);
104 return(0);
105 }
diff --git a/src/lib/libssl/test/pkcs7-1.pem b/src/lib/libssl/test/pkcs7-1.pem
new file mode 100644
index 0000000000..c47b27af88
--- /dev/null
+++ b/src/lib/libssl/test/pkcs7-1.pem
@@ -0,0 +1,15 @@
1-----BEGIN PKCS7-----
2MIICUAYJKoZIhvcNAQcCoIICQTCCAj0CAQExDjAMBggqhkiG9w0CAgUAMCgGCSqG
3SIb3DQEHAaAbBBlFdmVyeW9uZSBnZXRzIEZyaWRheSBvZmYuoIIBXjCCAVowggEE
4AgQUAAApMA0GCSqGSIb3DQEBAgUAMCwxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRF
5eGFtcGxlIE9yZ2FuaXphdGlvbjAeFw05MjA5MDkyMjE4MDZaFw05NDA5MDkyMjE4
6MDVaMEIxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRFeGFtcGxlIE9yZ2FuaXphdGlv
7bjEUMBIGA1UEAxMLVGVzdCBVc2VyIDEwWzANBgkqhkiG9w0BAQEFAANKADBHAkAK
8ZnkdxpiBaN56t3QZu3+wwAHGJxAnAHUUKULhmo2MUdBTs+N4Kh3l3Fr06+mUaBcB
9FKHf5nzcmpr1XWVWILurAgMBAAEwDQYJKoZIhvcNAQECBQADQQBFGqHhqncgSl/N
109XYGnQL3MsJvNnsNV4puZPOakR9Hld8JlDQFEaDR30ogsmp3TMrvdfxpLlTCoZN8
11BxEmnZsWMYGbMIGYAgEBMDQwLDELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFEV4YW1w
12bGUgT3JnYW5pemF0aW9uAgQUAAApMAwGCCqGSIb3DQICBQAwDQYJKoZIhvcNAQEB
13BQAEQAX6aoEvx9+L9PJUJQngPoRuEbnGIL4gCe+0QO+8xmkhaZSsBPNBtX0FIC1C
14j7Kie1x339mxW/w9VZNTUDQQweHh
15-----END PKCS7-----
diff --git a/src/lib/libssl/test/pkcs7.pem b/src/lib/libssl/test/pkcs7.pem
new file mode 100644
index 0000000000..d55c60b94e
--- /dev/null
+++ b/src/lib/libssl/test/pkcs7.pem
@@ -0,0 +1,54 @@
1 MIAGCSqGSIb3DQEHAqCAMIACAQExADCABgkqhkiG9w0BBwEAAKCAMIIE+DCCBGGg
2 AwIBAgIQaGSF/JpbS1C223+yrc+N1DANBgkqhkiG9w0BAQQFADBiMREwDwYDVQQH
3 EwhJbnRlcm5ldDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNDAyBgNVBAsTK1Zl
4 cmlTaWduIENsYXNzIDEgQ0EgLSBJbmRpdmlkdWFsIFN1YnNjcmliZXIwHhcNOTYw
5 ODEyMDAwMDAwWhcNOTYwODE3MjM1OTU5WjCCASAxETAPBgNVBAcTCEludGVybmV0
6 MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE0MDIGA1UECxMrVmVyaVNpZ24gQ2xh
7 c3MgMSBDQSAtIEluZGl2aWR1YWwgU3Vic2NyaWJlcjE3MDUGA1UECxMuRGlnaXRh
8 bCBJRCBDbGFzcyAxIC0gU01JTUUgVmVyaVNpZ24sIEluYy4gVEVTVDFGMEQGA1UE
9 CxM9d3d3LnZlcmlzaWduLmNvbS9yZXBvc2l0b3J5L0NQUyBJbmNvcnAuIGJ5IFJl
10 Zi4sTElBQi5MVEQoYyk5NjEZMBcGA1UEAxMQQWxleGFuZHJlIERlYWNvbjEgMB4G
11 CSqGSIb3DQEJARYRYWxleEB2ZXJpc2lnbi5jb20wWzANBgkqhkiG9w0BAQEFAANK
12 ADBHAkAOy7xxCAIkOfuIA2LyRpxgKlDORl8htdXYhF5iBGUx1GYaK6KF+bK/CCI0
13 l4j2OfWGFBUrwGoWqxTNcWgTfMzRAgMBAAGjggIyMIICLjAJBgNVHRMEAjAAMIIC
14 HwYDVR0DBIICFjCCAhIwggIOMIICCgYLYIZIAYb4RQEHAQEwggH5FoIBp1RoaXMg
15 Y2VydGlmaWNhdGUgaW5jb3Jwb3JhdGVzIGJ5IHJlZmVyZW5jZSwgYW5kIGl0cyB1
16 c2UgaXMgc3RyaWN0bHkgc3ViamVjdCB0bywgdGhlIFZlcmlTaWduIENlcnRpZmlj
17 YXRpb24gUHJhY3RpY2UgU3RhdGVtZW50IChDUFMpLCBhdmFpbGFibGUgYXQ6IGh0
18 dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9DUFM7IGJ5IEUtbWFpbCBhdCBDUFMtcmVx
19 dWVzdHNAdmVyaXNpZ24uY29tOyBvciBieSBtYWlsIGF0IFZlcmlTaWduLCBJbmMu
20 LCAyNTkzIENvYXN0IEF2ZS4sIE1vdW50YWluIFZpZXcsIENBIDk0MDQzIFVTQSBU
21 ZWwuICsxICg0MTUpIDk2MS04ODMwIENvcHlyaWdodCAoYykgMTk5NiBWZXJpU2ln
22 biwgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4gQ0VSVEFJTiBXQVJSQU5USUVT
23 IERJU0NMQUlNRUQgYW5kIExJQUJJTElUWSBMSU1JVEVELqAOBgxghkgBhvhFAQcB
24 AQGhDgYMYIZIAYb4RQEHAQECMCwwKhYoaHR0cHM6Ly93d3cudmVyaXNpZ24uY29t
25 L3JlcG9zaXRvcnkvQ1BTIDANBgkqhkiG9w0BAQQFAAOBgQAimWMGQwwwxk+b3KAL
26 HlSWXtU7LWHe29CEG8XeVNTvrqs6SBqT7OoENOkGxpfdpVgZ3Qw2SKjxDvbvpfSF
27 slsqcxWSgB/hWuaVuZCkvTw/dYGGOxkTJGxvDCfl1PZjX4dKbatslsi9Z9HpGWT7
28 ttItRwKqcBKgmCJvKi1pGWED0zCCAnkwggHioAMCAQICEDURpVKQb+fQKaRAGdQR
29 /D4wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlT
30 aWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5IENlcnRp
31 ZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDYyNzAwMDAwMFoXDTk3MDYyNzIzNTk1
32 OVowYjERMA8GA1UEBxMISW50ZXJuZXQxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMu
33 MTQwMgYDVQQLEytWZXJpU2lnbiBDbGFzcyAxIENBIC0gSW5kaXZpZHVhbCBTdWJz
34 Y3JpYmVyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2FKbPTdAFDdjKI9Bv
35 qrQpkmOOLPhvltcunXZLEbE2jVfJw/0cxrr+Hgi6M8qV6r7jW80GqLd5HUQq7XPy
36 sVKDaBBwZJHXPmv5912dFEObbpdFmIFH0S3L3bty10w/cariQPJUObwW7s987Lrb
37 P2wqsxaxhhKdrpM01bjV0Pc+qQIDAQABozMwMTAPBgNVHRMECDAGAQH/AgEBMAsG
38 A1UdDwQEAwIBBjARBglghkgBhvhCAQEEBAMCAgQwDQYJKoZIhvcNAQECBQADgYEA
39 KeXHoBmnbxRCgk0jM9e9mDppdxpsipIna/J8DOHEUuD4nONAr4+xOg73SBl026n7
40 Bk55A2wvAMGo7+kKTZ+rHaFDDcmq4O+rzFri2RIOeGAncj1IcGptAQhvXoIhFMG4
41 Jlzg1KlHZHqy7D3jex78zcSU7kKOu8f5tAX1jC3+sToAAKGAMIIBJzCBkTANBgkq
42 hkiG9w0BAQIFADBiMREwDwYDVQQHEwhJbnRlcm5ldDEXMBUGA1UEChMOVmVyaVNp
43 Z24sIEluYy4xNDAyBgNVBAsTK1ZlcmlTaWduIENsYXNzIDEgQ0EgLSBJbmRpdmlk
44 dWFsIFN1YnNjcmliZXIXDTk2MDcwMTE3MzA0MFoXDTk3MDcwMTAwMDAwMFowDQYJ
45 KoZIhvcNAQECBQADgYEAGLuQ6PX8A7AiqBEtWzYtl6lZNSDI0bR5YUo+D2Jzkw30
46 dxQnJSbKXEc6XYuzAW5HvrzATXu5c19WWPT4cRDwmjH71i9QcDysWwf/wE0qGTiW
47 I3tQT0I5VGh7jIJD07nlBw3R4Xl8dH9kr85JsWinqDH5YKpIo9o8knY5n7+qjOow
48 ggEkMIGOMA0GCSqGSIb3DQEBAgUAMF8xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5W
49 ZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMSBQdWJsaWMgUHJpbWFyeSBD
50 ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eRcNOTYwNzE2MjMxMTI5WhcNOTYwODE1MDAw
51 MDAwWjANBgkqhkiG9w0BAQIFAAOBgQAXsLE4vnsY6sY67QrmWec7iaU2ehzxanEK
52 /9wKHZNuhlNzk+qGZZw2evxfUe2OaRbYpl8zuZvhK9BHD3ad14OSe9/zx5hOPgP/
53 DQXt6R4R8Q/1JheBrolrgbavjvI2wKS8/Psp2prBrkF4T48+AKRmS8Zzh1guxgvP
54 b+xSu/jH0gAAMYAAAAAAAAAAAA==
diff --git a/src/lib/libssl/test/r160test.c b/src/lib/libssl/test/r160test.c
new file mode 100644
index 0000000000..a172e393ca
--- /dev/null
+++ b/src/lib/libssl/test/r160test.c
@@ -0,0 +1,57 @@
1/* test/r160test.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
diff --git a/src/lib/libssl/test/rsa_test.c b/src/lib/libssl/test/rsa_test.c
new file mode 100644
index 0000000000..b8b462d33b
--- /dev/null
+++ b/src/lib/libssl/test/rsa_test.c
@@ -0,0 +1,318 @@
1/* test vectors from p1ovect1.txt */
2
3#include <stdio.h>
4#include <string.h>
5
6#include "e_os.h"
7
8#include <openssl/crypto.h>
9#include <openssl/err.h>
10#include <openssl/rand.h>
11#ifdef OPENSSL_NO_RSA
12int main(int argc, char *argv[])
13{
14 printf("No RSA support\n");
15 return(0);
16}
17#else
18#include <openssl/rsa.h>
19#include <openssl/engine.h>
20
21#define SetKey \
22 key->n = BN_bin2bn(n, sizeof(n)-1, key->n); \
23 key->e = BN_bin2bn(e, sizeof(e)-1, key->e); \
24 key->d = BN_bin2bn(d, sizeof(d)-1, key->d); \
25 key->p = BN_bin2bn(p, sizeof(p)-1, key->p); \
26 key->q = BN_bin2bn(q, sizeof(q)-1, key->q); \
27 key->dmp1 = BN_bin2bn(dmp1, sizeof(dmp1)-1, key->dmp1); \
28 key->dmq1 = BN_bin2bn(dmq1, sizeof(dmq1)-1, key->dmq1); \
29 key->iqmp = BN_bin2bn(iqmp, sizeof(iqmp)-1, key->iqmp); \
30 memcpy(c, ctext_ex, sizeof(ctext_ex) - 1); \
31 return (sizeof(ctext_ex) - 1);
32
33static int key1(RSA *key, unsigned char *c)
34 {
35 static unsigned char n[] =
36"\x00\xAA\x36\xAB\xCE\x88\xAC\xFD\xFF\x55\x52\x3C\x7F\xC4\x52\x3F"
37"\x90\xEF\xA0\x0D\xF3\x77\x4A\x25\x9F\x2E\x62\xB4\xC5\xD9\x9C\xB5"
38"\xAD\xB3\x00\xA0\x28\x5E\x53\x01\x93\x0E\x0C\x70\xFB\x68\x76\x93"
39"\x9C\xE6\x16\xCE\x62\x4A\x11\xE0\x08\x6D\x34\x1E\xBC\xAC\xA0\xA1"
40"\xF5";
41
42 static unsigned char e[] = "\x11";
43
44 static unsigned char d[] =
45"\x0A\x03\x37\x48\x62\x64\x87\x69\x5F\x5F\x30\xBC\x38\xB9\x8B\x44"
46"\xC2\xCD\x2D\xFF\x43\x40\x98\xCD\x20\xD8\xA1\x38\xD0\x90\xBF\x64"
47"\x79\x7C\x3F\xA7\xA2\xCD\xCB\x3C\xD1\xE0\xBD\xBA\x26\x54\xB4\xF9"
48"\xDF\x8E\x8A\xE5\x9D\x73\x3D\x9F\x33\xB3\x01\x62\x4A\xFD\x1D\x51";
49
50 static unsigned char p[] =
51"\x00\xD8\x40\xB4\x16\x66\xB4\x2E\x92\xEA\x0D\xA3\xB4\x32\x04\xB5"
52"\xCF\xCE\x33\x52\x52\x4D\x04\x16\xA5\xA4\x41\xE7\x00\xAF\x46\x12"
53"\x0D";
54
55 static unsigned char q[] =
56"\x00\xC9\x7F\xB1\xF0\x27\xF4\x53\xF6\x34\x12\x33\xEA\xAA\xD1\xD9"
57"\x35\x3F\x6C\x42\xD0\x88\x66\xB1\xD0\x5A\x0F\x20\x35\x02\x8B\x9D"
58"\x89";
59
60 static unsigned char dmp1[] =
61"\x59\x0B\x95\x72\xA2\xC2\xA9\xC4\x06\x05\x9D\xC2\xAB\x2F\x1D\xAF"
62"\xEB\x7E\x8B\x4F\x10\xA7\x54\x9E\x8E\xED\xF5\xB4\xFC\xE0\x9E\x05";
63
64 static unsigned char dmq1[] =
65"\x00\x8E\x3C\x05\x21\xFE\x15\xE0\xEA\x06\xA3\x6F\xF0\xF1\x0C\x99"
66"\x52\xC3\x5B\x7A\x75\x14\xFD\x32\x38\xB8\x0A\xAD\x52\x98\x62\x8D"
67"\x51";
68
69 static unsigned char iqmp[] =
70"\x36\x3F\xF7\x18\x9D\xA8\xE9\x0B\x1D\x34\x1F\x71\xD0\x9B\x76\xA8"
71"\xA9\x43\xE1\x1D\x10\xB2\x4D\x24\x9F\x2D\xEA\xFE\xF8\x0C\x18\x26";
72
73 static unsigned char ctext_ex[] =
74"\x1b\x8f\x05\xf9\xca\x1a\x79\x52\x6e\x53\xf3\xcc\x51\x4f\xdb\x89"
75"\x2b\xfb\x91\x93\x23\x1e\x78\xb9\x92\xe6\x8d\x50\xa4\x80\xcb\x52"
76"\x33\x89\x5c\x74\x95\x8d\x5d\x02\xab\x8c\x0f\xd0\x40\xeb\x58\x44"
77"\xb0\x05\xc3\x9e\xd8\x27\x4a\x9d\xbf\xa8\x06\x71\x40\x94\x39\xd2";
78
79 SetKey;
80 }
81
82static int key2(RSA *key, unsigned char *c)
83 {
84 static unsigned char n[] =
85"\x00\xA3\x07\x9A\x90\xDF\x0D\xFD\x72\xAC\x09\x0C\xCC\x2A\x78\xB8"
86"\x74\x13\x13\x3E\x40\x75\x9C\x98\xFA\xF8\x20\x4F\x35\x8A\x0B\x26"
87"\x3C\x67\x70\xE7\x83\xA9\x3B\x69\x71\xB7\x37\x79\xD2\x71\x7B\xE8"
88"\x34\x77\xCF";
89
90 static unsigned char e[] = "\x3";
91
92 static unsigned char d[] =
93"\x6C\xAF\xBC\x60\x94\xB3\xFE\x4C\x72\xB0\xB3\x32\xC6\xFB\x25\xA2"
94"\xB7\x62\x29\x80\x4E\x68\x65\xFC\xA4\x5A\x74\xDF\x0F\x8F\xB8\x41"
95"\x3B\x52\xC0\xD0\xE5\x3D\x9B\x59\x0F\xF1\x9B\xE7\x9F\x49\xDD\x21"
96"\xE5\xEB";
97
98 static unsigned char p[] =
99"\x00\xCF\x20\x35\x02\x8B\x9D\x86\x98\x40\xB4\x16\x66\xB4\x2E\x92"
100"\xEA\x0D\xA3\xB4\x32\x04\xB5\xCF\xCE\x91";
101
102 static unsigned char q[] =
103"\x00\xC9\x7F\xB1\xF0\x27\xF4\x53\xF6\x34\x12\x33\xEA\xAA\xD1\xD9"
104"\x35\x3F\x6C\x42\xD0\x88\x66\xB1\xD0\x5F";
105
106 static unsigned char dmp1[] =
107"\x00\x8A\x15\x78\xAC\x5D\x13\xAF\x10\x2B\x22\xB9\x99\xCD\x74\x61"
108"\xF1\x5E\x6D\x22\xCC\x03\x23\xDF\xDF\x0B";
109
110 static unsigned char dmq1[] =
111"\x00\x86\x55\x21\x4A\xC5\x4D\x8D\x4E\xCD\x61\x77\xF1\xC7\x36\x90"
112"\xCE\x2A\x48\x2C\x8B\x05\x99\xCB\xE0\x3F";
113
114 static unsigned char iqmp[] =
115"\x00\x83\xEF\xEF\xB8\xA9\xA4\x0D\x1D\xB6\xED\x98\xAD\x84\xED\x13"
116"\x35\xDC\xC1\x08\xF3\x22\xD0\x57\xCF\x8D";
117
118 static unsigned char ctext_ex[] =
119"\x14\xbd\xdd\x28\xc9\x83\x35\x19\x23\x80\xe8\xe5\x49\xb1\x58\x2a"
120"\x8b\x40\xb4\x48\x6d\x03\xa6\xa5\x31\x1f\x1f\xd5\xf0\xa1\x80\xe4"
121"\x17\x53\x03\x29\xa9\x34\x90\x74\xb1\x52\x13\x54\x29\x08\x24\x52"
122"\x62\x51";
123
124 SetKey;
125 }
126
127static int key3(RSA *key, unsigned char *c)
128 {
129 static unsigned char n[] =
130"\x00\xBB\xF8\x2F\x09\x06\x82\xCE\x9C\x23\x38\xAC\x2B\x9D\xA8\x71"
131"\xF7\x36\x8D\x07\xEE\xD4\x10\x43\xA4\x40\xD6\xB6\xF0\x74\x54\xF5"
132"\x1F\xB8\xDF\xBA\xAF\x03\x5C\x02\xAB\x61\xEA\x48\xCE\xEB\x6F\xCD"
133"\x48\x76\xED\x52\x0D\x60\xE1\xEC\x46\x19\x71\x9D\x8A\x5B\x8B\x80"
134"\x7F\xAF\xB8\xE0\xA3\xDF\xC7\x37\x72\x3E\xE6\xB4\xB7\xD9\x3A\x25"
135"\x84\xEE\x6A\x64\x9D\x06\x09\x53\x74\x88\x34\xB2\x45\x45\x98\x39"
136"\x4E\xE0\xAA\xB1\x2D\x7B\x61\xA5\x1F\x52\x7A\x9A\x41\xF6\xC1\x68"
137"\x7F\xE2\x53\x72\x98\xCA\x2A\x8F\x59\x46\xF8\xE5\xFD\x09\x1D\xBD"
138"\xCB";
139
140 static unsigned char e[] = "\x11";
141
142 static unsigned char d[] =
143"\x00\xA5\xDA\xFC\x53\x41\xFA\xF2\x89\xC4\xB9\x88\xDB\x30\xC1\xCD"
144"\xF8\x3F\x31\x25\x1E\x06\x68\xB4\x27\x84\x81\x38\x01\x57\x96\x41"
145"\xB2\x94\x10\xB3\xC7\x99\x8D\x6B\xC4\x65\x74\x5E\x5C\x39\x26\x69"
146"\xD6\x87\x0D\xA2\xC0\x82\xA9\x39\xE3\x7F\xDC\xB8\x2E\xC9\x3E\xDA"
147"\xC9\x7F\xF3\xAD\x59\x50\xAC\xCF\xBC\x11\x1C\x76\xF1\xA9\x52\x94"
148"\x44\xE5\x6A\xAF\x68\xC5\x6C\x09\x2C\xD3\x8D\xC3\xBE\xF5\xD2\x0A"
149"\x93\x99\x26\xED\x4F\x74\xA1\x3E\xDD\xFB\xE1\xA1\xCE\xCC\x48\x94"
150"\xAF\x94\x28\xC2\xB7\xB8\x88\x3F\xE4\x46\x3A\x4B\xC8\x5B\x1C\xB3"
151"\xC1";
152
153 static unsigned char p[] =
154"\x00\xEE\xCF\xAE\x81\xB1\xB9\xB3\xC9\x08\x81\x0B\x10\xA1\xB5\x60"
155"\x01\x99\xEB\x9F\x44\xAE\xF4\xFD\xA4\x93\xB8\x1A\x9E\x3D\x84\xF6"
156"\x32\x12\x4E\xF0\x23\x6E\x5D\x1E\x3B\x7E\x28\xFA\xE7\xAA\x04\x0A"
157"\x2D\x5B\x25\x21\x76\x45\x9D\x1F\x39\x75\x41\xBA\x2A\x58\xFB\x65"
158"\x99";
159
160 static unsigned char q[] =
161"\x00\xC9\x7F\xB1\xF0\x27\xF4\x53\xF6\x34\x12\x33\xEA\xAA\xD1\xD9"
162"\x35\x3F\x6C\x42\xD0\x88\x66\xB1\xD0\x5A\x0F\x20\x35\x02\x8B\x9D"
163"\x86\x98\x40\xB4\x16\x66\xB4\x2E\x92\xEA\x0D\xA3\xB4\x32\x04\xB5"
164"\xCF\xCE\x33\x52\x52\x4D\x04\x16\xA5\xA4\x41\xE7\x00\xAF\x46\x15"
165"\x03";
166
167 static unsigned char dmp1[] =
168"\x54\x49\x4C\xA6\x3E\xBA\x03\x37\xE4\xE2\x40\x23\xFC\xD6\x9A\x5A"
169"\xEB\x07\xDD\xDC\x01\x83\xA4\xD0\xAC\x9B\x54\xB0\x51\xF2\xB1\x3E"
170"\xD9\x49\x09\x75\xEA\xB7\x74\x14\xFF\x59\xC1\xF7\x69\x2E\x9A\x2E"
171"\x20\x2B\x38\xFC\x91\x0A\x47\x41\x74\xAD\xC9\x3C\x1F\x67\xC9\x81";
172
173 static unsigned char dmq1[] =
174"\x47\x1E\x02\x90\xFF\x0A\xF0\x75\x03\x51\xB7\xF8\x78\x86\x4C\xA9"
175"\x61\xAD\xBD\x3A\x8A\x7E\x99\x1C\x5C\x05\x56\xA9\x4C\x31\x46\xA7"
176"\xF9\x80\x3F\x8F\x6F\x8A\xE3\x42\xE9\x31\xFD\x8A\xE4\x7A\x22\x0D"
177"\x1B\x99\xA4\x95\x84\x98\x07\xFE\x39\xF9\x24\x5A\x98\x36\xDA\x3D";
178
179 static unsigned char iqmp[] =
180"\x00\xB0\x6C\x4F\xDA\xBB\x63\x01\x19\x8D\x26\x5B\xDB\xAE\x94\x23"
181"\xB3\x80\xF2\x71\xF7\x34\x53\x88\x50\x93\x07\x7F\xCD\x39\xE2\x11"
182"\x9F\xC9\x86\x32\x15\x4F\x58\x83\xB1\x67\xA9\x67\xBF\x40\x2B\x4E"
183"\x9E\x2E\x0F\x96\x56\xE6\x98\xEA\x36\x66\xED\xFB\x25\x79\x80\x39"
184"\xF7";
185
186 static unsigned char ctext_ex[] =
187"\xb8\x24\x6b\x56\xa6\xed\x58\x81\xae\xb5\x85\xd9\xa2\x5b\x2a\xd7"
188"\x90\xc4\x17\xe0\x80\x68\x1b\xf1\xac\x2b\xc3\xde\xb6\x9d\x8b\xce"
189"\xf0\xc4\x36\x6f\xec\x40\x0a\xf0\x52\xa7\x2e\x9b\x0e\xff\xb5\xb3"
190"\xf2\xf1\x92\xdb\xea\xca\x03\xc1\x27\x40\x05\x71\x13\xbf\x1f\x06"
191"\x69\xac\x22\xe9\xf3\xa7\x85\x2e\x3c\x15\xd9\x13\xca\xb0\xb8\x86"
192"\x3a\x95\xc9\x92\x94\xce\x86\x74\x21\x49\x54\x61\x03\x46\xf4\xd4"
193"\x74\xb2\x6f\x7c\x48\xb4\x2e\xe6\x8e\x1f\x57\x2a\x1f\xc4\x02\x6a"
194"\xc4\x56\xb4\xf5\x9f\x7b\x62\x1e\xa1\xb9\xd8\x8f\x64\x20\x2f\xb1";
195
196 SetKey;
197 }
198
199static int pad_unknown(void)
200{
201 unsigned long l;
202 while ((l = ERR_get_error()) != 0)
203 if (ERR_GET_REASON(l) == RSA_R_UNKNOWN_PADDING_TYPE)
204 return(1);
205 return(0);
206}
207
208static const char rnd_seed[] = "string to make the random number generator think it has entropy";
209
210int main(int argc, char *argv[])
211 {
212 int err=0;
213 int v;
214 RSA *key;
215 unsigned char ptext[256];
216 unsigned char ctext[256];
217 static unsigned char ptext_ex[] = "\x54\x85\x9b\x34\x2c\x49\xea\x2a";
218 unsigned char ctext_ex[256];
219 int plen;
220 int clen = 0;
221 int num;
222
223 CRYPTO_malloc_debug_init();
224 CRYPTO_dbg_set_options(V_CRYPTO_MDEBUG_ALL);
225 CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
226
227 RAND_seed(rnd_seed, sizeof rnd_seed); /* or OAEP may fail */
228
229 plen = sizeof(ptext_ex) - 1;
230
231 for (v = 0; v < 3; v++)
232 {
233 key = RSA_new();
234 switch (v) {
235 case 0:
236 clen = key1(key, ctext_ex);
237 break;
238 case 1:
239 clen = key2(key, ctext_ex);
240 break;
241 case 2:
242 clen = key3(key, ctext_ex);
243 break;
244 }
245
246 num = RSA_public_encrypt(plen, ptext_ex, ctext, key,
247 RSA_PKCS1_PADDING);
248 if (num != clen)
249 {
250 printf("PKCS#1 v1.5 encryption failed!\n");
251 err=1;
252 goto oaep;
253 }
254
255 num = RSA_private_decrypt(num, ctext, ptext, key,
256 RSA_PKCS1_PADDING);
257 if (num != plen || memcmp(ptext, ptext_ex, num) != 0)
258 {
259 printf("PKCS#1 v1.5 decryption failed!\n");
260 err=1;
261 }
262 else
263 printf("PKCS #1 v1.5 encryption/decryption ok\n");
264
265 oaep:
266 ERR_clear_error();
267 num = RSA_public_encrypt(plen, ptext_ex, ctext, key,
268 RSA_PKCS1_OAEP_PADDING);
269 if (num == -1 && pad_unknown())
270 {
271 printf("No OAEP support\n");
272 goto next;
273 }
274 if (num != clen)
275 {
276 printf("OAEP encryption failed!\n");
277 err=1;
278 goto next;
279 }
280
281 num = RSA_private_decrypt(num, ctext, ptext, key,
282 RSA_PKCS1_OAEP_PADDING);
283 if (num != plen || memcmp(ptext, ptext_ex, num) != 0)
284 {
285 printf("OAEP decryption (encrypted data) failed!\n");
286 err=1;
287 }
288 else if (memcmp(ctext, ctext_ex, num) == 0)
289 {
290 printf("OAEP test vector %d passed!\n", v);
291 goto next;
292 }
293
294 /* Different ciphertexts (rsa_oaep.c without -DPKCS_TESTVECT).
295 Try decrypting ctext_ex */
296
297 num = RSA_private_decrypt(clen, ctext_ex, ptext, key,
298 RSA_PKCS1_OAEP_PADDING);
299
300 if (num != plen || memcmp(ptext, ptext_ex, num) != 0)
301 {
302 printf("OAEP decryption (test vector data) failed!\n");
303 err=1;
304 }
305 else
306 printf("OAEP encryption/decryption ok\n");
307 next:
308 RSA_free(key);
309 }
310
311 CRYPTO_cleanup_all_ex_data();
312 ERR_remove_state(0);
313
314 CRYPTO_mem_leaks_fp(stderr);
315
316 return err;
317 }
318#endif
diff --git a/src/lib/libssl/test/sha1hashes.txt b/src/lib/libssl/test/sha1hashes.txt
new file mode 100644
index 0000000000..4adfa197e9
--- /dev/null
+++ b/src/lib/libssl/test/sha1hashes.txt
@@ -0,0 +1,342 @@
1# Configuration information for "SHA-1 Test"
2# SHA tests are configured for BYTE oriented implementations
3H>SHS Type 1 Hashes<H
4D>
5DA39A3EE5E6B4B0D3255BFEF95601890AFD80709 ^
63CDF2936DA2FC556BFA533AB1EB59CE710AC80E5 ^
719C1E2048FA7393CFBF2D310AD8209EC11D996E5 ^
8CA775D8C80FAA6F87FA62BECA6CA6089D63B56E5 ^
971AC973D0E4B50AE9E5043FF4D615381120A25A0 ^
10A6B5B9F854CFB76701C3BDDBF374B3094EA49CBA ^
11D87A0EE74E4B9AD72E6847C87BDEEB3D07844380 ^
121976B8DD509FE66BF09C9A8D33534D4EF4F63BFD ^
135A78F439B6DB845BB8A558E4CEB106CD7B7FF783 ^
14F871BCE62436C1E280357416695EE2EF9B83695C ^
1562B243D1B780E1D31CF1BA2DE3F01C72AEEA0E47 ^
161698994A273404848E56E7FDA4457B5900DE1342 ^
17056F4CDC02791DA7ED1EB2303314F7667518DEEF ^
189FE2DA967BD8441EEA1C32DF68DDAA9DC1FC8E4B ^
1973A31777B4ACE9384EFA8BBEAD45C51A71ABA6DD ^
203F9D7C4E2384EDDABFF5DD8A31E23DE3D03F42AC ^
214814908F72B93FFD011135BEE347DE9A08DA838F ^
220978374B67A412A3102C5AA0B10E1A6596FC68EB ^
2344AD6CB618BD935460D46D3F921D87B99AB91C1E ^
2402DC989AF265B09CF8485640842128DCF95E9F39 ^
2567507B8D497B35D6E99FC01976D73F54AECA75CF ^
261EAE0373C1317CB60C36A42A867B716039D441F5 ^
279C3834589E5BFFAC9F50950E0199B3EC2620BEC8 ^
28209F7ABC7F3B878EE46CDF3A1FBB9C21C3474F32 ^
2905FC054B00D97753A9B3E2DA8FBBA3EE808CEF22 ^
300C4980EA3A46C757DFBFC5BAA38AC6C8E72DDCE7 ^
3196A460D2972D276928B69864445BEA353BDCFFD2 ^
32F3EF04D8FA8C6FA9850F394A4554C080956FA64B ^
33F2A31D875D1D7B30874D416C4D2EA6BAF0FFBAFE ^
34F4942D3B9E9588DCFDC6312A84DF75D05F111C20 ^
35310207DF35B014E4676D30806FA34424813734DD ^
364DA1955B2FA7C7E74E3F47D7360CE530BBF57CA3 ^
3774C4BC5B26FB4A08602D40CCEC6C6161B6C11478 ^
380B103CE297338DFC7395F7715EE47539B556DDB6 ^
39EFC72D99E3D2311CE14190C0B726BDC68F4B0821 ^
40660EDAC0A8F4CE33DA0D8DBAE597650E97687250 ^
41FE0A55A988B3B93946A63EB36B23785A5E6EFC3E ^
420CBDF2A5781C59F907513147A0DE3CC774B54BF3 ^
43663E40FEE5A44BFCB1C99EA5935A6B5BC9F583B0 ^
4400162134256952DD9AE6B51EFB159B35C3C138C7 ^
45CEB88E4736E354416E2010FC1061B3B53B81664B ^
46A6A2C4B6BCC41DDC67278F3DF4D8D0B9DD7784EF ^
47C23D083CD8820B57800A869F5F261D45E02DC55D ^
48E8AC31927B78DDEC41A31CA7A44EB7177165E7AB ^
49E864EC5DBAB0F9FF6984AB6AD43A8C9B81CC9F9C ^
50CFED6269069417A84D6DE2347220F4B858BCD530 ^
51D9217BFB46C96348722C3783D29D4B1A3FEDA38C ^
52DEC24E5554F79697218D317315FA986229CE3350 ^
5383A099DF7071437BA5495A5B0BFBFEFE1C0EF7F3 ^
54AA3198E30891A83E33CE3BFA0587D86A197D4F80 ^
559B6ACBEB4989CBEE7015C7D515A75672FFDE3442 ^
56B021EB08A436B02658EAA7BA3C88D49F1219C035 ^
57CAE36DAB8AEA29F62E0855D9CB3CD8E7D39094B1 ^
5802DE8BA699F3C1B0CB5AD89A01F2346E630459D7 ^
5988021458847DD39B4495368F7254941859FAD44B ^
6091A165295C666FE85C2ADBC5A10329DAF0CB81A0 ^
614B31312EAF8B506811151A9DBD162961F7548C4B ^
623FE70971B20558F7E9BAC303ED2BC14BDE659A62 ^
6393FB769D5BF49D6C563685954E2AECC024DC02D6 ^
64BC8827C3E614D515E83DEA503989DEA4FDA6EA13 ^
65E83868DBE4A389AB48E61CFC4ED894F32AE112AC ^
6655C95459CDE4B33791B4B2BCAAF840930AF3F3BD ^
6736BB0E2BA438A3E03214D9ED2B28A4D5C578FCAA ^
683ACBF874199763EBA20F3789DFC59572ACA4CF33 ^
6986BE037C4D509C9202020767D860DAB039CADACE ^
7051B57D7080A87394EEC3EB2E0B242E553F2827C9 ^
711EFBFA78866315CE6A71E457F3A750A38FACAB41 ^
7257D6CB41AEEC20236F365B3A490C61D0CFA39611 ^
73C532CB64B4BA826372BCCF2B4B5793D5B88BB715 ^
7415833B5631032663E783686A209C6A2B47A1080E ^
75D04F2043C96E10CD83B574B1E1C217052CD4A6B2 ^
76E8882627C64DB743F7DB8B4413DD033FC63BEB20 ^
77CD2D32286B8867BC124A0AF2236FC74BE3622199 ^
78019B70D745375091ED5C7B218445EC986D0F5A82 ^
79E5FF5FEC1DADBAED02BF2DAD4026BE6A96B3F2AF ^
806F4E23B3F2E2C068D13921FE4E5E053FFED4E146 ^
8125E179602A575C915067566FBA6DA930E97F8678 ^
8267DED0E68E235C8A523E051E86108EEB757EFBFD ^
83AF78536EA83C822796745556D62A3EE82C7BE098 ^
8464D7AC52E47834BE72455F6C64325F9C358B610D ^
859D4866BAA3639C13E541F250FFA3D8BC157A491F ^
862E258811961D3EB876F30E7019241A01F9517BEC ^
878E0EBC487146F83BC9077A1630E0FB3AB3C89E63 ^
88CE8953741FFF3425D2311FBBF4AB481B669DEF70 ^
89789D1D2DAB52086BD90C0E137E2515ED9C6B59B5 ^
90B76CE7472700DD68D6328B7AA8437FB051D15745 ^
91F218669B596C5FFB0B1C14BD03C467FC873230A0 ^
921FF3BDBE0D504CB0CDFAB17E6C37ABA6B3CFFDED ^
932F3CBACBB14405A4652ED52793C1814FD8C4FCE0 ^
94982C8AB6CE164F481915AF59AAED9FFF2A391752 ^
955CD92012D488A07ECE0E47901D0E083B6BD93E3F ^
9669603FEC02920851D4B3B8782E07B92BB2963009 ^
973E90F76437B1EA44CF98A08D83EA24CECF6E6191 ^
9834C09F107C42D990EB4881D4BF2DDDCAB01563AE ^
99474BE0E5892EB2382109BFC5E3C8249A9283B03D ^
100A04B4F75051786682483252438F6A75BF4705EC6 ^
101BE88A6716083EB50ED9416719D6A247661299383 ^
102C67E38717FEE1A5F65EC6C7C7C42AFC00CD37F04 ^
103959AC4082388E19E9BE5DE571C047EF10C174A8D ^
104BAA7AA7B7753FA0ABDC4A541842B5D238D949F0A ^
105351394DCEBC08155D100FCD488578E6AE71D0E9C ^
106AB8BE94C5AF60D9477EF1252D604E58E27B2A9EE ^
1073429EC74A695FDD3228F152564952308AFE0680A ^
108907FA46C029BC67EAA8E4F46E3C2A232F85BD122 ^
1092644C87D1FBBBC0FC8D65F64BCA2492DA15BAAE4 ^
110110A3EEB408756E2E81ABAF4C5DCD4D4C6AFCF6D ^
111CD4FDC35FAC7E1ADB5DE40F47F256EF74D584959 ^
1128E6E273208AC256F9ECCF296F3F5A37BC8A0F9F7 ^
113FE0606100BDBC268DB39B503E0FDFE3766185828 ^
1146C63C3E58047BCDB35A17F74EEBA4E9B14420809 ^
115BCC2BD305F0BCDA8CF2D478EF9FE080486CB265F ^
116CE5223FD3DD920A3B666481D5625B16457DCB5E8 ^
117948886776E42E4F5FAE1B2D0C906AC3759E3F8B0 ^
1184C12A51FCFE242F832E3D7329304B11B75161EFB ^
119C54BDD2050504D92F551D378AD5FC72C9ED03932 ^
1208F53E8FA79EA09FD1B682AF5ED1515ECA965604C ^
1212D7E17F6294524CE78B33EAB72CDD08E5FF6E313 ^
12264582B4B57F782C9302BFE7D07F74AA176627A3A ^
1236D88795B71D3E386BBD1EB830FB9F161BA98869F ^
12486AD34A6463F12CEE6DE9596ABA72F0DF1397FD1 ^
1257EB46685A57C0D466152DC339C8122548C757ED1 ^
126E7A98FB0692684054407CC221ABC60C199D6F52A ^
12734DF1306662206FD0A5FC2969A4BEEC4EB0197F7 ^
12856CF7EBF08D10F0CB9FE7EE3B63A5C3A02BCB450 ^
1293BAE5CB8226642088DA760A6F78B0CF8EDDEA9F1 ^
1306475DF681E061FA506672C27CBABFA9AA6DDFF62 ^
13179D81991FA4E4957C8062753439DBFD47BBB277D ^
132BAE224477B20302E881F5249F52EC6C34DA8ECEF ^
133EDE4DEB4293CFE4138C2C056B7C46FF821CC0ACC ^
134<D
135
136H>SHS Type 2 Hashes<H
137D>
138A771FA5C812BD0C9596D869EC99E4F4AC988B13F ^
139E99D566212BBBCEEE903946F6100C9C96039A8F4 ^
140B48CE6B1D13903E3925AE0C88CB931388C013F9C ^
141E647D5BAF670D4BF3AFC0A6B72A2424B0C64F194 ^
14265C1CD932A06B05CD0B43AFB3BC7891F6BCEF45C ^
14370FFAE353A5CD0F8A65A8B2746D0F16281B25EC7 ^
144CC8221F2B829B8CF39646BF46888317C3EB378EA ^
14526ACCC2D6D51FF7BF3E5895588907765111BB69B ^
14601072915B8E868D9B28E759CF2BC1AEA4BB92165 ^
1473016115711D74236ADF0C371E47992F87A428598 ^
148BF30417999C1368F008C1F19FECA4D18A5E1C3C9 ^
14962BA49087185F2742C26E1C1F4844112178BF673 ^
150E1F6B9536F384DD3098285BBFD495A474140DC5A ^
151B522DAE1D67726EBA7C4136D4E2F6D6D645AC43E ^
152E9A021C3EB0B9F2C710554D4BF21B19F78E09478 ^
153DF13573188F3BF705E697A3E1F580145F2183377 ^
154188835CFE52ECFA0C4135C2825F245DC29973970 ^
15541B615A34EE2CEC9D84A91B141CFAB115821950B ^
156AB3DD6221D2AFE6613B815DA1C389EEC74AA0337 ^
1570706D414B4AA7FB4A9051AA70D6856A7264054FB ^
1583CBF8151F3A00B1D5A809CBB8C4F3135055A6BD1 ^
159DA5D6A0319272BBCCEA63ACFA6799756FFDA6840 ^
160FB4429C95F6277B346D3B389413758DFFFEEDC98 ^
1612C6E30D9C895B42DCCCFC84C906EC88C09B20DE1 ^
1623DE3189A5E19F225CDCE254DFF23DACD22C61363 ^
16393530A9BC9A817F6922518A73A1505C411D05DA2 ^
164E31354345F832D31E05C1B842D405D4BD4588EC8 ^
1653FF76957E80B60CF74D015AD431FCA147B3AF232 ^
16634AE3B806BE143A84DCE82E4B830EB7D3D2BAC69 ^
167D7447E53D66BB5E4C26E8B41F83EFD107BF4ADDA ^
16877DD2A4482705BC2E9DC96EC0A13395771AC850C ^
169EAA1465DB1F59DE3F25EB8629602B568E693BB57 ^
1709329D5B40E0DC43AA25FED69A0FA9C211A948411 ^
171E94C0B6AA62AA08C625FAF817DDF8F51EC645273 ^
1727FF02B909D82AD668E31E547E0FB66CB8E213771 ^
1735BB3570858FA1744123BAC2873B0BB9810F53FA1 ^
174905F43940B3591CE39D1145ACB1ECA80AB5E43CD ^
175336C79FBD82F33E490C577E3F791C3CBFE842AFF ^
1765C6D07A6B44F7A75A64F6CE592F3BAE91E022210 ^
1777E0D3E9D33127F4A30EB8D9C134A58409FA8695B ^
1789A5F50DFCFB19286206C229019F0ABF25283028C ^
179DCA737E269F9D8626D488988C996E06B352C0708 ^
180B8FFC1D4972FCE63241E0E77850AC46DDE75DBFA ^
181E9C9BF41C8549354151B977003CE1D830BE667DB ^
1820942908960B54F96CB43452E583F4F9CB66E398A ^
183FCE34051C34D4B81B85DDC4B543CDE8007E284B3 ^
18461E8916532503627F4024D13884640A46F1D61D4 ^
185F008D5D7853B6A17B7466CD9E18BD135E520FAF4 ^
186BD8D2E873CF659B5C77AAC1616827EF8A3B1A3B3 ^
187B25A04DD425302ED211A1C2412D2410FA10C63B6 ^
188A404E21588123E0893718B4B44E91414A785B91F ^
189A1E13BC55BF6DAD83CF3AABDA3287AD68681EA64 ^
190D5FD35FFABED6733C92365929DF0FB4CAE864D15 ^
191C12E9C280EE9C079E0506FF89F9B20536E0A83EF ^
192E22769DC00748A9BBD6C05BBC8E81F2CD1DC4E2D ^
193F29835A93475740E888E8C14318F3CA45A3C8606 ^
1941A1D77C6D0F97C4B620FAA90F3F8644408E4B13D ^
1954EC84870E9BDD25F523C6DFB6EDD605052CA4EAA ^
196D689513FED08B80C39B67371959BC4E3FECB0537 ^
197C4FED58F209FC3C34AD19F86A6DACADC86C04D33 ^
198051888C6D00029C176DE792B84DECE2DC1C74B00 ^
1991A3540BEE05518505827954F58B751C475AEECE0 ^
200DFA19180359D5A7A38E842F172359CAF4208FC05 ^
2017B0FA84EBBCFF7D7F4500F73D79660C4A3431B67 ^
2029E886081C9ACAAD0F97B10810D1DE6FCDCE6B5F4 ^
203A4D46E4BA0AE4B012F75B1B50D0534D578AE9CB6 ^
2046342B199EE64C7B2C9CBCD4F2DCB65ACEF51516F ^
205AABFD63688EB678357869130083E1B52F6EA861D ^
206F732B7372DAF44801F81EFFE3108726239837936 ^
2075E9347FE4574CDCB80281ED092191199BADD7B42 ^
208D5776B7DFFF75C1358ABDBBB3F27A20BB6CA7C55 ^
209022B7ADA472FB7A9DA9219621C9C5F563D3792F6 ^
2107F1DE4ECA20362DA624653D225A5B3F7964A9FF2 ^
211CA0F2B1BFB4469C11ED006A994734F0F2F5EFD17 ^
212833D63F5C2EA0CD43EC15F2B9DD97FF12B030479 ^
21314FD356190416C00592B86FF7CA50B622F85593A ^
2144AB6B57EDDEF1CE935622F935C1619AE7C1667D6 ^
215B456A6A968ACD66CAA974F96A9A916E700AA3C5D ^
216FD1C257FE046B2A27E2F0CD55ED2DECA845F01D7 ^
21766E0D01780F1063E2929EAAD74826BC64060E38C ^
218A8478DF406F179FD4EF97F4574D7F99EA1CE9EB8 ^
219248E58CF09A372114FC2F93B09C5FC14F3D0059E ^
220F15767DE91796A6816977EFA4FCED4B7FD9B8A57 ^
22136A6BC5E680E15675D9696338C88B36248BBBAF4 ^
2224DEA6251B2A6DF017A8093AB066EE3863A4EC369 ^
223D30E70E357D57E3D82CA554B8A3D58DFF528FA94 ^
22470CA84D827F7FD61446233F88CF2F990B0F3E2AA ^
2258D500C9CFDE0288530A2106B70BED39326C52C3C ^
226F3D4D139EDFC24596377BC97A96FB7621F27FFC7 ^
2275509BAFFAC6D507860CEFC5AB5832CB63CD4B687 ^
2280C0AEA0C2FD7A620C77866B1A177481E26B4F592 ^
229149176007FEE58A591E3F00F8DB658B605F8390C ^
23017C0D7B0256159F3626786FFDB20237AE154FA84 ^
231741A58618ABEB1D983D67AFDCBC49AA397A3B8E0 ^
232B738D6B3409EB9ED2F1719B84D13F7C36169CDEC ^
2333D33DE31F64055D3B128AC9A6AA3F92DFD4F5330 ^
234B6925F4DF94949B8844C867428BA3DEDF4CF2B51 ^
235CF5E7256292ABEC431D8E8B9CBEAF22AF072377E ^
236975DCE94902923977F129C0E4ACF40AD28DDB9AA ^
237333B0259B18CE64D6B52CF563DD3041E5F63A516 ^
238<D
239
240H>SHS Type 3 Hashes<H
241D>
24280E044703A880C20EC41F645120A8A5B5D194ECE ^
243E142829CA08FC9787F17AA16CE727396169B2713 ^
2446A2BAF62469D311F9257A0727F52C7EAA87CCEB4 ^
245362E3E7136CA611D7FBF687D3BBDC54CDA64843F ^
246F5900ADC6223A5D24A7526ABFC60FA8E2D59A5AB ^
247AD0CAC6A21D5B10833DDE7FA85927D74EDA142A9 ^
24847AD337EAFFDC177AAF7CBD035BE6F398B9D0536 ^
2499CF58595DF80872535BCC7C056E223546F0BB4EE ^
2507151CEB1918278CED2902B1D663D596F8D1B986F ^
251ADDC9F09AA4026EF6C4B7F1A84D3A13B4CDC65B3 ^
252921FE78A863A317B1FA1FB3CA3BE1948DE7EF754 ^
25364BE10732D71D52CE8A486DA23E6B453DF7C6FBD ^
2544A450659470DD759ABFAE1D73972A6D2E63AC16C ^
2550D665E4BBF30B7EAB955BDE84759E185EECAB4CB ^
2560C1B8EE94D61CDD0837EAED9FE33DE4A8334B596 ^
257D93BFE2A6227A4BF9B7C61EBCE4A8CDE131593FE ^
258BDA883F804B470C90BD6AC490DFC34EBC27F9648 ^
25946A0969373552213632591C52030C38E5DBDC49E ^
2604781289E48B910C550DC23CA7D3AF5324C03532D ^
261693A34CFCDDED0F3AC72E7197FCE9BB66A8E3981 ^
262AE088AF1D8865140963B3ABFB63E32E04CD1506F ^
263ADF0F8F1D85CA97586F5DC6DC5FD11FA39270F55 ^
264E484F5AD86C5F4D09E366ADF6E0DE73449F97B28 ^
26581C49842BA3D7072FB42288E03CE737A2672C091 ^
266F6CC71AD897C23A16835490DED289BFD45500AB0 ^
26723E71AED62FE8E28F34F58E7FE5594EC5EB0486C ^
26892BA7934AA5867EE52960F4E0EDFB90AA7B69305 ^
269C3D1CC8CBD1B6FFEE0D90CE962CD9C09AB1548AA ^
2703CE37A583B71A6A77BE325066A0F00C5D11DFC3E ^
27176EF5D236E1042D356A3234A422C092F86003064 ^
2728C3F703436C6C882E60263540A8E4C3E5646DC15 ^
2736138F9F3AB43B988DD3857422CCB304352459F40 ^
274B812DE98775B4690B4FC2ECFCAB61C73C7271DC7 ^
27506660985CD80D48E7B9F88455B4233924C3B64BB ^
27676AB4B6378D6F63499A94EB67EB1CB31AFF8D775 ^
277F31F6B0BE7AB059A1F59A46481967E88392979E6 ^
2780C1638498FBB7DB9600B98B4B22EF85E0FE245FB ^
2795607C6AF600939736795AC523FA43B736F41A118 ^
2808A03244866BDD21B9D8A82E98436C894FAD86ECC ^
2818A75BFD911AF87303B9B8FB7A1A47CCA52D3D98A ^
28216F0F3B5D37411236A1E3D6B1EDAB74CDA25ED4B ^
283AC72BF45477481F58A302628DC5299FFA32E7C9F ^
28474CFFD5881F75AC20726E1447DCF7F47024380EF ^
2855BFBECEECBC27DA05729C4D1AC8C1286EA6DCEC9 ^
286012AACBC0579FA4CB4F107E9A9AD1A86AD2F6A4D ^
287F7D552CBC5EF90F1A579388B5A8A9EC71EB67681 ^
28810C70115C4C34753274BFED477DF01440A67A361 ^
289078D2FACD293B6B6219D89899C16AA1AA8E3DE82 ^
29083C6BF9FB0D3091ADF374EBFA0A69916F17E6D26 ^
2912CDB1924DA62AB64C007C6505FF657E4ADDEA9C1 ^
292E95D209BCB9864B076FF4DFCA8F8BD75D62D1B48 ^
293632824CF5025F8F90AD2923BDDF449550D64C0F5 ^
29402B1C0B41FC27EC5A32E586F1AC480BF0061E56A ^
29528156BC6769AE390BF32C6512C46169181E1536D ^
296F730E6E287D992E7F3E013B6F1E088F0B9C41598 ^
297B056A6A832FA5FE964EF77FF3E0BE1C32E0D58C0 ^
298D5B3D19AFBB48FB56BA6D44A82DE6BD08DB208DE ^
2990215AD79BD6B8023C05FD2F8966211897DF6337A ^
300EC4CF38C244EB6526A44F70570925247145DA8CA ^
301C0D931262ECE93DA5A6ABC89CD6AD3162EA6B09E ^
3026BB48FAC26AA2B4859BBDEFCFB53AE4D1D9A0340 ^
30358611D43741E67A7F0DA9CB337A59DCD1EBE758E ^
3047C2AEC216AF231509E47B7EED06BB17859812B7E ^
305F60EE5DBF4A7A676EC98B3DDB1CDD6CDF3CDA33B ^
3060492E59B1F4C94E97F29A26C3EE7D57E1B0FDD72 ^
3074FCF549D902D9BE1101A756DB9E45415FB61BCD2 ^
30895C71D26AD6B38CC771376B4A4F962F12E1E3D4F ^
309F6A2449E773C72FB886B3C43E2B30EC2A1B7454A ^
310CDE86695E00AEC9A5DB6FDDB5D5A5934448D58E0 ^
311502318A758FABFF6AC53844E9E2BCD159C678510 ^
312589D295148F95F75DAE964DD743FE981FA236D4E ^
3137973DD33AE3599A556BACC77E8656E782E029EFF ^
3149F5BE43AADD43C6DB3883C9DA4B52E1A50257AEE ^
315454289D8FFB237A56D5214EAE88F0A9D328FEA1A ^
3167E686B36595BEB4C0D4528FF960EDB55088A028D ^
317F9789D1EF19A0084AC0E9F43A4BC0EE0478939EF ^
3182F32B0E7CC8BE19C325545C816E77056D7BBE70F ^
3196B1617746F073CFCD2CEBCAFBBE6FD0E28ED2D56 ^
320CF8D2EA3888AD76761799383E5A15979F6DB7A88 ^
321557AF6D9D5947203C60E98C9A79B92B8BD085E2B ^
322C61A217423DE68ED6CD34C91756C8DD3A650A2A2 ^
32373F3F79C151B6C1BD9369EDB26B932C2362B0593 ^
324364141E5FBCDE83F210C5BBBEB6810F6299DE14B ^
325F806BECD025D264FD59E93D9E3606A674C40F216 ^
326E0C761A57F00CBFB07D49BCB034C36A7122F4C5B ^
3275D3831044B9E0032FBE3C3425FFD13698F413B33 ^
3287EB1AB41E9997753C5D530DF118E71E72D7B86FC ^
329CC053EA1556269D7E8BCBA30B208FCBF0EE2EE64 ^
330A57739B1DD41E7DC0C40D6B6159A7E73CE2748AA ^
33190DA527C9DB9ACC2FD530D560A2F1191A80D0567 ^
3326AC1F2A0B8CA0E5ABC9FDF1ADCE588FBDF5CC53E ^
33343C1A0A0EE4163EC929726989F92B03639B233AB ^
3348927F299462413AC29A74080E54D8EE2DB7165E7 ^
3350C8D7E22226D91B423E781B508F31517EAAB607B ^
3367286E20D7F08D18A893254FBD3CC833F7973DCAF ^
3370CB8C235928B8E936C43B8F29EF3758B9FD54A7B ^
338F67C24CC23E440CA3F206CEEB5504ECA54CD5CA3 ^
339D78A25DEAA1E7ADADDB3C145ED0E5263BA4F2910 ^
34000AA68174D29492C578AC853FFCD55908292D41A ^
341D5570EEDB09A62A5948F7F311F7ED5EF247F9AD9 ^
342<D
diff --git a/src/lib/libssl/test/sha1vectors.txt b/src/lib/libssl/test/sha1vectors.txt
new file mode 100644
index 0000000000..c2ea186603
--- /dev/null
+++ b/src/lib/libssl/test/sha1vectors.txt
@@ -0,0 +1,2293 @@
1# Configuration information for "SHA-1 Test"
2# SHA tests are configured for BYTE oriented implementations
3H>SHS Type 1 Strings<H
4D>
50 1 ^
65 0 2 1 2 1 2 ^
75 0 1 3 4 4 4 ^
87 0 4 3 4 4 1 4 4 ^
910 0 4 1 5 3 4 4 3 1 3 4 ^
1010 0 3 1 6 5 5 1 3 6 6 4 ^
1113 1 3 2 5 3 3 3 4 6 6 1 4 6 2 ^
1216 1 3 5 5 1 2 1 3 3 6 3 5 2 3 5 7 2 ^
1315 1 8 1 5 3 2 7 4 5 6 7 3 3 1 6 3 ^
1415 1 4 6 8 2 1 4 2 5 1 6 8 8 6 4 7 ^
1518 1 1 2 7 3 8 6 7 5 4 3 4 3 5 3 3 2 6 8 ^
1616 0 9 8 1 8 1 7 6 7 7 1 2 6 9 5 4 7 ^
1718 0 7 1 7 3 9 4 7 7 5 2 8 1 7 8 2 7 2 9 ^
1819 1 2 3 1 8 8 6 9 10 3 10 8 9 2 4 1 5 1 5 9 ^
1919 1 8 5 4 8 1 3 9 5 7 7 2 7 2 7 8 7 4 8 10 ^
2020 1 1 9 7 4 1 4 5 1 10 8 6 4 4 9 9 9 8 2 9 10 ^
2119 1 11 6 7 7 2 6 2 6 10 6 9 10 5 11 1 6 8 11 4 ^
2222 0 10 5 10 3 7 8 9 9 1 1 1 10 2 1 5 10 2 9 9 9 7 8 ^
2321 0 1 10 1 6 9 4 2 5 2 11 8 12 12 9 8 1 3 10 7 11 12 ^
2424 1 3 9 5 12 3 4 2 9 12 11 6 6 1 1 9 5 9 1 4 9 4 10 8 9 ^
2525 1 3 2 3 11 1 12 5 6 2 7 8 4 8 8 9 9 8 4 9 1 4 8 10 9 9 ^
2623 0 11 10 7 10 10 6 10 9 4 5 10 5 8 4 1 10 12 4 6 1 8 11 6 ^
2722 0 12 8 10 4 3 8 5 5 7 11 13 11 12 11 4 12 3 6 5 11 10 5 ^
2826 1 10 9 6 9 7 2 10 4 4 5 5 2 12 13 5 3 1 10 1 4 7 8 13 13 12 9 ^
2931 0 2 6 5 4 7 3 10 6 13 6 3 9 6 2 10 5 3 8 4 1 11 3 5 3 7 11 1 12 9 12 5 ^
3027 1 14 5 1 3 7 2 3 9 3 4 14 4 4 10 8 5 14 1 11 12 12 10 4 13 7 11 9 ^
3130 1 4 9 5 5 8 9 5 10 4 2 4 7 9 9 6 3 5 1 8 3 2 13 3 14 9 8 9 10 14 10 ^
3227 0 12 9 5 8 7 2 14 12 3 8 14 6 6 4 7 5 7 10 7 11 10 1 9 6 7 12 14 ^
3324 0 12 9 9 2 11 13 12 11 11 6 14 13 10 5 6 8 10 4 3 11 11 14 5 14 ^
3424 0 15 4 5 3 8 12 15 8 14 15 9 12 12 3 10 13 6 11 10 4 13 14 8 8 ^
3528 1 1 8 1 5 11 4 9 12 4 13 15 5 9 11 7 14 11 1 11 7 8 8 11 1 13 15 12 13 ^
3632 1 5 8 3 8 10 7 8 1 5 13 12 14 5 3 6 4 12 15 6 6 10 11 13 9 1 11 6 10 3 7 14
372 ^
3831 0 10 3 5 1 14 11 11 16 1 2 2 11 6 13 15 12 6 5 16 2 14 2 10 12 2 5 5 6 10 13
3915 ^
4034 0 3 10 8 16 9 5 12 15 4 11 13 3 6 5 10 8 1 3 9 3 11 1 2 16 12 10 6 1 9 1 16
415 6 14 ^
4230 1 1 12 4 4 2 15 13 15 11 15 5 11 9 7 15 16 6 16 12 3 2 10 16 5 5 7 1 7 11 16
43^
4434 0 7 9 11 2 5 5 5 4 13 13 14 4 7 12 6 4 8 2 9 9 13 13 3 3 6 7 16 7 6 15 5 8
4515 14 ^
4636 1 4 6 16 15 11 14 14 4 7 10 3 4 10 3 6 7 14 4 6 6 5 2 7 8 16 2 12 16 10 14 3
472 3 7 14 3 ^
4832 0 15 10 9 1 14 10 14 6 6 16 3 2 3 8 3 12 8 11 17 3 9 7 16 14 4 11 15 5 13 9
495 17 ^
5030 0 17 17 13 8 2 6 8 16 1 12 5 17 2 9 8 10 13 14 11 17 12 5 14 9 11 9 11 4 11
5112 ^
5230 1 16 6 10 5 8 3 17 16 14 1 15 15 15 6 13 2 11 6 13 11 13 4 6 7 11 11 12 16
5313 16 ^
5433 1 16 16 14 16 2 4 16 11 6 15 7 4 17 6 5 7 6 3 14 16 5 17 11 13 1 1 14 13 3 6
5514 5 16 ^
5639 1 2 16 13 7 8 6 2 15 1 9 12 4 4 11 13 7 2 11 9 18 4 5 4 8 2 14 9 9 1 8 13 11
5715 8 5 9 10 16 7 ^
5834 0 2 7 1 1 17 13 6 11 10 8 5 12 15 6 15 10 12 4 18 1 2 8 11 12 16 10 12 18 11
5916 12 11 17 6 ^
6034 1 4 7 13 7 10 7 10 6 1 12 7 18 11 18 2 10 15 10 14 8 18 9 9 12 12 3 13 12 6
614 9 17 13 17 ^
6240 0 5 7 3 2 1 17 14 4 16 6 13 1 13 6 6 10 1 3 18 3 11 7 9 5 7 11 17 1 9 16 5
6315 10 17 3 8 15 17 8 12 ^
6440 0 11 3 15 17 11 1 1 4 3 14 18 4 2 18 8 15 6 4 6 3 15 11 16 10 17 17 9 6 3 2
656 16 4 9 12 6 8 1 11 17 ^
6637 1 2 19 12 8 16 14 2 9 16 2 6 6 7 9 10 9 11 9 14 11 15 5 16 9 2 17 2 8 15 8 4
673 14 14 16 16 12 ^
6837 1 11 10 16 12 11 7 14 14 14 6 10 10 1 6 13 19 5 6 4 7 12 12 10 5 10 15 15 8
695 13 17 13 5 6 14 1 19 ^
7038 1 2 6 5 17 9 11 18 18 8 6 13 15 3 3 15 5 13 18 3 2 5 5 14 7 13 4 17 7 2 17 3
7118 15 7 15 16 18 11 ^
7238 1 12 8 6 3 17 12 13 19 15 9 7 17 16 15 3 11 11 5 2 13 19 16 2 4 16 7 8 1 2 9
7317 12 3 5 18 19 11 9 ^
7439 1 14 16 14 8 9 16 5 1 6 3 17 18 16 9 1 15 9 10 9 19 1 3 3 20 11 13 17 1 19 8
753 4 3 7 1 14 19 19 19 ^
7637 1 18 13 11 5 18 4 19 10 6 19 11 17 10 10 7 9 13 16 9 10 18 4 12 5 16 5 20 12
773 8 10 1 18 1 6 20 14 ^
7836 0 8 9 6 12 11 7 7 3 17 13 6 20 17 9 20 16 10 12 17 8 11 8 11 10 5 10 14 18 8
7919 9 12 12 2 20 19 ^
8039 0 12 16 20 3 9 9 19 17 13 13 4 17 2 11 7 14 3 6 16 13 10 13 5 16 10 2 8 2 17
8119 4 17 7 19 6 9 15 15 6 ^
8243 0 7 2 18 5 7 18 5 2 15 7 11 10 9 3 2 14 19 3 11 8 18 15 5 3 5 12 15 16 10 17
837 19 16 2 1 16 6 3 19 12 5 18 16 ^
8449 1 9 11 2 1 12 11 14 12 14 10 4 11 6 8 16 7 5 11 20 8 17 4 14 4 15 3 2 2 4 3
852 3 14 15 10 2 12 7 3 7 20 20 19 10 2 3 1 10 20 ^
8636 0 19 20 12 5 19 21 5 21 11 14 19 1 17 8 9 4 19 3 17 1 14 21 14 7 6 5 20 14
8721 20 4 6 21 7 11 12 ^
8841 0 12 9 11 6 16 18 18 10 11 20 6 12 11 5 7 21 19 18 6 15 21 10 4 14 9 19 10 3
893 5 13 1 8 12 3 13 9 7 10 17 14 ^
9045 0 10 6 8 3 17 18 3 21 19 6 17 15 4 9 15 9 15 14 4 7 14 8 10 13 4 11 10 7 6
9121 1 14 5 11 7 7 2 13 13 3 9 13 8 14 20 ^
9239 1 3 7 18 4 9 9 5 15 13 17 10 15 16 20 8 19 9 10 9 1 19 14 21 2 18 13 10 4 18
9316 4 21 15 10 18 19 3 12 18 ^
9441 0 14 4 13 11 1 11 1 10 2 12 4 21 10 21 18 9 2 16 7 20 6 7 12 19 20 1 13 12
9510 8 21 15 7 19 13 6 8 19 20 18 19 ^
9637 0 11 18 1 17 14 15 20 16 20 8 2 17 10 4 21 5 19 19 14 22 21 18 13 14 1 3 12
9711 11 4 22 13 5 18 7 21 21 ^
9848 0 9 22 19 12 8 16 5 17 5 9 1 2 9 6 12 6 1 7 4 3 15 1 14 1 12 3 10 2 10 14 21
9913 17 6 6 17 1 21 2 14 16 17 9 11 20 21 11 18 ^
10050 1 12 8 20 13 2 9 20 9 14 10 1 16 2 22 6 4 16 14 15 1 12 4 14 9 21 3 3 9 8 21
10115 14 8 4 14 4 2 3 8 12 8 6 1 2 18 20 15 3 19 10 ^
10244 0 10 20 14 6 3 4 21 1 12 4 18 2 6 7 6 9 20 14 10 10 19 17 21 12 15 17 7 10
10311 8 10 12 1 19 19 9 18 21 4 18 11 9 22 5 ^
10447 0 15 8 15 3 5 6 2 19 12 17 4 20 8 11 20 2 18 4 16 20 12 9 9 6 16 21 16 3 16
10518 3 19 5 16 2 4 2 12 11 15 11 14 17 2 10 18 8 ^
10648 1 5 13 3 21 5 3 6 18 18 10 1 21 21 7 1 13 12 19 1 14 6 8 21 19 21 11 19 13 2
10713 4 1 10 22 16 4 9 4 10 16 3 7 15 11 9 13 17 12 ^
10845 0 14 7 6 2 20 3 6 19 19 10 2 22 12 17 12 1 20 7 7 15 20 6 18 8 3 14 23 18 15
1094 7 5 23 15 7 14 10 10 19 17 2 4 15 17 21 ^
11045 1 15 11 8 9 17 5 12 18 14 6 20 17 21 12 16 9 22 9 20 15 2 22 11 2 6 11 9 8 2
1114 14 19 3 21 21 23 8 2 11 4 8 4 20 22 11 ^
11238 0 21 18 22 10 19 9 14 17 23 21 10 7 15 13 16 5 4 10 13 14 20 23 12 20 23 18
11310 12 8 21 11 6 12 7 19 14 18 17 ^
11440 0 18 22 6 9 22 5 23 13 6 8 23 20 22 5 22 15 19 20 9 9 1 13 13 10 14 13 5 22
11514 21 9 21 19 14 14 4 18 13 12 14 ^
11648 1 7 3 15 5 17 14 23 14 5 17 22 11 1 8 13 23 6 21 3 6 11 7 23 8 6 21 4 4 22
11719 13 8 5 19 7 5 23 1 4 19 11 23 11 21 14 1 3 21 ^
11843 0 22 14 11 7 18 16 17 24 12 12 3 13 19 16 22 4 16 4 6 23 8 18 11 2 3 20 22 9
11921 8 23 1 23 20 7 16 13 23 4 13 3 7 22 ^
12047 1 23 6 13 19 2 3 7 2 9 9 15 6 13 4 22 6 19 20 1 9 7 14 1 15 3 23 24 22 18 12
12112 17 19 10 8 11 22 12 10 2 20 15 18 17 18 7 19 ^
12247 1 12 21 6 12 4 7 18 17 3 2 14 24 14 1 23 1 11 15 10 6 18 20 7 1 8 1 16 6 20
12323 23 21 10 10 12 24 10 11 23 2 12 23 9 3 24 24 10 ^
12452 0 14 10 18 15 14 5 16 11 22 2 15 24 8 22 1 4 24 9 10 15 3 9 5 4 17 15 9 12
12519 19 1 3 10 6 8 3 17 8 18 24 19 3 4 15 4 9 2 24 5 20 13 13 ^
12642 0 20 17 19 22 13 8 10 19 15 11 1 14 17 20 22 10 7 11 16 9 21 22 17 23 12 15
1274 24 7 21 18 2 21 16 1 19 18 20 11 3 15 17 ^
12850 0 18 1 6 14 5 5 5 19 13 10 24 19 16 24 15 13 2 19 15 24 21 17 4 13 17 1 1 9
1291 10 2 18 1 21 19 5 18 12 2 22 16 23 15 19 6 18 9 1 23 5 ^
13051 0 21 13 14 11 18 12 13 3 19 9 20 22 20 2 11 12 6 1 12 16 18 2 9 8 4 3 11 17
13111 5 4 19 16 11 23 13 18 1 20 8 2 16 16 21 4 19 5 5 20 24 16 ^
13253 1 20 25 17 11 8 4 19 25 17 7 16 21 6 4 8 2 15 9 2 9 19 3 6 3 3 10 25 13 15 7
1338 20 21 12 10 12 5 24 11 20 3 13 13 16 9 13 10 3 9 16 3 7 25 ^
13449 1 9 9 14 2 13 17 25 2 18 5 19 23 9 25 9 10 23 12 12 7 13 8 15 7 1 6 21 2 8 7
1356 16 14 14 12 15 13 24 10 15 11 10 8 14 15 21 25 21 25 ^
13647 0 9 18 20 22 21 20 11 14 23 22 10 13 14 8 19 12 2 11 20 23 13 4 10 6 5 7 23
13711 3 16 8 21 4 8 18 5 12 14 8 6 20 19 24 8 23 17 23 ^
13848 1 7 19 1 18 1 14 22 13 14 5 8 22 18 14 25 17 11 12 22 2 12 12 16 12 13 18 17
13912 17 14 18 8 25 9 23 5 3 8 14 24 17 7 3 3 23 17 22 19 ^
14051 1 19 17 16 22 24 14 16 20 23 20 9 19 16 7 12 16 5 8 9 7 10 21 24 10 11 19 1
14121 14 14 19 3 22 8 12 20 1 18 5 6 5 12 14 1 1 11 9 22 3 24 4 ^
14252 1 6 1 11 16 1 12 8 11 11 17 10 22 7 3 10 2 6 4 24 16 24 19 4 5 18 11 12 9 20
14321 25 2 21 18 10 20 25 21 3 17 17 5 8 22 25 19 8 10 19 7 11 18 ^
14444 0 26 14 21 25 25 4 9 13 5 8 9 21 8 12 26 24 9 24 15 1 23 22 16 14 8 22 15 19
14524 20 7 8 15 24 12 4 4 23 21 13 19 15 21 12 ^
14659 1 15 7 3 21 20 8 22 14 23 26 19 2 10 18 3 5 3 1 9 15 15 3 7 13 23 9 7 1 13
14717 14 25 9 16 2 2 6 13 7 19 25 17 1 5 21 2 7 22 5 6 25 3 12 19 6 2 4 24 17 ^
14860 0 9 18 20 19 4 11 14 1 6 8 26 6 9 22 4 10 2 7 21 9 8 24 25 14 22 12 22 3 23
1493 3 20 6 11 23 6 1 7 5 18 5 15 25 26 1 1 10 11 11 4 12 11 20 3 14 2 3 2 23 15 ^
15049 0 12 17 24 11 8 6 24 16 15 22 21 14 6 12 20 19 5 5 12 11 6 23 2 16 23 7 24 6
15121 2 17 17 5 25 11 25 20 25 24 18 6 12 19 25 7 6 5 2 25 ^
15254 1 12 16 1 15 7 1 26 19 19 13 20 11 17 6 20 5 24 24 1 21 11 9 20 21 15 10 19
15326 3 2 6 7 12 9 10 8 14 10 15 5 17 8 21 1 20 25 6 19 8 3 22 16 16 20 ^
15463 0 17 13 11 10 17 15 12 6 13 14 17 4 12 10 24 5 13 24 3 5 2 5 11 14 8 5 10 17
15516 8 4 14 21 15 3 6 17 25 8 2 3 3 19 10 13 22 22 8 2 13 25 17 2 1 19 1 14 20 2
1565 4 15 24 ^
15749 0 14 20 7 25 20 26 20 16 7 17 17 22 1 13 6 5 1 18 14 15 23 15 10 5 19 18 18
15826 12 13 3 25 12 21 16 24 4 16 3 6 26 26 10 20 13 1 20 24 15 ^
15956 0 3 8 14 5 5 7 11 13 11 26 11 4 26 17 20 19 11 10 3 10 14 9 6 9 7 16 10 4 4
16019 19 2 26 13 19 17 15 24 15 4 21 22 13 13 12 22 2 14 20 5 18 7 17 24 20 20 ^
16158 1 6 17 9 20 2 10 19 3 22 4 1 11 3 5 3 21 11 15 12 23 26 5 2 27 6 5 16 6 3 2
16223 5 3 20 20 4 24 2 18 21 7 14 10 27 23 6 24 6 19 23 3 9 22 16 21 17 19 23 ^
16358 1 17 7 21 19 6 16 15 15 20 14 2 25 19 14 18 19 7 9 1 14 11 10 16 3 23 14 26
16410 11 1 18 1 12 24 19 19 1 7 2 3 24 7 12 9 2 8 16 20 24 5 26 26 4 9 2 7 25 17 ^
16554 1 8 12 18 14 26 7 17 18 4 20 1 16 14 21 26 4 6 8 24 11 25 15 24 16 23 4 10
16623 21 24 15 10 9 26 7 14 24 21 6 20 5 17 16 17 1 3 12 1 4 13 3 9 21 26 ^
16756 1 7 18 11 1 19 20 23 12 12 27 13 13 15 16 13 1 16 15 12 26 3 16 16 8 17 13
16821 4 6 5 19 14 16 4 16 11 14 18 18 27 9 13 21 3 26 22 3 7 6 4 26 3 15 8 25 21 ^
16950 1 20 13 9 11 20 6 11 21 27 25 20 7 4 18 26 16 27 5 12 19 7 23 6 25 25 2 11
17013 25 21 18 17 6 12 14 13 24 11 14 19 26 27 25 6 1 15 4 7 27 15 ^
17151 0 15 16 26 27 23 14 12 28 22 15 8 19 2 20 13 1 24 2 25 1 6 19 19 8 11 24 24
17221 13 27 5 11 28 17 7 25 6 23 24 14 25 12 5 13 26 2 5 8 10 16 17 ^
17358 1 5 26 18 19 21 3 12 11 13 4 14 22 22 14 16 13 3 22 16 23 5 19 6 13 10 26 17
17427 26 4 3 25 6 14 2 3 5 7 23 11 22 8 25 2 9 25 18 17 8 2 14 4 19 1 5 27 13 24 ^
17553 0 2 27 28 2 17 23 10 27 18 26 7 22 16 3 27 1 26 21 28 10 3 6 2 2 10 17 13 16
1766 17 21 23 13 20 22 5 6 11 12 12 8 23 13 17 9 23 20 3 28 27 12 17 22 ^
17759 0 28 19 5 21 4 27 8 1 19 14 20 6 7 9 1 6 22 3 19 26 14 8 6 7 19 15 23 1 17
17816 6 26 14 5 22 25 4 7 10 16 21 10 18 19 24 16 23 8 3 17 28 18 10 2 5 3 21 21
17915 ^
18058 0 6 24 1 4 24 18 10 22 1 21 12 5 4 4 20 25 24 26 8 25 11 2 7 27 22 19 4 18
18127 10 28 4 12 24 8 16 12 11 16 17 25 8 12 16 1 9 9 10 5 24 23 18 5 14 18 8 4 28
182^
18361 0 5 17 8 28 1 22 4 11 3 2 17 3 14 9 27 13 18 24 9 8 7 28 25 14 21 27 24 6 18
18416 2 12 15 9 14 10 1 8 17 4 6 15 26 11 15 2 28 20 26 16 3 7 5 8 9 26 10 12 25
18511 22 ^
18653 0 9 13 24 15 20 2 4 8 2 22 20 19 4 15 14 28 13 25 10 10 12 28 24 22 26 28 15
1879 11 26 19 22 27 2 21 8 20 23 26 12 10 21 9 15 13 25 7 26 1 13 5 9 20 ^
18858 0 3 9 21 22 7 1 23 28 1 2 8 22 12 18 28 5 18 14 7 11 17 20 20 7 21 13 8 28
18921 22 2 16 20 15 28 9 3 22 13 10 23 4 16 11 14 1 10 8 14 14 15 18 13 12 21 18
19025 28 ^
19160 1 29 20 2 29 22 8 16 20 4 12 9 6 12 16 16 7 9 20 29 11 9 4 1 15 25 16 29 10
19222 7 2 8 5 18 14 23 24 4 6 26 3 11 6 12 1 7 14 24 14 6 10 21 16 23 29 25 6 14
19317 24 ^
19464 0 12 10 5 10 15 25 8 15 3 7 13 25 16 14 1 29 22 26 15 27 9 1 8 8 28 6 13 5
19513 3 15 5 23 8 23 2 5 5 4 17 13 14 7 17 12 27 3 18 5 7 5 26 18 15 22 28 16 13 7
1962 23 19 25 15 ^
19756 1 17 7 16 25 23 11 11 15 2 13 9 26 2 24 26 7 28 11 2 29 7 22 23 5 28 19 1 27
19829 1 24 11 18 20 3 13 11 7 3 15 17 24 1 18 13 6 3 25 27 16 28 18 24 8 23 22 ^
19951 1 29 28 6 28 14 12 28 27 22 4 14 25 1 3 9 7 11 14 15 16 10 19 12 19 11 20 13
20028 4 27 28 7 27 12 4 28 21 17 22 20 17 15 15 23 22 13 12 21 22 21 29 ^
20164 1 12 14 12 18 27 8 7 4 9 14 16 15 8 11 21 20 10 10 21 23 20 2 11 23 1 11 1 5
2023 23 16 15 27 14 5 16 3 22 2 3 24 3 19 29 4 4 10 8 20 14 15 1 26 12 27 25 4 28
20322 11 19 19 24 9 ^
20460 1 20 8 9 5 25 19 17 19 15 7 24 24 21 3 20 16 8 3 17 28 18 29 9 23 9 10 29 4
20512 24 15 5 8 22 17 29 12 3 8 29 15 21 21 4 7 20 7 10 7 26 10 16 24 6 7 12 8 12
20615 17 ^
20760 0 9 17 11 28 12 26 26 6 29 13 10 20 6 23 10 4 3 26 26 14 20 20 25 14 13 15
20824 14 11 4 23 27 24 20 9 16 17 24 13 12 6 1 14 26 25 7 8 21 1 19 3 2 2 17 21 13
2095 9 21 11 ^
21054 0 25 1 27 24 6 23 16 5 1 20 29 22 25 9 25 10 3 28 28 25 19 18 16 24 14 15 5
21128 12 28 26 29 2 15 15 9 5 18 19 22 12 15 4 6 15 24 16 9 4 26 25 18 27 12 ^
21261 1 20 4 26 12 3 22 1 22 30 3 28 10 9 24 14 29 6 30 3 10 20 14 6 3 19 21 21 28
21316 18 11 30 11 20 30 1 9 8 11 5 19 10 24 4 22 4 2 26 5 15 20 8 3 13 30 18 8 1
21425 28 19 ^
21556 1 20 15 21 18 18 12 16 13 24 9 21 2 28 6 1 23 9 18 27 27 4 9 13 10 8 14 16
21615 12 11 14 21 14 10 11 25 17 17 30 21 13 27 26 26 22 14 13 17 21 19 9 9 20 23
21713 28 ^
21859 1 10 28 24 10 22 27 23 27 8 17 14 6 4 21 26 15 1 8 29 27 6 28 15 3 27 25 25
21914 19 13 29 8 24 2 8 2 4 12 19 11 10 6 26 14 22 24 30 10 11 12 2 12 17 23 8 8
22012 28 12 ^
22156 0 14 28 2 17 4 8 3 26 9 23 21 30 30 20 4 13 28 29 9 3 17 7 19 30 28 1 2 20 9
22212 24 15 30 20 27 3 23 11 6 29 25 23 26 17 20 10 22 15 23 6 25 5 4 30 2 29 ^
22363 1 23 15 27 14 26 1 1 7 19 12 7 6 20 18 14 4 15 17 28 7 11 7 8 9 22 17 12 5
22423 18 25 18 6 12 26 30 12 30 14 3 1 18 10 20 27 21 8 6 24 26 20 11 24 7 2 4 18
22515 14 30 16 19 14 ^
22652 0 27 15 4 19 25 29 29 7 14 18 9 11 9 27 11 15 29 9 28 20 2 30 26 21 17 8 28
22717 22 29 24 8 11 18 29 15 6 7 27 27 17 24 18 23 11 19 8 30 5 24 22 24 ^
22866 1 25 15 28 23 5 10 21 5 8 7 3 10 19 17 6 9 15 29 10 7 4 1 16 21 16 29 13 18
2295 3 8 15 8 21 29 20 5 27 2 13 27 7 7 30 2 18 26 10 2 5 29 21 15 25 26 24 8 12
23020 3 9 10 30 7 12 29 ^
23153 1 30 26 20 11 22 19 27 2 16 10 6 4 24 17 20 25 20 15 8 23 23 20 30 18 16 3
23230 15 26 23 28 7 21 8 7 31 31 14 26 18 3 1 26 28 15 25 11 31 3 25 9 21 30 ^
23367 0 2 6 14 4 9 5 28 8 17 22 1 4 8 7 10 14 19 10 14 8 27 9 24 26 4 30 11 8 19 5
23421 7 2 27 20 16 20 20 22 14 13 16 26 14 10 3 25 22 25 23 21 10 15 15 29 8 13 4
2352 13 22 20 7 4 20 31 23 ^
23665 0 2 2 28 13 19 14 12 23 27 6 2 14 2 22 6 25 30 29 31 13 14 16 31 12 16 30 5
23714 31 11 4 1 1 25 21 13 26 22 21 5 22 14 29 1 21 3 14 30 4 2 29 12 15 23 3 15 5
2381 6 23 22 13 1 14 23 ^
23959 1 25 5 15 6 13 3 22 11 23 31 24 6 5 20 4 14 3 29 8 29 19 7 29 23 25 28 19 11
24015 27 21 14 1 19 20 26 12 7 12 1 18 13 29 28 23 29 14 23 7 1 9 29 24 5 30 18 5
24125 30 ^
24255 1 31 25 13 7 24 25 24 1 12 19 9 7 6 28 20 14 28 21 19 31 20 20 6 24 18 27 24
2434 18 21 1 31 15 1 15 2 27 4 26 25 4 23 19 2 31 22 30 21 22 5 27 12 30 28 31 ^
24462 0 27 15 18 14 25 15 17 7 28 11 28 29 30 1 17 12 10 2 18 20 21 2 11 12 5 4 12
24525 14 5 5 24 22 18 31 15 22 29 11 3 21 31 21 27 3 28 7 10 25 2 15 30 9 30 7 22
24615 9 3 20 24 14 ^
24760 0 28 14 18 9 27 14 22 27 31 10 8 14 7 15 7 20 5 26 1 29 7 17 17 8 3 13 27 18
2488 31 27 28 22 22 17 19 18 18 11 19 13 25 10 19 6 28 4 31 23 10 18 26 31 5 10 13
24912 8 15 27 ^
25060 1 24 22 4 29 22 31 28 20 4 16 21 3 1 15 5 15 6 30 3 29 29 7 27 20 2 20 31 22
25126 9 29 16 4 26 32 17 20 14 28 17 19 6 24 11 26 28 5 18 15 8 16 20 21 4 9 12 4
2528 17 29 ^
253<D
254
255H>SHS Type 2 Strings<H
256D>
25769 1 5 3 11 15 12 24 31 23 1 6 28 2 8 31 6 7 30 5 19 23 12 6 9 31 19 17 24 25
25822 6 12 16 3 7 9 9 11 29 4 11 2 5 13 29 10 12 30 32 18 28 18 27 3 30 4 4 26 6
25913 31 13 2 11 7 24 4 17 29 12 ^
26095 0 21 19 21 23 11 42 36 2 13 4 1 33 22 16 27 9 4 33 16 3 30 15 11 32 13 17 38
26132 9 38 4 36 15 32 27 19 42 18 6 36 22 10 29 12 25 40 15 29 23 28 30 4 8 11 24
2629 10 31 28 43 23 16 29 33 5 40 26 3 19 12 36 43 5 35 37 5 14 11 45 35 16 10 8
26332 4 15 35 26 2 39 22 37 22 30 29 ^
264106 1 18 14 51 2 6 32 51 9 32 50 44 46 51 8 11 53 45 55 16 10 3 52 8 20 20 46
26546 13 32 2 46 50 43 25 54 9 31 29 2 47 15 29 24 45 44 18 37 14 28 39 36 44 47
26616 50 10 44 24 53 35 22 40 20 15 51 22 18 22 42 6 54 49 38 21 7 13 30 16 7 52
26716 22 13 38 7 11 44 33 9 25 13 37 42 14 45 53 30 38 5 25 5 35 38 22 28 53 ^
268127 0 58 35 43 28 5 28 63 8 12 25 9 47 53 29 62 7 37 2 3 48 5 12 55 56 28 35 12
26963 6 58 27 27 48 44 35 14 17 22 56 10 8 1 16 15 42 63 14 51 57 19 41 7 8 56 47
27034 52 22 48 60 43 9 1 52 4 21 49 61 18 50 23 13 46 62 23 45 62 9 56 18 23 31 8
27130 27 36 13 38 4 58 53 47 24 18 41 58 19 12 18 52 42 29 44 45 26 63 34 32 41 64
27215 26 55 19 2 49 6 30 53 13 54 12 53 37 12 37 43 ^
273148 0 60 4 51 47 58 38 17 63 33 23 28 43 12 69 70 33 17 12 50 18 18 36 45 2 67
2744 45 20 4 33 38 29 45 8 22 58 39 71 38 32 53 35 19 53 31 29 51 35 4 63 18 33 26
27547 70 9 64 62 63 30 15 1 35 28 16 40 20 14 50 33 19 38 30 27 55 10 16 46 47 7
27655 12 53 26 56 33 29 55 25 17 48 43 21 43 18 24 63 27 68 46 38 33 35 10 18 11
27727 5 9 58 35 70 36 36 39 47 2 10 66 47 5 18 21 44 71 51 57 3 22 7 56 55 28 25
27814 40 16 24 48 37 66 50 24 45 18 39 53 55 ^
279165 1 15 62 35 29 15 40 19 76 67 4 5 71 46 61 26 8 77 48 1 23 12 60 40 24 44 33
28029 42 73 66 49 61 20 30 1 54 52 42 39 64 23 65 37 24 20 11 26 66 22 77 22 57 7
28138 57 33 61 73 7 64 1 49 35 76 14 27 21 45 68 38 58 73 13 72 47 73 33 8 66 23
28238 4 56 77 47 10 71 13 20 31 41 6 51 3 18 17 61 47 14 48 76 46 28 34 43 1 56 4
28325 7 65 41 1 34 37 23 59 59 27 26 13 15 14 75 60 14 1 28 59 26 65 61 16 23 17
28428 6 19 2 35 49 30 29 48 2 63 73 59 1 3 76 41 11 19 18 43 54 63 67 51 4 9 78 60
28566 ^
286181 0 18 19 84 17 12 10 57 18 77 51 52 16 39 74 49 52 63 38 72 2 15 64 83 62 49
28756 11 26 68 58 83 33 23 50 63 71 53 27 84 22 39 41 52 58 11 64 7 60 45 70 22 5
28873 38 30 30 48 21 75 80 40 21 8 53 9 26 30 34 81 71 71 51 23 75 33 41 23 32 5 8
28966 40 72 40 16 66 45 14 48 34 21 41 27 3 55 27 37 23 41 65 4 57 51 74 22 19 75
29042 16 19 46 16 10 48 20 19 37 41 14 57 9 17 55 38 5 60 7 46 20 43 36 39 52 20
29110 62 45 23 46 7 35 75 29 70 35 36 34 25 12 15 84 26 10 6 71 29 79 33 32 25 59
29276 82 64 58 7 8 19 41 74 2 53 65 24 1 55 51 36 21 79 7 ^
293184 1 60 66 66 6 3 9 73 12 7 40 70 18 71 70 65 51 14 14 27 50 9 87 81 50 22 19
29440 37 16 79 12 34 37 76 82 10 61 7 81 49 67 26 45 82 50 81 63 45 69 31 31 76 51
2959 59 34 51 54 34 83 10 33 51 86 81 82 69 18 8 22 64 19 86 62 58 33 37 17 34 5
29629 83 42 76 50 54 66 39 9 1 36 43 17 65 6 35 56 72 71 83 88 10 1 8 87 22 6 21
29778 25 89 43 62 40 55 85 31 89 74 63 46 28 24 26 31 17 7 8 27 19 12 85 17 20 27
29877 10 2 54 80 17 52 74 76 69 78 11 20 80 4 29 24 85 75 18 39 23 70 83 29 57 67
29972 70 33 4 15 46 42 2 69 13 53 33 69 64 33 64 14 40 69 59 78 54 ^
300193 1 68 43 95 53 38 58 55 28 20 16 67 48 17 86 32 44 68 67 28 16 14 79 25 15
30172 67 50 80 18 30 10 75 1 60 45 87 78 28 95 49 63 70 59 26 6 51 73 60 65 18 26
3028 87 5 58 31 25 57 40 46 78 57 34 78 61 36 66 57 38 80 22 32 68 71 30 74 37 81
30366 77 66 55 2 51 24 93 61 40 68 45 61 12 63 24 89 59 52 72 43 20 20 69 36 40 88
30446 9 62 55 77 84 20 18 6 77 15 52 39 75 3 26 4 85 17 62 29 11 92 46 58 29 59 28
30542 80 71 96 2 49 85 37 63 4 61 14 2 53 87 25 86 6 75 76 93 41 39 93 92 42 56 41
30663 26 28 18 77 11 50 78 79 1 12 12 91 29 13 58 5 56 92 66 59 4 39 47 95 5 5 62
30733 13 80 27 ^
308203 1 35 28 11 7 20 7 17 3 3 30 89 13 65 56 66 63 22 82 16 31 55 56 77 91 91 71
309101 13 10 85 101 95 17 99 98 91 33 14 20 48 32 7 64 29 38 35 25 4 95 23 34 1 85
31081 23 31 96 71 84 50 15 79 47 25 51 45 35 66 19 61 60 9 31 93 64 70 30 42 86 53
3111 71 46 42 22 38 96 10 99 34 76 26 55 73 63 63 97 23 92 81 64 46 1 30 31 35 86
31291 88 64 87 16 37 69 84 94 60 100 3 47 52 8 71 87 57 29 76 43 18 45 46 15 65 12
31344 42 66 60 15 68 19 58 39 62 76 9 92 101 57 32 4 34 15 41 62 32 89 71 43 35 31
31441 21 17 82 33 96 27 62 29 82 57 46 62 15 24 99 37 83 40 52 46 56 80 98 3 91 74
3156 27 7 58 94 10 41 79 97 84 77 74 26 99 35 ^
316212 1 26 101 17 91 45 97 80 59 102 30 68 4 85 9 4 39 16 18 85 70 11 87 62 72 78
31738 3 41 53 82 82 35 18 13 94 64 52 39 77 59 26 9 65 46 64 98 32 29 86 79 16 63
31854 76 56 98 16 98 78 22 72 33 103 104 52 84 12 65 15 85 101 97 84 31 51 26 100
319100 38 80 13 2 78 7 24 44 84 103 27 7 28 16 33 99 25 103 54 14 42 62 87 92 27
32022 42 5 52 100 84 73 72 63 24 48 56 52 23 5 17 76 31 1 95 58 43 60 50 62 30 23
32135 79 20 35 3 72 32 45 51 87 41 84 27 79 77 70 102 15 54 15 100 8 52 69 105 3
32230 84 42 93 66 89 69 74 24 33 42 97 4 38 99 106 13 93 6 106 74 100 54 45 21 59
32356 37 9 50 32 75 79 31 77 9 61 1 8 68 6 60 81 7 100 99 14 61 48 25 73 26 70 72
32494 34 ^
325233 0 11 98 110 88 35 110 35 64 49 88 93 28 85 6 78 65 90 52 24 97 51 39 51 59
32623 1 3 49 33 11 78 27 35 55 64 5 102 4 70 25 56 58 38 66 11 31 96 66 104 59 41
32786 58 29 79 41 40 72 51 12 92 34 52 44 69 104 21 97 89 96 48 21 4 61 40 28 67
32834 23 85 44 22 62 52 33 84 23 30 73 74 4 79 12 81 47 80 53 47 89 40 19 80 62 34
32961 29 41 95 43 1 70 63 55 53 18 19 13 48 10 19 89 49 4 52 53 56 76 10 8 104 77
33015 28 38 75 109 3 85 90 8 40 8 93 90 43 39 14 60 17 36 78 56 105 80 35 75 36 58
33182 50 100 98 45 74 13 66 95 72 71 95 34 14 98 72 33 38 37 52 6 14 107 59 3 29
33261 67 98 92 5 93 17 98 36 87 41 75 71 57 88 17 25 91 84 3 58 20 92 69 51 50 36
33331 14 25 18 30 18 1 41 104 30 82 59 87 70 34 96 28 47 62 81 103 48 ^
334234 1 63 90 108 108 102 64 82 88 4 111 76 97 22 1 108 41 34 91 33 20 25 24 26 8
33583 11 31 7 85 109 106 4 105 85 68 28 33 99 53 8 16 12 11 74 17 83 66 70 16 30 9
33667 68 34 24 81 47 92 72 47 37 33 38 92 17 8 28 88 22 62 69 32 89 75 3 72 96 85
33713 105 24 38 37 94 115 83 72 108 114 24 93 76 103 60 99 102 9 43 10 59 95 46 33
33893 15 26 69 44 2 86 107 55 45 61 65 92 66 9 55 39 70 83 29 98 67 13 111 15 20
33931 62 8 2 51 20 19 33 44 14 115 71 112 97 10 41 28 53 51 26 57 15 38 98 55 106
34022 56 31 50 95 107 110 84 70 10 108 96 73 100 25 36 55 88 71 63 96 30 90 96 79
34122 7 30 23 28 59 89 8 51 99 47 86 34 18 43 65 98 104 107 49 7 79 71 8 57 21 29
34280 2 74 78 44 57 9 61 22 13 68 52 91 74 98 43 30 58 68 95 101 72 102 76 42 99
34361 ^
344249 0 27 117 45 119 80 2 59 52 8 76 20 94 102 69 96 42 46 106 67 9 110 89 71 69
34534 31 15 85 16 29 100 82 37 62 68 95 108 44 23 114 34 36 56 93 11 30 96 12 31
34667 14 114 14 66 70 30 81 46 53 119 85 6 104 47 92 72 70 5 70 15 115 68 105 33
34797 13 85 106 14 61 29 22 86 45 57 69 91 38 38 28 66 13 60 95 103 3 15 5 113 38
34823 62 5 65 94 107 73 104 37 47 102 117 3 78 35 7 95 56 78 45 52 28 46 43 37 32
34953 19 55 29 47 97 76 115 83 71 11 45 62 73 99 116 2 24 116 7 28 41 2 29 37 52
35023 5 118 79 31 57 89 61 24 101 78 50 93 73 41 7 33 45 47 24 1 48 73 36 3 25 87
35146 28 108 54 68 53 67 119 28 36 118 104 42 88 27 112 4 74 85 1 63 39 97 71 74
35275 76 10 49 12 79 11 50 103 118 94 117 118 37 27 12 94 60 28 51 47 82 110 17 15
353105 23 52 43 12 21 22 81 41 12 74 90 42 108 117 98 67 4 69 85 ^
354243 0 76 81 26 101 13 68 62 106 87 19 98 32 81 63 79 93 31 121 123 75 52 11 66
35541 54 87 38 5 104 62 51 38 55 29 31 120 44 16 48 94 46 105 91 66 78 27 43 6 64
3562 55 79 75 84 113 22 4 113 109 31 33 17 96 11 29 63 98 103 107 116 34 14 9 95
35738 18 51 75 33 109 118 55 66 4 76 7 75 70 82 74 23 1 26 69 40 112 99 47 65 31
35870 119 52 103 88 85 86 28 16 12 76 25 22 78 64 21 86 27 61 77 72 108 2 18 106
359119 121 54 16 85 72 2 73 26 88 66 60 80 35 24 117 63 24 44 67 52 122 119 33 72
36016 99 98 69 54 19 42 28 53 114 32 117 81 100 57 49 123 56 21 68 80 53 95 1 45
36195 107 98 87 1 27 24 99 116 16 67 1 113 91 84 25 40 25 72 3 28 90 87 112 80 16
362117 45 77 36 90 105 59 88 122 64 108 108 71 98 18 50 115 93 105 77 35 6 46 55
36347 102 4 26 87 111 120 81 113 4 57 105 3 84 94 115 61 73 ^
364255 1 91 47 51 9 57 9 55 94 61 61 68 46 107 6 35 81 114 78 96 74 14 89 73 67 67
36569 113 107 11 98 113 109 20 92 17 67 70 88 57 10 124 9 60 122 93 91 45 7 15 24
36651 5 98 115 24 49 90 104 117 66 128 94 64 80 12 43 91 46 111 59 58 77 30 14 88
36760 123 68 41 44 68 40 104 118 41 43 93 90 105 92 16 127 26 54 125 114 79 71 24
36848 21 25 118 40 103 49 91 44 67 65 25 119 109 18 48 23 69 112 38 61 64 87 84
369104 119 110 122 92 22 1 8 83 34 100 32 62 41 46 112 34 102 76 56 39 4 127 30 13
37019 110 124 7 16 128 95 4 124 11 104 116 126 49 95 3 55 96 70 90 101 4 122 96 75
371118 39 128 99 92 18 42 20 87 83 35 75 111 61 67 71 28 101 9 56 34 105 95 71 23
37273 71 26 57 15 23 76 55 99 89 128 98 117 68 43 88 62 38 62 39 2 83 36 15 26 60
373128 96 73 74 10 1 12 42 22 2 77 33 33 32 57 13 14 82 57 12 39 3 58 80 14 87 85
37444 69 109 119 ^
375283 0 102 55 53 41 60 88 25 67 58 76 44 22 68 118 108 40 95 96 81 90 85 28 77
37618 11 37 72 93 60 110 124 119 95 131 91 37 109 126 8 73 69 72 80 17 83 5 76 20
37732 15 10 1 103 18 22 116 98 9 51 104 102 44 33 15 12 24 31 89 1 6 28 101 8 64
37872 106 30 5 52 89 111 39 108 64 85 17 57 124 22 105 78 115 3 40 108 66 108 77
379128 103 44 35 38 13 95 10 111 63 98 117 61 51 126 69 96 70 70 59 39 13 97 33
380112 2 77 7 123 70 83 29 66 67 49 79 19 104 115 14 60 2 55 40 71 33 28 114 51 91
38117 46 45 128 57 87 62 25 115 38 50 55 90 74 8 51 102 79 43 94 36 122 94 12 41
38236 25 104 91 24 7 99 80 30 126 32 63 122 107 114 27 28 79 41 12 35 51 115 122
38370 22 79 65 2 88 27 17 59 15 23 44 57 5 65 6 26 78 80 125 93 84 100 45 22 129
38468 36 111 74 118 11 50 42 120 47 21 8 86 112 26 67 60 99 45 93 47 8 38 59 52 56
385124 20 82 18 117 24 18 46 106 19 117 26 41 47 45 130 7 15 1 4 5 100 10 85 50 44
38611 48 92 119 108 42 118 125 ^
387272 0 8 61 99 70 96 20 87 123 134 82 22 2 110 118 33 86 5 7 5 94 56 15 60 96 54
38813 22 55 99 4 25 105 17 37 69 10 38 117 117 30 70 13 9 109 115 62 94 52 66 117
389100 135 7 75 23 5 81 110 31 118 29 1 62 11 41 88 109 119 102 37 3 30 123 47 31
39056 134 29 124 116 118 99 21 56 77 91 23 37 135 81 44 51 67 95 51 133 30 57 67
391116 122 48 100 7 132 97 106 69 93 4 95 125 102 103 119 81 57 133 96 37 118 50
392117 113 81 127 17 45 103 32 121 129 60 43 65 127 30 36 132 110 52 53 35 71 12
39376 22 72 130 112 99 76 26 21 73 63 63 97 23 58 115 132 114 1 132 31 35 18 23 54
39430 53 118 37 35 84 94 60 100 3 47 18 110 105 87 57 63 76 43 52 45 46 49 65 12
39510 42 66 60 117 34 19 92 5 28 76 9 126 101 125 32 38 34 15 7 62 32 21 3 43 69
39631 109 123 51 116 135 130 129 130 63 14 57 80 62 15 126 31 105 83 108 120 80
397124 46 98 105 91 6 6 27 7 58 128 78 7 79 63 84 77 74 128 65 61 95 121 17 24 123
398117 51 122 ^
399284 0 44 71 43 20 126 58 53 47 98 18 19 119 93 29 70 39 94 112 44 115 135 98 82
40010 67 29 102 113 68 80 19 75 1 91 114 87 80 7 40 37 86 120 16 104 136 117 82
401138 32 65 114 119 137 121 8 12 46 126 26 119 73 130 60 76 113 100 14 133 26 116
40234 120 80 95 84 53 15 24 44 51 4 10 23 77 24 99 66 37 54 63 42 136 21 34 76 5
40317 128 101 1 59 40 113 112 32 97 31 93 105 79 91 18 39 1 103 132 51 68 124 111
40413 97 43 128 69 84 85 72 15 12 26 87 16 16 92 101 13 77 4 118 89 103 56 42 16
40560 44 39 126 46 18 83 93 41 105 3 82 106 115 91 6 4 54 115 15 120 109 113 48 41
4069 95 20 62 67 105 111 25 132 7 116 46 138 44 83 61 124 131 35 107 6 109 81 114
40767 41 137 77 56 74 73 34 12 14 69 52 11 98 47 54 83 81 6 1 15 88 35 139 80 83
40849 89 27 47 130 92 133 87 51 112 76 49 109 49 57 93 73 22 117 50 64 58 97 139
40936 131 111 133 58 33 8 88 55 38 90 46 30 118 57 29 82 74 41 117 38 46 94 92 5
410105 15 117 70 103 68 60 120 48 21 110 85 40 81 66 ^
411291 0 46 113 52 134 79 74 64 57 18 23 9 52 8 16 103 57 138 59 59 65 92 2 7 130
41292 8 34 40 86 131 140 100 112 4 42 1 110 108 43 37 15 67 19 35 94 61 130 98 35
41388 34 65 104 56 126 118 50 87 10 81 109 90 86 118 32 6 114 88 39 38 39 62 3 12
414134 72 137 35 75 81 115 106 140 112 11 123 41 103 45 95 84 71 107 13 26 110 96
41562 16 109 84 59 53 38 27 8 28 13 32 137 17 138 41 122 36 99 65 99 83 36 112 29
41649 70 96 126 136 131 116 3 18 17 126 142 14 37 141 141 123 42 13 20 83 42 139
41783 54 49 58 42 7 137 29 48 16 121 127 34 52 140 106 128 58 36 124 83 24 69 54
41861 112 17 6 95 97 24 57 86 124 59 71 119 67 1 109 54 68 49 57 132 32 5 71 113
41940 80 104 75 106 133 31 126 130 104 62 9 39 44 66 116 141 135 96 132 19 41 121
420126 124 77 8 4 60 82 6 101 124 89 51 123 48 40 85 77 21 112 10 69 66 115 87 16
421108 30 84 65 80 103 32 131 134 73 47 10 63 39 50 93 37 135 114 69 48 34 58 23
42227 133 37 9 40 98 41 115 99 70 83 29 42 67 133 55 79 80 91 122 12 2 115 112 47 ^
423293 1 33 13 99 138 1 42 89 118 87 113 99 12 134 142 100 38 5 55 75 14 110 108
42442 64 130 79 138 62 64 69 57 11 123 25 59 16 111 94 24 65 30 51 119 48 107 92
42584 69 28 136 143 54 20 6 70 47 142 64 4 65 59 73 99 134 146 102 125 116 57 137
426137 72 48 128 78 5 80 63 54 85 30 22 129 68 21 21 74 28 128 107 27 60 2 93 95
42771 37 11 37 15 39 102 3 104 65 80 59 52 113 34 20 67 60 27 81 135 46 106 106
428102 68 128 17 15 100 124 15 43 136 122 100 67 142 35 14 53 120 2 89 93 99 73 9
429122 39 77 15 96 90 43 79 134 60 92 105 55 96 31 119 77 97 72 23 140 38 30 43 83
430136 88 107 117 72 109 118 58 91 119 73 95 100 59 138 123 54 49 143 50 133 66
431106 45 80 88 42 93 5 59 77 101 74 110 104 40 92 19 77 76 86 102 129 3 144 101
432139 134 56 90 18 91 94 85 55 10 137 11 58 1 107 113 70 22 7 56 29 143 111 8 46
43345 116 122 129 89 7 121 53 95 14 49 118 62 125 91 37 97 15 35 100 63 140 63 50
43451 58 26 127 6 45 59 102 121 114 85 141 135 10 72 19 106 66 66 41 53 13 38 1 21
435103 50 108 46 119 ^
436297 1 46 31 132 112 28 63 124 97 129 43 40 72 99 107 132 137 96 139 99 145 121
437144 118 37 81 39 94 60 55 109 47 109 110 75 42 12 139 137 43 128 106 107 19 126
43812 101 148 127 15 117 125 125 62 96 13 76 70 96 101 110 138 8 95 76 143 17 32
43997 79 149 39 31 94 123 21 41 135 55 84 70 33 135 118 50 62 121 81 1 45 144 93
44060 5 64 137 8 105 91 82 67 27 113 119 53 18 98 79 48 84 32 135 128 5 1 20 76 17
44185 108 72 36 141 140 49 150 105 104 3 149 14 54 18 148 64 49 125 37 28 28 101
44222 104 91 32 82 117 12 114 69 58 2 58 115 9 108 47 59 65 14 92 7 4 86 98 16 82
44392 95 38 94 10 10 48 97 104 66 115 97 142 115 122 119 40 97 16 32 47 34 88 89
44426 50 12 76 80 51 40 9 133 24 44 40 122 84 108 22 142 140 99 44 15 54 8 42 125
445150 130 21 79 124 62 46 119 15 29 91 57 150 42 138 71 61 68 80 114 6 1 70 121
44618 35 113 56 87 86 10 73 14 29 41 72 89 1 133 87 101 123 59 90 142 77 133 52 78
44748 34 138 134 27 17 60 131 147 61 93 148 39 132 49 62 71 36 91 4 139 49 100 120
44843 113 144 30 94 73 127 40 125 ^
449313 1 35 97 95 76 105 88 32 138 30 69 61 40 47 21 107 6 39 81 114 53 125 53 147
45014 4 73 146 96 98 13 136 11 98 117 138 153 67 146 71 99 88 7 139 24 13 35 47 97
451145 74 36 119 3 51 84 48 119 53 49 15 79 17 120 103 148 64 30 41 97 120 75 111
45263 58 131 134 18 13 10 48 18 16 48 43 15 54 18 41 47 122 144 80 92 145 77 1 33
45389 54 46 78 48 21 54 43 40 53 24 16 73 42 94 29 44 34 151 152 23 123 12 142 140
45443 37 88 29 19 35 72 96 151 130 62 112 34 36 91 120 50 112 138 2 105 60 68 137
455131 5 17 19 139 74 11 120 78 149 58 128 15 104 16 126 78 20 57 134 71 49 90 76
456108 126 100 54 68 39 132 153 42 147 146 124 62 87 35 75 61 65 46 100 82 105 113
45731 63 5 95 54 71 77 127 150 80 36 144 2 130 59 74 39 3 152 121 122 18 117 12
458117 141 118 135 62 36 69 5 39 53 150 52 153 143 30 66 96 126 131 56 137 8 7 86
459142 14 7 111 141 93 136 137 134 43 12 89 23 44 9 152 146 121 97 19 38 110 91 67
46014 32 110 66 68 8 130 84 73 118 59 24 41 72 121 150 55 37 138 27 104 66 124 9
46151 109 47 125 109 148 8 29 47 72 146 149 61 93 10 20 54 15 76 133 125 106 110
46267 ^
463330 0 23 9 26 136 27 51 115 122 44 106 6 146 108 113 85 51 8 96 47 56 137 62 59
46489 143 71 140 14 85 156 139 99 154 30 53 115 35 147 108 148 58 52 28 103 19 92
46595 152 152 10 11 13 155 67 11 83 101 69 153 152 45 141 14 120 129 140 119 59 2
46689 73 70 83 29 16 67 81 29 1 54 65 96 117 2 37 47 128 33 3 89 108 98 139 49 78
46727 103 39 119 94 132 90 38 132 55 65 131 90 58 2 54 100 69 118 22 44 19 7 148
46893 25 29 123 81 64 131 55 30 1 89 38 97 82 64 9 28 86 123 151 10 133 40 154 102
4694 111 65 9 63 59 124 116 72 105 76 57 137 97 32 145 108 78 112 50 43 34 75 20
47022 129 68 11 118 74 125 118 57 17 20 129 53 65 61 144 1 17 142 156 52 100 54 15
47120 59 52 63 131 20 57 124 31 125 46 106 76 92 8 98 154 152 80 114 15 140 136
472112 100 17 92 25 151 150 80 99 69 83 49 43 156 102 19 57 122 96 30 3 39 134 40
47332 75 5 76 127 138 99 17 57 52 150 130 18 127 33 23 116 107 78 77 77 42 69 68
47448 41 69 33 75 40 49 128 103 4 146 93 10 83 66 96 152 30 38 12 33 5 39 47 41 34
47560 74 20 42 156 67 46 56 102 89 3 124 81 99 104 56 50 8 61 74 55 15 87 108 28
476138 47 93 60 2 124 46 126 103 91 145 36 25 116 122 51 ^
477322 0 75 7 107 158 81 105 154 90 20 125 77 114 69 92 7 58 21 98 154 50 128 149
478117 127 153 45 3 18 121 86 29 71 79 101 2 5 22 143 10 27 53 146 157 148 112 33
47922 80 123 24 147 1 112 82 159 63 74 97 109 33 151 32 89 87 132 117 46 129 59
480115 91 114 118 37 21 9 94 60 25 89 47 79 110 55 12 143 99 87 43 88 56 57 160 76
48112 71 128 77 146 117 95 105 42 66 3 76 20 76 101 100 118 149 45 26 143 148 32
48257 39 129 19 31 84 123 1 152 135 5 54 30 13 125 68 30 62 101 51 142 5 94 83 20
483116 24 107 109 105 91 42 17 27 93 69 3 139 68 79 38 84 2 85 128 126 122 131 46
48417 35 98 42 26 111 100 29 120 55 84 114 109 145 14 18 138 14 9 85 7 18 129 91 2
48594 51 133 82 87 123 64 39 8 103 38 75 110 78 7 9 45 115 42 138 135 86 78 16 62
48652 75 159 54 151 121 149 77 74 16 85 47 102 105 82 119 10 67 137 153 148 135 28
48749 26 151 153 36 80 11 130 113 24 44 30 102 24 58 133 122 140 99 24 156 54 119
48842 115 140 90 132 19 94 2 157 99 136 19 71 7 130 153 108 51 21 58 70 74 137 1
48940 111 149 5 103 6 27 76 141 23 125 140 1 72 29 152 103 87 51 93 29 80 132 77
490123 153 68 159 14 98 114 158 121 158 81 131 ^
491322 0 35 93 109 125 119 10 10 19 135 26 4 74 135 35 120 129 113 92 17 29 47 88
49214 159 149 87 45 36 75 68 22 138 20 59 61 144 151 11 107 6 153 81 114 43 85 157
49397 148 118 73 126 56 58 137 96 11 98 67 98 103 57 146 21 59 88 151 139 148 127
49425 17 47 115 34 160 109 107 51 64 28 69 13 49 149 69 141 90 93 118 64 10 1 67
49580 35 111 13 58 101 124 132 147 154 18 162 6 162 33 5 34 142 41 161 82 114 70
49692 145 57 155 137 114 79 44 36 48 48 21 14 13 40 33 14 150 33 32 54 143 14 4
497101 142 23 93 136 132 120 147 17 38 163 143 5 52 46 151 130 32 72 34 124 150 51
498100 112 128 126 65 10 28 87 81 159 131 19 99 54 125 110 58 119 28 78 129 104
499140 126 38 154 27 114 61 153 90 66 98 76 50 158 48 39 82 123 22 147 136 114 52
50037 35 75 41 15 150 60 52 55 103 21 23 129 95 24 71 47 97 130 50 140 144 106 100
5019 64 19 117 122 71 92 8 77 156 97 121 98 85 2 36 39 109 143 23 120 156 133 93
502154 36 66 116 131 160 127 162 161 46 142 14 141 81 141 63 86 117 104 3 146 39
503127 34 133 102 106 91 57 9 28 60 61 7 158 12 80 26 8 122 80 44 63 68 49 158 21
50432 81 150 15 141 108 161 64 46 124 123 31 99 27 105 109 98 112 144 ^
505336 1 34 161 107 149 48 67 138 109 156 104 37 133 60 80 84 81 160 9 16 96 164 1
50695 112 4 86 163 116 98 103 55 31 8 56 37 36 127 32 9 89 103 31 100 161 85 106
507119 89 154 43 115 162 137 108 128 38 42 155 103 9 62 65 102 122 10 138 160 125
50847 158 43 91 69 123 132 35 121 4 110 89 130 69 29 139 69 53 70 83 29 163 67 41
5099 108 34 45 76 87 2 144 164 98 33 160 79 78 48 89 9 38 134 93 146 79 54 122 80
51038 112 55 55 101 70 8 129 44 70 59 98 149 24 136 124 138 63 25 166 83 51 34 91
51145 30 118 59 28 87 72 44 116 28 36 103 101 113 10 114 62 111 71 65 126 53 19
512114 86 42 85 36 57 137 57 159 95 88 78 72 20 23 14 65 10 22 129 68 1 68 74 75
513108 7 7 147 109 13 35 51 104 158 164 122 126 2 50 4 132 127 59 52 13 81 20 47
514107 74 148 115 46 106 46 82 115 68 144 142 60 104 15 90 136 102 100 134 42 15
515141 100 40 49 49 73 166 13 156 82 166 37 82 96 137 130 166 134 20 139 45 122 56
516107 98 79 124 17 32 130 120 165 77 23 130 96 67 68 47 37 12 29 18 38 158 19 160
51755 147 39 118 83 121 96 43 137 33 66 86 112 147 155 149 140 5 19 17 148 161 10
51844 159 146 57 16 26 102 49 3 104 61 59 74 56 10 165 31 54 25 142 157 37 58 165
519128 154 73 50 149 94 137 ^
520330 1 61 51 65 132 23 169 116 122 14 66 7 98 131 72 69 127 72 163 125 68 69 51
52147 159 31 164 71 118 50 83 113 81 127 153 45 137 134 121 68 163 26 43 65 127
522166 138 98 144 18 53 137 139 148 76 158 4 62 78 167 102 144 94 55 141 63 29 97
52391 24 115 166 80 69 132 99 1 120 23 88 64 87 118 37 137 152 94 60 168 71 47 52
524110 37 155 125 63 42 43 52 11 12 151 31 12 44 110 32 128 117 68 87 24 39 164 76
525145 58 101 91 100 140 151 143 130 32 21 3 111 1 31 75 123 153 116 135 130 27
526164 165 116 23 12 62 83 24 133 139 49 74 154 80 158 80 64 105 91 6 142 27 75 24
527128 112 41 79 29 84 145 40 128 99 95 95 19 17 160 89 15 17 84 64 11 93 10 66 78
52873 127 148 18 129 139 143 49 150 9 84 82 154 85 15 88 82 60 87 19 12 133 58 20
52939 65 51 141 134 27 70 167 120 117 86 60 16 44 16 57 132 18 142 85 104 59 47
530141 58 2 66 96 46 119 153 40 110 126 103 90 144 13 26 106 144 80 145 134 103 95
53124 44 21 84 140 13 97 104 140 99 6 147 54 83 42 106 131 54 96 135 67 118 121 81
532109 10 53 132 112 117 81 33 155 49 61 38 119 1 13 102 131 148 94 131 143 67 123
533148 89 104 135 72 145 152 76 87 6 66 2 71 123 77 114 108 59 123 166 62 96 140
53494 149 116 169 ^
535349 0 125 17 93 82 80 110 156 147 156 99 154 4 29 90 163 120 84 113 56 8 157 29
53661 169 141 113 78 48 50 13 138 11 50 61 99 106 2 107 6 117 81 114 34 49 112 52
537130 82 73 108 20 22 110 60 11 98 22 62 58 48 146 149 23 88 142 139 121 91 16
538163 2 88 171 133 100 62 51 46 10 24 150 49 131 60 114 63 84 91 64 165 138 40 44
539172 111 141 58 74 115 96 129 145 164 153 170 126 24 169 16 115 41 125 46 87 61
54092 145 39 155 92 78 70 35 27 21 48 21 151 159 40 15 5 132 170 23 18 107 160 150
54156 133 23 66 109 123 102 102 172 166 145 116 151 34 1 151 130 5 36 34 97 114 15
54282 128 112 119 99 29 138 165 42 36 159 95 19 63 36 89 101 40 92 1 33 93 104 113
543126 2 136 96 52 108 90 57 89 31 5 113 30 39 37 96 4 147 127 105 43 165 35 75 23
544143 105 24 25 10 94 12 160 102 95 170 71 20 70 112 23 95 144 61 73 137 55 1 81
54595 26 65 172 41 147 79 103 80 40 121 36 12 64 98 169 93 111 115 48 127 9 39 107
546131 115 118 162 161 10 142 14 123 54 141 36 41 99 77 140 128 167 82 25 106 57
54770 64 21 19 15 34 126 149 167 53 163 127 86 35 8 54 23 40 140 3 169 45 150 152
54896 81 143 28 28 124 87 13 90 9 87 109 53 67 164 28 131 89 149 42 55 126 79 132
54974 19 133 30 68 72 75 148 9 10 72 152 144 83 106 153 74 163 98 152 ^
550375 1 94 28 13 8 20 28 18 118 5 140 89 67 171 64 152 85 61 101 80 154 149 34
551115 135 128 108 110 20 33 128 103 35 38 57 95 10 111 151 98 29 149 7 82 69 96
552114 26 103 171 101 53 121 24 2 121 51 35 70 83 29 154 67 5 167 63 16 27 58 60 2
55399 128 71 33 160 70 51 3 44 149 2 89 84 101 43 18 113 71 38 94 55 46 74 52 139
554102 35 43 50 80 122 6 100 88 129 36 25 148 47 24 7 55 36 30 82 32 19 78 63 26
55571 28 167 85 56 167 95 159 78 26 66 35 65 90 44 159 105 59 15 67 57 137 21 132
55650 70 78 36 169 5 172 56 1 22 129 68 168 23 74 30 99 138 174 120 91 153 8 42 68
557158 155 104 99 133 5 135 96 82 59 52 144 36 20 38 62 29 112 106 46 106 19 73 70
55841 135 133 42 95 15 45 136 93 100 98 173 6 132 55 4 4 31 64 130 162 156 64 157
55919 46 96 92 103 139 134 2 94 18 86 38 89 62 61 79 157 14 112 111 156 32 14 85
56078 31 59 20 1 161 169 149 29 122 150 133 37 102 30 109 65 85 51 174 110 164 66
56177 76 111 119 131 95 5 1 166 103 134 141 17 158 123 137 48 165 175 102 13 3 86
56243 23 47 56 150 165 4 36 174 115 157 168 13 147 119 109 55 41 140 67 27 31 27
56353 126 17 163 116 122 160 60 7 92 113 66 45 109 60 151 125 62 39 39 17 153 13
564152 53 94 50 53 89 57 127 153 45 119 104 121 56 145 172 19 41 103 166 108 68
565126 12 53 131 127 148 52 134 168 50 48 155 72 132 82 37 129 63 175 160 ^
566366 1 73 15 79 139 71 51 132 81 135 111 166 61 37 60 118 37 92 134 94 60 150 53
56747 25 110 19 137 107 27 176 43 16 145 146 142 165 12 17 92 166 110 117 41 69 6
56812 164 76 109 40 101 82 82 131 134 115 143 112 32 164 146 93 162 31 66 123 144
56980 135 94 137 156 107 157 173 62 65 176 124 112 4 65 127 44 131 53 19 105 91
570149 106 27 57 158 92 85 14 79 20 84 127 174 128 72 68 59 171 17 124 80 167 8 57
57128 172 66 144 48 42 37 109 121 18 120 103 116 13 132 39 73 145 76 158 43 82 33
57251 153 164 97 13 2 3 20 24 114 98 9 25 131 102 99 86 42 16 26 159 39 105 161
573133 49 59 41 20 105 31 136 30 87 10 119 135 13 83 99 58 45 99 156 26 61 135 143
57480 118 107 76 77 24 44 12 66 95 147 61 86 140 99 167 138 54 47 42 97 122 18 60
57590 40 73 85 63 82 1 35 96 94 81 54 15 128 40 52 2 101 1 165 93 113 130 85 95 98
57658 105 112 53 68 108 72 100 152 49 87 140 39 154 62 114 77 105 63 50 87 157 26
57778 122 67 140 71 170 119 5 93 64 50 104 144 129 138 75 130 4 178 60 139 120 54
578113 32 2 133 17 43 163 129 89 72 149 155 30 38 7 138 5 44 61 69 76 175 107 6 93
57981 114 28 25 82 22 118 58 73 96 175 177 92 36 11 98 171 38 28 42 146 125 178 88
580136 139 103 67 10 151 151 70 153 115 94 32 51 34 177 173 132 49 119 54 96 45 78
58173 64 159 120 22 20 154 111 117 58 56 109 72 143 ^
582372 1 136 146 144 170 90 15 169 180 88 41 89 10 60 52 92 145 21 155 47 42 61 26
58318 176 48 21 124 141 40 179 178 114 143 14 164 71 142 132 11 124 23 39 82 114
58484 57 163 130 127 89 133 16 138 151 130 160 34 70 78 161 64 92 112 110 72 175
585102 138 179 173 159 59 19 27 18 53 92 22 65 156 170 57 104 86 126 148 118 155
58678 43 63 90 48 80 168 142 68 12 39 174 69 168 147 118 96 34 129 35 75 5 107 60
587170 180 147 85 3 133 75 95 152 71 175 43 94 178 50 144 16 46 101 46 165 45 68
588163 38 172 5 138 61 85 62 177 76 36 167 19 53 151 66 66 97 3 100 164 12 98 131
58970 109 162 161 156 142 14 105 27 141 9 178 81 50 113 110 131 37 16 79 12 34 37
590167 173 10 152 7 81 140 158 26 136 82 50 172 154 45 160 31 122 167 142 9 150
591125 51 54 125 174 10 124 51 177 81 173 69 109 8 22 155 19 86 62 149 33 37 108
59234 96 29 174 133 167 50 54 66 130 9 1 36 134 108 65 97 126 56 163 71 83 88 10 1
5938 178 22 6 112 169 116 89 43 153 40 146 85 31 89 74 154 137 28 115 117 122 108
59498 8 27 110 103 176 17 20 27 77 10 93 145 80 17 143 165 76 69 78 102 20 91 171
59595 29 115 176 166 109 39 23 70 83 29 148 67 163 161 33 4 15 46 42 2 69 104 53
59633 160 64 33 155 14 131 160 59 78 71 19 176 107 65 38 82 55 40 56 40 115 84 29
59725 44 68 104 176 76 64 123 18 25 136 23 6 171 31 30 30 58 14 13 72 57 14 41 177
598^
599363 0 135 69 16 167 79 143 46 178 26 3 65 58 36 135 97 35 175 51 152 57 137 173
600108 10 54 78 4 153 173 164 48 177 22 129 68 168 167 74 174 91 106 174 96 75 129
601168 34 36 158 147 88 75 101 149 103 64 42 59 52 112 180 20 30 22 173 80 98 46
602106 179 65 30 17 127 125 26 87 15 5 136 85 100 66 141 182 124 15 156 148 15 56
60398 146 156 48 149 3 14 96 52 79 115 134 170 54 178 54 22 73 30 45 39 133 182 96
604103 148 176 6 45 62 183 51 180 153 145 145 117 21 90 118 109 21 62 22 101 49 53
60511 142 86 132 66 69 44 79 87 115 55 5 169 150 63 110 109 177 150 91 129 40 149
606159 102 165 3 70 27 175 23 56 126 165 164 20 158 91 157 136 157 131 111 69 39
60733 132 43 19 175 179 37 118 9 155 116 122 128 52 7 84 89 58 13 85 44 135 125 54
608183 23 161 145 173 136 29 62 50 13 57 25 127 153 45 95 64 121 40 121 140 171 9
60971 166 68 28 102 4 53 123 111 148 20 102 160 34 8 139 32 116 66 13 113 63 143
61097 63 10 59 124 66 41 132 71 115 106 151 46 22 45 118 37 67 124 94 60 140 43 47
61110 110 9 127 97 7 156 43 180 125 126 137 145 12 2 82 146 100 117 26 59 180 181
612164 76 89 30 101 77 72 126 114 95 143 102 32 149 131 83 157 31 61 123 139 60
613135 74 169 122 151 102 137 168 62 55 166 119 97 163 60 112 24 116 38 178 105 91
614134 86 27 47 138 72 70 183 79 15 84 117 154 128 57 53 39 161 88 ^
615393 1 92 72 151 33 183 164 42 112 32 10 5 93 97 18 112 71 92 168 116 179 186 65
616137 68 134 3 82 9 19 121 148 65 160 173 158 167 90 66 180 172 99 86 83 86 26 16
61710 135 23 81 137 125 17 19 25 183 73 7 104 185 79 165 119 119 176 59 75 18 5 59
618132 26 21 127 119 80 94 83 52 61 24 44 4 50 55 115 29 70 140 99 159 130 54 15
61942 89 114 173 28 50 16 33 53 47 58 180 19 64 78 49 30 186 104 32 44 157 85 1
620149 85 97 114 77 63 58 50 89 80 21 36 84 72 60 152 25 87 108 15 138 54 106 77
62197 23 42 55 149 181 62 106 43 132 31 138 111 176 93 40 10 96 128 105 114 43 98
6224 146 20 107 120 14 113 181 101 1 19 155 113 57 64 117 131 6 22 186 138 184 36
62361 29 36 175 107 6 61 81 114 20 180 42 169 102 26 73 80 151 153 68 4 11 98 139
6246 175 34 146 93 154 88 128 139 79 35 2 135 119 46 129 91 86 179 51 18 169 141
625108 49 103 46 72 21 70 49 64 151 96 185 175 130 111 85 58 32 101 40 101 131 136
626139 170 70 10 169 175 73 41 69 177 45 47 92 145 11 155 22 22 56 21 13 166 48 21
627109 131 40 174 178 104 128 9 149 51 132 122 173 119 23 24 67 109 74 32 158 110
628117 74 123 6 118 151 130 150 167 34 55 58 146 54 72 112 105 57 160 82 123 159
629153 159 39 19 7 8 33 87 12 50 146 150 37 104 71 126 133 108 145 68 38 38 90 43
63075 148 122 43 2 39 154 54 163 147 113 91 29 109 35 75 182 87 35 155 170 127 80
631185 118 60 95 142 71 165 28 84 168 25 144 178 31 81 41 160 25 53 143 ^
632381 1 14 172 163 130 45 69 46 145 36 36 151 169 13 135 42 26 81 153 76 148 178
63390 131 30 101 162 161 132 142 14 89 3 141 175 146 65 26 89 94 99 187 8 55 162 2
63413 143 173 2 120 173 41 132 150 2 112 42 18 140 130 37 128 23 106 159 118 167
635150 101 11 30 109 150 184 124 19 169 73 165 53 109 158 172 147 11 46 38 149 25
63621 92 184 64 179 158 133 135 34 38 58 114 9 183 4 118 76 49 89 102 40 163 47 75
63780 176 175 8 154 14 180 104 153 84 89 11 129 8 138 85 181 73 66 154 121 20 115
63893 114 108 82 182 19 86 103 176 183 186 177 53 10 69 137 56 1 135 141 68 69 54
63986 12 75 171 87 187 107 144 150 93 23 7 70 83 29 140 67 139 153 183 178 189 30
64018 2 29 72 29 33 160 56 9 123 164 107 136 19 70 31 177 152 99 57 38 66 55 32 32
64124 83 60 21 1 36 52 80 168 44 32 115 184 25 120 181 172 155 189 22 30 26 180 5
64264 49 188 1 28 111 57 176 167 67 131 22 160 186 169 65 34 30 117 91 17 163 39
643134 57 137 155 90 170 42 78 170 141 167 158 42 177 22 129 68 168 143 74 150 85
64482 174 78 63 111 156 28 12 158 141 76 57 77 125 79 40 12 59 52 88 156 20 24 182
645149 56 92 46 106 167 59 189 121 119 14 81 15 165 136 79 100 42 117 182 118 175
646138 124 3 50 74 134 156 36 143 181 180 96 22 61 97 134 164 24 166 30 10 61 6 33
6479 115 176 84 97 142 152 15 50 165 45 168 135 133 127 93 15 66 94 91 9 32 16 95
64837 29 171 118 68 108 66 63 20 55 186 ^
649396 1 97 10 5 160 132 18 83 73 159 141 55 120 31 131 141 102 138 3 52 9 148 189
65056 99 165 146 2 140 64 157 100 121 113 102 24 21 24 123 16 10 139 152 19 109
651146 116 122 92 43 7 75 62 49 170 58 26 117 125 45 147 5 125 136 155 118 2 26 50
652161 21 182 127 153 45 68 19 121 22 94 104 144 166 35 166 23 176 75 188 53 114
65393 148 177 66 151 16 156 121 180 98 48 179 95 63 107 97 45 1 23 97 57 23 132 53
65479 97 124 19 188 18 118 37 22 106 94 60 122 25 47 176 110 184 109 79 164 120 43
655153 89 90 128 109 12 168 64 110 82 117 192 41 171 163 164 76 53 12 101 68 54
656117 78 59 143 84 32 122 104 65 148 31 52 123 130 24 135 38 151 95 142 93 101
657159 62 37 148 110 70 127 51 85 181 89 11 142 105 91 107 50 27 29 102 36 43 165
65879 6 84 99 118 128 30 26 3 143 17 68 66 139 187 15 165 158 24 88 20 179 174 81
65979 18 106 47 74 150 104 179 162 59 131 62 116 166 82 184 188 97 136 41 136 167
660140 143 175 72 42 174 148 75 74 71 86 14 16 191 117 11 63 119 119 186 182 13
661171 49 182 80 167 73 147 119 107 164 41 57 181 168 29 114 26 184 121 101 80 76
66265 34 49 24 44 191 38 25 91 5 58 140 99 153 124 54 184 42 83 108 155 4 20 191 3
66329 35 40 180 7 40 66 25 12 180 86 26 38 139 73 1 137 79 85 102 71 39 28 44 77
66456 190 12 66 72 30 152 7 87 84 190 126 48 100 77 91 186 36 31 143 163 50 94 25
665126 1 114 105 170 93 22 173 90 116 87 96 19 74 4 122 183 83 120 177 113 169 181
66677 182 1 149 186 ^
667384 1 25 56 85 107 177 6 186 138 184 28 61 184 191 175 107 6 29 81 114 12 156 2
668137 86 189 73 64 127 129 44 167 11 98 107 169 143 26 146 61 130 88 120 139 55 3
669189 119 87 22 105 67 78 147 51 2 161 109 84 49 87 38 48 192 62 25 64 143 72 169
670151 106 111 53 58 8 93 8 85 123 120 131 170 38 2 169 167 49 41 37 153 21 39 92
671145 190 155 177 185 48 13 5 150 48 21 85 115 40 166 178 88 104 1 125 19 116 106
672141 111 23 43 101 58 187 150 78 101 50 107 185 86 151 130 134 143 34 31 26 122
67338 40 112 97 33 136 50 99 127 121 159 7 19 170 187 1 79 191 26 130 118 5 104 47
674126 109 92 129 52 30 193 90 35 67 116 90 3 181 39 122 30 155 147 105 83 21 77
67535 75 174 55 190 131 154 95 72 185 94 36 95 126 71 149 4 68 152 180 144 146 7
67649 33 152 188 29 111 194 172 148 125 35 59 36 125 11 36 141 149 183 125 27 1 71
677133 61 138 168 85 131 5 96 162 161 117 142 14 79 183 141 165 126 55 11 74 84 79
678167 3 40 142 177 193 128 173 192 100 163 16 127 145 182 97 17 193 120 115 32
679108 18 96 154 103 152 150 86 181 15 99 135 179 124 194 164 68 160 43 109 138
680152 142 6 21 23 149 20 11 82 164 44 159 148 133 115 24 28 53 104 9 183 179 108
68156 39 84 87 30 163 32 70 75 166 170 8 139 9 175 99 143 64 89 186 114 183 133 85
682161 63 61 154 111 15 115 78 109 108 72 177 14 71 103 176 173 176 157 38 10 54
683132 41 186 130 126 63 69 39 76 7 65 171 82 172 102 124 140 83 113 ^
684396 1 189 70 83 29 132 67 115 145 151 170 181 14 192 2 187 40 5 33 160 48 183
68591 132 83 112 177 62 189 153 128 91 49 38 50 55 24 8 8 51 36 13 175 28 36 56
686160 12 107 168 25 104 157 156 139 165 14 30 192 164 195 56 41 180 159 28 79 41
687144 167 51 115 188 136 154 145 65 2 22 93 83 191 147 23 110 57 137 131 66 138
68826 78 146 125 159 150 34 177 22 129 68 168 111 74 118 77 50 174 54 47 87 140 20
689178 158 133 60 33 45 93 47 8 170 59 52 56 124 20 16 150 117 24 84 46 106 151 51
690158 173 113 111 196 73 15 133 136 71 100 10 85 182 110 143 114 92 185 42 42 118
691156 20 135 173 156 96 180 37 73 134 156 182 150 196 192 45 172 17 167 91 168 68
69289 134 120 190 173 34 141 37 152 111 117 103 61 7 34 62 67 191 190 8 87 21 195
693139 86 44 76 66 55 186 23 31 87 183 5 155 122 191 68 53 149 136 35 115 26 121
694131 102 123 3 42 197 133 179 56 84 165 136 190 130 49 157 80 101 103 97 197 11
69519 118 1 5 119 137 9 104 193 141 116 122 72 38 7 70 47 44 155 43 16 107 125 40
696127 193 105 131 145 108 185 6 50 141 1 167 127 153 45 53 192 121 12 79 84 129
697151 15 166 196 156 60 188 53 109 83 148 162 46 146 6 136 111 160 88 38 169 85
69863 87 97 35 194 3 82 52 13 132 43 59 92 109 4 178 3 118 37 195 96 94 60 112 15
69947 166 110 179 99 69 149 100 43 138 69 70 123 89 12 158 54 90 72 117 182 31 166
700153 164 76 33 2 101 63 44 112 58 39 143 74 32 107 89 55 143 31 47 123 125 4 135
70118 141 80 137 88 81 154 187 ^
702406 0 23 134 103 49 99 44 64 160 68 190 114 105 91 86 22 27 15 74 8 22 151 79
703199 84 85 90 128 9 5 175 129 17 40 59 125 187 194 144 151 3 60 6 158 153 67 58
70418 99 19 53 129 90 179 134 52 124 55 95 138 82 170 167 69 122 13 108 160 119
705115 161 51 14 167 120 47 60 57 86 16 184 96 197 42 98 112 165 154 199 157 21
706168 52 146 66 126 119 93 150 20 36 153 140 194 93 26 156 114 80 80 55 44 13 35
70724 44 191 24 190 63 177 44 140 99 146 117 54 163 42 76 101 134 176 185 177 168
7081 21 19 180 193 12 52 197 191 173 65 19 31 118 59 1 123 72 71 88 64 11 193 37
70963 28 169 184 45 72 195 152 186 87 56 176 112 41 93 77 84 158 29 3 136 142 36
71080 4 119 166 86 98 163 93 1 145 83 102 66 75 191 46 4 94 155 55 120 149 113 148
711181 49 175 180 142 87 5 51 65 92 167 196 186 138 184 23 61 164 171 175 107 6 9
71281 114 7 141 177 117 76 174 73 54 112 114 29 152 11 98 87 154 123 21 146 41 115
71388 115 139 40 183 189 109 67 7 90 52 73 127 51 192 156 89 69 49 77 33 33 182 57
71410 64 138 57 159 136 91 111 33 58 193 88 188 75 118 110 126 170 18 197 169 162
71534 41 17 138 6 34 92 145 185 155 157 170 43 8 140 48 21 70 105 40 161 178 78 89
716196 110 199 106 96 121 106 23 185 28 96 48 167 145 58 91 35 97 180 66 151 130
717124 128 34 16 6 107 28 20 112 92 18 121 30 84 107 101 159 187 19 155 182 181 74
718186 11 120 98 185 104 32 126 94 82 119 42 25 173 90 30 62 96 70 178 176 39 102
71915 150 147 100 78 16 57 35 75 169 35 170 116 144 75 146 ^
720409 1 185 70 12 95 110 71 133 183 52 136 148 144 114 186 17 25 144 164 5 79 178
721172 124 117 19 43 20 93 174 36 125 117 151 109 3 164 55 101 37 122 152 77 131
722168 88 162 161 93 142 14 63 167 141 149 94 39 190 50 68 47 135 198 16 110 153
723177 104 173 192 68 147 179 119 137 166 73 180 169 88 91 24 76 10 80 146 79 128
724150 62 149 194 83 111 171 124 170 156 60 152 27 109 106 120 134 201 184 202 149
72512 198 66 132 12 127 132 133 83 8 12 45 88 9 183 155 92 24 23 76 63 14 163 8 62
72667 150 162 8 115 1 167 91 127 32 89 162 90 159 125 85 129 47 53 154 95 7 115 54
727101 108 56 169 6 47 103 176 157 160 125 14 10 30 124 17 178 122 102 55 69 15 60
728202 49 171 74 148 94 92 124 67 200 184 70 83 29 127 67 100 140 131 165 176 4
729182 2 167 20 193 33 160 43 173 71 112 68 97 157 57 169 138 113 86 44 38 40 55
73019 196 201 31 21 8 165 23 26 41 155 195 183 102 158 25 94 142 146 129 150 9 30
731177 154 195 51 36 175 139 28 59 31 124 167 41 105 173 121 134 130 65 185 17 78
73278 181 137 13 95 57 137 116 51 118 16 78 131 115 154 145 29 177 22 129 68 168
73391 74 98 72 30 174 39 37 72 130 15 163 158 128 50 18 25 73 27 191 150 59 52 36
734104 20 11 130 97 4 79 46 106 141 46 138 163 108 106 191 68 15 113 136 66 100
735193 65 182 105 123 99 72 180 37 22 108 156 10 130 168 141 96 160 22 58 134 151
736162 140 181 187 35 157 7 147 76 163 58 84 129 100 190 153 24 126 32 142 96 107
73788 41 2 14 42 52 186 170 3 82 11 180 119 66 29 56 66 50 171 3 11 77 163 5 150
738112 128 ^
739413 1 47 25 135 129 7 108 19 107 117 102 102 3 28 190 112 165 56 63 165 122 183
740116 28 157 52 73 89 90 169 202 12 111 185 203 91 116 200 97 193 134 116 122 44
74131 7 63 26 37 134 22 2 93 125 33 99 186 77 124 131 94 171 183 50 113 178 146
742127 153 45 32 164 121 203 58 56 108 130 192 166 168 128 39 188 53 102 69 148
743141 18 139 197 108 97 132 74 24 155 71 63 59 97 21 194 180 61 45 204 132 29 31
74485 88 188 164 187 118 37 167 82 94 60 98 1 47 152 110 172 85 55 128 72 43 117
74541 42 116 61 12 144 40 62 58 117 168 17 159 139 164 76 5 193 101 56 30 105 30
74611 143 60 32 86 68 41 136 31 40 123 118 181 135 195 127 59 130 81 53 147 62 13
747124 98 34 79 39 49 145 53 180 94 105 91 71 2 27 5 54 193 7 141 79 199 84 75 70
748128 199 195 160 119 17 20 54 115 187 184 129 146 193 40 201 143 138 57 43 18 94
749204 38 114 80 179 114 47 119 50 80 118 82 160 152 49 112 198 88 155 104 95 151
75036 199 162 100 27 50 47 86 195 16 179 81 192 27 83 107 150 134 194 147 1 158 32
751131 61 111 119 83 140 5 21 133 120 174 78 26 136 109 65 80 40 29 203 25 24 44
752191 14 170 43 162 34 140 99 141 112 54 148 42 71 96 119 161 165 167 148 186 11
7534 180 188 197 42 182 181 168 50 14 26 103 49 1 113 67 61 78 59 196 173 32 53 8
754154 169 30 72 175 152 176 87 36 166 102 36 88 77 79 138 24 188 131 127 26 70
755194 114 146 66 93 158 93 191 125 78 92 51 60 176 26 4 74 135 35 120 129 113 133
756181 29 170 170 137 77 190 46 45 77 157 191 186 138 184 18 61 144 151 175 107 6
757194 81 114 2 126 110 ^
758427 1 85 60 150 73 38 88 90 5 128 11 98 55 130 91 13 146 9 91 88 107 139 16 159
759189 93 35 191 66 28 65 95 51 184 148 57 45 49 61 25 9 166 49 194 64 130 33 143
760112 67 111 1 58 177 80 164 59 110 94 118 170 194 197 169 154 10 41 193 114 190
76126 92 145 177 155 125 146 35 200 124 48 21 46 89 40 153 178 62 65 196 86 175 90
76280 89 98 23 169 4 88 32 135 137 26 75 11 81 172 34 151 130 108 104 34 200 182
76383 12 196 112 84 202 97 206 60 75 69 159 163 19 131 174 157 66 178 195 104 66
764161 104 8 126 70 66 103 26 17 141 90 22 54 64 38 146 168 39 70 199 142 147 92
76570 8 25 35 75 161 3 138 92 128 43 59 185 55 205 95 100 71 123 173 42 126 128
766144 94 176 205 20 139 149 198 59 168 172 109 112 9 33 10 73 154 36 115 97 131
76799 196 144 45 81 22 112 142 72 131 148 83 162 161 78 142 14 53 157 141 139 74
76829 180 35 58 27 115 198 1 90 138 167 89 173 192 48 137 159 114 132 156 58 160
769154 68 76 19 56 5 70 141 64 113 150 47 129 184 73 96 166 124 155 151 55 147 17
770109 86 100 129 201 164 192 149 7 193 56 112 200 107 122 133 63 206 2 40 78 9
771183 140 82 4 13 71 48 4 163 201 57 62 140 157 8 100 204 162 86 117 12 89 147 75
772144 120 85 109 37 48 154 85 2 115 39 96 108 46 164 1 32 103 176 147 150 105 207
77310 15 119 2 173 117 87 50 69 50 202 39 171 69 133 89 72 114 57 195 179 70 83 29
774122 67 85 135 111 160 171 202 172 2 147 183 33 160 38 163 51 92 53 82 137 52
775149 123 98 81 39 38 30 55 14 186 196 11 6 3 155 18 16 26 150 180 168 97 148 25
77684 127 136 119 135 4 30 162 144 195 46 31 170 119 28 190 ^
777443 1 17 96 167 27 91 152 100 106 109 65 164 10 57 71 167 123 209 74 57 137 95
77830 90 2 78 110 101 147 138 22 177 22 129 68 168 63 74 70 65 2 174 18 23 51 116
7798 142 158 121 36 207 207 45 209 170 122 59 52 8 76 20 4 102 69 186 72 46 106
780127 39 110 149 101 99 184 61 15 85 136 59 100 172 37 182 98 95 78 44 173 30 204
78194 156 206 123 161 120 96 132 1 37 134 144 134 126 160 180 21 136 203 119 55
782156 44 77 122 72 190 125 10 105 25 128 75 93 67 13 205 196 14 31 179 142 206 75
783207 159 91 38 8 28 66 43 150 185 193 63 135 5 143 98 143 32 5 125 124 197 103
78414 97 107 102 87 3 18 185 97 155 56 48 165 112 178 106 13 157 32 53 79 85 149
785197 7 106 175 203 71 101 195 92 193 129 116 122 24 26 7 58 11 32 119 7 202 83
786125 28 79 181 57 119 121 84 161 168 50 93 163 131 127 153 45 17 144 121 198 43
78736 93 115 177 166 148 108 24 188 53 97 59 148 126 208 134 192 88 87 112 64 14
788145 61 63 39 97 11 194 165 46 40 199 132 19 11 80 73 178 154 177 118 37 147 72
78994 60 88 201 47 142 110 167 75 45 113 52 43 102 21 22 111 41 12 134 30 42 48
790117 158 7 154 129 164 76 195 188 101 51 20 100 10 201 143 50 32 71 53 31 131 31
79135 123 113 166 135 180 117 44 125 76 33 142 62 3 114 93 19 59 34 34 130 38 170
79274 105 91 56 192 27 205 34 178 202 131 79 199 84 65 50 128 189 185 145 109 17
79349 105 187 174 114 141 183 20 196 128 123 47 28 18 89 189 23 99 70 179 94 42
794114 45 65 98 82 150 137 29 102 183 68 150 89 75 141 21 184 157 80 7 40 37 86
795190 16 174 66 187 12 68 102 135 114 189 137 191 148 12 116 56 96 119 73 130 200
7966 113 100 154 63 26 116 104 50 80 25 14 193 83 ^
797436 1 24 44 191 211 138 11 138 18 140 99 133 104 54 124 42 63 88 95 137 133 151
798116 162 208 193 180 180 173 26 158 165 160 26 6 18 79 33 1 97 59 45 62 51 172
799141 24 37 189 130 145 6 72 143 152 160 87 4 150 86 28 80 77 71 106 16 164 123
800103 10 54 178 106 114 34 85 150 93 175 93 70 76 27 36 152 207 4 42 103 3 120 97
801113 109 181 210 162 154 129 61 166 38 13 53 141 183 186 138 184 10 61 112 119
802175 107 6 170 81 114 207 102 125 65 50 135 73 28 73 75 203 113 11 98 35 115 71
8038 146 202 76 88 102 139 1 144 189 83 15 181 51 13 60 75 51 179 143 37 30 49 51
80420 207 156 44 184 64 125 18 133 97 52 111 194 58 167 75 149 49 105 84 113 170
805179 197 169 149 208 41 178 99 180 21 92 145 172 155 105 131 30 208 200 114 48
80621 31 79 40 148 178 52 50 196 71 160 80 70 69 93 23 159 202 83 22 115 132 6 65
807209 71 167 14 151 130 98 89 34 190 167 68 2 181 112 79 192 82 191 45 55 49 159
808148 19 116 169 142 61 173 185 94 46 146 104 206 126 55 56 93 16 12 121 90 17 49
80944 18 126 163 39 50 189 137 147 87 65 3 5 35 75 156 196 118 77 118 23 54 185 40
810195 95 90 71 113 163 32 116 108 144 74 166 190 15 134 134 188 39 158 172 94 107
811212 23 53 134 36 105 77 111 89 186 124 35 61 7 102 132 67 131 128 78 162 161 63
812142 14 43 147 141 129 54 19 170 20 48 7 95 198 199 70 123 157 74 173 192 28 127
813139 109 127 146 43 140 139 48 61 14 36 60 136 49 98 150 32 109 174 63 81 161
814124 140 146 50 142 7 109 66 80 124 201 144 182 149 2 188 46 92 185 87 112 133
81543 201 205 35 68 9 183 125 72 197 3 66 33 207 163 191 52 57 130 152 8 85 204
816157 81 107 205 187 ^
817462 1 126 54 123 113 85 81 23 41 154 71 210 115 18 89 108 32 157 209 11 103 176
818133 136 77 193 10 209 112 196 166 110 66 43 69 194 36 202 25 171 62 112 82 44
819100 43 188 172 70 83 29 115 67 64 128 83 153 164 195 158 2 119 187 169 33 160
82031 149 23 64 32 61 109 45 121 102 77 74 32 38 16 55 7 172 189 198 200 211 141
82111 2 5 143 159 147 90 134 25 70 106 122 105 114 212 30 141 130 195 39 24 163 91
82228 11 7 76 167 17 81 137 85 86 94 65 149 5 42 66 157 113 204 59 57 137 80 15 70
823207 78 95 91 142 133 17 177 22 129 68 168 43 74 50 60 197 174 3 13 36 106 3 127
824158 116 26 197 192 25 194 155 102 59 52 203 56 20 214 82 49 171 67 46 106 117
82534 90 139 96 94 179 56 15 65 136 54 100 157 17 182 93 75 63 24 168 25 189 84
826156 201 118 156 105 96 112 201 22 134 139 114 116 145 175 11 121 198 99 40 151
82734 72 117 52 190 105 90 20 118 60 83 52 208 205 181 209 16 174 122 206 70 202
828144 71 18 208 8 66 38 135 170 178 53 115 5 138 88 123 17 200 115 119 182 98 9
82987 97 102 72 3 8 180 82 145 56 33 165 102 173 96 213 157 12 33 69 80 129 192 2
830101 165 203 51 86 190 87 193 124 116 122 4 21 7 53 211 27 104 207 197 73 125 23
83159 176 37 114 111 74 151 153 50 73 148 116 127 153 45 2 124 121 193 28 16 78
832100 162 166 128 88 9 188 53 92 49 148 111 193 129 187 68 77 92 54 4 135 51 63
83319 97 1 194 150 31 35 194 132 9 206 75 58 168 144 167 118 37 127 62 94 60 78
834196 47 132 110 162 65 35 98 32 43 87 1 2 106 21 12 124 20 22 38 117 148 212 149
835119 164 76 180 183 101 46 10 95 205 186 143 40 32 56 38 21 126 31 30 123 108
836151 135 165 107 29 120 71 13 137 62 208 104 88 4 39 29 19 115 23 160 54 105 91
83741 177 27 200 14 163 124 ^
838453 0 115 79 199 84 49 18 128 173 169 121 93 17 186 41 89 187 158 90 133 167
839206 188 104 99 31 4 18 81 165 217 75 54 179 62 34 106 37 41 66 82 134 113 215
84086 159 36 142 65 43 125 215 160 149 48 193 24 21 86 182 16 166 42 179 206 44 94
841111 82 181 121 167 132 198 92 48 72 119 57 114 184 200 81 68 122 39 26 84 96 26
84280 1 208 177 217 24 44 191 206 118 209 123 8 140 99 128 99 54 109 42 58 83 80
843122 113 141 96 147 203 183 180 175 158 16 143 155 155 11 1 13 64 23 1 87 54 35
84452 46 157 121 19 27 174 115 130 209 72 123 152 150 87 202 140 76 23 75 77 66 86
84511 149 118 88 44 168 101 94 14 80 145 93 165 73 65 66 12 21 137 192 4 22 83 201
846120 77 113 94 181 195 157 144 124 51 151 33 211 38 131 178 186 138 184 5 61 92
84799 175 107 6 155 81 114 207 87 105 45 40 120 73 18 58 60 193 98 11 98 15 100 51
8483 146 187 61 88 97 139 204 129 189 73 213 171 36 216 55 55 51 174 138 17 15 49
84941 15 197 146 39 174 64 120 3 123 82 37 111 179 58 157 70 134 39 100 74 108 170
850164 197 169 144 198 41 163 84 170 16 92 145 167 155 85 116 25 208 200 104 48 21
85116 69 40 143 178 42 35 196 56 145 70 60 49 88 23 149 192 78 12 95 127 204 55
852199 61 162 212 151 130 88 74 34 180 152 53 210 166 112 74 182 67 176 30 35 29
853159 133 19 101 164 127 56 168 175 84 26 131 104 196 126 40 46 83 6 7 101 90 12
85444 24 216 106 158 39 30 179 132 147 82 60 216 203 35 75 151 181 98 62 108 3 49
855185 25 185 95 80 71 103 153 22 106 88 144 54 156 175 10 129 119 178 19 148 172
85679 102 207 13 208 33 114 36 95 57 91 79 176 104 25 41 210 92 122 62 131 108 73
857162 161 48 142 14 33 137 141 119 34 9 160 5 38 205 75 198 189 50 108 112 ^
858454 1 53 173 192 113 111 102 120 132 22 112 118 20 40 7 8 213 46 129 28 77 150
85911 81 160 49 60 154 124 119 139 43 135 213 109 38 52 117 201 116 168 149 215
860181 32 64 164 59 98 133 15 194 198 28 54 9 183 104 58 176 209 59 12 200 163 177
86145 50 116 145 8 64 204 150 74 93 184 89 111 39 108 108 85 61 13 36 154 61 210
862115 3 84 108 22 152 209 216 103 176 123 126 57 183 10 199 107 186 161 105 51 38
86369 184 26 202 15 171 57 97 77 24 90 33 183 167 70 83 29 110 67 49 123 63 148
864159 190 148 2 99 172 159 33 160 26 139 3 44 17 46 89 40 101 87 62 69 27 38 6 55
8652 162 184 183 190 211 131 6 212 210 138 144 132 85 124 25 60 91 112 95 99 212
86630 126 120 195 34 19 158 71 28 211 217 56 167 7 71 122 70 66 79 65 134 27 61
867147 103 199 44 57 137 65 50 202 78 80 81 137 128 12 177 22 129 68 168 23 74 30
86855 182 174 208 3 21 96 218 112 158 111 16 187 177 5 179 140 82 59 52 188 36 20
869214 62 29 156 62 46 106 107 29 70 129 91 89 174 51 15 45 136 49 100 142 217 182
87088 55 48 4 163 20 174 74 156 196 113 151 90 96 92 191 7 134 134 94 106 130 170
8711 106 193 79 25 146 24 67 112 32 190 85 210 75 15 108 45 73 37 193 205 166 194
8721 169 102 206 65 197 129 51 218 198 208 66 33 120 155 163 43 95 5 133 78 103 2
873185 105 114 167 93 4 77 87 102 57 3 218 175 67 135 56 18 165 92 168 86 203 157
874212 13 59 75 109 187 217 96 155 203 31 71 185 82 193 119 116 122 204 16 7 48
875201 22 89 197 192 63 125 18 39 171 17 109 101 64 141 138 50 53 133 101 127 153
87645 207 104 121 188 13 216 63 85 147 166 108 68 214 188 53 87 39 148 96 178 124
877182 48 67 72 44 214 125 41 63 219 97 211 194 135 16 30 189 132 219 191 70 43
878158 181 ^
879475 0 153 118 37 99 48 94 60 64 189 47 118 110 155 51 21 77 4 43 66 195 196 99
880215 12 110 6 216 24 117 134 205 142 105 164 76 159 176 101 39 218 88 184 165
881143 26 32 35 17 7 119 31 23 123 101 130 135 144 93 8 113 64 207 130 62 201 90
88281 205 11 22 220 94 2 146 26 105 91 20 156 27 193 208 142 178 107 79 199 84 41
8832 128 165 161 109 85 17 174 37 81 187 150 78 129 159 194 184 92 87 23 214 18 77
884153 209 63 46 179 46 30 102 33 29 50 82 126 101 203 78 147 20 138 53 27 117 207
885148 145 32 181 16 13 86 178 16 162 30 175 198 32 90 99 66 177 113 155 124 186
88680 44 60 119 49 106 176 192 65 52 106 27 26 68 92 14 80 211 200 169 213 24 44
887191 202 102 197 111 140 99 124 95 54 97 42 54 79 68 110 97 133 80 135 199 175
888180 171 146 8 131 147 151 221 219 9 52 15 1 79 50 27 44 42 145 105 15 19 162
889103 118 201 72 107 152 142 87 190 132 68 19 71 77 62 70 7 137 114 76 214 36 160
89097 78 220 76 141 93 157 57 61 58 9 125 180 4 6 67 189 120 61 113 82 181 183 153
891136 120 43 139 29 199 26 123 174 186 138 184 1 61 76 83 175 107 6 143 81 114
892207 75 89 29 32 108 73 10 46 48 185 86 11 98 221 88 35 221 146 175 49 88 93 139
893196 117 189 65 201 163 24 208 51 39 51 170 134 1 3 49 33 11 189 138 35 166 64
894116 213 115 70 25 111 167 58 149 66 122 31 96 66 104 170 152 197 169 140 190 41
895151 72 162 12 92 145 163 155 69 104 21 208 200 96 48 21 4 61 40 139 178 34 23
896196 44 133 62 52 33 84 23 141 184 74 4 79 123 192 47 191 53 158 200 151 130 80
89762 34 172 140 41 206 154 112 70 174 55 164 18 19 13 159 121 19 89 160 115 52
898164 167 76 10 119 104 188 126 28 38 75 220 3 85 90 8 40 8 204 90 154 39 14 171
899128 147 78 56 216 191 35 75 147 169 82 50 100 209 45 185 13 177 95 150 ^
900471 0 71 89 139 8 92 60 144 26 142 154 3 122 98 164 216 134 172 58 95 200 224
901201 5 86 36 81 29 63 65 162 76 11 13 196 78 108 55 131 80 66 162 161 27 142 14
90219 123 141 105 6 220 146 209 24 184 47 198 175 22 87 133 38 173 192 205 103 91
90397 115 122 7 92 103 25 2 213 213 36 124 13 62 150 221 61 150 39 45 149 124 104
904134 38 130 208 109 18 32 112 201 96 158 149 215 176 22 44 149 39 88 133 220 189
905193 23 44 9 183 89 48 161 204 54 222 195 163 167 40 45 106 140 8 49 204 145 69
90683 169 89 96 24 93 103 85 41 3 31 154 51 210 115 213 79 108 12 147 209 206 103
907176 113 116 37 173 10 189 102 176 156 100 36 33 69 174 16 202 5 171 52 82 72 4
90880 23 178 162 70 83 29 105 67 34 118 43 143 154 185 138 2 79 157 149 33 160 21
909129 208 24 2 31 69 35 81 72 47 64 22 38 221 55 222 152 179 168 180 211 121 1
910207 200 133 129 117 80 114 25 50 76 102 85 84 212 30 111 110 195 29 14 153 51
91128 196 212 36 167 222 61 107 55 46 64 65 119 220 12 56 137 93 194 29 57 137 50
912210 30 197 78 65 71 132 123 7 177 22 129 68 168 3 74 10 50 167 174 198 218 6 86
913218 97 158 106 6 177 162 210 164 125 62 59 52 173 16 20 214 42 9 141 57 46 106
91497 24 50 119 86 84 169 46 15 25 136 44 100 127 202 182 83 35 33 209 158 15 159
91564 156 191 108 146 75 96 72 181 217 134 129 74 96 115 165 216 91 188 59 10 141
91614 62 107 12 190 65 205 60 10 98 30 63 22 178 205 151 179 211 164 82 206 60 192
917114 31 203 188 193 66 28 105 140 148 33 75 5 128 68 83 212 170 95 109 152 88
918224 67 77 102 42 3 213 170 52 125 56 3 165 82 163 76 193 157 197 218 49 70 89
919182 217 91 145 203 11 56 180 77 193 114 116 122 189 11 7 43 191 17 74 187 187
92053 125 13 19 166 222 104 91 54 131 123 50 33 118 86 127 167 ^
921480 1 45 193 76 121 181 219 195 42 64 126 166 80 40 200 188 53 80 25 148 75 157
922117 175 20 53 44 30 207 111 27 63 198 97 204 194 114 222 23 182 132 212 170 63
92322 144 120 143 118 37 79 38 94 60 54 184 47 108 110 150 41 11 62 211 43 51 180
924181 94 200 12 100 223 201 14 117 124 200 137 95 164 76 144 171 101 34 213 83
925169 150 143 16 32 20 2 224 114 31 18 123 96 115 135 129 83 220 108 59 192 125
92662 196 80 76 195 218 17 210 79 214 136 6 105 91 5 141 27 188 193 127 168 97 79
927199 84 31 209 128 155 151 94 75 17 159 32 71 187 140 63 124 149 179 179 77 72
92813 204 18 72 138 199 48 36 179 26 25 97 28 14 30 82 116 86 188 68 132 133 38 7
929107 197 133 140 12 166 6 3 86 173 16 157 15 170 188 17 85 84 46 172 103 140 114
930171 65 39 45 119 39 96 166 182 45 32 86 12 26 48 87 226 80 201 190 159 208 24
93144 191 197 82 182 96 217 140 99 119 90 54 82 42 49 74 53 95 77 123 60 120 194
932165 180 166 131 225 116 137 146 211 219 4 37 5 1 69 45 17 34 37 130 85 10 9 147
93388 103 191 72 87 152 132 87 175 122 58 14 66 77 57 50 2 122 109 61 209 26 150
93492 58 205 71 136 93 147 37 56 48 212 221 110 165 4 213 47 174 120 41 113 67 181
935168 148 126 115 33 124 24 184 11 113 169 186 138 184 223 61 56 63 175 107 6 128
93681 114 207 60 69 9 22 93 73 31 33 175 71 11 98 206 73 15 221 146 160 34 88 88
937139 186 102 189 55 186 153 9 198 46 19 51 165 129 208 215 49 23 6 179 128 30
938156 64 111 203 105 55 10 111 152 58 139 61 107 21 91 56 99 170 137 197 169 135
939180 41 136 57 152 7 92 145 158 155 49 89 16 208 200 86 48 21 216 51 40 134 178
94024 8 196 29 118 52 42 13 79 23 131 174 69 221 59 118 177 37 181 43 153 185 151
941130 70 47 34 162 125 26 201 139 112 65 164 40 149 3 226 220 159 106 19 74 155
942100 47 159 157 193 ^
943471 0 211 98 104 174 126 7 24 61 213 225 57 90 1 33 209 183 62 147 39 215 157
944121 147 71 49 216 170 35 75 140 148 54 29 86 188 38 185 221 163 95 58 71 81 131
94584 44 144 10 134 142 228 118 86 156 204 126 172 46 91 196 220 197 218 70 36 73
94613 47 57 154 60 3 226 188 70 100 51 131 64 62 162 161 15 142 14 11 115 141 97
947219 216 138 201 16 172 31 198 167 6 75 125 26 173 192 193 95 75 93 111 114 224
94876 91 213 13 227 201 213 28 120 1 50 150 213 45 142 31 33 145 124 92 130 34 126
949204 109 2 16 108 201 80 150 149 215 172 14 28 137 23 80 133 208 185 189 19 36 9
950183 77 40 149 200 50 214 191 163 159 36 41 98 136 8 37 204 141 65 75 157 89 84
95112 81 99 85 25 224 27 154 43 210 115 205 75 108 4 143 209 198 103 176 105 108
95221 165 10 181 98 168 152 96 24 29 69 166 8 202 226 171 48 70 68 217 72 15 174
953158 70 83 29 101 67 22 114 27 139 150 181 130 2 63 145 141 33 160 17 121 196 8
954219 19 53 31 65 60 35 60 18 38 217 55 222 144 175 156 172 211 113 226 203 192
955129 117 105 76 106 25 42 64 94 77 72 212 30 99 102 195 25 10 149 35 28 184 208
95620 167 218 53 95 43 30 52 65 107 220 52 129 85 190 17 57 137 38 202 14 193 78
95753 63 128 119 3 177 22 129 68 168 216 74 223 46 155 174 190 214 223 78 218 85
958158 102 227 169 150 198 152 113 46 59 52 161 20 214 26 222 129 53 46 106 89 20
95934 111 82 80 165 42 15 9 136 40 100 115 190 182 79 19 21 197 154 11 147 56 156
960187 104 142 63 96 56 173 209 134 125 58 88 103 161 212 79 184 43 227 137 6 58
961103 225 190 49 201 48 6 90 18 55 10 166 205 139 167 203 160 66 206 56 188 102
96215 191 180 181 66 24 93 128 136 25 59 5 124 60 67 204 158 87 105 140 84 224 59
96369 102 30 3 209 166 40 117 56 220 165 74 159 68 185 157 185 206 41 66 167 ^
964490 1 176 217 85 133 203 218 38 174 71 193 108 116 122 171 5 7 37 179 11 56 175
965181 41 125 7 226 160 204 98 79 42 119 105 50 9 100 68 127 153 45 185 60 121 177
966211 183 30 52 114 166 64 24 192 188 53 76 17 148 63 145 113 171 4 45 28 22 203
967103 19 63 186 97 200 194 102 214 19 178 132 208 158 59 10 136 112 135 118 37 63
96830 94 60 46 180 47 100 110 146 33 3 50 199 43 39 168 169 90 188 12 92 219 189 6
969117 116 196 133 87 164 76 132 167 101 30 209 79 157 138 143 8 32 8 221 220 110
97031 14 123 92 103 135 117 75 212 104 55 180 121 62 192 72 72 187 206 13 202 67
971206 128 221 105 91 224 129 27 184 181 115 160 89 79 199 84 23 197 128 147 143
97282 67 17 147 28 63 187 132 51 120 141 167 175 65 60 5 196 18 68 126 191 36 28
973179 10 21 93 24 2 14 82 108 74 176 60 120 215 129 26 222 99 189 121 136 227 154
974229 226 86 169 16 153 3 166 180 5 81 72 30 168 95 128 106 159 53 35 33 119 31
97588 158 174 29 16 70 26 32 83 218 80 193 182 151 204 24 44 191 193 66 170 84 213
976140 99 115 86 54 70 42 45 70 41 83 61 115 44 108 190 157 180 162 119 221 104
977129 142 203 219 25 228 1 61 41 9 26 33 118 69 6 1 135 76 91 183 72 71 152 124
97887 163 114 50 10 62 77 53 34 229 110 105 49 205 18 142 88 42 193 67 132 93 139
97921 52 40 204 213 98 153 4 201 31 162 120 25 113 55 181 156 144 118 111 25 112
98020 172 230 105 165 186 138 184 223 61 40 47 175 107 6 116 81 114 207 48 53 224
98114 81 73 223 19 21 167 59 11 98 194 61 230 221 146 148 22 88 84 139 178 90 189
98247 174 145 228 190 42 3 51 161 125 196 207 49 15 2 171 120 26 148 64 107 195 97
98343 229 111 140 58 131 57 95 13 87 48 95 170 125 197 169 131 172 41 124 45 144 3
98492 145 154 155 33 77 12 208 200 78 48 21 208 43 40 130 178 16 227 196 17 106 44
98534 228 75 23 123 166 65 217 43 114 165 29 173 35 200 ^
986479 0 167 151 130 58 29 34 150 107 8 195 121 112 59 152 22 131 218 208 202 159
98788 19 56 149 82 41 153 145 54 199 86 104 166 126 228 16 53 209 225 41 90 230 29
988197 171 46 143 39 203 149 117 147 67 45 216 158 35 75 136 136 38 17 78 176 34
989185 213 155 95 50 71 73 123 225 76 28 144 227 126 130 228 114 74 148 192 118
990172 34 87 192 216 193 206 54 36 65 230 31 49 146 44 228 214 180 62 92 47 131 48
99158 162 161 3 142 14 3 107 141 89 207 212 130 193 8 160 15 198 159 223 63 117 14
992173 192 181 87 59 89 107 106 216 60 79 201 1 227 189 213 20 116 222 38 150 205
99329 134 23 21 141 124 80 126 30 122 200 109 219 104 201 64 142 149 215 168 6 12
994125 7 72 133 196 181 185 15 28 9 183 65 32 137 196 46 206 187 163 151 32 37 90
995132 8 25 204 137 61 67 145 89 72 69 95 85 9 220 23 154 35 210 115 197 71 108
996229 139 209 190 103 176 97 100 5 157 10 173 94 160 148 92 12 25 69 158 202 222
997171 44 58 64 205 64 7 170 154 70 83 29 97 67 10 110 11 135 146 177 122 2 47 133
998133 33 160 13 113 184 225 211 7 37 27 49 48 23 56 14 38 213 55 222 136 171 144
999164 211 105 226 199 184 125 105 93 72 98 25 34 52 86 69 60 212 30 87 94 195 21
10006 145 19 28 172 204 4 167 214 45 83 31 14 40 65 95 220 221 48 121 77 186 5 57
1001137 26 194 231 189 78 41 55 124 115 232 177 22 129 68 168 204 74 211 42 143 174
1002182 210 215 70 218 73 158 98 223 161 138 186 140 101 30 59 52 149 217 20 214 10
1003210 117 49 46 106 81 16 18 103 78 76 161 38 15 226 136 36 100 103 178 182 75 3
10049 185 150 7 135 48 156 183 100 138 51 96 40 165 201 134 121 42 80 91 157 208 67
1005180 27 219 133 231 54 99 213 190 33 197 36 2 82 6 47 231 154 205 127 155 195
1006156 50 206 52 184 90 232 179 172 169 66 20 81 116 124 17 43 5 120 52 51 196 146
100779 101 128 80 224 65 ^
1008503 1 55 102 9 3 202 159 19 103 56 206 165 60 152 54 171 157 164 185 27 59 45
1009171 217 80 123 203 203 23 169 66 193 103 116 122 156 7 32 169 6 41 165 176 31
1010125 2 211 155 189 93 69 32 109 90 50 225 85 53 127 153 45 175 40 121 172 201
1011168 15 37 99 166 44 4 182 188 53 71 7 148 48 130 108 166 220 35 8 12 198 93 9
101263 171 97 195 194 87 204 14 173 132 203 143 54 231 126 102 125 118 37 43 20 94
101360 36 175 47 90 110 141 23 229 35 184 43 24 153 154 85 173 12 82 214 174 232
1014117 106 191 128 77 164 76 117 162 101 25 204 74 142 123 143 234 32 229 211 215
1015105 31 9 123 87 88 135 102 65 202 99 50 165 116 62 187 62 67 177 191 8 192 52
1016196 118 206 105 91 214 114 27 179 166 100 150 79 79 199 84 13 182 128 137 133
101767 57 17 132 23 53 187 122 36 115 131 152 170 50 45 231 186 18 63 111 181 21 18
1018179 226 16 88 19 223 230 82 98 59 161 50 105 200 124 11 207 89 179 106 131 212
1019139 224 221 86 164 16 148 224 161 170 226 76 57 10 163 85 113 96 144 38 30 18
1020119 21 78 148 164 9 232 50 221 26 12 78 208 80 183 172 141 199 24 44 191 188 46
1021155 69 208 140 99 110 81 54 55 42 40 65 26 68 41 105 24 93 185 147 180 157 104
1022216 89 119 137 193 219 231 10 223 1 51 36 235 16 28 103 49 1 227 120 61 76 173
102372 51 152 114 87 148 104 40 5 57 77 48 14 229 95 100 34 200 8 132 83 22 178 62
1024127 93 129 1 47 30 194 203 83 138 4 186 11 147 120 5 113 40 181 141 139 108 106
102515 97 15 157 220 95 160 186 138 184 223 61 20 27 175 107 6 101 81 114 207 33 33
1026209 4 66 73 218 4 6 157 44 11 98 179 46 215 221 146 133 7 88 79 139 168 75 189
102737 159 135 218 180 37 219 51 156 120 181 197 49 5 233 161 110 21 138 64 102 185
102887 28 219 111 125 58 121 52 80 3 82 38 90 170 110 197 169 126 162 41 109 30 134
1029234 92 145 149 155 13 62 7 208 200 68 48 21 198 33 40 125 178 6 217 196 2 91 34
103024 213 70 23 113 161 ^
1031470 0 58 210 15 107 144 15 159 21 142 152 151 130 48 14 34 140 92 231 190 106
1032112 54 142 7 116 208 193 187 159 73 19 41 144 67 36 148 135 44 184 71 104 156
1033126 218 6 43 204 225 21 90 230 24 182 156 26 138 39 188 139 112 147 62 40 216
1034143 35 75 131 121 18 2 68 161 29 185 203 145 95 40 71 63 113 220 66 8 144 212
1035116 115 228 109 59 138 177 108 172 19 82 187 211 188 191 34 36 55 215 11 39 136
103624 223 199 170 52 82 42 131 28 53 162 161 226 142 14 231 97 141 79 192 207 120
1037183 236 145 233 198 149 208 48 107 237 173 192 166 77 39 84 102 96 206 40 64
1038186 224 227 174 213 10 111 212 23 150 195 9 124 13 6 136 124 65 121 25 117 195
1039109 204 218 99 201 44 132 149 215 163 234 230 110 225 62 133 181 176 180 10 18
10409 183 50 22 122 191 41 196 182 163 141 27 32 80 127 8 10 204 132 56 57 130 89
104157 223 54 90 85 227 215 18 154 25 210 115 187 66 108 224 134 209 180 103 176 87
104290 223 147 10 163 89 150 143 87 235 20 69 148 228 202 217 171 39 43 59 190 54
1043235 165 149 70 83 29 92 67 233 105 229 130 141 172 112 2 27 118 123 33 160 8
1044103 169 210 201 230 17 22 29 33 8 51 9 38 208 55 222 126 166 129 154 211 95 226
1045194 174 120 90 78 67 88 25 24 37 76 59 45 212 30 72 84 195 16 1 140 237 28 157
1046199 222 167 209 35 68 16 232 25 65 80 220 211 43 111 67 181 228 57 137 11 184
1047216 184 78 26 45 119 110 232 177 22 129 68 168 189 74 196 37 128 174 172 205
1048205 60 218 58 158 93 218 151 123 171 125 86 10 59 52 134 202 20 214 228 195 102
104944 46 106 71 11 236 93 73 71 156 33 15 211 136 31 100 88 163 182 70 221 232 170
1050145 2 120 38 156 178 95 133 36 96 20 155 191 134 116 22 70 76 152 203 52 175 7
1051209 128 226 49 94 198 190 13 192 21 235 72 229 37 221 139 205 112 140 185 151
105230 206 47 179 75 217 101 ^
1053502 0 158 148 66 13 60 95 103 3 15 5 113 38 23 182 125 65 94 107 73 224 37 47
1054102 237 3 198 155 7 95 56 198 165 52 148 46 163 157 152 173 19 55 29 167 217 76
1055115 203 191 11 165 62 193 99 116 122 144 236 7 28 161 2 29 157 172 23 125 238
1056199 151 177 89 61 24 101 78 50 213 73 41 127 153 45 167 24 121 168 193 156 3 25
105787 166 28 228 174 188 53 67 239 148 36 118 104 162 208 27 232 4 194 85 1 63 159
105897 191 194 75 196 10 169 132 199 131 50 223 118 94 117 118 37 27 12 94 60 28
1059171 47 82 110 137 15 225 23 172 43 12 141 142 81 161 12 74 210 162 228 117 98
1060187 124 69 164 76 105 158 101 21 200 70 130 111 143 230 32 221 203 211 101 31 5
1061123 83 76 135 90 57 194 95 46 153 112 62 183 54 63 169 179 4 184 40 188 110 194
1062105 91 206 102 27 175 154 88 142 71 79 199 84 5 170 128 129 125 55 49 17 120 19
106345 187 114 24 111 123 140 166 38 33 227 178 18 59 99 173 9 10 179 214 12 84 15
1064215 218 82 90 47 149 42 93 188 120 239 195 81 171 94 127 200 127 220 217 86 160
106516 144 216 157 162 218 72 45 234 159 77 101 88 132 26 26 6 119 13 70 140 156
1066233 220 34 213 26 236 74 200 80 175 164 133 195 24 44 191 184 30 143 57 204 140
106799 106 77 54 43 42 36 61 14 56 25 97 8 81 181 139 180 153 92 212 77 111 133 185
1068219 231 238 219 1 43 32 231 8 24 91 33 237 223 108 49 64 165 72 35 152 106 87
1069136 96 32 1 53 77 44 238 229 83 96 22 196 124 79 6 166 58 123 93 121 225 43 22
1070186 195 71 126 4 174 235 135 120 229 113 28 181 129 135 100 102 7 85 11 145 212
107187 156 186 138 184 223 61 4 11 175 107 6 89 81 114 207 21 17 197 236 54 73 214
1072232 234 149 32 11 98 167 34 203 221 146 121 235 88 75 139 160 63 189 29 147 127
1073210 172 33 207 51 152 116 169 189 49 237 233 153 102 17 130 64 98 177 79 16 211
1074111 113 58 113 48 68 235 78 30 86 170 98 197 169 122 154 41 97 18 126 234 92
1075145 145 155 237 50 209 ^
1076481 1 208 200 56 48 21 186 21 40 119 178 236 205 196 226 73 22 12 195 64 23 101
1077144 54 206 241 103 132 7 151 13 138 140 151 130 40 2 34 132 80 223 186 94 112
107850 134 237 104 200 181 175 159 61 19 29 140 55 32 144 127 36 172 59 104 148 126
1079210 240 35 200 225 5 90 230 20 170 144 10 134 39 176 131 108 147 58 36 216 131
108035 75 127 109 2 232 60 149 25 185 195 137 95 32 71 55 105 216 58 234 144 200
1081108 103 228 105 47 130 165 100 172 7 78 183 207 184 179 18 36 47 203 237 31 128
10828 219 187 162 44 74 38 131 12 49 162 161 218 142 14 227 89 141 71 180 203 112
1083175 232 133 221 198 141 196 36 99 229 173 192 154 69 23 80 98 88 198 24 52 174
1084216 227 162 213 2 107 204 11 150 187 235 116 5 236 132 124 53 117 21 113 191
1085109 192 206 95 201 28 124 149 215 159 230 218 98 213 54 133 169 172 176 6 10 9
1086183 38 14 110 187 37 188 178 163 133 23 28 72 123 8 240 204 128 52 49 118 89 45
1087215 42 86 85 215 211 14 154 17 210 115 179 62 108 220 130 209 172 103 176 79 82
1088211 139 10 155 85 142 139 83 227 16 69 140 224 202 213 171 35 31 55 178 46 231
1089161 145 70 83 29 88 67 225 101 217 126 137 168 104 2 11 106 115 33 160 4 95 157
1090198 193 222 1 18 13 21 238 47 5 38 204 55 222 118 162 117 146 211 87 226 190
1091166 116 78 66 63 80 25 16 25 68 51 33 212 30 60 76 195 12 239 136 225 28 145
1092195 210 167 205 27 56 4 220 13 65 68 220 203 39 103 59 177 220 57 137 241 176
1093204 180 78 14 37 115 106 232 177 22 129 68 168 177 74 184 33 116 174 164 201
1094197 52 218 46 158 89 214 143 111 159 113 74 236 59 52 122 190 20 214 216 183 90
109540 46 106 63 7 224 85 69 67 152 29 15 199 136 27 100 76 151 182 66 209 224 158
1096141 240 108 30 156 174 91 129 24 96 4 147 183 134 112 6 62 64 148 199 40 171
1097233 201 124 222 45 90 186 190 239 188 9 235 64 221 29 213 127 178 ^
1098508 1 94 122 173 145 6 206 41 173 57 199 146 150 136 66 9 48 83 91 239 243 5
1099109 30 7 174 113 57 90 95 69 224 29 39 102 229 3 194 151 239 87 56 190 165 44
1100144 38 155 157 140 161 11 51 13 163 217 72 107 203 179 243 161 58 193 95 116
1101122 132 236 7 24 153 242 17 149 168 15 125 238 187 147 165 85 53 16 93 66 50
1102201 61 29 127 153 45 159 8 121 164 185 144 235 13 75 166 12 216 166 188 53 63
1103235 148 24 106 100 158 196 19 220 240 190 77 237 63 147 97 187 194 63 188 6 165
1104132 195 119 46 215 110 86 109 118 37 11 4 94 60 20 167 47 74 110 133 7 221 11
1105160 43 129 130 77 149 12 66 206 150 224 117 90 183 120 61 164 76 93 154 101 17
1106196 66 118 99 143 226 32 213 195 207 97 31 1 123 79 64 135 78 49 186 91 42 141
1107108 62 179 46 59 161 167 176 28 180 102 182 105 91 198 90 27 171 142 76 134 63
110879 199 84 241 158 128 121 117 43 41 17 108 15 37 187 106 12 107 115 128 162 26
110921 223 170 18 55 87 165 241 2 179 202 8 80 11 207 206 82 82 35 137 34 81 176
1110116 231 183 73 163 82 123 188 115 216 213 86 156 16 140 208 153 154 210 68 33
1111222 155 69 89 80 120 14 22 238 119 5 62 132 148 221 208 18 205 26 224 70 192 80
1112167 156 125 191 24 44 191 180 14 131 45 200 140 99 102 73 54 31 42 32 57 2 44 9
111389 236 69 177 131 180 149 80 208 65 103 129 177 219 231 230 215 1 35 28 227 20
111479 17 237 219 96 37 52 157 72 19 152 98 87 124 88 24 241 49 77 40 226 229 71 92
111510 192 236 116 75 234 154 54 119 93 113 213 39 14 178 187 59 114 4 162 223 123
1116120 217 113 16 181 117 131 92 98 243 73 7 133 204 79 152 186 138 184 223 61 232
1117239 175 107 6 77 81 114 207 9 1 185 232 42 73 210 224 226 141 20 11 98 155 22
1118191 221 146 109 227 88 71 139 152 51 189 21 135 119 202 164 29 195 51 148 112
1119157 181 49 233 233 145 94 13 122 64 94 169 71 4 203 111 101 58 105 44 56 231 74
112022 82 170 86 197 169 118 146 41 85 6 118 234 92 145 141 149 ^
1121484 1 219 32 243 208 200 48 48 21 178 13 40 115 178 232 197 196 218 61 14 4 183
112260 23 93 136 50 202 229 99 120 245 143 5 134 128 151 130 32 236 34 124 68 215
1123182 82 112 46 126 229 92 192 169 163 159 49 19 17 136 43 28 140 119 28 160 47
1124104 140 126 202 236 27 196 225 235 90 230 16 158 132 240 130 39 164 123 104 147
112554 32 216 119 35 75 123 97 232 224 52 137 21 185 187 129 95 24 71 47 97 212 50
1126222 144 188 100 91 228 101 35 122 153 92 172 241 74 179 203 180 167 2 36 39 191
1127225 23 120 238 215 175 154 36 66 34 131 242 45 162 161 210 142 14 223 81 141 63
1128168 199 104 167 228 121 209 198 133 184 24 91 221 173 192 142 61 7 76 94 80 190
11298 40 162 208 227 150 213 240 103 196 245 150 179 223 108 243 228 128 124 41 113
113017 109 187 109 180 194 91 201 12 116 149 215 155 226 206 86 201 46 133 157 168
1131172 2 2 9 183 26 6 98 183 33 180 174 163 125 19 24 64 119 8 232 204 124 48 41
1132106 89 33 207 30 82 85 203 207 10 154 9 210 115 171 58 108 216 126 209 164 103
1133176 71 74 199 131 10 147 81 134 135 79 219 12 69 132 220 202 209 171 31 19 51
1134166 38 227 157 141 70 83 29 84 67 217 97 205 122 133 164 96 2 241 94 107 33 160
113587 145 186 185 214 231 14 243 9 230 43 1 38 200 55 222 110 158 105 138 211 79
1136226 186 158 112 66 54 59 72 25 8 13 60 43 21 212 30 48 68 195 8 239 132 213 28
1137133 191 198 167 201 19 44 238 208 1 65 56 220 195 35 95 51 173 212 57 137 233
1138168 192 176 78 2 29 111 102 232 177 22 129 68 168 165 74 172 29 104 174 156 197
1139189 44 218 34 158 85 210 135 99 147 101 62 224 59 52 110 178 20 214 204 171 78
114036 46 106 55 3 212 77 65 63 148 25 15 187 136 23 100 64 139 182 62 197 216 146
1141137 240 96 22 156 170 87 125 12 96 234 139 175 134 108 236 54 52 144 195 28 167
1142221 193 120 218 41 86 174 190 227 184 243 235 56 213 21 205 115 205 71 ^
1143506 0 110 165 141 238 206 37 169 45 187 134 142 124 66 5 36 71 79 235 231 5 105
114422 239 166 101 49 86 83 65 224 21 31 102 221 3 190 147 231 79 56 182 165 36 140
114530 147 157 128 149 3 47 245 159 217 68 99 203 167 235 157 54 193 91 116 122 120
1146236 7 20 145 242 5 141 164 7 125 238 175 143 153 81 45 8 85 54 50 189 49 17 127
1147153 45 151 240 121 160 177 132 227 1 63 166 244 204 158 188 53 59 231 148 12 94
114896 154 184 11 208 236 186 69 233 63 135 97 183 194 51 180 2 161 132 191 107 42
1149207 102 78 101 118 37 243 244 94 60 12 163 47 66 110 129 247 217 247 148 43 236
1150117 118 73 137 12 58 202 138 220 117 82 179 116 53 164 76 81 150 101 13 192 62
1151106 87 143 222 32 205 187 203 93 31 245 123 75 52 135 66 41 178 87 38 129 104
115262 175 38 55 153 155 244 168 16 172 94 170 105 91 190 78 27 167 130 64 126 55
115379 199 84 237 146 128 113 109 31 33 17 96 11 29 187 98 103 107 116 158 14 9 219
1154162 18 51 75 157 233 242 179 190 4 76 7 199 194 82 74 23 125 26 69 164 112 223
1155171 65 155 70 119 176 103 212 209 86 152 16 136 200 149 146 202 64 21 210 151
115661 77 72 108 2 18 230 119 245 54 124 140 209 196 2 197 26 212 66 184 80 159 148
1157117 187 24 44 191 176 246 119 33 196 140 99 98 69 54 19 42 28 53 238 32 241 81
1158224 57 173 123 180 145 68 204 53 95 125 169 219 231 222 211 1 27 24 223 240 16
115967 1 237 215 84 25 40 149 72 3 152 90 87 112 80 16 241 45 77 36 214 229 59 88
1160246 188 232 108 71 222 142 50 115 93 105 201 35 6 170 179 47 102 4 150 211 111
1161120 205 113 4 181 105 127 84 94 239 61 3 121 196 71 148 186 138 184 223 61 220
1162227 175 107 6 65 81 114 207 245 233 173 228 30 73 206 216 218 133 8 11 98 143
116310 179 221 146 97 219 88 67 139 144 39 189 13 123 111 194 156 25 183 51 144 108
1164145 173 49 229 233 137 86 9 114 64 90 161 63 240 195 111 89 58 97 40 44 227 70
116514 78 170 74 197 169 114 138 41 73 242 110 234 177 ^
1166491 0 145 135 155 207 20 243 208 200 40 48 21 170 5 40 111 178 228 189 196 210
116749 6 246 171 56 23 85 128 46 198 217 95 108 241 135 247 130 116 151 130 24 228
116834 116 56 207 178 70 112 42 118 221 80 184 157 151 159 37 19 5 132 31 24 136
1169111 20 148 35 104 132 126 194 232 19 192 225 223 90 230 12 146 120 228 126 39
1170152 115 100 147 50 28 216 107 35 75 119 85 220 216 44 125 17 185 179 121 95 16
117171 39 89 208 42 210 144 176 92 79 228 97 23 114 141 84 172 233 70 175 199 176
1172155 236 36 31 179 213 15 112 226 211 163 146 28 58 30 131 230 41 162 161 202
1173142 14 219 73 141 55 156 195 96 159 224 109 197 198 125 172 12 83 213 173 192
1174130 53 241 72 90 72 182 242 28 150 200 227 138 213 236 99 188 237 150 171 211
1175100 239 220 124 124 29 109 13 105 183 109 168 182 87 201 246 108 149 215 151
1176222 194 74 189 38 133 145 164 168 248 244 9 183 14 248 86 179 29 172 170 163
1177117 15 20 56 115 8 224 204 120 44 33 94 89 21 199 18 78 85 191 203 6 154 1 210
1178115 163 54 108 212 122 209 156 103 176 63 66 187 123 10 139 77 126 131 75 211 8
117969 124 216 202 205 171 27 7 47 154 30 223 153 137 70 83 29 80 67 209 93 193 118
1180129 160 88 2 229 82 99 33 160 246 79 133 174 177 206 219 10 231 247 222 39 247
118138 196 55 222 102 154 93 130 211 71 226 182 150 108 54 42 55 64 25 1 52 35 9
1182212 30 36 60 195 4 239 128 201 28 121 187 186 167 197 11 32 230 196 239 65 44
1183220 187 31 87 43 169 204 57 137 225 160 180 172 78 240 21 107 98 232 177 22 129
118468 168 153 74 160 25 92 174 148 193 181 36 218 22 158 81 206 127 87 135 89 50
1185212 59 52 98 166 20 214 192 159 66 32 46 106 47 249 200 69 61 59 144 21 15 175
1186136 19 100 52 127 182 58 185 208 134 133 240 84 14 156 166 83 121 96 222 131
1187167 134 104 224 46 40 140 191 16 163 209 185 116 214 37 82 162 190 215 180 235
1188235 48 205 13 197 103 205 76 104 161 139 232 146 ^
1189516 0 33 165 33 175 122 134 112 66 1 24 59 67 231 219 5 101 14 227 158 89 41 82
119071 61 224 13 23 102 213 3 186 143 223 71 56 174 165 28 136 22 139 157 116 137
1191247 43 233 155 217 64 91 203 155 227 153 50 193 87 116 122 108 236 7 16 137 242
1192245 133 160 251 125 238 163 139 141 77 37 77 42 50 177 37 5 127 153 45 143 228
1193121 156 169 120 219 241 51 166 232 192 150 188 53 55 227 148 82 92 150 172 3
1194196 232 182 61 229 63 123 97 179 194 39 172 250 157 132 187 95 38 199 94 70 93
1195118 37 231 240 94 60 4 159 47 58 110 125 243 213 239 136 43 228 105 106 69 125
119612 50 198 126 216 117 74 175 112 45 164 76 69 146 101 9 188 58 94 75 143 218 32
1197197 179 199 89 31 245 123 71 40 135 54 33 170 83 34 117 100 62 171 30 51 145
1198143 244 160 4 164 86 158 105 91 182 66 27 163 118 52 118 47 79 199 84 233 134
1199128 105 101 19 25 17 84 7 21 187 90 240 99 99 104 154 2 249 215 154 18 47 63
1200149 225 238 179 178 72 3 191 182 82 66 11 113 18 57 152 108 215 159 57 147 58
1201115 164 91 208 205 86 148 16 132 192 145 138 194 60 9 198 147 53 65 64 96 242
120214 222 119 241 46 116 132 197 184 238 189 26 200 62 176 80 151 140 109 183 24
120344 191 172 234 107 21 192 140 99 94 65 54 7 42 24 49 230 20 229 73 212 45 169
1204115 180 141 56 200 41 87 121 161 219 231 214 207 1 19 20 219 236 12 55 237 237
1205211 72 13 28 141 72 239 152 82 87 100 72 8 241 41 77 32 202 229 47 84 238 184
1206228 100 67 210 130 46 111 93 97 189 31 250 162 171 35 90 4 138 199 99 120 193
1207113 244 181 93 123 76 90 235 49 251 109 188 63 144 186 138 184 223 61 208 215
1208175 107 6 53 81 114 207 237 221 161 224 18 73 202 208 210 125 248 11 98 131 250
1209167 221 146 85 211 88 63 139 136 27 189 5 111 103 186 148 21 171 51 140 104 133
1210165 49 225 233 129 78 5 106 64 86 153 55 232 187 111 77 58 89 36 32 223 66 6 74
1211170 62 197 169 110 130 41 61 234 102 234 92 145 133 155 201 14 243 208 200 36
121248 21 166 1 40 109 178 147 ^
1213522 0 179 196 200 34 251 241 156 51 23 75 118 41 193 202 90 93 236 125 242 125
1214101 151 130 14 218 34 106 41 197 173 55 112 37 108 211 65 174 142 136 159 22 19
1215245 127 16 19 131 101 10 133 20 104 122 126 184 227 9 187 225 208 90 230 7 131
1216105 213 121 39 137 105 95 147 45 23 216 92 35 75 114 70 205 206 34 110 12 185
1217169 111 95 6 71 29 79 203 32 195 144 161 82 64 228 92 8 104 126 74 172 223 65
1218170 194 171 140 221 36 21 164 198 5 102 211 206 148 136 18 48 25 131 215 36 162
1219161 192 142 14 214 63 141 45 141 190 86 149 219 94 182 198 115 157 252 73 203
1220173 192 115 43 226 67 85 62 172 227 13 135 190 227 123 213 231 94 178 227 150
1221161 196 90 234 210 119 124 14 104 8 100 178 109 153 167 82 201 231 98 149 215
1222146 217 179 59 174 28 133 130 159 163 248 239 9 183 254 243 71 174 24 162 165
1223163 107 10 15 46 110 8 214 204 115 39 23 79 89 6 189 3 73 85 176 198 1 154 246
1224210 115 153 49 108 207 117 209 146 103 176 53 56 172 113 10 129 72 116 126 70
1225201 3 69 114 211 202 200 171 22 247 42 139 20 218 148 132 70 83 29 75 67 199 88
1226178 113 124 155 78 2 214 67 89 33 160 246 69 118 159 167 196 204 5 216 237 212
122734 247 38 191 55 222 92 149 78 120 211 61 226 177 140 103 39 27 50 54 25 245
1228241 42 25 249 212 30 21 50 195 254 239 123 186 28 106 182 171 167 192 1 17 220
1229181 229 65 29 220 177 26 77 33 164 194 57 137 215 150 165 167 78 230 11 102 93
1230232 177 22 129 68 168 138 74 145 20 77 174 138 188 171 26 218 7 158 76 201 117
123172 120 74 35 197 59 52 83 151 20 214 177 144 51 27 46 106 37 249 185 59 56 54
1232139 16 15 160 136 14 100 37 112 182 53 170 198 119 128 240 69 4 156 161 78 116
1233240 96 207 121 157 134 99 209 36 25 135 186 1 158 194 175 111 209 32 77 147 190
1234200 175 225 235 38 195 3 187 88 205 61 89 151 134 217 206 30 162 24 166 113 128
1235103 66 253 15 50 58 228 210 5 98 8 218 152 80 35 79 62 58 224 7 17 102 207 3
1236183 140 217 65 56 168 165 22 133 16 133 157 107 128 244 12 ^
1237517 1 218 150 217 59 81 203 140 217 148 45 193 82 116 122 93 236 7 11 127 242
1238235 123 155 246 125 238 148 134 126 72 27 247 67 27 50 162 22 247 127 153 45
1239133 213 121 151 159 105 209 231 36 166 217 177 140 188 53 50 222 148 242 67 87
1240145 157 250 181 227 177 51 224 63 108 97 174 194 24 162 250 152 132 182 80 33
1241189 84 60 83 118 37 216 235 94 60 251 154 47 48 110 120 238 208 229 121 43 218
124290 91 64 110 12 40 193 111 211 117 64 170 107 35 164 76 54 141 101 4 183 53 79
124360 143 213 32 187 169 194 84 31 245 123 66 25 135 39 23 160 78 29 102 95 62 166
124420 46 135 128 244 150 246 154 76 143 105 91 172 51 27 158 103 37 108 37 79 199
124584 228 119 128 95 91 4 15 17 69 2 11 187 80 230 94 89 89 149 244 239 210 144 18
124642 48 139 215 233 179 163 252 67 255 181 167 82 56 253 98 8 42 137 103 205 144
124747 137 43 110 149 76 203 200 86 143 16 127 182 140 128 184 55 251 183 142 43 50
124854 81 232 9 212 119 236 36 106 122 182 169 223 179 26 185 57 166 80 141 130 99
1249178 24 44 191 167 219 92 6 187 140 99 89 60 54 249 42 19 44 220 5 214 63 197 30
1250164 105 180 136 41 195 26 77 116 151 219 231 204 202 1 9 15 214 231 7 40 222
1251237 206 57 255 13 131 72 224 152 72 87 85 62 255 241 36 77 27 187 229 32 79 228
1252179 223 90 62 195 115 41 106 93 87 174 26 245 152 161 20 75 4 123 184 84 120
1253178 113 234 181 78 118 66 85 230 34 251 94 178 53 139 186 138 184 223 61 193
1254200 175 107 6 38 81 114 207 227 206 146 219 3 73 197 198 200 115 238 11 98 116
1255240 152 221 146 70 201 88 58 139 126 12 189 252 96 93 176 138 16 156 51 135 99
1256118 155 49 220 233 119 68 96 64 81 143 45 222 177 111 62 58 79 31 17 218 61 253
125769 170 47 197 169 105 120 41 46 224 92 234 92 145 128 155 186 256 243 208 200
125826 48 21 156 248 40 104 178 221 175 196 196 28 249 239 150 49 23 71 114 39 191
1259196 88 87 234 121 240 123 95 151 130 10 214 34 102 35 193 171 49 112 35 104 207
126059 170 136 130 159 16 19 241 125 213 ^
1261529 1 15 127 93 2 121 8 104 114 126 176 223 1 183 225 196 90 230 3 119 93 201
1262117 39 125 97 91 147 41 19 216 80 35 75 110 58 193 198 26 98 8 185 161 103 95
1263257 71 21 71 199 24 183 144 149 74 52 228 88 255 96 114 66 172 215 61 166 190
1264167 128 209 36 13 152 186 256 94 199 202 136 128 10 40 21 131 203 32 162 161
1265184 142 14 210 55 141 37 129 186 78 141 215 82 170 198 107 145 244 65 195 173
1266192 103 35 214 63 81 54 164 215 1 123 182 227 111 213 227 90 170 219 150 153
1267184 82 230 202 115 124 2 100 4 96 174 109 141 155 78 201 219 90 149 215 142 213
1268167 47 162 20 133 118 155 159 248 235 9 183 246 239 59 170 20 154 161 163 99 6
126911 38 106 8 206 204 111 35 15 67 89 253 181 250 69 85 164 194 256 154 242 210
1270115 145 45 108 203 113 209 138 103 176 45 48 160 105 10 121 68 108 122 66 193
1271258 69 106 207 202 196 171 18 239 38 127 12 214 144 128 70 83 29 71 67 191 84
1272166 109 120 151 70 2 202 55 81 33 160 246 61 106 147 159 188 192 1 204 229 204
127330 247 38 187 55 222 84 145 66 112 211 53 226 173 132 99 27 15 46 46 25 241 233
127434 17 241 212 30 9 42 195 254 239 119 174 28 94 178 159 167 188 252 5 212 169
1275221 65 17 220 169 22 69 25 160 186 57 137 207 142 153 163 78 222 3 98 89 232
1276177 22 129 68 168 126 74 133 16 65 174 130 184 163 18 218 254 158 72 197 109 60
1277108 62 23 185 59 52 71 139 20 214 165 132 39 23 46 106 29 249 173 51 52 50 135
127812 15 148 136 10 100 25 100 182 49 158 190 107 124 240 57 255 156 157 74 112
1279232 96 195 113 149 134 95 197 28 13 131 182 248 154 182 167 107 205 28 73 135
1280190 188 171 217 235 30 187 254 179 76 205 49 77 143 130 205 206 26 158 12 154
1281101 120 91 66 253 3 38 46 224 198 5 94 206 144 68 27 75 50 54 224 258 9 102 199
12823 179 136 209 57 56 160 165 14 129 8 125 157 95 116 240 36 212 148 217 57 77
1283203 134 213 146 43 193 80 116 122 87 236 7 9 123 242 231 119 153 244 125 238
1284142 132 120 70 23 245 63 21 50 156 16 243 127 153 45 129 207 121 149 155 99 205
1285227 30 166 211 57 ^
1286548 0 134 188 53 47 219 148 236 58 84 142 148 247 172 224 174 45 221 63 99 97
1287171 194 15 156 250 149 132 179 71 30 183 78 54 77 118 37 207 232 94 60 248 151
128847 42 110 117 235 205 223 112 43 212 81 82 61 101 12 34 190 102 208 117 58 167
1289104 29 164 76 45 138 101 1 180 50 70 51 143 210 32 181 163 191 81 31 245 123 63
129016 135 30 17 154 75 26 93 92 62 163 14 43 129 119 244 144 240 148 70 134 105 91
1291166 42 27 155 94 28 102 31 79 199 84 225 110 128 89 85 255 9 17 60 259 5 187 74
1292224 91 83 80 146 238 233 207 138 18 39 39 133 209 230 179 154 252 64 255 175
1293158 82 50 247 89 2 33 128 100 199 135 41 131 34 107 140 67 200 197 86 140 16
1294124 176 137 122 178 52 245 174 139 37 41 48 72 226 6 206 119 233 30 100 116 173
1295160 214 173 26 176 54 160 80 135 124 93 175 24 44 191 164 210 83 257 184 140 99
129686 57 54 243 42 16 41 214 256 205 57 188 21 161 99 180 133 32 192 17 71 113 145
1297219 231 198 199 1 3 12 211 228 4 31 213 237 203 48 249 4 125 72 215 152 66 87
129876 56 252 241 33 77 24 178 229 23 76 222 176 220 84 59 186 106 38 103 93 81 165
129923 242 146 155 11 66 4 114 175 75 120 169 113 228 181 69 115 60 82 227 25 251
130085 172 47 136 186 138 184 223 61 184 191 175 107 6 29 81 114 207 221 197 137
1301216 254 73 194 192 194 109 232 11 98 107 234 143 221 146 61 195 88 55 139 120 3
1302189 249 87 87 170 132 13 147 51 132 96 109 149 49 217 233 113 62 257 90 64 78
1303137 39 216 171 111 53 58 73 28 8 215 58 250 66 170 38 197 169 102 114 41 37 218
130486 234 92 145 125 155 177 250 243 208 200 20 48 21 150 245 40 101 178 218 169
1305196 190 19 246 236 141 46 23 65 108 36 188 187 85 78 231 115 237 120 86 151 130
13064 208 34 96 26 187 168 40 112 32 98 201 50 164 127 121 159 7 19 235 122 1 14
1307126 91 118 5 104 112 126 174 222 259 182 225 193 90 230 2 116 90 198 116 39 122
130895 90 147 40 18 216 77 35 75 109 55 190 196 24 95 7 185 159 101 95 256 71 19 69
1309198 22 180 144 146 72 49 228 87 253 94 111 64 172 213 60 165 189 166 125 206 36
131011 149 183 255 92 196 201 133 126 8 38 20 131 213 ^
1311547 0 29 162 161 178 142 14 207 49 141 31 120 183 72 135 212 73 161 198 101 136
1312238 59 189 173 192 94 29 205 60 78 48 158 206 254 114 176 227 102 213 224 87
1313164 213 150 147 175 76 227 196 112 124 255 97 1 93 171 109 132 146 75 201 210
131484 149 215 139 210 158 38 153 14 133 109 152 156 248 232 9 183 240 236 50 167
131517 148 158 163 93 3 8 32 103 8 200 204 108 32 9 58 89 247 175 244 66 85 155 191
1316256 154 239 210 115 139 42 108 200 110 209 132 103 176 39 42 151 99 10 115 65
1317102 119 63 187 258 69 100 204 202 193 171 15 233 35 118 6 211 141 125 70 83 29
131868 67 185 81 157 106 117 148 64 2 193 46 75 33 160 246 55 97 138 153 182 183
1319260 195 223 198 27 247 38 184 55 222 78 142 57 106 211 47 226 170 126 96 18 6
132043 40 25 238 227 28 11 235 212 30 36 195 254 239 116 165 28 85 175 150 167 185
1321249 258 206 160 215 65 8 220 163 19 63 19 157 180 57 137 201 136 144 160 78 216
1322259 95 86 232 177 22 129 68 168 117 74 124 13 56 174 124 181 157 12 218 248 158
132369 194 103 51 99 53 14 176 59 52 62 130 20 214 156 123 30 20 46 106 23 249 164
132445 49 47 132 9 15 139 136 7 100 16 91 182 46 149 184 98 121 240 48 252 156 154
132571 109 226 96 186 107 143 134 92 188 22 4 128 179 242 151 173 161 104 202 25 70
1326126 190 179 168 211 235 24 181 251 173 67 205 40 68 137 127 196 206 23 155 3
1327145 92 114 82 66 253 256 29 37 221 189 5 91 256 197 138 59 21 72 41 51 224 255
13283 102 193 3 176 133 203 51 56 154 165 8 126 2 119 157 86 107 237 33 203 145 217
132954 71 203 125 207 143 40 193 77 116 122 78 236 7 6 117 242 225 113 150 241 125
1330238 133 129 111 67 17 242 57 12 50 147 7 237 127 153 45 123 198 121 146 149 90
1331199 221 21 166 202 162 130 188 53 45 217 148 232 52 82 140 142 245 166 222 172
133241 219 63 93 97 169 194 9 152 250 147 132 177 65 28 179 74 50 73 118 37 201 230
133394 60 246 149 47 38 110 115 233 203 219 106 43 208 75 76 59 95 12 30 188 96 206
1334117 54 165 102 25 164 76 39 136 101 261 178 48 64 45 143 208 32 177 159 189 79
133531 245 123 61 10 135 24 13 150 73 24 87 90 62 161 10 41 125 209 ^
1336542 1 244 136 232 140 62 122 105 91 158 30 27 151 82 16 94 23 79 199 84 221 98
1337128 81 77 247 1 17 48 259 261 187 66 216 87 75 68 142 230 225 203 130 18 35 27
1338125 201 226 179 142 252 60 255 167 146 82 42 239 77 258 21 116 96 191 123 33
1339123 22 103 128 55 196 193 86 136 16 120 168 133 114 170 48 237 162 135 29 29 40
134060 218 2 198 119 229 22 92 108 161 148 202 165 26 164 50 152 80 127 116 85 171
134124 44 191 160 198 71 249 180 140 99 82 53 54 235 42 12 37 206 248 193 49 176 9
1342157 91 180 129 20 188 5 63 109 137 219 231 190 195 1 259 8 207 224 19 201 237
1343199 36 241 256 117 72 203 152 58 87 64 48 248 241 29 77 20 166 229 11 72 214
1344172 216 76 55 174 94 34 99 93 73 153 19 238 138 147 263 54 4 102 163 63 120 157
1345113 220 181 57 111 52 78 223 13 251 73 164 39 132 186 138 184 223 61 172 179
1346175 107 6 17 81 114 207 213 185 125 212 246 73 190 184 186 101 224 11 98 95 226
1347131 221 146 49 187 88 51 139 112 255 189 245 75 79 162 124 9 135 51 128 92 97
1348141 49 213 233 105 54 257 82 64 74 129 31 208 163 111 41 58 65 24 260 211 54
1349246 62 170 26 197 169 98 106 41 25 210 78 234 92 145 121 155 165 242 243 208
1350200 12 48 21 142 241 40 97 178 214 161 196 182 7 242 232 129 42 23 57 100 32
1351184 175 81 66 227 107 233 116 74 151 130 260 200 34 88 14 179 164 28 112 28 90
1352193 38 156 115 109 159 259 19 227 118 253 10 122 83 256 106 257 104 104 126 166
1353218 255 178 225 181 90 230 262 104 78 186 112 39 110 87 86 147 36 14 216 65 35
135475 105 43 178 188 16 83 3 185 151 93 95 252 71 11 61 194 14 168 144 134 64 37
1355228 83 245 86 99 56 172 205 56 161 185 162 113 194 36 3 137 171 251 84 184 197
1356121 118 30 16 131 188 27 162 161 174 142 14 205 45 141 27 114 181 68 131 210 67
1357155 198 97 130 234 55 185 173 192 88 25 199 58 76 44 154 200 250 108 172 227 96
1358213 222 85 160 209 150 143 169 72 225 192 110 124 251 95 263 91 169 109 126 140
135973 201 204 80 149 215 137 208 152 32 147 10 133 103 150 154 248 230 9 183 236
1360234 44 165 15 144 156 163 89 1 6 28 101 8 196 204 106 164 ^
1361567 0 1 46 89 239 167 236 62 85 143 187 256 154 235 210 115 131 38 108 196 106
1362209 124 103 176 31 34 139 91 10 107 61 94 115 59 179 258 69 92 200 202 189 171
136311 225 31 106 264 207 137 121 70 83 29 64 67 177 77 145 102 113 144 56 2 181 34
136467 33 160 246 47 85 126 145 174 171 260 183 215 190 23 247 38 180 55 222 70 138
136545 98 211 39 226 166 118 92 6 260 39 32 25 234 219 20 3 227 212 30 254 28 195
1366254 239 112 153 28 73 171 138 167 181 245 250 198 148 207 65 262 220 155 15 55
136711 153 172 57 137 193 128 132 156 78 208 255 91 82 232 177 22 129 68 168 105 74
1368112 9 44 174 116 177 149 4 218 240 158 65 190 95 39 87 41 2 164 59 52 50 118 20
1369214 144 111 18 16 46 106 15 249 152 37 45 43 128 5 15 127 136 3 100 4 79 182 42
1370137 176 86 117 240 36 248 156 150 67 105 218 96 174 99 135 134 88 176 14 258
1371124 175 234 147 161 153 100 198 21 66 114 190 167 164 203 235 16 173 247 165 55
1372205 28 56 129 123 184 206 19 151 257 133 80 106 70 66 253 248 17 25 217 177 5
137387 252 185 130 47 13 68 29 47 224 251 261 102 185 3 172 129 195 43 56 146 165
1374122 260 111 157 74 95 233 29 191 141 217 50 63 203 113 199 139 36 193 73 116
1375122 66 236 7 2 109 242 217 105 146 237 125 238 121 125 99 63 9 238 49 50 135
1376261 229 127 153 45 115 186 121 142 141 78 191 213 9 166 190 150 122 188 53 41
1377213 148 224 40 78 136 130 241 154 218 168 33 215 63 81 97 165 194 263 144 250
1378143 132 173 53 24 171 66 42 65 118 37 189 226 94 60 242 145 47 30 110 111 229
1379199 211 94 43 200 63 64 55 83 12 22 184 84 202 117 46 161 98 17 164 76 27 132
1380101 261 174 44 52 33 143 204 32 169 151 185 75 31 245 123 57 264 135 12 5 142
138169 20 75 86 62 157 2 37 117 101 244 132 228 136 58 116 105 91 154 24 27 149 76
138210 90 19 79 199 84 219 92 128 77 73 243 263 17 42 259 259 187 62 212 85 71 62
1383140 226 221 201 126 18 33 21 121 197 224 179 136 252 58 255 163 140 82 38 235
138471 256 15 110 94 187 117 29 119 16 101 122 49 194 191 86 134 16 118 164 131 110
1385166 46 233 156 133 25 23 36 54 214 194 119 227 18 88 104 155 142 196 161 26 158
138648 148 80 123 112 81 169 24 44 191 158 192 65 245 178 140 223 ^
1387551 1 78 49 54 227 42 8 33 198 240 181 41 164 265 153 83 180 125 8 184 261 55
1388105 129 219 231 182 191 1 255 4 203 220 264 7 189 237 195 24 233 248 109 72 191
1389152 50 87 52 40 244 241 25 77 16 154 229 267 68 206 168 212 68 51 162 82 30 95
139093 65 141 15 234 130 139 255 42 4 90 151 51 120 145 113 212 181 45 107 44 74
1391219 1 251 61 156 31 128 186 138 184 223 61 160 167 175 107 6 5 81 114 207 205
1392173 113 208 238 73 186 176 178 93 216 11 98 83 218 119 221 146 37 179 88 47 139
1393104 247 189 241 63 71 154 116 5 123 51 124 88 85 133 49 209 233 97 46 257 74 64
139470 121 23 200 155 111 29 58 57 20 252 207 50 242 58 170 14 197 169 94 98 41 13
1395202 70 234 92 145 117 155 153 234 243 208 200 4 48 21 134 237 40 93 178 210 153
1396196 174 263 238 228 117 38 23 49 92 28 180 163 77 54 223 99 229 112 62 151 130
1397256 192 34 80 2 171 160 16 112 24 82 185 26 148 103 97 159 251 19 219 114 245 6
1398118 75 252 94 249 104 96 126 158 214 251 174 225 169 90 230 262 92 66 174 108
139939 98 79 82 147 32 10 216 53 35 75 101 31 166 180 8 71 267 185 143 85 95 248 71
14003 53 190 6 156 144 122 56 25 228 79 237 78 87 48 172 197 52 157 181 158 101 182
140136 263 125 159 247 76 172 193 109 110 260 22 12 131 176 23 162 161 166 142 14
1402201 37 141 19 102 177 60 123 206 55 143 198 89 118 226 47 177 173 192 76 17 187
140354 72 36 146 188 242 96 164 227 84 213 218 81 152 201 150 135 157 64 221 184
1404106 124 243 91 263 87 165 109 114 128 69 201 192 72 149 215 133 204 140 20 135
14052 133 91 146 150 248 226 9 183 228 230 32 161 11 136 152 163 81 265 2 20 97 8
1406188 204 102 26 265 40 89 235 163 232 60 85 137 185 256 154 233 210 115 127 36
1407108 194 104 209 120 103 176 27 30 133 87 10 103 59 90 113 57 175 258 69 88 198
1408202 187 171 9 221 29 100 262 205 135 119 70 83 29 62 67 173 75 139 100 111 142
140952 2 175 28 63 33 160 246 43 79 120 141 170 165 260 177 211 186 21 247 38 178
141055 222 66 136 39 94 211 35 226 164 114 90 256 37 28 25 232 215 16 267 223 212
141130 250 24 195 254 239 110 147 28 67 169 132 167 179 243 246 194 142 203 65 263 ^
1412578 0 220 147 11 47 3 149 164 57 137 185 120 120 152 78 200 251 87 78 232 177
141322 129 68 168 93 74 100 5 32 174 108 173 141 266 218 232 158 61 186 87 27 75 29
1414260 152 59 52 38 106 20 214 132 99 6 12 46 106 7 249 140 29 41 39 124 1 15 115
1415136 269 100 262 67 182 38 125 168 74 113 240 24 244 156 146 63 101 210 96 162
141691 127 134 84 164 6 250 120 171 226 143 149 145 96 194 17 62 102 190 155 160
1417195 235 8 165 243 157 43 205 16 44 121 119 172 206 15 147 249 121 68 98 58 66
1418253 240 5 13 213 165 5 83 248 173 122 35 5 64 17 43 224 247 257 102 177 3 168
1419125 187 35 56 138 165 262 118 256 103 157 62 83 229 25 179 137 217 46 55 203
1420101 191 135 32 193 69 116 122 54 236 7 268 101 242 209 97 142 233 125 238 109
1421121 87 59 1 234 41 258 50 123 253 221 127 153 45 107 174 121 138 133 66 183 205
1422267 166 178 138 114 188 53 37 209 148 216 28 74 132 118 237 142 214 164 25 211
142363 69 97 161 194 255 136 250 139 132 169 41 20 163 58 34 57 118 37 177 222 94
142460 238 141 47 22 110 107 225 195 203 82 43 192 51 52 51 71 12 14 180 72 198 117
142538 157 94 9 164 76 15 128 101 261 170 40 40 21 143 200 32 161 143 181 71 31 245
1426123 53 256 135 267 134 65 16 63 82 62 153 264 33 109 89 244 124 220 128 50 104
1427105 91 146 12 27 145 64 268 82 11 79 199 84 215 80 128 69 65 235 259 17 30 259
1428255 187 54 204 81 63 50 136 218 213 197 118 18 29 9 113 189 220 179 124 252 54
1429255 155 128 82 30 227 59 252 3 98 90 179 105 21 111 4 97 110 37 190 187 86 130
143016 114 156 127 102 158 42 225 144 129 17 11 28 42 206 266 186 119 223 10 80 96
1431143 130 184 153 26 146 44 140 80 115 104 73 165 24 44 191 154 180 53 237 174
1432140 99 76 47 54 223 42 6 31 194 236 175 37 158 261 151 79 180 123 2 182 257 51
1433103 125 219 231 178 189 1 253 2 201 218 264 1 183 237 193 18 229 244 105 72 185
1434152 46 87 46 36 242 241 23 77 14 148 229 263 66 202 166 210 64 49 156 76 28 93
143593 61 135 13 232 126 135 251 36 4 84 145 45 120 139 113 208 181 39 105 40 72
1436217 265 251 55 152 27 126 186 138 184 223 61 154 161 175 107 6 269 81 114 207
1437201 167 107 206 234 73 184 172 174 89 212 11 98 77 214 113 221 146 31 175 88 45
1438139 100 243 189 213 ^
1439578 1 51 63 146 108 1 111 51 120 84 73 125 49 205 233 89 38 257 66 64 66 113 15
1440192 147 111 17 58 49 16 244 203 46 238 54 170 2 197 169 90 90 41 1 194 62 234
144192 145 113 155 141 226 243 208 200 268 48 21 126 233 40 89 178 206 145 196 166
1442255 234 224 105 34 23 41 84 24 176 151 73 42 219 91 225 108 50 151 130 252 184
144334 72 262 163 156 4 112 20 74 177 14 140 91 85 159 243 19 211 110 237 2 114 67
1444248 82 241 104 88 126 150 210 247 170 225 157 90 230 262 80 54 162 104 39 86 71
144578 147 28 6 216 41 35 75 97 19 154 172 59 267 185 135 77 95 244 71 267 45 186
1446270 144 144 110 48 13 228 75 229 70 75 40 172 189 48 153 177 154 89 170 36 259
1447113 147 243 68 160 189 97 102 256 14 8 131 164 19 162 161 158 142 14 197 29 141
144811 90 173 52 115 202 43 131 198 81 106 218 39 169 173 192 64 9 175 50 68 28 138
1449176 234 84 156 227 72 213 214 77 144 193 150 127 145 56 217 176 102 124 235 87
1450263 83 161 109 102 116 65 201 180 64 149 215 129 200 128 8 123 266 133 79 142
1451146 248 222 9 183 220 226 20 157 7 128 148 163 73 265 270 12 93 8 180 204 98 22
1452261 28 89 227 155 224 56 85 125 181 256 154 229 210 115 119 32 108 190 100 209
1453112 103 176 19 22 121 79 10 95 55 82 109 53 167 258 69 80 194 202 183 171 5 213
145425 88 258 201 131 115 70 83 29 58 67 165 71 127 96 107 138 44 2 163 16 55 33
1455160 246 35 67 108 133 162 153 260 165 203 178 17 247 38 174 55 222 58 132 27 86
1456211 27 226 160 106 86 260 248 33 20 25 228 207 8 263 215 212 30 242 16 195 254
1457239 106 135 28 55 165 120 167 175 239 238 186 130 195 65 250 220 143 9 43 271
1458147 160 57 137 181 116 114 150 78 196 249 85 76 232 177 22 129 68 168 87 74 94
14593 26 174 104 171 137 264 218 228 158 59 184 83 21 69 23 256 146 59 52 32 100 20
1460214 126 93 10 46 106 3 249 134 25 39 37 122 271 15 109 136 269 100 258 61 182
146136 119 164 68 111 240 18 242 156 144 61 99 206 96 156 87 123 134 82 158 2 246
1462118 169 222 141 143 141 94 192 15 60 96 190 149 158 191 235 4 161 241 153 37
1463205 10 38 117 117 166 206 13 145 245 115 62 94 52 66 253 236 271 7 211 159 5 81
1464246 167 118 29 1 62 11 41 224 245 255 102 173 3 166 123 183 31 56 134 165 260
1465116 254 81 ^
1466583 1 157 50 71 225 21 167 133 217 42 47 203 89 183 131 28 193 65 116 122 42
1467236 7 268 93 242 201 89 138 229 125 238 97 117 75 55 267 230 33 250 50 111 245
1468213 127 153 45 99 162 121 134 125 54 175 197 259 166 166 126 106 188 53 33 205
1469148 208 16 70 128 106 233 130 210 160 17 207 63 57 97 157 194 247 128 250 135
1470132 165 29 16 155 50 26 49 118 37 165 218 94 60 234 137 47 14 110 103 221 191
1471195 70 43 184 39 40 47 59 12 6 176 60 194 117 30 153 90 1 164 76 3 124 101 261
1472166 36 28 9 143 196 32 153 135 177 67 31 245 123 49 248 135 262 263 126 61 12
147351 78 62 149 260 29 101 77 244 116 212 120 42 92 105 91 138 27 141 52 260 74 3
147479 199 84 211 68 128 61 57 227 255 17 18 259 251 187 46 196 77 55 38 132 210
1475205 193 110 18 25 271 105 181 216 179 112 252 50 255 147 116 82 22 219 47 248
1476265 86 86 171 93 13 103 266 93 98 25 186 183 86 126 16 110 148 123 94 150 38
1477217 132 125 9 273 20 30 198 266 178 119 219 2 72 88 131 118 172 145 26 134 40
1478132 80 107 96 65 161 24 44 191 150 168 41 229 170 140 99 72 43 54 215 42 2 27
1479186 228 163 29 146 253 147 71 180 119 264 178 249 43 99 117 219 231 170 185 1
1480249 272 197 214 264 263 171 237 189 6 221 236 97 72 173 152 38 87 34 28 238 241
148119 77 10 136 229 255 62 194 162 206 56 45 144 64 24 89 93 53 123 9 228 118 127
1482243 24 4 72 133 33 120 127 113 200 181 27 101 32 68 213 257 251 43 144 19 122
1483186 138 184 223 61 142 149 175 107 6 261 81 114 207 193 155 95 202 226 73 180
1484164 166 81 204 11 98 65 206 101 221 146 19 167 88 41 139 92 235 189 235 45 59
1485142 104 273 105 51 118 82 67 121 49 203 233 85 34 257 62 64 64 109 11 188 143
1486111 11 58 45 14 240 201 44 236 52 170 270 197 169 88 86 41 269 190 58 234 92
1487145 111 155 135 222 243 208 200 266 48 21 122 231 40 87 178 204 141 196 162 251
1488232 222 99 32 23 37 80 22 174 145 71 36 217 87 223 106 44 151 130 250 180 34 68
1489258 159 154 272 112 18 70 173 8 136 85 79 159 239 19 207 108 233 112 63 246 76
1490237 104 84 126 146 208 245 168 225 151 90 230 262 74 48 156 102 39 80 67 76 147
149126 4 216 35 35 75 95 13 148 168 270 53 267 185 131 73 95 242 71 265 41 184 268
1492138 144 104 44 7 228 73 225 66 69 36 272 ^
1493588 0 181 44 149 173 150 77 158 36 255 101 135 239 60 148 185 85 94 252 6 4 131
1494152 15 162 161 150 142 14 193 21 141 3 78 169 44 107 198 31 119 198 73 94 210
149531 161 173 192 52 1 163 46 64 20 130 164 226 72 148 227 60 213 210 73 136 185
1496150 119 133 48 213 168 98 124 227 83 263 79 157 109 90 104 61 201 168 56 149
1497215 125 196 116 272 111 262 133 67 138 142 248 218 9 183 212 222 8 153 3 120
1498144 163 65 265 270 4 89 8 172 204 94 18 257 16 89 219 147 216 52 85 113 177 256
1499154 225 210 115 111 28 108 186 96 209 104 103 176 11 14 109 71 10 87 51 74 105
150049 159 258 69 72 190 202 179 171 1 205 21 76 254 197 127 111 70 83 29 54 67 157
150167 115 92 103 134 36 2 151 4 47 33 160 246 27 55 96 125 154 141 260 153 195 170
150213 247 38 170 55 222 50 128 15 78 211 19 226 156 98 82 252 240 29 12 25 224 199
1503259 207 212 30 234 8 195 254 239 102 123 28 43 161 108 167 171 235 230 178 118
1504187 65 242 220 135 5 35 267 143 152 57 137 173 108 102 146 78 188 245 81 72 232
1505177 22 129 68 168 75 74 82 275 14 174 96 167 129 260 218 220 158 55 180 75 9 57
150611 248 134 59 52 20 88 20 214 114 81 264 6 46 106 271 249 122 17 35 33 118 271
150715 97 136 269 100 250 49 182 32 107 156 56 107 240 6 238 156 140 57 95 198 96
1508144 79 115 134 78 146 270 238 114 165 214 137 131 133 90 188 11 56 84 190 137
1509154 183 235 272 153 237 145 25 205 274 26 109 113 154 206 9 141 237 103 50 86
151040 66 253 228 263 271 207 147 5 77 242 155 110 17 269 58 275 37 224 241 251 102
1511165 3 162 119 175 23 56 126 165 256 112 250 91 157 44 65 223 19 161 131 217 40
151243 203 83 179 129 26 193 63 116 122 36 236 7 268 89 242 197 85 136 227 125 238
151391 115 69 53 265 228 29 246 50 105 241 209 127 153 45 95 156 121 132 121 48 171
1514193 255 166 160 120 102 188 53 31 203 148 204 10 68 126 100 231 124 208 158 13
1515205 63 51 97 155 194 243 124 250 133 132 163 23 14 151 46 22 45 118 37 159 216
151694 60 232 135 47 10 110 101 219 189 191 64 43 180 33 34 45 53 12 2 174 54 192
1517117 26 151 88 273 164 76 273 122 101 261 164 34 22 3 143 194 32 149 131 175 65
151831 245 123 47 244 135 258 261 122 59 10 45 76 62 147 258 27 97 71 244 112 208
1519116 38 86 105 91 134 270 27 139 46 256 70 275 79 199 160 ^
1520594 0 207 56 128 53 49 219 251 17 6 259 247 187 38 188 73 47 26 128 202 197 189
1521102 18 21 263 97 173 212 179 100 252 46 255 139 104 82 14 211 35 244 257 74 82
1522163 81 5 95 258 89 86 13 182 179 86 122 16 106 140 119 86 142 34 209 120 121 1
1523265 12 18 190 266 170 119 215 272 64 80 119 106 160 137 26 122 36 124 80 99 88
152457 157 24 44 191 146 156 29 221 166 140 99 68 39 54 207 42 276 23 178 220 151
152521 134 245 143 63 180 115 256 174 241 35 95 109 219 231 162 181 1 245 272 193
1526210 264 255 159 237 185 272 213 228 89 72 161 152 30 87 22 20 234 241 15 77 6
1527124 229 247 58 186 158 202 48 41 132 52 20 85 93 45 111 5 224 110 119 235 12 4
152860 121 21 120 115 113 192 181 15 97 24 64 209 249 251 31 136 11 118 186 138 184
1529223 61 130 137 175 107 6 253 81 114 207 185 143 83 198 218 73 176 156 158 73
1530196 11 98 53 198 89 221 146 7 159 88 37 139 84 227 189 231 33 51 134 96 273 93
153151 114 78 55 113 49 199 233 77 26 257 54 64 60 101 3 180 135 111 277 58 37 10
1532232 197 40 232 48 170 262 197 169 84 78 41 261 182 50 234 92 145 107 155 123
1533214 243 208 200 262 48 21 114 227 40 83 178 200 133 196 154 243 228 218 87 28
153423 29 72 18 170 133 67 24 213 79 219 102 32 151 130 246 172 34 60 250 151 150
1535264 112 14 62 165 274 128 73 67 159 231 19 199 104 225 274 108 55 242 64 229
1536104 76 126 138 204 241 164 225 139 90 230 262 62 36 144 98 39 68 59 72 147 22
1537216 23 35 75 91 1 136 160 266 41 267 185 123 65 95 238 71 261 33 180 264 126
1538144 92 36 273 228 69 217 58 57 28 172 177 42 147 171 148 71 152 36 253 95 129
1539237 56 142 183 79 90 250 2 2 131 146 13 162 161 146 142 14 191 17 141 277 72
1540167 40 103 196 25 113 198 69 88 206 27 157 173 192 46 275 157 44 62 16 126 158
1541222 66 144 227 54 213 208 71 132 181 150 115 127 44 211 164 96 124 223 81 263
154277 155 109 84 98 59 201 162 52 149 215 123 194 110 268 105 260 133 61 136 140
1543248 216 9 183 208 220 2 151 1 116 142 163 61 265 270 87 8 168 204 92 16 255 10
154489 215 143 212 50 85 107 175 256 154 223 210 115 107 26 108 184 94 209 100 103
1545176 7 10 103 67 10 83 49 70 103 47 155 258 69 68 188 202 177 171 277 201 19 70
1546252 195 125 109 70 83 29 52 67 153 65 109 90 101 132 32 2 145 276 43 33 160 246
154723 259 ^
1548600 1 87 119 148 132 260 144 189 164 10 247 38 167 55 222 44 125 6 72 211 13
1549226 153 92 79 246 234 26 6 25 221 193 273 256 201 212 30 228 2 195 254 239 99
1550114 28 34 158 99 167 168 232 224 172 109 181 65 236 220 129 2 29 264 140 146 57
1551137 167 102 93 143 78 182 242 78 69 232 177 22 129 68 168 66 74 73 275 5 174 90
1552164 123 257 218 214 158 52 177 69 48 2 242 125 59 52 11 79 20 214 105 72 258 3
155346 106 268 249 113 11 32 30 115 271 15 88 136 269 100 244 40 182 29 98 150 47
1554104 240 276 235 156 137 54 92 192 96 135 73 109 134 75 137 267 232 111 162 208
1555134 122 127 87 185 8 53 75 190 128 151 177 235 269 147 234 139 16 205 268 17
1556103 110 145 206 6 138 231 94 41 80 31 66 253 222 257 265 204 138 5 74 239 146
1557104 8 266 55 269 34 224 238 248 102 159 3 159 116 169 17 56 120 165 253 109 247
155885 157 35 56 220 16 152 128 217 37 37 203 74 173 126 23 193 60 116 122 27 236 7
1559268 83 242 191 79 133 224 125 238 82 112 60 50 262 225 23 240 50 96 235 203 127
1560153 45 89 147 121 129 115 39 165 187 249 166 151 111 96 188 53 28 200 148 198 1
156165 123 91 228 115 205 155 7 202 63 42 97 152 194 237 118 250 130 132 160 14 11
1562145 40 16 39 118 37 150 213 94 60 229 132 47 4 110 98 216 186 185 55 43 174 24
156325 42 44 12 275 171 45 189 117 20 148 85 270 164 76 267 119 101 261 161 31 13
1564273 143 191 32 143 125 172 62 31 245 123 44 238 135 252 258 116 56 7 36 73 62
1565144 255 24 91 62 244 106 202 110 32 77 105 91 128 264 27 136 37 250 64 272 79
1566199 84 206 53 128 51 47 217 250 17 3 259 246 187 36 186 72 45 23 127 200 195
1567188 100 18 20 261 95 171 211 179 97 252 45 255 137 101 82 12 209 32 243 255 71
156881 161 78 3 93 256 88 83 10 181 178 86 121 16 105 138 118 84 140 33 207 117 120
1569278 263 10 15 188 266 168 119 214 271 62 78 116 103 157 135 26 119 35 122 80 97
157086 55 156 24 44 191 145 153 26 219 165 140 99 67 38 54 205 42 276 22 176 218
1571148 19 131 243 142 61 180 114 254 173 239 33 94 107 219 231 160 180 1 244 272
1572192 209 264 253 156 237 184 270 211 226 87 72 158 152 28 87 19 18 233 241 14 77
15735 121 229 245 57 184 157 201 46 40 129 49 19 84 93 43 108 4 223 108 117 233 9 4
157457 118 18 120 112 113 190 181 12 96 22 63 208 247 251 28 134 9 117 186 138 184
1575223 61 127 216 ^
1576590 1 175 107 6 247 81 114 207 179 134 74 195 212 73 173 150 152 67 190 11 98
157744 192 80 221 146 279 153 88 34 139 78 221 189 228 24 45 128 90 273 84 51 111
157875 46 107 49 196 233 71 20 257 48 64 57 95 278 174 129 111 271 58 31 7 226 194
157937 229 45 170 256 197 169 81 72 41 255 176 44 234 92 145 104 155 114 208 243
1580208 200 259 48 21 108 224 40 80 178 197 127 196 148 237 225 215 78 25 23 23 66
158115 167 124 64 15 210 73 216 99 23 151 130 243 166 34 54 244 145 147 258 112 11
158256 159 268 122 64 58 159 225 19 193 101 219 274 105 49 239 55 223 104 70 126
1583132 201 238 161 225 130 90 230 262 53 27 135 95 39 59 53 69 147 19 278 216 14
158435 75 88 273 127 154 263 32 267 185 117 59 95 235 71 258 27 177 261 117 144 83
158530 267 228 66 211 52 48 22 172 171 39 144 168 145 62 143 36 250 86 120 234 50
1586133 180 70 84 247 277 280 131 137 10 162 161 140 142 14 188 11 141 274 63 164
158734 97 193 16 104 198 63 79 200 21 151 173 192 37 272 148 41 59 10 120 149 216
158857 138 227 45 213 205 68 126 175 150 109 118 38 208 158 93 124 217 78 263 74
1589152 109 75 89 56 201 153 46 149 215 120 191 101 262 96 257 133 52 133 137 248
1590213 9 183 202 217 274 148 279 110 139 163 55 265 270 275 84 8 162 204 89 13 252
15911 89 209 137 206 47 85 98 172 256 154 220 210 115 101 23 108 181 91 209 94 103
1592176 1 4 94 61 10 77 46 64 100 44 149 258 69 62 185 202 174 171 277 195 16 61
1593249 192 122 106 70 83 29 49 67 147 62 100 87 98 129 26 2 136 270 37 33 160 246
159417 40 81 115 144 126 260 138 185 160 8 247 38 165 55 222 40 123 68 211 9 226
1595151 88 77 242 230 24 2 25 219 189 271 254 197 212 30 224 279 195 254 239 97 108
159628 28 156 93 167 166 230 220 168 103 177 65 232 220 125 25 262 138 142 57 137
1597163 98 87 141 78 178 240 76 67 232 177 22 129 68 168 60 74 67 275 280 174 86
1598162 119 255 218 210 158 50 175 65 275 42 277 238 119 59 52 5 73 20 214 99 66
1599254 1 46 106 266 249 107 7 30 28 113 271 15 82 136 269 100 240 34 182 27 92 146
160041 102 240 272 233 156 135 52 90 188 96 129 69 105 134 73 131 265 228 109 160
1601204 132 116 123 85 183 6 51 69 190 122 149 173 235 267 143 232 135 10 205 264
160211 99 108 139 206 4 136 227 88 35 76 25 66 253 218 253 261 202 132 5 72 237 140
1603203 ^
1604620 0 279 262 51 261 30 224 234 244 102 151 3 155 112 161 9 56 112 165 249 105
1605243 77 157 23 44 216 12 140 124 217 33 29 203 62 165 122 19 193 56 116 122 15
1606236 7 268 75 242 183 71 129 220 125 238 70 108 48 46 258 221 15 232 50 84 227
1607195 127 153 45 81 135 121 125 107 27 157 179 241 166 139 99 88 188 53 24 196
1608148 190 272 61 119 79 224 103 201 151 282 198 63 30 97 148 194 229 110 250 126
1609132 156 2 7 137 32 8 31 118 37 138 209 94 60 225 128 47 279 110 94 212 182 177
161043 43 166 12 13 38 32 12 271 167 33 185 117 12 144 81 266 164 76 259 115 101
1611261 157 27 1 265 143 187 32 135 117 168 58 31 245 123 40 230 135 244 254 108 52
16123 24 69 62 140 251 20 83 50 244 98 194 102 24 65 105 91 120 256 27 132 25 242
161356 268 79 199 84 202 41 128 43 39 209 246 17 274 259 242 187 28 178 68 37 11
1614123 192 187 184 92 18 16 253 87 163 207 179 85 252 41 255 129 89 82 4 201 20
1615239 247 59 77 153 66 278 85 248 84 71 281 177 174 86 117 16 101 130 114 76 132
161629 199 105 116 274 255 2 3 180 266 160 119 210 267 54 70 104 91 145 127 26 107
161731 114 80 89 78 47 152 24 44 191 141 141 14 211 161 140 99 63 34 54 197 42 276
161818 168 210 136 11 119 235 138 53 180 110 246 169 231 25 90 99 219 231 152 176 1
1619240 272 188 205 264 245 144 237 180 262 203 218 79 72 146 152 20 87 7 10 229
1620241 10 77 1 109 229 237 53 176 153 197 38 36 117 37 15 80 93 35 96 219 100 109
1621225 280 4 45 106 6 120 100 113 182 181 92 14 59 204 239 251 16 126 1 113 186
1622138 184 223 61 115 122 175 107 6 243 81 114 207 175 128 68 193 208 73 171 146
1623148 63 186 11 98 38 188 74 221 146 275 149 88 32 139 74 217 189 226 18 41 124
162486 273 78 51 109 73 40 103 49 194 233 67 16 257 44 64 55 91 276 170 125 111 267
162558 27 5 222 192 35 227 43 170 252 197 169 79 68 41 251 172 40 234 92 145 102
1626155 108 204 243 208 200 257 48 21 104 222 40 78 178 195 123 196 144 233 223 213
162772 23 23 19 62 13 165 118 62 9 208 69 214 97 17 151 130 241 162 34 50 240 141
1628145 254 112 9 52 155 264 118 58 52 159 221 19 189 99 215 274 103 45 237 49 219
1629104 66 126 128 199 236 159 225 124 90 230 262 47 21 129 93 39 53 49 67 147 17
1630278 216 8 35 75 86 269 121 150 261 26 267 185 113 55 95 233 71 256 23 175 259
1631111 144 77 26 263 228 64 207 48 42 18 172 167 37 142 166 143 56 137 36 248 80
1632114 232 46 127 257 ^
1633605 1 58 76 243 273 280 131 125 6 162 161 132 142 14 184 3 141 270 51 160 26 89
1634189 4 92 198 55 67 192 13 143 173 192 25 268 136 37 55 2 112 137 208 45 130 227
163533 213 201 64 118 167 150 101 106 30 204 150 89 124 209 74 263 70 148 109 63 77
163652 201 141 38 149 215 116 187 89 254 84 253 133 40 129 133 248 209 9 183 194
1637213 266 144 279 102 135 163 47 265 270 271 80 8 154 204 85 9 248 274 89 201 129
1638198 43 85 86 168 256 154 216 210 115 93 19 108 177 87 209 86 103 176 278 281 82
163953 10 69 42 56 96 40 141 258 69 54 181 202 170 171 277 187 12 49 245 188 118
1640102 70 83 29 45 67 139 58 88 83 94 125 18 2 124 262 29 33 160 246 9 28 69 107
1641136 114 260 126 177 152 4 247 38 161 55 222 32 119 273 60 211 1 226 147 80 73
1642234 222 20 279 25 215 181 267 250 189 212 30 216 275 195 254 239 93 96 28 16
1643152 81 167 162 226 212 160 91 169 65 224 220 117 281 17 258 134 134 57 137 155
164490 75 137 78 170 236 72 63 232 177 22 129 68 168 48 74 55 275 272 174 78 158
1645111 251 218 202 158 46 171 57 267 30 269 230 107 59 52 278 61 20 214 87 54 246
1646282 46 106 262 249 95 284 26 24 109 271 15 70 136 269 100 232 22 182 23 80 138
164729 98 240 264 229 156 131 48 86 180 96 117 61 97 134 69 119 261 220 105 156 196
1648128 104 115 81 179 2 47 57 190 110 145 165 235 263 135 228 127 283 205 256 284
164991 104 127 206 132 219 76 23 68 13 66 253 210 245 253 198 120 5 68 233 128 92
1650275 260 49 257 28 224 232 242 102 147 3 153 110 157 5 56 108 165 247 103 241 73
1651157 17 38 214 10 134 122 217 31 25 203 56 161 120 17 193 54 116 122 9 236 7 268
165271 242 179 67 127 218 125 238 64 106 42 44 256 219 11 228 50 78 223 191 127 153
165345 77 129 121 123 103 21 153 175 237 166 133 93 84 188 53 22 194 148 186 268 59
1654117 73 222 97 199 149 280 196 63 24 97 146 194 225 106 250 124 132 154 281 5
1655133 28 4 27 118 37 132 207 94 60 223 126 47 277 110 92 210 180 173 37 43 162 6
16567 36 26 12 269 165 27 183 117 8 142 79 264 164 76 255 113 101 261 155 25 280
1657261 143 185 32 131 113 166 56 31 245 123 38 226 135 240 252 104 50 1 18 67 62
1658138 249 18 79 44 244 94 190 98 20 59 105 91 116 252 27 130 19 238 52 266 79 199
165984 200 35 128 39 35 205 244 17 270 259 240 187 24 174 66 33 5 121 188 183 182
166088 18 14 249 83 159 205 179 79 252 186 ^
1661615 0 255 121 77 82 283 193 8 235 239 47 73 145 54 274 77 240 80 59 273 173 170
166286 113 16 97 122 110 68 124 25 191 93 112 270 247 281 278 172 266 152 119 206
1663263 46 62 92 79 133 119 26 95 27 106 80 81 70 39 148 24 44 191 137 129 2 203
1664157 140 99 59 30 54 189 42 276 14 160 202 124 3 107 227 134 45 180 106 238 165
1665223 17 86 91 219 231 144 172 1 236 272 184 201 264 237 132 237 176 254 195 210
166671 72 134 152 12 87 282 2 225 241 6 77 284 97 229 229 49 168 149 193 30 32 105
166725 11 76 93 27 84 283 215 92 101 217 272 4 33 94 281 120 88 113 174 181 275 88
16686 55 200 231 251 4 118 280 109 186 138 184 223 61 103 110 175 107 6 235 81 114
1669207 167 116 56 189 200 73 167 138 140 55 178 11 98 26 180 62 221 146 267 141 88
167028 139 66 209 189 222 6 33 116 78 273 66 51 105 69 28 95 49 190 233 59 8 257 36
167164 51 83 272 162 117 111 259 58 19 1 214 188 31 223 39 170 244 197 169 75 60 41
1672243 164 32 234 92 145 98 155 96 196 243 208 200 253 48 21 96 218 40 74 178 191
1673115 196 136 225 219 209 60 19 23 11 54 9 161 106 58 284 204 61 210 93 5 151 130
1674237 154 34 42 232 133 141 246 112 5 44 147 256 110 46 40 159 213 19 181 95 207
1675274 99 37 233 37 211 104 58 126 120 195 232 155 225 112 90 230 262 35 9 117 89
167639 41 41 63 147 13 278 216 283 35 75 82 261 109 142 257 14 267 185 105 47 95
1677229 71 252 15 171 255 99 144 65 18 255 228 60 199 40 30 10 172 159 33 138 162
1678139 44 125 36 244 68 102 228 38 115 174 52 72 241 271 280 131 119 4 162 161 128
1679142 14 182 286 141 268 45 158 22 85 187 285 86 198 51 61 188 9 139 173 192 19
1680266 130 35 53 285 108 131 204 39 126 227 27 213 199 62 114 163 150 97 100 26
1681202 146 87 124 205 72 263 68 146 109 57 71 50 201 135 34 149 215 114 185 83 250
168278 251 133 34 127 131 248 207 9 183 190 211 262 142 279 98 133 163 43 265 270
1683269 78 8 150 204 83 7 246 270 89 197 125 194 41 85 80 166 256 154 214 210 115
168489 17 108 175 85 209 82 103 176 276 279 76 49 10 65 40 52 94 38 137 258 69 50
1685179 202 168 171 277 183 10 43 243 186 116 100 70 83 29 43 67 135 56 82 81 92
1686123 14 2 118 258 25 33 160 246 5 22 63 103 132 108 260 120 173 148 2 247 38 159
168755 222 28 117 269 56 211 284 226 145 76 71 230 218 18 277 25 213 177 265 248
1688185 212 30 212 273 195 254 239 91 90 28 10 150 75 167 160 224 175 ^
1689613 0 152 79 161 65 216 220 109 281 9 254 130 126 57 137 147 82 63 133 78 162
1690232 68 59 232 177 22 129 68 168 36 74 43 275 264 174 70 154 103 247 218 194 158
169142 167 49 259 18 261 222 95 59 52 270 49 20 214 75 42 238 282 46 106 258 249 83
1692280 22 20 105 271 15 58 136 269 100 224 10 182 19 68 130 17 94 240 256 225 156
1693127 44 82 172 96 105 53 89 134 65 107 257 212 101 152 188 124 92 107 77 175 287
169443 45 190 98 141 157 235 259 127 224 119 275 205 248 276 83 100 115 206 285 128
1695211 64 11 60 1 66 253 202 237 245 194 108 5 64 229 116 84 267 256 45 249 24 224
1696228 238 102 139 3 149 106 149 286 56 100 165 243 99 237 65 157 5 26 210 6 122
1697118 217 27 17 203 44 153 116 13 193 50 116 122 286 236 7 268 63 242 171 59 123
1698214 125 238 52 102 30 40 252 215 3 220 50 66 215 183 127 153 45 69 117 121 119
169995 9 145 167 229 166 121 81 76 188 53 18 190 148 178 260 55 113 61 218 85 195
1700145 276 192 63 12 97 142 194 217 98 250 120 132 150 273 1 125 20 285 19 118 37
1701120 203 94 60 219 122 47 273 110 88 206 176 165 25 43 154 283 284 32 14 12 265
1702161 15 179 117 138 75 260 164 76 247 109 101 261 151 21 272 253 143 181 32 123
1703105 162 52 31 245 123 34 218 135 232 248 96 46 286 6 63 62 134 245 14 71 32 244
170486 182 90 12 47 105 91 108 244 27 126 7 230 44 262 79 199 84 196 23 128 31 27
1705197 240 17 262 259 236 187 16 166 62 25 282 117 180 175 178 80 18 10 241 75 151
1706201 179 67 252 35 255 117 71 82 281 189 2 233 235 41 71 141 48 272 73 236 78 53
1707269 171 168 86 111 16 95 118 108 64 120 23 187 87 110 268 243 279 274 168 266
1708148 119 204 261 42 58 86 73 127 115 26 89 25 102 80 77 66 35 146 24 44 191 135
1709123 285 199 155 140 99 57 28 54 185 42 276 12 156 198 118 288 101 223 132 41
1710180 104 234 163 219 13 84 87 219 231 140 170 1 234 272 182 199 264 233 126 237
1711174 250 191 206 67 72 128 152 8 87 278 287 223 241 4 77 284 91 229 225 47 164
1712147 191 26 30 99 19 9 74 93 23 78 283 213 88 97 213 268 4 27 88 277 120 82 113
1713170 181 271 86 2 53 198 227 251 287 114 278 107 186 138 184 223 61 97 104 175
1714107 6 231 81 114 207 163 110 50 187 196 73 165 134 136 51 174 11 98 20 176 56
1715221 146 263 137 88 26 139 62 205 189 220 29 112 74 273 60 51 103 67 22 91 49
1716188 233 55 4 257 32 64 49 79 270 158 113 111 255 58 15 288 210 213 ^
1717624 1 28 220 36 170 238 197 169 72 54 41 237 158 26 234 92 145 95 155 87 190
1718243 208 200 250 48 21 90 215 40 71 178 188 109 196 130 219 216 206 51 16 23 5
171948 6 158 97 55 278 201 55 207 90 286 151 130 234 148 34 36 226 127 138 240 112
17202 38 141 250 104 37 31 159 207 19 175 92 201 274 96 31 230 28 205 104 52 126
1721114 192 229 152 225 103 90 230 262 26 108 86 39 32 35 60 147 10 278 216 277 35
172275 79 255 100 136 254 5 267 185 99 41 95 226 71 249 9 168 252 90 144 56 12 249
1723228 57 193 34 21 4 172 153 30 135 159 136 35 116 36 241 59 93 225 32 106 171 43
172466 238 268 280 131 110 1 162 161 122 142 14 179 283 141 265 36 155 16 79 184
1725279 77 198 45 52 182 3 133 173 192 10 263 121 32 50 282 102 122 198 30 120 227
172618 213 196 59 108 157 150 91 91 20 199 140 84 124 199 69 263 65 143 109 48 62
172747 201 126 28 149 215 111 182 74 244 69 248 133 25 124 128 248 204 9 183 184
1728208 256 139 279 92 130 163 37 265 270 266 75 8 144 204 80 4 243 264 89 191 119
1729188 38 85 71 163 256 154 211 210 115 83 14 108 172 82 209 76 103 176 273 276 67
173043 10 59 37 46 91 35 131 258 69 44 176 202 165 171 277 177 7 34 240 183 113 97
173170 83 29 40 67 129 53 73 78 89 120 8 2 109 252 19 33 160 246 289 13 54 97 126
173299 260 111 167 142 289 247 38 156 55 222 22 114 263 50 211 281 226 142 70 68
1733224 212 15 274 25 210 171 262 245 179 212 30 206 270 195 254 239 88 81 28 1 147
173466 167 157 221 202 150 76 159 65 214 220 107 281 7 253 129 124 57 137 145 80 60
1735132 78 160 231 67 58 232 177 22 129 68 168 33 74 40 275 262 174 68 153 101 246
1736218 192 158 41 166 47 257 15 259 220 92 59 52 268 46 20 214 72 39 236 282 46
1737106 257 249 80 279 21 19 104 271 15 55 136 269 100 222 7 182 18 65 128 14 93
1738240 254 224 156 126 43 81 170 96 102 51 87 134 64 104 256 210 100 151 186 123
173989 105 76 174 287 42 42 190 95 140 155 235 258 125 223 117 273 205 246 274 81
174099 112 206 285 127 209 61 8 58 288 66 253 200 235 243 193 105 5 63 228 113 82
1741265 255 44 247 23 224 227 237 102 137 3 148 105 147 285 56 98 165 242 98 236 63
1742157 2 23 209 5 119 117 217 26 15 203 41 151 115 12 193 49 116 122 284 236 7 268
174361 242 169 57 122 213 125 238 49 101 27 39 251 214 1 218 50 63 213 181 127 153
174445 67 114 121 118 93 6 143 165 227 166 118 78 74 188 53 17 189 148 176 258 54
1745112 58 217 82 194 144 275 191 141 ^
1746628 1 3 97 139 194 211 92 250 117 132 147 267 290 119 14 282 13 118 37 111 200
174794 60 216 119 47 270 110 85 203 173 159 16 43 148 277 278 29 5 12 262 158 6 176
1748117 286 135 72 257 164 76 241 106 101 261 148 18 266 247 143 178 32 117 99 159
174949 31 245 123 31 212 135 226 245 90 43 286 289 60 62 131 242 11 65 23 244 80
1750176 84 6 38 105 91 102 238 27 123 290 224 38 259 79 199 84 193 14 128 25 21 191
1751237 17 256 259 233 187 10 160 59 19 276 114 174 169 175 74 18 7 235 69 145 198
1752179 58 252 32 255 111 62 82 278 183 285 230 229 32 68 135 39 269 67 230 75 44
1753263 168 165 86 108 16 92 112 105 58 114 20 181 78 107 265 237 276 268 162 266
1754142 119 201 258 36 52 77 64 118 109 26 80 22 96 80 71 60 29 143 24 44 191 132
1755114 279 193 152 140 99 54 25 54 179 42 276 9 150 192 109 285 92 217 129 35 180
1756101 228 160 213 7 81 81 219 231 134 167 1 231 272 179 196 264 227 117 237 171
1757244 185 200 61 72 119 152 2 87 272 284 220 241 1 77 284 82 229 219 44 158 144
1758188 20 27 90 10 6 71 93 17 69 283 210 82 91 207 262 4 18 79 271 120 73 113 164
1759181 265 83 288 50 195 221 251 281 108 275 104 186 138 184 223 61 88 95 175 107
17606 225 81 114 207 157 101 41 184 190 73 162 128 130 45 168 11 98 11 170 47 221
1761146 257 131 88 23 139 56 199 189 217 283 23 106 68 273 51 51 100 64 13 85 49
1762185 233 49 290 257 26 64 46 73 267 152 107 111 249 58 9 288 204 183 26 218 34
1763170 234 197 169 70 50 41 233 154 22 234 92 145 93 155 81 186 243 208 200 248 48
176421 86 213 40 69 178 186 105 196 126 215 214 204 45 14 23 1 44 4 156 91 53 274
1765199 51 205 88 282 151 130 232 144 34 32 222 123 136 236 112 34 137 246 100 31
176625 159 203 19 171 90 197 274 94 27 228 22 201 104 48 126 110 190 227 150 225 97
176790 230 262 20 286 102 84 39 26 31 58 147 8 278 216 273 35 75 77 251 94 132 252
1768291 267 185 95 37 95 224 71 247 5 166 250 84 144 50 8 245 228 55 189 30 15 172
1769149 28 133 157 134 29 110 36 239 53 87 223 28 100 169 37 62 236 266 280 131 104
1770291 162 161 118 142 14 177 281 141 263 30 153 12 75 182 275 71 198 41 46 178
1771291 129 173 192 4 261 115 30 48 280 98 116 194 24 116 227 12 213 194 57 104 153
1772150 87 85 16 197 136 82 124 195 67 263 63 141 109 42 56 45 201 120 24 149 215
1773109 180 68 240 63 246 133 19 122 126 248 202 9 183 180 206 252 137 279 88 128
1774163 33 265 270 264 73 8 140 204 78 2 241 76 ^
1775622 0 89 183 111 180 34 85 59 159 256 154 207 210 115 75 10 108 168 78 209 68
1776103 176 269 272 55 35 10 51 33 38 87 31 123 258 69 36 172 202 161 171 277 169 3
177722 236 179 109 93 70 83 29 36 67 121 49 61 74 85 116 2 97 244 11 33 160 246 285
17781 42 89 118 87 260 99 159 134 289 247 38 152 55 222 14 110 255 42 211 277 226
1779138 62 64 216 204 11 270 25 206 163 258 241 171 212 30 198 266 195 254 239 84
178069 28 283 143 54 167 153 217 194 142 64 151 65 206 220 99 281 293 249 125 116
178157 137 137 72 48 128 78 152 227 63 54 232 177 22 129 68 168 21 74 28 275 254
1782174 60 149 93 242 218 184 158 37 162 39 249 3 251 212 80 59 52 260 34 20 214 60
178327 228 282 46 106 253 249 68 275 17 15 100 271 15 43 136 269 100 214 289 182 14
178453 120 2 89 240 246 220 156 122 39 77 162 96 90 43 79 134 60 92 252 202 96 147
1785178 119 77 97 72 170 287 38 30 190 83 136 147 235 254 117 219 109 265 205 238
1786266 73 95 100 206 285 123 201 49 290 50 280 66 253 192 227 235 189 93 5 59 224
1787101 74 257 251 40 239 19 224 223 233 102 129 3 144 101 139 281 56 90 165 238 94
1788232 55 157 284 11 205 1 107 113 217 22 7 203 29 143 111 8 193 45 116 122 276
1789236 7 268 53 242 161 49 118 209 125 238 37 97 15 35 247 210 287 210 50 51 205
1790173 127 153 45 59 102 121 114 85 288 135 157 219 166 106 66 66 188 53 13 185
1791148 168 250 50 108 46 213 70 190 140 271 187 63 291 97 137 194 207 88 250 115
1792132 145 263 290 115 10 280 9 118 37 105 198 94 60 214 117 47 268 110 83 201 171
1793155 10 43 144 273 274 27 293 12 260 156 174 117 284 133 70 255 164 76 237 104
1794101 261 146 16 262 243 143 176 32 113 95 157 47 31 245 123 29 208 135 222 243
179586 41 286 285 58 62 129 240 9 61 17 244 76 172 80 2 32 105 91 98 234 27 121 286
1796220 34 257 79 199 84 191 8 128 21 17 187 235 17 252 259 231 187 6 156 57 15 272
1797112 170 165 173 70 18 5 231 65 141 196 179 52 252 30 255 107 56 82 276 179 281
1798228 225 26 66 131 33 267 63 226 73 38 259 166 163 86 106 16 90 108 103 54 110
179918 177 72 105 263 233 274 264 158 266 138 119 199 256 32 48 71 58 112 105 26 74
180020 92 80 67 56 25 141 24 44 191 130 108 275 189 150 140 99 52 23 54 175 42 276
18017 146 188 103 283 86 213 127 31 180 99 224 158 209 3 79 77 219 231 130 165 1
1802229 272 177 194 264 223 111 237 169 240 181 196 57 72 113 152 292 87 268 282
1803218 241 293 77 284 76 229 80 ^
1804635 1 40 150 140 184 12 23 78 294 2 67 93 9 57 283 206 74 83 199 254 4 6 67 263
1805120 61 113 156 181 257 79 284 46 191 213 251 273 100 271 100 186 138 184 223 61
180676 83 175 107 6 217 81 114 207 149 89 29 180 182 73 158 120 122 37 160 11 98
1807295 162 35 221 146 249 123 88 19 139 48 191 189 213 275 15 98 60 273 39 51 96
180860 1 77 49 181 233 41 286 257 18 64 42 65 263 144 99 111 241 58 1 288 196 179
180922 214 30 170 226 197 169 66 42 41 225 146 14 234 92 145 89 155 69 178 243 208
1810200 244 48 21 78 209 40 65 178 182 97 196 118 207 210 200 33 10 23 289 36 152
181179 49 266 195 43 201 84 274 151 130 228 136 34 24 214 115 132 228 112 292 26
1812129 238 92 19 13 159 195 19 163 86 189 274 90 19 224 10 193 104 40 126 102 186
1813223 146 225 85 90 230 262 8 278 90 80 39 14 23 54 147 4 278 216 265 35 75 73
1814243 82 124 248 283 267 185 87 29 95 220 71 243 293 162 246 72 144 38 237 228 51
1815181 22 3 288 172 141 24 129 153 130 17 98 36 235 41 75 219 20 88 165 25 54 232
1816262 280 131 92 291 162 161 110 142 14 173 277 141 259 18 149 4 67 178 267 59
1817198 33 34 170 287 121 173 192 288 257 103 26 44 276 90 104 186 12 108 227 213
1818190 53 96 145 150 79 73 8 193 128 78 124 187 63 263 59 137 109 30 44 41 201 108
181916 149 215 105 176 56 232 51 242 133 7 118 122 248 198 9 183 172 202 244 133
1820279 80 124 163 25 265 270 260 69 8 132 204 74 294 237 252 89 179 107 176 32 85
182153 157 256 154 205 210 115 71 8 108 166 76 209 64 103 176 267 270 49 31 10 47
182231 34 85 29 119 258 69 32 170 202 159 171 277 165 1 16 234 177 107 91 70 83 29
182334 67 117 47 55 72 83 114 292 2 91 240 7 33 160 246 283 291 36 85 114 81 260 93
1824155 130 289 247 38 150 55 222 10 108 251 38 211 275 226 136 58 62 212 200 9 268
182525 204 159 256 239 167 212 30 194 264 195 254 239 82 63 28 279 141 48 167 151
1826215 190 138 58 147 65 202 220 95 281 291 247 123 112 57 137 133 68 42 126 78
1827148 225 61 52 232 177 22 129 68 168 15 74 22 275 250 174 56 147 89 240 218 180
1828158 35 160 35 245 293 247 208 74 59 52 256 28 20 214 54 21 224 282 46 106 251
1829249 62 273 15 13 98 271 15 37 136 269 100 210 285 182 12 47 116 292 87 240 242
1830218 156 120 37 75 158 96 84 39 75 134 58 86 250 198 94 145 174 117 71 93 70 168
1831287 36 24 190 77 134 143 235 252 113 217 105 261 205 234 262 69 93 94 206 285
1832121 197 43 286 46 276 66 253 188 223 231 187 87 5 57 222 95 285 ^
1833636 0 251 248 37 233 16 224 220 230 102 123 3 141 98 133 278 56 84 165 235 91
1834229 49 157 278 2 202 295 98 110 217 19 1 203 20 137 108 5 193 42 116 122 270
1835236 7 268 47 242 155 43 115 206 125 238 28 94 6 32 244 207 284 204 50 42 199
1836167 127 153 45 53 93 121 111 79 282 129 151 213 166 97 57 60 188 53 10 182 148
1837162 244 47 105 37 210 61 187 137 268 184 63 285 97 134 194 201 82 250 112 132
1838142 257 290 109 4 277 3 118 37 96 195 94 60 211 114 47 265 110 80 198 168 149 1
183943 138 267 268 24 287 12 257 153 288 171 117 281 130 67 252 164 76 231 101 101
1840261 143 13 256 237 143 173 32 107 89 154 44 31 245 123 26 202 135 216 240 80 38
1841286 279 55 62 126 237 6 55 8 244 70 166 74 293 23 105 91 92 228 27 118 280 214
184228 254 79 199 84 188 296 128 15 11 181 232 17 246 259 228 187 150 54 9 266 109
1843164 159 170 64 18 2 225 59 135 193 179 43 252 27 255 101 47 82 273 173 275 225
1844219 17 63 125 24 264 57 220 70 29 253 163 160 86 103 16 87 102 100 48 104 15
1845171 63 102 260 227 271 258 152 266 132 119 196 253 26 42 62 49 103 99 26 65 17
184686 80 61 50 19 138 24 44 191 127 99 269 183 147 140 99 49 20 54 169 42 276 4
1847140 182 94 280 77 207 124 25 180 96 218 155 203 294 76 71 219 231 124 162 1 226
1848272 174 191 264 217 102 237 166 234 175 190 51 72 104 152 289 87 262 279 215
1849241 293 77 284 67 229 209 39 148 139 183 10 22 75 292 1 66 93 7 54 283 205 72
185081 197 252 4 3 64 261 120 58 113 154 181 255 78 283 45 190 211 251 271 98 270
185199 186 138 184 223 61 73 80 175 107 6 215 81 114 207 147 86 26 179 180 73 157
1852118 120 35 158 11 98 293 160 32 221 146 247 121 88 18 139 46 189 189 212 273 13
185396 58 273 36 51 95 59 295 75 49 180 233 39 285 257 16 64 41 63 262 142 97 111
1854239 58 296 288 194 178 21 213 29 170 224 197 169 65 40 41 223 144 12 234 92 145
185588 155 66 176 243 208 200 243 48 21 76 208 40 64 178 181 95 196 116 205 209 199
185630 9 23 288 34 296 151 76 48 264 194 41 200 83 272 151 130 227 134 34 22 212
1857113 131 226 112 292 24 127 236 90 16 10 159 193 19 161 85 187 274 89 17 223 7
1858191 104 38 126 100 185 222 145 225 82 90 230 262 5 276 87 79 39 11 21 53 147 3
1859278 216 263 35 75 72 241 79 122 247 281 267 185 85 27 95 219 71 242 292 161 245
186069 144 35 295 235 228 50 179 20 287 172 139 23 128 152 129 14 95 36 234 38 72
1861218 18 85 164 22 52 231 261 280 131 89 291 162 161 108 142 14 172 276 91 ^
1862635 1 256 9 146 297 61 175 261 50 198 27 25 164 284 115 173 192 282 254 94 23
186341 273 84 95 180 3 102 227 290 213 187 50 90 139 150 73 64 2 190 122 75 124 181
186460 263 56 134 109 21 35 38 201 99 10 149 215 102 173 47 226 42 239 133 297 115
1865119 248 195 9 183 166 199 238 130 279 74 121 163 19 265 270 257 66 8 126 204 71
1866294 234 246 89 173 101 170 29 85 44 154 256 154 202 210 115 65 5 108 163 73 209
186758 103 176 264 267 40 25 10 41 28 28 82 26 113 258 69 26 167 202 156 171 277
1868159 297 7 231 174 104 88 70 83 29 31 67 111 44 46 69 80 111 289 2 82 234 1 33
1869160 246 280 285 27 79 108 72 260 84 149 124 289 247 38 147 55 222 4 105 245 32
1870211 272 226 133 52 59 206 194 6 265 25 201 153 253 236 161 212 30 188 261 195
1871254 239 79 54 28 273 138 39 167 148 212 184 132 49 141 65 196 220 89 281 288
1872244 120 106 57 137 127 62 33 123 78 142 222 58 49 232 177 22 129 68 168 6 74 13
1873275 244 174 50 144 83 237 218 174 158 32 157 29 239 287 241 202 65 59 52 250 19
187420 214 45 12 218 282 46 106 248 249 53 270 12 10 95 271 15 28 136 269 100 204
1875279 182 9 38 110 286 84 240 236 215 156 117 34 72 152 96 75 33 69 134 55 77 247
1876192 91 142 168 114 62 87 67 165 287 33 15 190 68 131 137 235 249 107 214 99 255
1877205 228 256 63 90 85 206 285 118 191 34 280 40 270 66 253 182 217 225 184 78 5
187854 219 86 64 247 246 35 229 14 224 218 228 102 119 3 139 96 129 276 56 80 165
1879233 89 227 45 157 274 295 200 295 92 108 217 17 296 203 14 133 106 3 193 40 116
1880122 266 236 7 268 43 242 151 39 113 204 125 238 22 92 30 242 205 282 200 50 36
1881195 163 127 153 45 49 87 121 109 75 278 125 147 209 166 91 51 56 188 53 8 180
1882148 158 240 45 103 31 208 55 185 135 266 182 63 281 97 132 194 197 78 250 110
1883132 140 253 290 105 275 298 118 37 90 193 94 60 209 112 47 263 110 78 196 166
1884145 294 43 134 263 264 22 283 12 255 151 284 169 117 279 128 65 250 164 76 227
188599 101 261 141 11 252 233 143 171 32 103 85 152 42 31 245 123 24 198 135 212
1886238 76 36 286 275 53 62 124 235 4 51 2 244 66 162 70 291 17 105 91 88 224 27
1887116 276 210 24 252 79 199 84 186 292 128 11 7 177 230 17 242 259 226 187 295
1888146 52 5 262 107 160 155 168 60 18 221 55 131 191 179 37 252 25 255 97 41 82
1889271 169 271 223 215 11 61 121 18 262 53 216 68 23 249 161 158 86 101 16 85 98
189098 44 100 13 167 57 100 258 223 269 254 148 266 128 119 194 251 22 38 56 43 275
1891^
1892642 0 91 26 53 13 78 80 53 42 11 134 24 44 191 123 87 261 175 143 140 99 45 16
189354 161 42 276 132 174 82 276 65 199 120 17 180 92 210 151 195 290 72 63 219 231
1894116 158 1 222 272 170 187 264 209 90 237 162 226 167 182 43 72 92 152 285 87
1895254 275 211 241 293 77 284 55 229 201 35 140 135 179 2 18 63 284 298 62 93 300
189642 283 201 64 73 189 244 4 292 52 253 120 46 113 146 181 247 74 279 41 186 203
1897251 263 90 266 95 186 138 184 223 61 61 68 175 107 6 207 81 114 207 139 74 14
1898175 172 73 153 110 112 27 150 11 98 285 152 20 221 146 239 113 88 14 139 38 181
1899189 208 265 5 88 50 273 24 51 91 55 287 67 49 176 233 31 281 257 8 64 37 55 258
1900134 89 111 231 58 292 288 186 174 17 209 25 170 216 197 169 61 32 41 215 136 4
1901234 92 145 84 155 54 168 243 208 200 239 48 21 68 204 40 60 178 177 87 196 108
1902197 205 195 18 5 23 284 26 296 147 64 44 256 190 33 196 79 264 151 130 223 126
190334 14 204 105 127 218 112 292 16 119 228 82 4 299 159 185 19 153 81 179 274 85
19049 219 296 183 104 30 126 92 181 218 141 225 70 90 230 262 294 268 75 75 39 300
190513 49 147 300 278 216 255 35 75 68 233 67 114 243 273 267 185 77 19 95 215 71
1906238 288 157 241 57 144 23 291 227 228 46 171 12 289 283 172 131 19 124 148 125
19072 83 36 230 26 60 214 10 73 160 10 44 227 257 280 131 77 291 162 161 100 142 14
1908168 272 141 254 3 144 295 57 173 257 44 198 23 19 160 282 111 173 192 278 252
190988 21 39 271 80 89 176 298 98 227 286 213 185 48 86 135 150 69 58 299 188 118
191073 124 177 58 263 54 132 109 15 29 36 201 93 6 149 215 100 171 41 222 36 237
1911133 293 113 117 248 193 9 183 162 197 234 128 279 70 119 163 15 265 270 255 64
19128 122 204 69 294 232 242 89 169 97 166 27 85 38 152 256 154 200 210 115 61 3
1913108 161 71 209 54 103 176 262 265 34 21 10 37 26 24 80 24 109 258 69 22 165 202
1914154 171 277 155 297 1 229 172 102 86 70 83 29 29 67 107 42 40 67 78 109 287 2
191576 230 298 33 160 246 278 281 21 75 104 66 260 78 145 120 289 247 38 145 55 222
1916103 241 28 211 270 226 131 48 57 202 190 4 263 25 199 149 251 234 157 212 30
1917184 259 195 254 239 77 48 28 269 136 33 167 146 210 180 128 43 137 65 192 220
191885 281 286 242 118 102 57 137 123 58 27 121 78 138 220 56 47 232 177 22 129 68
1919168 74 7 275 240 174 46 142 79 235 218 170 158 30 155 25 235 283 237 198 59 59
192052 246 13 20 214 39 6 214 282 46 106 246 249 47 268 10 8 93 271 15 22 136 269
1921100 200 275 42 ^
1922644 0 6 29 104 280 81 240 230 212 156 114 31 69 146 96 66 27 63 134 52 68 244
1923186 88 139 162 111 53 81 64 162 287 30 6 190 59 128 131 235 246 101 211 93 249
1924205 222 250 57 87 76 206 285 115 185 25 274 34 264 66 253 176 211 219 181 69 5
192551 216 77 58 241 243 32 223 11 224 215 225 102 113 3 136 93 123 273 56 74 165
1926230 86 224 39 157 268 289 197 295 83 105 217 14 293 203 5 127 103 193 37 116
1927122 260 236 7 268 37 242 145 33 110 201 125 238 13 89 293 27 239 202 279 194 50
192827 189 157 127 153 45 43 78 121 106 69 272 119 141 203 166 82 42 50 188 53 5
1929177 148 152 234 42 100 22 205 46 182 132 263 179 63 275 97 129 194 191 72 250
1930107 132 137 247 290 99 296 272 295 118 37 81 190 94 60 206 109 47 260 110 75
1931193 163 139 288 43 128 257 258 19 277 12 252 148 278 166 117 276 125 62 247 164
193276 221 96 101 261 138 8 246 227 143 168 32 97 79 149 39 31 245 123 21 192 135
1933206 235 70 33 286 269 50 62 121 232 1 45 295 244 60 156 64 288 8 105 91 82 218
193427 113 270 204 18 249 79 199 84 183 286 128 5 1 171 227 17 236 259 223 187 292
1935140 49 301 256 104 154 149 165 54 18 299 215 49 125 188 179 28 252 22 255 91 32
193682 268 163 265 220 209 2 58 115 9 259 47 210 65 14 243 158 155 86 98 16 82 92
193795 38 94 10 161 48 97 255 217 266 248 142 266 122 119 191 248 16 32 47 34 88 89
193826 50 12 76 80 51 40 9 133 24 44 191 122 84 259 173 142 140 99 44 15 54 159 42
1939276 301 130 172 79 275 62 197 119 15 180 91 208 150 193 289 71 61 219 231 114
1940157 1 221 272 169 186 264 207 87 237 161 224 165 180 41 72 89 152 284 87 252
1941274 210 241 293 77 284 52 229 199 34 138 134 178 17 60 282 298 61 93 299 39 283
1942200 62 71 187 242 4 290 49 251 120 43 113 144 181 245 73 278 40 185 201 251 261
194388 265 94 186 138 184 223 61 58 65 175 107 6 205 81 114 207 137 71 11 174 170
194473 152 108 110 25 148 11 98 283 150 17 221 146 237 111 88 13 139 36 179 189 207
1945263 3 86 48 273 21 51 90 54 285 65 49 175 233 29 280 257 6 64 36 53 257 132 87
1946111 229 58 291 288 184 173 16 208 24 170 214 197 169 60 30 41 213 134 2 234 92
1947145 83 155 51 166 243 208 200 238 48 21 66 203 40 59 178 176 85 196 106 195 204
1948194 15 4 23 283 24 296 146 61 43 254 189 31 195 78 262 151 130 222 124 34 12
1949202 103 126 216 112 292 14 117 226 80 1 297 159 183 19 151 80 177 274 84 7 218
1950294 181 104 28 126 90 180 217 140 225 67 90 230 262 292 266 72 74 39 298 11 48
1951147 300 278 216 253 265 ^
1952638 1 75 65 227 58 108 240 267 267 185 71 13 95 212 71 235 285 154 238 48 144
195314 288 221 228 43 165 6 283 280 172 125 16 121 145 122 297 74 36 227 17 51 211
19544 64 157 1 38 224 254 280 131 68 291 162 161 94 142 14 165 269 141 251 298 141
1955292 51 170 251 35 198 17 10 154 279 105 173 192 272 249 79 18 36 268 74 80 170
1956292 92 227 280 213 182 45 80 129 150 63 49 296 185 112 70 124 171 55 263 51 129
1957109 6 20 33 201 84 149 215 97 168 32 216 27 234 133 287 110 114 248 190 9 183
1958156 194 228 125 279 64 116 163 9 265 270 252 61 8 116 204 66 294 229 236 89 163
195991 160 24 85 29 149 256 154 197 210 115 55 108 158 68 209 48 103 176 259 262 25
196015 10 31 23 18 77 21 103 258 69 16 162 202 151 171 277 149 297 296 226 169 99
196183 70 83 29 26 67 101 39 31 64 75 106 284 2 67 224 295 33 160 246 275 275 12 69
196298 57 260 69 139 114 289 247 38 142 55 222 298 100 235 22 211 267 226 128 42 54
1963196 184 1 260 25 196 143 248 231 151 212 30 178 256 195 254 239 74 39 28 263
1964133 24 167 143 207 174 122 34 131 65 186 220 79 281 283 239 115 96 57 137 117
196552 18 118 78 132 217 53 44 232 177 22 129 68 168 295 74 302 275 234 174 40 139
196673 232 218 164 158 27 152 19 229 277 231 192 50 59 52 240 4 20 214 30 301 208
1967282 46 106 243 249 38 265 7 5 90 271 15 13 136 269 100 194 269 182 4 23 100 276
196879 240 226 210 156 112 29 67 142 96 60 23 59 134 50 62 242 182 86 137 158 109
196947 77 62 160 287 28 190 53 126 127 235 244 97 209 89 245 205 218 246 53 85 70
1970206 285 113 181 19 270 30 260 66 253 172 207 215 179 63 5 49 214 71 54 237 241
197130 219 9 224 213 223 102 109 3 134 91 119 271 56 70 165 228 84 222 35 157 264
1972285 195 295 77 103 217 12 291 203 303 123 101 302 193 35 116 122 256 236 7 268
197333 242 141 29 108 199 125 238 7 87 289 25 237 200 277 190 50 21 185 153 127 153
197445 39 72 121 104 65 268 115 137 199 166 76 36 46 188 53 3 175 148 148 230 40 98
197516 203 40 180 130 261 177 63 271 97 127 194 187 68 250 105 132 135 243 290 95
1976294 270 293 118 37 75 188 94 60 204 107 47 258 110 73 191 161 135 284 43 124
1977253 254 17 273 12 250 146 274 164 117 274 123 60 245 164 76 217 94 101 261 136
19786 242 223 143 166 32 93 75 147 37 31 245 123 19 188 135 202 233 66 31 286 265
197948 62 119 230 303 41 291 244 56 152 60 286 2 105 91 78 214 27 111 266 200 14
1980247 79 199 84 181 282 128 1 301 167 225 17 232 259 221 187 290 136 47 299 252
1981102 150 145 163 157 ^
1982653 0 18 299 207 41 117 184 179 16 252 18 255 83 20 82 264 155 257 216 201 296
198354 107 303 255 39 202 61 2 235 154 151 86 94 16 78 84 91 30 86 6 153 36 93 251
1984209 262 240 134 266 114 119 187 244 8 24 35 22 76 81 26 38 8 68 80 43 32 1 129
198524 44 191 118 72 251 165 138 140 99 40 11 54 151 42 276 301 122 164 67 271 50
1986189 115 7 180 87 200 146 185 285 67 53 219 231 106 153 1 217 272 165 182 264
1987199 75 237 157 216 157 172 33 72 77 152 280 87 244 270 206 241 293 77 284 40
1988229 191 30 130 130 174 298 13 48 274 298 57 93 295 27 283 196 54 63 179 234 4
1989282 37 243 120 31 113 136 181 237 69 274 36 181 193 251 253 80 261 90 186 138
1990184 223 61 46 53 175 107 6 197 81 114 207 129 59 305 170 162 73 148 100 102 17
1991140 11 98 275 142 5 221 146 229 103 88 9 139 28 171 189 203 255 301 78 40 273 9
199251 86 50 277 57 49 171 233 21 276 257 304 64 32 45 253 124 79 111 221 58 287
1993288 176 169 12 204 20 170 206 197 169 56 22 41 205 126 300 234 92 145 79 155 39
1994158 243 208 200 234 48 21 58 199 40 55 178 172 77 196 98 187 200 190 3 23 279
199516 296 142 49 39 246 185 23 191 74 254 151 130 218 116 34 4 194 95 122 208 112
1996292 6 109 218 72 295 289 159 175 19 143 76 169 274 80 305 214 286 173 104 20
1997126 82 176 213 136 225 55 90 230 262 284 258 60 70 39 290 3 44 147 300 278 216
1998245 35 75 63 223 52 104 238 263 267 185 67 9 95 210 71 233 283 152 236 42 144 8
1999286 217 228 41 161 2 279 278 172 121 14 119 143 120 293 68 36 225 11 45 209 58
2000155 301 34 222 252 280 131 62 291 162 161 90 142 14 163 267 141 249 294 139 290
200147 168 247 29 198 13 4 150 277 101 173 192 268 247 73 16 34 266 70 74 166 288
200288 227 276 213 180 43 76 125 150 59 43 294 183 108 68 124 167 53 263 49 127 109
200314 31 201 78 302 149 215 95 166 26 212 21 232 133 283 108 112 248 188 9 183 152
2004192 224 123 279 60 114 163 5 265 270 250 59 8 112 204 64 294 227 232 89 159 87
2005156 22 85 23 147 256 154 195 210 115 51 304 108 156 66 209 44 103 176 257 260
200619 11 10 27 21 14 75 19 99 258 69 12 160 202 149 171 277 145 297 292 224 167 97
200781 70 83 29 24 67 97 37 25 62 73 104 282 2 61 220 293 33 160 246 273 271 6 65
200894 51 260 63 135 110 289 247 38 140 55 222 296 98 231 18 211 265 226 126 38 52
2009192 180 305 258 25 194 139 246 229 147 212 30 174 254 195 254 239 72 33 28 259
2010131 18 167 141 205 170 118 28 127 65 182 220 75 281 281 237 113 92 57 137 113
201148 12 116 78 128 215 51 42 232 177 22 129 68 168 291 161 ^
2012653 0 296 275 228 174 34 136 67 229 218 158 158 24 149 13 223 271 225 186 41 59
201352 234 302 20 214 21 295 202 282 46 106 240 249 29 262 4 2 87 271 15 4 136 269
2014100 188 263 182 1 14 94 270 76 240 220 207 156 109 26 64 136 96 51 17 53 134 47
201553 239 176 83 134 152 106 38 71 59 157 287 25 298 190 44 123 121 235 241 91 206
201683 239 205 212 240 47 82 61 206 285 110 175 10 264 24 254 66 253 166 201 209
2017176 54 5 46 211 62 48 231 238 27 213 6 224 210 220 102 103 3 131 88 113 268 56
201864 165 225 81 219 29 157 258 279 192 295 68 100 217 9 288 203 297 117 98 302
2019193 32 116 122 250 236 7 268 27 242 135 23 105 196 125 238 305 84 283 22 234
2020197 274 184 50 12 179 147 127 153 45 33 63 121 101 59 262 109 131 193 166 67 27
202140 188 53 172 148 142 224 37 95 7 200 31 177 127 258 174 63 265 97 124 194 181
202262 250 102 132 132 237 290 89 291 267 290 118 37 66 185 94 60 201 104 47 255
2023110 70 188 158 129 278 43 118 247 248 14 267 12 247 143 268 161 117 271 120 57
2024242 164 76 211 91 101 261 133 3 236 217 143 163 32 87 69 144 34 31 245 123 16
2025182 135 196 230 60 28 286 259 45 62 116 227 303 35 285 244 50 146 54 283 300
2026105 91 72 208 27 108 260 194 8 244 79 199 84 178 276 128 302 298 161 222 17 226
2027259 218 187 287 130 44 296 246 99 144 139 160 44 18 299 205 39 115 183 179 13
2028252 17 255 81 17 82 263 153 255 215 199 294 53 105 301 254 37 200 60 306 233
2029153 150 86 93 16 77 82 90 28 84 5 151 33 92 250 207 261 238 132 266 112 119 186
2030243 6 22 32 19 73 79 26 35 7 66 80 41 30 306 128 24 44 191 117 69 249 163 137
2031140 99 39 10 54 149 42 276 301 120 162 64 270 47 187 114 5 180 86 198 145 183
2032284 66 51 219 231 104 152 1 216 272 164 181 264 197 72 237 156 214 155 170 31
203372 74 152 279 87 242 269 205 241 293 77 284 37 229 189 29 128 129 173 297 12 45
2034272 298 56 93 294 24 283 195 52 61 177 232 4 280 34 241 120 28 113 134 181 235
203568 273 35 180 191 251 251 78 260 89 186 138 184 223 61 43 50 175 107 6 195 81
2036114 207 127 56 303 169 160 73 147 98 100 15 138 11 98 273 140 2 221 146 227 101
203788 8 139 26 169 189 202 253 300 76 38 273 6 51 85 49 275 55 49 170 233 19 275
2038257 303 64 31 43 252 122 77 111 219 58 286 288 174 168 11 203 19 170 204 197
2039169 55 20 41 203 124 299 234 92 145 78 155 36 156 243 208 200 233 48 21 56 198
204040 54 178 171 75 196 96 185 199 189 306 23 278 14 296 141 46 38 244 184 21 190
204173 252 151 130 217 114 34 2 192 93 121 206 112 292 4 107 216 70 293 112 ^
2042646 1 159 169 19 137 73 163 274 77 302 211 280 167 104 14 126 76 173 210 133
2043225 46 90 230 262 278 252 51 67 39 284 306 41 147 300 278 216 239 35 75 60 217
204443 98 235 257 267 185 61 3 95 207 71 230 280 149 233 33 144 308 283 211 228 38
2045155 305 273 275 172 115 11 116 140 117 287 59 36 222 2 36 206 303 49 152 295 28
2046219 249 280 131 53 291 162 161 84 142 14 160 264 141 246 288 136 287 41 165 241
204720 198 7 304 144 274 95 173 192 262 244 64 13 31 263 64 65 160 282 82 227 270
2048213 177 40 70 119 150 53 34 291 180 102 65 124 161 50 263 46 124 109 300 5 28
2049201 69 299 149 215 92 163 17 206 12 229 133 277 105 109 248 185 9 183 146 189
2050218 120 279 54 111 163 308 265 270 247 56 8 106 204 61 294 224 226 89 153 81
2051150 19 85 14 144 256 154 192 210 115 45 304 108 153 63 209 38 103 176 254 257
205210 5 10 21 18 8 72 16 93 258 69 6 157 202 146 171 277 139 297 286 221 164 94 78
205370 83 29 21 67 91 34 16 59 70 101 279 2 52 214 290 33 160 246 270 265 306 59 88
205442 260 54 129 104 289 247 38 137 55 222 293 95 225 12 211 262 226 123 32 49 186
2055174 305 255 25 191 133 243 226 141 212 30 168 251 195 254 239 69 24 28 253 128
20569 167 138 202 164 112 19 121 65 176 220 69 281 278 234 110 86 57 137 107 42 3
2057113 78 122 212 48 39 232 177 22 129 68 168 285 74 292 275 224 174 30 134 63 227
2058218 154 158 22 147 9 219 267 221 182 35 59 52 230 298 20 214 15 291 198 282 46
2059106 238 249 23 260 2 85 271 15 307 136 269 100 184 259 182 308 8 90 266 74 240
2060216 205 156 107 24 62 132 96 45 13 49 134 45 47 237 172 81 132 148 104 32 67 57
2061155 287 23 294 190 38 121 117 235 239 87 204 79 235 205 208 236 43 80 55 206
2062285 108 171 4 260 20 250 66 253 162 197 205 174 48 5 44 209 56 44 227 236 25
2063209 4 224 208 218 102 99 3 129 86 109 266 56 60 165 223 79 217 25 157 254 275
2064190 295 62 98 217 7 286 203 293 113 96 302 193 30 116 122 246 236 7 268 23 242
2065131 19 103 194 125 238 301 82 279 20 232 195 272 180 50 6 175 143 127 153 45 29
206657 121 99 55 258 105 127 189 166 61 21 36 188 53 307 170 148 138 220 35 93 1
2067198 25 175 125 256 172 63 261 97 122 194 177 58 250 100 132 130 233 290 85 289
2068265 288 118 37 60 183 94 60 199 102 47 253 110 68 186 156 125 274 43 114 243
2069244 12 263 12 245 141 264 159 117 269 118 55 240 164 76 207 89 101 261 131 1
2070232 213 143 161 32 83 65 142 32 31 245 123 14 178 135 192 228 56 26 286 255 43
207162 114 225 303 31 281 244 46 142 50 281 296 105 91 238 ^
2072647 0 200 27 104 252 186 240 79 199 84 174 268 128 298 294 153 218 17 218 259
2073214 187 283 122 40 292 238 95 136 131 156 36 18 299 197 31 107 179 179 1 252 13
2074255 73 5 82 259 145 247 211 191 286 49 97 293 250 29 192 56 298 225 149 146 86
207589 16 73 74 86 20 76 1 143 21 88 246 199 257 230 124 266 104 119 182 239 309 14
207620 7 61 71 26 23 3 58 80 33 22 302 124 24 44 191 113 57 241 155 133 140 99 35 6
207754 141 42 276 301 112 154 52 266 35 179 110 308 180 82 190 141 175 280 62 43
2078219 231 96 148 1 212 272 160 177 264 189 60 237 152 206 147 162 23 72 62 152
2079275 87 234 265 201 241 293 77 284 25 229 181 25 120 125 169 293 8 33 264 298 52
208093 290 12 283 191 44 53 169 224 4 272 22 233 120 16 113 126 181 227 64 269 31
2081176 183 251 243 70 256 85 186 138 184 223 61 31 38 175 107 6 187 81 114 207 119
208244 295 165 152 73 143 90 92 7 130 11 98 265 132 301 221 146 219 93 88 4 139 18
2083161 189 198 245 296 68 30 273 305 51 81 45 267 47 49 166 233 11 271 257 299 64
208427 35 248 114 69 111 211 58 282 288 166 164 7 199 15 170 196 197 169 51 12 41
2085195 116 295 234 92 145 74 155 24 148 243 208 200 229 48 21 48 194 40 50 178 167
208667 196 88 177 195 185 299 306 23 274 6 296 137 34 34 236 180 13 186 69 244 151
2087130 213 106 34 305 184 85 117 198 112 292 307 99 208 62 285 279 159 165 19 133
208871 159 274 75 300 209 276 163 104 10 126 72 171 208 131 225 40 90 230 262 274
2089248 45 65 39 280 304 39 147 300 278 216 235 35 75 58 213 37 94 233 253 267 185
209057 310 95 205 71 228 278 147 231 27 144 304 281 207 228 36 151 303 269 273 172
2091111 9 114 138 115 283 53 36 220 307 30 204 301 43 150 291 24 217 247 280 131 47
2092291 162 161 80 142 14 158 262 141 244 284 134 285 37 163 237 14 198 3 300 140
2093272 91 173 192 258 242 58 11 29 261 60 59 156 278 78 227 266 213 175 38 66 115
2094150 49 28 289 178 98 63 124 157 48 263 44 122 109 296 310 26 201 63 297 149 215
209590 161 11 202 6 227 133 273 103 107 248 183 9 183 142 187 214 118 279 50 109
2096163 306 265 270 245 54 8 102 204 59 294 222 222 89 149 77 146 17 85 8 142 256
2097154 190 210 115 41 304 108 151 61 209 34 103 176 252 255 4 1 10 17 16 4 70 14
209889 258 69 2 155 202 144 171 277 135 297 282 219 162 92 76 70 83 29 19 67 87 32
209910 57 68 99 277 2 46 210 288 33 160 246 268 261 302 55 84 36 260 48 125 100 289
2100247 38 135 55 222 291 93 221 8 211 260 226 121 28 47 182 170 305 253 25 189 129
2101241 224 137 212 30 164 249 195 254 239 86 ^
2102665 0 15 28 247 125 167 135 199 158 106 10 115 65 170 220 63 281 275 231 107 80
210357 137 101 36 306 110 78 116 209 45 36 232 177 22 129 68 168 279 74 286 275 218
2104174 24 131 57 224 218 148 158 19 144 3 213 261 215 176 26 59 52 224 292 20 214
21056 285 192 282 46 106 235 249 14 257 311 309 82 271 15 301 136 269 100 178 253
2106182 308 311 84 260 71 240 210 202 156 104 21 59 126 96 36 7 43 134 42 38 234
2107166 78 129 142 101 23 61 54 152 287 20 288 190 29 118 111 235 236 81 201 73 229
2108205 202 230 37 77 46 206 285 105 165 307 254 14 244 66 253 156 191 199 171 39 5
210941 206 47 38 221 233 22 203 1 224 205 215 102 93 3 126 83 103 263 56 54 165 220
211076 214 19 157 248 269 187 295 53 95 217 4 283 203 287 107 93 302 193 27 116 122
2111240 236 7 268 17 242 125 13 100 191 125 238 295 79 273 17 229 192 269 174 50
2112309 169 137 127 153 45 23 48 121 96 49 252 99 121 183 166 52 12 30 188 53 307
2113167 148 132 214 32 90 304 195 16 172 122 253 169 63 255 97 119 194 171 52 250
211497 132 127 227 290 79 286 262 285 118 37 51 180 94 60 196 99 47 250 110 65 183
2115153 119 268 43 108 237 238 9 257 12 242 138 258 156 117 266 115 52 237 164 76
2116201 86 101 261 128 310 226 207 143 158 32 77 59 139 29 31 245 123 11 172 135
2117186 225 50 23 286 249 40 62 111 222 303 25 275 244 40 136 44 278 290 105 91 62
2118198 27 103 250 184 310 239 79 199 84 173 266 128 297 293 151 217 17 216 259 213
2119187 282 120 39 291 236 94 134 129 155 34 18 299 195 29 105 178 179 310 252 12
2120255 71 2 82 258 143 245 210 189 284 48 95 291 249 27 190 55 296 223 148 145 86
212188 16 72 72 85 18 74 141 18 87 245 197 256 228 122 266 102 119 181 238 308 12
212217 4 58 69 26 20 2 56 80 31 20 301 123 24 44 191 112 54 239 153 132 140 99 34 5
212354 139 42 276 301 110 152 49 265 32 177 109 307 180 81 188 140 173 279 61 41
2124219 231 94 147 1 211 272 159 176 264 187 57 237 151 204 145 160 21 72 59 152
2125274 87 232 264 200 241 293 77 284 22 229 179 24 118 124 168 292 7 30 262 298 51
212693 289 9 283 190 42 51 167 222 4 270 19 231 120 13 113 124 181 225 63 268 30
2127175 181 251 241 68 255 84 186 138 184 223 61 28 35 175 107 6 185 81 114 207 117
212841 293 164 150 73 142 88 90 5 128 11 98 263 130 299 221 146 217 91 88 3 139 16
2129159 189 197 243 295 66 28 273 303 51 80 44 265 45 49 165 233 9 270 257 298 64
213026 33 247 112 67 111 209 58 281 288 164 163 6 198 14 170 194 197 169 50 10 41
2131193 114 294 234 92 145 73 155 21 146 243 208 200 228 48 21 46 193 40 49 178 166
213265 196 86 175 194 184 297 306 23 273 206 ^
2133641 0 296 134 25 31 230 177 7 183 66 238 151 130 210 100 34 302 178 79 114 192
2134112 292 304 93 202 56 279 273 159 159 19 127 68 153 274 72 297 206 270 157 104
21354 126 66 168 205 128 225 31 90 230 262 268 242 36 62 39 274 301 36 147 300 278
2136216 229 35 75 55 207 28 88 230 247 267 185 51 307 95 202 71 225 275 144 228 18
2137144 298 278 201 228 33 145 300 263 270 172 105 6 111 135 112 277 44 36 217 301
213821 201 298 34 147 285 18 214 244 280 131 38 291 162 161 74 142 14 155 259 141
2139241 278 131 282 31 160 231 5 198 311 294 134 269 85 173 192 252 239 49 8 26 258
214054 50 150 272 72 227 260 213 172 35 60 109 150 43 19 286 175 92 60 124 151 45
2141263 41 119 109 290 304 23 201 54 294 149 215 87 158 2 196 311 224 133 267 100
2142104 248 180 9 183 136 184 208 115 279 44 106 163 303 265 270 242 51 8 96 204 56
2143294 219 216 89 143 71 140 14 85 313 139 256 154 187 210 115 35 304 108 148 58
2144209 28 103 176 249 252 309 309 10 11 13 312 67 11 83 258 69 310 152 202 141 171
2145277 129 297 276 216 159 89 73 70 83 29 16 67 81 29 1 54 65 96 274 2 37 204 285
214633 160 246 265 255 296 49 78 27 260 39 119 94 289 247 38 132 55 222 288 90 215
21472 211 257 226 118 22 44 176 164 305 250 25 186 123 238 221 131 212 30 158 246
2148195 254 239 64 9 28 243 123 308 167 133 197 154 102 4 111 65 166 220 59 281 273
2149229 105 76 57 137 97 32 302 108 78 112 207 43 34 232 177 22 129 68 168 275 74
2150282 275 214 174 20 129 53 222 218 144 158 17 142 313 209 257 211 172 20 59 52
2151220 288 20 214 281 188 282 46 106 233 249 8 255 311 309 80 271 15 297 136 269
2152100 174 249 182 308 307 80 256 69 240 206 200 156 102 19 57 122 96 30 3 39 134
215340 32 232 162 76 127 138 99 17 57 52 150 287 18 284 190 23 116 107 235 234 77
2154199 69 225 205 198 226 33 75 40 206 285 103 161 303 250 10 240 66 253 152 187
2155195 169 33 5 39 204 41 34 217 231 20 199 313 224 203 213 102 89 3 124 81 99 261
215656 50 165 218 74 212 15 157 244 265 185 295 47 93 217 2 281 203 283 103 91 302
2157193 25 116 122 236 236 7 268 13 242 121 9 98 189 125 238 291 77 269 15 227 190
2158267 170 50 305 165 133 127 153 45 19 42 121 94 45 248 95 117 179 166 46 6 26
2159188 53 307 165 148 128 210 30 88 300 193 10 170 120 251 167 63 251 97 117 194
2160167 48 250 95 132 125 223 290 75 284 260 283 118 37 45 178 94 60 194 97 47 248
2161110 63 181 151 115 264 43 104 233 234 7 253 12 240 136 254 154 117 264 113 50
2162235 164 76 197 84 101 261 126 310 222 203 143 276 ^
2163656 0 32 69 51 135 25 31 245 123 7 164 135 178 221 42 19 286 241 36 62 107 218
2164303 17 267 244 32 128 36 274 282 105 91 54 190 27 99 242 176 306 235 79 199 84
2165169 258 128 293 289 143 213 17 208 259 209 187 278 112 35 287 228 90 126 121
2166151 26 18 299 187 21 97 174 179 302 252 8 255 63 306 82 254 135 237 206 181 276
216744 87 283 245 19 182 51 288 215 144 141 86 84 16 68 64 81 10 66 312 133 6 83
2168241 189 252 220 114 266 94 119 177 234 304 4 5 308 46 61 26 8 314 48 80 23 12
2169297 119 24 44 191 108 42 231 145 128 140 99 30 1 54 131 42 276 301 102 144 37
2170261 20 169 105 303 180 77 180 136 165 275 57 33 219 231 86 143 1 207 272 155
2171172 264 179 45 237 147 196 137 152 13 72 47 152 270 87 224 260 196 241 293 77
2172284 10 229 171 20 110 120 164 288 3 18 254 298 47 93 285 313 283 186 34 43 159
2173214 4 262 7 223 120 1 113 116 181 217 59 264 26 171 173 251 233 60 251 80 186
2174138 184 223 61 16 23 175 107 6 177 81 114 207 109 29 285 160 142 73 138 80 82
2175313 120 11 98 255 122 291 221 146 209 83 88 315 139 8 151 189 193 235 291 58 20
2176273 295 51 76 40 257 37 49 161 233 1 266 257 294 64 22 25 243 104 59 111 201 58
2177277 288 156 159 2 194 10 170 186 197 169 46 2 41 185 106 290 234 92 145 69 155
21789 138 243 208 200 224 48 21 38 189 40 45 178 162 57 196 78 167 190 180 289 306
217923 269 312 296 132 19 29 226 175 3 181 64 234 151 130 208 96 34 300 174 75 112
2180188 112 292 302 89 198 52 275 269 159 155 19 123 66 149 274 70 295 204 266 153
2181104 126 62 166 203 126 225 25 90 230 262 264 238 30 60 39 270 299 34 147 300
2182278 216 225 35 75 53 203 22 84 228 243 267 185 47 305 95 200 71 223 273 142 226
218312 144 294 276 197 228 31 141 298 259 268 172 101 4 109 133 110 273 38 36 215
2184297 15 199 296 28 145 281 14 212 242 280 131 32 291 162 161 70 142 14 153 257
2185141 239 274 129 280 27 158 227 315 198 309 290 130 267 81 173 192 248 237 43 6
218624 256 50 44 146 268 68 227 256 213 170 33 56 105 150 39 13 284 173 88 58 124
2187147 43 263 39 117 109 286 300 21 201 48 292 149 215 85 156 312 192 307 222 133
2188263 98 102 248 178 9 183 132 182 204 113 279 40 104 163 301 265 270 240 49 8 92
2189204 54 294 217 212 89 139 67 136 12 85 309 137 256 154 185 210 115 31 304 108
2190146 56 209 24 103 176 247 250 305 307 10 7 11 310 65 9 79 258 69 308 150 202
2191139 171 277 125 297 272 214 157 87 71 70 83 29 14 67 77 27 311 52 63 94 272 2
219231 200 283 33 160 246 263 251 292 45 74 21 260 33 115 90 289 247 38 130 55 222
2193286 88 211 227 ^
2194668 0 211 254 226 115 16 41 170 158 305 247 25 183 117 235 218 125 212 30 152
2195243 195 254 239 61 28 237 120 302 167 130 194 148 96 312 105 65 160 220 53 281
2196270 226 102 70 57 137 91 26 296 105 78 106 204 40 31 232 177 22 129 68 168 269
219774 276 275 208 174 14 126 47 219 218 138 158 14 139 310 203 251 205 166 11 59
219852 214 282 20 214 308 275 182 282 46 106 230 249 316 252 311 309 77 271 15 291
2199136 269 100 168 243 182 308 301 74 250 66 240 200 197 156 99 16 54 116 96 21
2200314 33 134 37 23 229 156 73 124 132 96 8 51 49 147 287 15 278 190 14 113 101
2201235 231 71 196 63 219 205 192 220 27 72 31 206 285 100 155 297 244 4 234 66 253
2202146 181 189 166 24 5 36 201 32 28 211 228 17 193 313 224 200 210 102 83 3 121
220378 93 258 56 44 165 215 71 209 9 157 238 259 182 295 38 90 217 316 278 203 277
220497 88 302 193 22 116 122 230 236 7 268 7 242 115 3 95 186 125 238 285 74 263 12
2205224 187 264 164 50 299 159 127 127 153 45 13 33 121 91 39 242 89 111 173 166 37
2206314 20 188 53 307 162 148 122 204 27 85 294 190 1 167 117 248 164 63 245 97 114
2207194 161 42 250 92 132 122 217 290 69 281 257 280 118 37 36 175 94 60 191 94 47
2208245 110 60 178 148 109 258 43 98 227 228 4 247 12 237 133 248 151 117 261 110
220947 232 164 76 191 81 101 261 123 310 216 197 143 153 32 67 49 134 24 31 245 123
22106 162 135 176 220 40 18 286 239 35 62 106 217 303 15 265 244 30 126 34 273 280
2211105 91 52 188 27 98 240 174 305 234 79 199 84 168 256 128 292 288 141 212 17
2212206 259 208 187 277 110 34 286 226 89 124 119 150 24 18 299 185 19 95 173 179
2213300 252 7 255 61 304 82 253 133 235 205 179 274 43 85 281 244 17 180 50 286 213
2214143 140 86 83 16 67 62 80 8 64 312 131 3 82 240 187 251 218 112 266 92 119 176
2215233 303 2 2 306 43 59 26 5 314 46 80 21 10 296 118 24 44 191 107 39 229 143 127
2216140 99 29 54 129 42 276 301 100 142 34 260 17 167 104 302 180 76 178 135 163
2217274 56 31 219 231 84 142 1 206 272 154 171 264 177 42 237 146 194 135 150 11 72
221844 152 269 87 222 259 195 241 293 77 284 7 229 169 19 108 119 163 287 2 15 252
2219298 46 93 284 311 283 185 32 41 157 212 4 260 4 221 120 315 113 114 181 215 58
2220263 25 170 171 251 231 58 250 79 186 138 184 223 61 13 20 175 107 6 175 81 114
2221207 107 26 283 159 140 73 137 78 80 312 118 11 98 253 120 289 221 146 207 81 88
2222315 139 6 149 189 192 233 290 56 18 273 293 51 75 39 255 35 49 160 233 316 265
2223257 293 64 21 23 242 102 57 111 199 58 276 288 154 158 1 193 9 170 184 197 169
222445 41 183 104 289 234 92 145 68 155 6 136 243 208 203 ^
2225656 0 221 48 21 32 186 40 42 178 159 51 196 72 161 187 177 283 306 23 266 309
2226296 129 10 26 220 172 316 178 61 228 151 130 205 90 34 297 168 69 109 182 112
2227292 299 83 192 46 269 263 159 149 19 117 63 143 274 67 292 201 260 147 104 313
2228126 56 163 200 123 225 16 90 230 262 258 232 21 57 39 264 296 31 147 300 278
2229216 219 35 75 50 197 13 78 225 237 267 185 41 302 95 197 71 220 270 139 223 3
2230144 288 273 191 228 28 135 295 253 265 172 95 1 106 130 107 267 29 36 212 291 6
2231196 293 19 142 275 8 209 239 280 131 23 291 162 161 64 142 14 150 254 141 236
2232268 126 277 21 155 221 309 198 306 284 124 264 75 173 192 242 234 34 3 21 253
223344 35 140 262 62 227 250 213 167 30 50 99 150 33 4 281 170 82 55 124 141 40 263
223436 114 109 280 294 18 201 39 289 149 215 82 153 306 186 301 219 133 257 95 99
2235248 175 9 183 126 179 198 110 279 34 101 163 298 265 270 237 46 8 86 204 51 294
2236214 206 89 133 61 130 9 85 303 134 256 154 182 210 115 25 304 108 143 53 209 18
2237103 176 244 247 299 304 10 1 8 307 62 6 73 258 69 305 147 202 136 171 277 119
2238297 266 211 154 84 68 70 83 29 11 67 71 24 305 49 60 91 269 2 22 194 280 33 160
2239246 260 245 286 39 68 12 260 24 109 84 289 247 38 127 55 222 283 85 205 311 211
2240252 226 113 12 39 166 154 305 245 25 181 113 233 216 121 212 30 148 241 195 254
2241239 59 313 28 233 118 298 167 128 192 144 92 308 101 65 156 220 49 281 268 224
2242100 66 57 137 87 22 292 103 78 102 202 38 29 232 177 22 129 68 168 265 74 272
2243275 204 174 10 124 43 217 218 134 158 12 137 308 199 247 201 162 5 59 52 210
2244278 20 214 304 271 178 282 46 106 228 249 312 250 311 309 75 271 15 287 136 269
2245100 164 239 182 308 297 70 246 64 240 196 195 156 97 14 52 112 96 15 312 29 134
224635 17 227 152 71 122 128 94 2 47 47 145 287 13 274 190 8 111 97 235 229 67 194
224759 215 205 188 216 23 70 25 206 285 98 151 293 240 230 66 253 142 177 185 164
224818 5 34 199 26 24 207 226 15 189 313 224 198 208 102 79 3 119 76 89 256 56 40
2249165 213 69 207 5 157 234 255 180 295 32 88 217 316 276 203 273 93 86 302 193 20
2250116 122 226 236 7 268 3 242 111 318 93 184 125 238 281 72 259 10 222 185 262
2251160 50 295 155 123 127 153 45 9 27 121 89 35 238 85 107 169 166 31 310 16 188
225253 307 160 148 118 200 25 83 290 188 314 165 115 246 162 63 241 97 112 194 157
225338 250 90 132 120 213 290 65 279 255 278 118 37 30 173 94 60 189 92 47 243 110
225458 176 146 105 254 43 94 223 224 2 243 12 235 131 244 149 117 259 108 45 230
2255164 76 187 79 101 261 109 ^
2256656 0 310 208 189 143 149 32 59 41 130 20 31 245 123 2 154 135 168 216 32 14
2257286 231 31 62 102 213 303 7 257 244 22 118 26 269 272 105 91 44 180 27 94 232
2258166 301 230 79 199 84 164 248 128 288 284 133 208 17 198 259 204 187 273 102 30
2259282 218 85 116 111 146 16 18 299 177 11 87 169 179 292 252 3 255 53 296 82 249
2260125 227 201 171 266 39 77 273 240 9 172 46 278 205 139 136 86 79 16 63 54 76 56
2261312 123 312 78 236 179 247 210 104 266 84 119 172 229 299 315 311 298 31 51 26
2262314 314 38 80 13 2 292 114 24 44 191 103 27 221 135 123 140 99 25 317 54 121 42
2263276 301 92 134 22 256 5 159 100 298 180 72 170 131 155 270 52 23 219 231 76 138
22641 202 272 150 167 264 169 30 237 142 186 127 142 3 72 32 152 265 87 214 255 191
2265241 293 77 284 316 229 161 15 100 115 159 283 319 3 244 298 42 93 280 303 283
2266181 24 33 149 204 4 252 313 213 120 307 113 106 181 207 54 259 21 166 163 251
2267223 50 246 75 186 138 184 223 61 1 8 175 107 6 167 81 114 207 99 14 275 155 132
226873 133 70 72 308 110 11 98 245 112 281 221 146 199 73 88 315 139 319 141 189
2269188 225 286 48 10 273 285 51 71 35 247 27 49 156 233 312 261 257 289 64 17 15
2270238 94 49 111 191 58 272 288 146 154 318 189 5 170 176 197 169 41 313 41 175 96
2271285 234 92 145 64 155 315 128 243 208 200 219 48 21 28 184 40 40 178 157 47 196
227268 157 185 175 279 306 23 264 307 296 127 4 24 216 170 314 176 59 224 151 130
2273203 86 34 295 164 65 107 178 112 292 297 79 188 42 265 259 159 145 19 113 61
2274139 274 65 290 199 256 143 104 311 126 52 161 198 121 225 10 90 230 262 254 228
227515 55 39 260 294 29 147 300 278 216 215 35 75 48 193 7 74 223 233 267 185 37
2276300 95 195 71 218 268 137 221 318 144 284 271 187 228 26 131 293 249 263 172 91
2277320 104 128 105 263 23 36 210 287 194 291 13 140 271 4 207 237 280 131 17 291
2278162 161 60 142 14 148 252 141 234 264 124 275 17 153 217 305 198 304 280 120
2279262 71 173 192 238 232 28 1 19 251 40 29 136 258 58 227 246 213 165 28 46 95
2280150 29 319 279 168 78 53 124 137 38 263 34 112 109 276 290 16 201 33 287 149
2281215 80 151 302 182 297 217 133 253 93 97 248 173 9 183 122 177 194 108 279 30
228299 163 296 265 270 235 44 8 82 204 49 294 212 202 89 129 57 126 7 85 299 132
2283256 154 180 210 115 21 304 108 141 51 209 14 103 176 242 245 295 302 10 318 6
2284305 60 4 69 258 69 303 145 202 134 171 277 115 297 262 209 152 82 66 70 83 29 9
228567 67 22 301 47 58 89 267 2 16 190 278 33 160 246 258 241 282 35 64 6 260 18
2286105 80 289 247 38 125 55 292 ^
2287<D
2288
2289H>SHS Type 3 Strings<H
2290D>
229145 0 14 5 3 1 4 16 12 20 1 6 15 11 18 4 17 16 6 10 3 2 9 9 14 6 2 8 6 7 10 17
229212 20 6 7 5 16 1 4 2 17 10 15 8 20 1 ^
2293<D
diff --git a/src/lib/libssl/test/tcrl b/src/lib/libssl/test/tcrl
new file mode 100644
index 0000000000..3ffed12a03
--- /dev/null
+++ b/src/lib/libssl/test/tcrl
@@ -0,0 +1,85 @@
1#!/bin/sh
2
3if test "$OSTYPE" = msdosdjgpp; then
4 PATH=../apps\;$PATH
5else
6 PATH=../apps:$PATH
7fi
8export PATH
9
10cmd='../util/shlib_wrap.sh ../apps/openssl crl'
11
12if [ "$1"x != "x" ]; then
13 t=$1
14else
15 t=testcrl.pem
16fi
17
18echo testing crl conversions
19cp $t fff.p
20
21echo "p -> d"
22$cmd -in fff.p -inform p -outform d >f.d
23if [ $? != 0 ]; then exit 1; fi
24#echo "p -> t"
25#$cmd -in fff.p -inform p -outform t >f.t
26#if [ $? != 0 ]; then exit 1; fi
27echo "p -> p"
28$cmd -in fff.p -inform p -outform p >f.p
29if [ $? != 0 ]; then exit 1; fi
30
31echo "d -> d"
32$cmd -in f.d -inform d -outform d >ff.d1
33if [ $? != 0 ]; then exit 1; fi
34#echo "t -> d"
35#$cmd -in f.t -inform t -outform d >ff.d2
36#if [ $? != 0 ]; then exit 1; fi
37echo "p -> d"
38$cmd -in f.p -inform p -outform d >ff.d3
39if [ $? != 0 ]; then exit 1; fi
40
41#echo "d -> t"
42#$cmd -in f.d -inform d -outform t >ff.t1
43#if [ $? != 0 ]; then exit 1; fi
44#echo "t -> t"
45#$cmd -in f.t -inform t -outform t >ff.t2
46#if [ $? != 0 ]; then exit 1; fi
47#echo "p -> t"
48#$cmd -in f.p -inform p -outform t >ff.t3
49#if [ $? != 0 ]; then exit 1; fi
50
51echo "d -> p"
52$cmd -in f.d -inform d -outform p >ff.p1
53if [ $? != 0 ]; then exit 1; fi
54#echo "t -> p"
55#$cmd -in f.t -inform t -outform p >ff.p2
56#if [ $? != 0 ]; then exit 1; fi
57echo "p -> p"
58$cmd -in f.p -inform p -outform p >ff.p3
59if [ $? != 0 ]; then exit 1; fi
60
61cmp fff.p f.p
62if [ $? != 0 ]; then exit 1; fi
63cmp fff.p ff.p1
64if [ $? != 0 ]; then exit 1; fi
65#cmp fff.p ff.p2
66#if [ $? != 0 ]; then exit 1; fi
67cmp fff.p ff.p3
68if [ $? != 0 ]; then exit 1; fi
69
70#cmp f.t ff.t1
71#if [ $? != 0 ]; then exit 1; fi
72#cmp f.t ff.t2
73#if [ $? != 0 ]; then exit 1; fi
74#cmp f.t ff.t3
75#if [ $? != 0 ]; then exit 1; fi
76
77cmp f.p ff.p1
78if [ $? != 0 ]; then exit 1; fi
79#cmp f.p ff.p2
80#if [ $? != 0 ]; then exit 1; fi
81cmp f.p ff.p3
82if [ $? != 0 ]; then exit 1; fi
83
84/bin/rm -f f.* ff.* fff.*
85exit 0
diff --git a/src/lib/libssl/test/test.cnf b/src/lib/libssl/test/test.cnf
new file mode 100644
index 0000000000..faad3914a8
--- /dev/null
+++ b/src/lib/libssl/test/test.cnf
@@ -0,0 +1,88 @@
1#
2# SSLeay example configuration file.
3# This is mostly being used for generation of certificate requests.
4#
5
6RANDFILE = ./.rnd
7
8####################################################################
9[ ca ]
10default_ca = CA_default # The default ca section
11
12####################################################################
13[ CA_default ]
14
15dir = ./demoCA # Where everything is kept
16certs = $dir/certs # Where the issued certs are kept
17crl_dir = $dir/crl # Where the issued crl are kept
18database = $dir/index.txt # database index file.
19new_certs_dir = $dir/new_certs # default place for new certs.
20
21certificate = $dir/CAcert.pem # The CA certificate
22serial = $dir/serial # The current serial number
23crl = $dir/crl.pem # The current CRL
24private_key = $dir/private/CAkey.pem# The private key
25RANDFILE = $dir/private/.rand # private random number file
26
27default_days = 365 # how long to certify for
28default_crl_days= 30 # how long before next CRL
29default_md = md5 # which md to use.
30
31# A few difference way of specifying how similar the request should look
32# For type CA, the listed attributes must be the same, and the optional
33# and supplied fields are just that :-)
34policy = policy_match
35
36# For the CA policy
37[ policy_match ]
38countryName = match
39stateOrProvinceName = match
40organizationName = match
41organizationalUnitName = optional
42commonName = supplied
43emailAddress = optional
44
45# For the 'anything' policy
46# At this point in time, you must list all acceptable 'object'
47# types.
48[ policy_anything ]
49countryName = optional
50stateOrProvinceName = optional
51localityName = optional
52organizationName = optional
53organizationalUnitName = optional
54commonName = supplied
55emailAddress = optional
56
57####################################################################
58[ req ]
59default_bits = 512
60default_keyfile = testkey.pem
61distinguished_name = req_distinguished_name
62encrypt_rsa_key = no
63
64[ req_distinguished_name ]
65countryName = Country Name (2 letter code)
66countryName_default = AU
67countryName_value = AU
68
69stateOrProvinceName = State or Province Name (full name)
70stateOrProvinceName_default = Queensland
71stateOrProvinceName_value =
72
73localityName = Locality Name (eg, city)
74localityName_value = Brisbane
75
76organizationName = Organization Name (eg, company)
77organizationName_default =
78organizationName_value = CryptSoft Pty Ltd
79
80organizationalUnitName = Organizational Unit Name (eg, section)
81organizationalUnitName_default =
82organizationalUnitName_value = .
83
84commonName = Common Name (eg, YOUR name)
85commonName_value = Eric Young
86
87emailAddress = Email Address
88emailAddress_value = eay@mincom.oz.au
diff --git a/src/lib/libssl/test/testca b/src/lib/libssl/test/testca
new file mode 100644
index 0000000000..5b2faa78f1
--- /dev/null
+++ b/src/lib/libssl/test/testca
@@ -0,0 +1,51 @@
1#!/bin/sh
2
3SH="/bin/sh"
4if test "$OSTYPE" = msdosdjgpp; then
5 PATH=./apps\;../apps\;$PATH
6else
7 PATH=../apps:$PATH
8fi
9export SH PATH
10
11SSLEAY_CONFIG="-config CAss.cnf"
12export SSLEAY_CONFIG
13
14OPENSSL="`pwd`/../util/shlib_wrap.sh openssl"
15export OPENSSL
16
17/bin/rm -fr demoCA
18$SH ../apps/CA.sh -newca <<EOF
19EOF
20
21if [ $? != 0 ]; then
22 exit 1;
23fi
24
25SSLEAY_CONFIG="-config Uss.cnf"
26export SSLEAY_CONFIG
27$SH ../apps/CA.sh -newreq
28if [ $? != 0 ]; then
29 exit 1;
30fi
31
32
33SSLEAY_CONFIG="-config ../apps/openssl.cnf"
34export SSLEAY_CONFIG
35$SH ../apps/CA.sh -sign <<EOF
36y
37y
38EOF
39if [ $? != 0 ]; then
40 exit 1;
41fi
42
43
44$SH ../apps/CA.sh -verify newcert.pem
45if [ $? != 0 ]; then
46 exit 1;
47fi
48
49/bin/rm -fr demoCA newcert.pem newreq.pem
50#usage: CA -newcert|-newreq|-newca|-sign|-verify
51
diff --git a/src/lib/libssl/test/testcrl.pem b/src/lib/libssl/test/testcrl.pem
new file mode 100644
index 0000000000..0989788354
--- /dev/null
+++ b/src/lib/libssl/test/testcrl.pem
@@ -0,0 +1,16 @@
1-----BEGIN X509 CRL-----
2MIICjTCCAfowDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMxIDAeBgNVBAoT
3F1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2VydmVy
4IENlcnRpZmljYXRpb24gQXV0aG9yaXR5Fw05NTA1MDIwMjEyMjZaFw05NTA2MDEw
5MDAxNDlaMIIBaDAWAgUCQQAABBcNOTUwMjAxMTcyNDI2WjAWAgUCQQAACRcNOTUw
6MjEwMDIxNjM5WjAWAgUCQQAADxcNOTUwMjI0MDAxMjQ5WjAWAgUCQQAADBcNOTUw
7MjI1MDA0NjQ0WjAWAgUCQQAAGxcNOTUwMzEzMTg0MDQ5WjAWAgUCQQAAFhcNOTUw
8MzE1MTkxNjU0WjAWAgUCQQAAGhcNOTUwMzE1MTk0MDQxWjAWAgUCQQAAHxcNOTUw
9MzI0MTk0NDMzWjAWAgUCcgAABRcNOTUwMzI5MjAwNzExWjAWAgUCcgAAERcNOTUw
10MzMwMDIzNDI2WjAWAgUCQQAAIBcNOTUwNDA3MDExMzIxWjAWAgUCcgAAHhcNOTUw
11NDA4MDAwMjU5WjAWAgUCcgAAQRcNOTUwNDI4MTcxNzI0WjAWAgUCcgAAOBcNOTUw
12NDI4MTcyNzIxWjAWAgUCcgAATBcNOTUwNTAyMDIxMjI2WjANBgkqhkiG9w0BAQIF
13AAN+AHqOEJXSDejYy0UwxxrH/9+N2z5xu/if0J6qQmK92W0hW158wpJg+ovV3+wQ
14wvIEPRL2rocL0tKfAsVq1IawSJzSNgxG0lrcla3MrJBnZ4GaZDu4FutZh72MR3Gt
15JaAL3iTJHJD55kK2D/VoyY1djlsPuNh6AEgdVwFAyp0v
16-----END X509 CRL-----
diff --git a/src/lib/libssl/test/testenc b/src/lib/libssl/test/testenc
new file mode 100644
index 0000000000..4571ea2875
--- /dev/null
+++ b/src/lib/libssl/test/testenc
@@ -0,0 +1,54 @@
1#!/bin/sh
2
3testsrc=Makefile
4test=./p
5cmd="../util/shlib_wrap.sh ../apps/openssl"
6
7cat $testsrc >$test;
8
9echo cat
10$cmd enc -non-fips-allow < $test > $test.cipher
11$cmd enc -non-fips-allow < $test.cipher >$test.clear
12cmp $test $test.clear
13if [ $? != 0 ]
14then
15 exit 1
16else
17 /bin/rm $test.cipher $test.clear
18fi
19echo base64
20$cmd enc -non-fips-allow -a -e < $test > $test.cipher
21$cmd enc -non-fips-allow -a -d < $test.cipher >$test.clear
22cmp $test $test.clear
23if [ $? != 0 ]
24then
25 exit 1
26else
27 /bin/rm $test.cipher $test.clear
28fi
29
30for i in `$cmd list-cipher-commands`
31do
32 echo $i
33 $cmd $i -non-fips-allow -bufsize 113 -e -k test < $test > $test.$i.cipher
34 $cmd $i -non-fips-allow -bufsize 157 -d -k test < $test.$i.cipher >$test.$i.clear
35 cmp $test $test.$i.clear
36 if [ $? != 0 ]
37 then
38 exit 1
39 else
40 /bin/rm $test.$i.cipher $test.$i.clear
41 fi
42
43 echo $i base64
44 $cmd $i -non-fips-allow -bufsize 113 -a -e -k test < $test > $test.$i.cipher
45 $cmd $i -non-fips-allow -bufsize 157 -a -d -k test < $test.$i.cipher >$test.$i.clear
46 cmp $test $test.$i.clear
47 if [ $? != 0 ]
48 then
49 exit 1
50 else
51 /bin/rm $test.$i.cipher $test.$i.clear
52 fi
53done
54rm -f $test
diff --git a/src/lib/libssl/test/testgen b/src/lib/libssl/test/testgen
new file mode 100644
index 0000000000..524c0d134c
--- /dev/null
+++ b/src/lib/libssl/test/testgen
@@ -0,0 +1,44 @@
1#!/bin/sh
2
3T=testcert
4KEY=512
5CA=../certs/testca.pem
6
7/bin/rm -f $T.1 $T.2 $T.key
8
9if test "$OSTYPE" = msdosdjgpp; then
10 PATH=../apps\;$PATH;
11else
12 PATH=../apps:$PATH;
13fi
14export PATH
15
16echo "generating certificate request"
17
18echo "string to make the random number generator think it has entropy" >> ./.rnd
19
20if ../util/shlib_wrap.sh ../apps/openssl no-rsa; then
21 req_new='-newkey dsa:../apps/dsa512.pem'
22else
23 req_new='-new'
24 echo "There should be a 2 sequences of .'s and some +'s."
25 echo "There should not be more that at most 80 per line"
26fi
27
28echo "This could take some time."
29
30rm -f testkey.pem testreq.pem
31
32../util/shlib_wrap.sh ../apps/openssl req -config test.cnf $req_new -out testreq.pem
33if [ $? != 0 ]; then
34echo problems creating request
35exit 1
36fi
37
38../util/shlib_wrap.sh ../apps/openssl req -config test.cnf -verify -in testreq.pem -noout
39if [ $? != 0 ]; then
40echo signature on req is wrong
41exit 1
42fi
43
44exit 0
diff --git a/src/lib/libssl/test/testp7.pem b/src/lib/libssl/test/testp7.pem
new file mode 100644
index 0000000000..e5b7866c31
--- /dev/null
+++ b/src/lib/libssl/test/testp7.pem
@@ -0,0 +1,46 @@
1-----BEGIN PKCS7-----
2MIIIGAYJKoZIhvcNAQcCoIIICTCCCAUCAQExADALBgkqhkiG9w0BBwGgggY8MIIE
3cjCCBBygAwIBAgIQeS+OJfWJUZAx6cX0eAiMjzANBgkqhkiG9w0BAQQFADBiMREw
4DwYDVQQHEwhJbnRlcm5ldDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNDAyBgNV
5BAsTK1ZlcmlTaWduIENsYXNzIDEgQ0EgLSBJbmRpdmlkdWFsIFN1YnNjcmliZXIw
6HhcNOTYwNzE5MDAwMDAwWhcNOTcwMzMwMjM1OTU5WjCB1TERMA8GA1UEBxMISW50
7ZXJuZXQxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTQwMgYDVQQLEytWZXJpU2ln
8biBDbGFzcyAxIENBIC0gSW5kaXZpZHVhbCBTdWJzY3JpYmVyMSgwJgYDVQQLEx9E
9aWdpdGFsIElEIENsYXNzIDEgLSBTTUlNRSBUZXN0MUcwRQYDVQQLEz53d3cudmVy
10aXNpZ24uY29tL3JlcG9zaXRvcnkvQ1BTLTEuMCBJbmMuIGJ5IFJlZi4sTElBQi5M
11VEQoYyk5NjBbMA0GCSqGSIb3DQEBAQUAA0oAMEcCQA7LvHEIAiQ5+4gDYvJGnGAq
12UM5GXyG11diEXmIEZTHUZhorooX5sr8IIjSXiPY59YYUFSvAaharFM1xaBN8zNEC
13AwEAAaOCAjkwggI1MAkGA1UdEwQCMAAwggImBgNVHQMEggIdMIICGTCCAhUwggIR
14BgtghkgBhvhFAQcBATCCAgAWggGrVGhpcyBjZXJ0aWZpY2F0ZSBpbmNvcnBvcmF0
15ZXMgYnkgcmVmZXJlbmNlLCBhbmQgaXRzIHVzZSBpcyBzdHJpY3RseSBzdWJqZWN0
16IHRvLCB0aGUgVmVyaVNpZ24gQ2VydGlmaWNhdGlvbiBQcmFjdGljZSBTdGF0ZW1l
17bnQgKENQUyksIGF2YWlsYWJsZSBhdDogaHR0cHM6Ly93d3cudmVyaXNpZ24uY29t
18L0NQUy0xLjA7IGJ5IEUtbWFpbCBhdCBDUFMtcmVxdWVzdHNAdmVyaXNpZ24uY29t
19OyBvciBieSBtYWlsIGF0IFZlcmlTaWduLCBJbmMuLCAyNTkzIENvYXN0IEF2ZS4s
20IE1vdW50YWluIFZpZXcsIENBIDk0MDQzIFVTQSBUZWwuICsxICg0MTUpIDk2MS04
21ODMwIENvcHlyaWdodCAoYykgMTk5NiBWZXJpU2lnbiwgSW5jLiAgQWxsIFJpZ2h0
22cyBSZXNlcnZlZC4gQ0VSVEFJTiBXQVJSQU5USUVTIERJU0NMQUlNRUQgYW5kIExJ
23QUJJTElUWSBMSU1JVEVELqAOBgxghkgBhvhFAQcBAQGhDgYMYIZIAYb4RQEHAQEC
24MC8wLRYraHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JlcG9zaXRvcnkvQ1BTLTEu
25AzANBgkqhkiG9w0BAQQFAANBAMCYDuSb/eIlYSxY31nZZTaCZkCSfHjlacMofExr
26cF+A2yHoEuT+eCQkqM0pMNHXddUeoQ9RjV+VuMBNmm63DUYwggHCMIIBbKADAgEC
27AhB8CYTq1bkRFJBYOd67cp9JMA0GCSqGSIb3DQEBAgUAMD4xCzAJBgNVBAYTAlVT
28MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEWMBQGA1UECxMNVEVTVCBSb290IFBD
29QTAeFw05NjA3MTcwMDAwMDBaFw05NzA3MTcyMzU5NTlaMGIxETAPBgNVBAcTCElu
30dGVybmV0MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE0MDIGA1UECxMrVmVyaVNp
31Z24gQ2xhc3MgMSBDQSAtIEluZGl2aWR1YWwgU3Vic2NyaWJlcjBcMA0GCSqGSIb3
32DQEBAQUAA0sAMEgCQQDsVzrNgnDhbAJZrWeLd9g1vMZJA2W67D33TTbga6yMt+ES
33TWEywhS6RNP+fzLGg7utinjH4tL60cXa0G27GDsLAgMBAAGjIjAgMAsGA1UdDwQE
34AwIBBjARBglghkgBhvhCAQEEBAMCAgQwDQYJKoZIhvcNAQECBQADQQAUp6bRwkaD
352d1MBs/mjUcgTI2fXVmW8tTm/Ud6OzUwpC3vYgybiOOA4f6mOC5dbyUHrLOsrihU
3647ZQ0Jo1DUfboYIBrTCBwTBtMA0GCSqGSIb3DQEBAgUAMD4xCzAJBgNVBAYTAlVT
37MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEWMBQGA1UECxMNVEVTVCBSb290IFBD
38QRcNOTYwNzE3MTc0NDA5WhcNOTgwNzE3MDAwMDAwWjANBgkqhkiG9w0BAQIFAANB
39AHitA0/xAukCjHzeh1AMT/l2oC68N+yFb+aJPHBBMxc6gG2MaKjBNwb5hcXUllMl
40ExONA3ju10f7owIq3s3wx10wgeYwgZEwDQYJKoZIhvcNAQECBQAwYjERMA8GA1UE
41BxMISW50ZXJuZXQxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTQwMgYDVQQLEytW
42ZXJpU2lnbiBDbGFzcyAxIENBIC0gSW5kaXZpZHVhbCBTdWJzY3JpYmVyFw05NjA3
43MTcxNzU5MjlaFw05NzA3MTgwMDAwMDBaMA0GCSqGSIb3DQEBAgUAA0EAubVWYTsW
44sQmste9f+UgMw8BkjDlM25fwQLrCfmmnLxjewey10kSROypUaJLb+r4oRALc0fG9
45XfZsaiiIgotQHjEA
46-----END PKCS7-----
diff --git a/src/lib/libssl/test/testreq2.pem b/src/lib/libssl/test/testreq2.pem
new file mode 100644
index 0000000000..c3cdcffcbc
--- /dev/null
+++ b/src/lib/libssl/test/testreq2.pem
@@ -0,0 +1,7 @@
1-----BEGIN CERTIFICATE REQUEST-----
2MIHaMIGFAgEAMA4xDDAKBgNVBAMTA2NuNDBcMA0GCSqGSIb3DQEBAQUAA0sAMEgC
3QQCQsnkyUGDY2R3mYoeTprFJKgWuJ3f1jUjlIuW5+wfAUoeMt35c4vcFZ2mIBpEG
4DtzkNQN1kr2O9ldm9zYnYhyhAgMBAAGgEjAQBgorBgEEAYI3AgEOMQIwADANBgkq
5hkiG9w0BAQQFAANBAAb2szZgVIxg3vK6kYLjGSBISyuzcXJ6IvuPW6M+yzi1Qgoi
6gQhazHTJp91T8ItZEzUJGZSZl2e5iXlnffWB+/U=
7-----END CERTIFICATE REQUEST-----
diff --git a/src/lib/libssl/test/testrsa.pem b/src/lib/libssl/test/testrsa.pem
new file mode 100644
index 0000000000..aad21067a8
--- /dev/null
+++ b/src/lib/libssl/test/testrsa.pem
@@ -0,0 +1,9 @@
1-----BEGIN RSA PRIVATE KEY-----
2MIIBPAIBAAJBAKrbeqkuRk8VcRmWFmtP+LviMB3+6dizWW3DwaffznyHGAFwUJ/I
3Tv0XtbsCyl3QoyKGhrOAy3RvPK5M38iuXT0CAwEAAQJAZ3cnzaHXM/bxGaR5CR1R
4rD1qFBAVfoQFiOH9uPJgMaoAuoQEisPHVcZDKcOv4wEg6/TInAIXBnEigtqvRzuy
5oQIhAPcgZzUq3yVooAaoov8UbXPxqHlwo6GBMqnv20xzkf6ZAiEAsP4BnIaQTM8S
6mvcpHZwQJdmdHHkGKAs37Dfxi67HbkUCIQCeZGliHXFa071Fp06ZeWlR2ADonTZz
7rJBhdTe0v5pCeQIhAIZfkiGgGBX4cIuuckzEm43g9WMUjxP/0GlK39vIyihxAiEA
8mymehFRT0MvqW5xAKAx7Pgkt8HVKwVhc2LwGKHE0DZM=
9-----END RSA PRIVATE KEY-----
diff --git a/src/lib/libssl/test/testsid.pem b/src/lib/libssl/test/testsid.pem
new file mode 100644
index 0000000000..7ffd008f66
--- /dev/null
+++ b/src/lib/libssl/test/testsid.pem
@@ -0,0 +1,12 @@
1-----BEGIN SSL SESSION PARAMETERS-----
2MIIB1gIBAQIBAgQDAQCABBCi11xa5qkOP8xrr02K/NQCBBBkIYQZM0Bt95W0EHNV
3bA58oQYCBDIBr7WiBAICASyjggGGMIIBgjCCASwCAQMwDQYJKoZIhvcNAQEEBQAw
4ODELMAkGA1UEBhMCQVUxDDAKBgNVBAgTA1FMRDEbMBkGA1UEAxMSU1NMZWF5L3Jz
5YSB0ZXN0IENBMB4XDTk1MTAwOTIzMzEzNFoXDTk4MDcwNTIzMzEzNFowYDELMAkG
6A1UEBhMCQVUxDDAKBgNVBAgTA1FMRDEZMBcGA1UEChMQTWluY29tIFB0eS4gTHRk
7LjELMAkGA1UECxMCQ1MxGzAZBgNVBAMTElNTTGVheSBkZW1vIGNsaWVudDBcMA0G
8CSqGSIb3DQEBAQUAA0sAMEgCQQC4pcXEL1lgVA+B5Q3TcuW/O3LZHoA73IYm8oFD
9TezgCDhL2RTMn+seKWF36UtJKRIOBU9jZHCVVd0Me5ls6BEjAgMBAAEwDQYJKoZI
10hvcNAQEEBQADQQBoIpOcwUY1qlVF7j3ROSGvUsbvByOBFmYWkIBgsCqR+9qo1A7L
11CrWF5i8LWt/vLwAHaxWNx2YuBJMFyuK81fTvpA0EC3Rlc3Rjb250ZXh0
12-----END SSL SESSION PARAMETERS-----
diff --git a/src/lib/libssl/test/testss b/src/lib/libssl/test/testss
new file mode 100644
index 0000000000..1a426857d3
--- /dev/null
+++ b/src/lib/libssl/test/testss
@@ -0,0 +1,163 @@
1#!/bin/sh
2
3digest='-sha1'
4reqcmd="../util/shlib_wrap.sh ../apps/openssl req"
5x509cmd="../util/shlib_wrap.sh ../apps/openssl x509 $digest"
6verifycmd="../util/shlib_wrap.sh ../apps/openssl verify"
7dummycnf="../apps/openssl.cnf"
8
9CAkey="keyCA.ss"
10CAcert="certCA.ss"
11CAreq="reqCA.ss"
12CAconf="CAss.cnf"
13CAreq2="req2CA.ss" # temp
14
15Uconf="Uss.cnf"
16Ukey="keyU.ss"
17Ureq="reqU.ss"
18Ucert="certU.ss"
19
20P1conf="P1ss.cnf"
21P1key="keyP1.ss"
22P1req="reqP1.ss"
23P1cert="certP1.ss"
24P1intermediate="tmp_intP1.ss"
25
26P2conf="P2ss.cnf"
27P2key="keyP2.ss"
28P2req="reqP2.ss"
29P2cert="certP2.ss"
30P2intermediate="tmp_intP2.ss"
31
32echo
33echo "make a certificate request using 'req'"
34
35echo "string to make the random number generator think it has entropy" >> ./.rnd
36
37if ../util/shlib_wrap.sh ../apps/openssl no-rsa; then
38 req_new='-newkey dsa:../apps/dsa512.pem'
39else
40 req_new='-new'
41fi
42
43$reqcmd -config $CAconf -out $CAreq -keyout $CAkey $req_new #>err.ss
44if [ $? != 0 ]; then
45 echo "error using 'req' to generate a certificate request"
46 exit 1
47fi
48echo
49echo "convert the certificate request into a self signed certificate using 'x509'"
50$x509cmd -CAcreateserial -in $CAreq -days 30 -req -out $CAcert -signkey $CAkey -extfile $CAconf -extensions v3_ca >err.ss
51if [ $? != 0 ]; then
52 echo "error using 'x509' to self sign a certificate request"
53 exit 1
54fi
55
56echo
57echo "convert a certificate into a certificate request using 'x509'"
58$x509cmd -in $CAcert -x509toreq -signkey $CAkey -out $CAreq2 >err.ss
59if [ $? != 0 ]; then
60 echo "error using 'x509' convert a certificate to a certificate request"
61 exit 1
62fi
63
64$reqcmd -config $dummycnf -verify -in $CAreq -noout
65if [ $? != 0 ]; then
66 echo first generated request is invalid
67 exit 1
68fi
69
70$reqcmd -config $dummycnf -verify -in $CAreq2 -noout
71if [ $? != 0 ]; then
72 echo second generated request is invalid
73 exit 1
74fi
75
76$verifycmd -CAfile $CAcert $CAcert
77if [ $? != 0 ]; then
78 echo first generated cert is invalid
79 exit 1
80fi
81
82echo
83echo "make a user certificate request using 'req'"
84$reqcmd -config $Uconf -out $Ureq -keyout $Ukey $req_new >err.ss
85if [ $? != 0 ]; then
86 echo "error using 'req' to generate a user certificate request"
87 exit 1
88fi
89
90echo
91echo "sign user certificate request with the just created CA via 'x509'"
92$x509cmd -CAcreateserial -in $Ureq -days 30 -req -out $Ucert -CA $CAcert -CAkey $CAkey -extfile $Uconf -extensions v3_ee >err.ss
93if [ $? != 0 ]; then
94 echo "error using 'x509' to sign a user certificate request"
95 exit 1
96fi
97
98$verifycmd -CAfile $CAcert $Ucert
99echo
100echo "Certificate details"
101$x509cmd -subject -issuer -startdate -enddate -noout -in $Ucert
102
103echo
104echo "make a proxy certificate request using 'req'"
105$reqcmd -config $P1conf -out $P1req -keyout $P1key $req_new >err.ss
106if [ $? != 0 ]; then
107 echo "error using 'req' to generate a proxy certificate request"
108 exit 1
109fi
110
111echo
112echo "sign proxy certificate request with the just created user certificate via 'x509'"
113$x509cmd -CAcreateserial -in $P1req -days 30 -req -out $P1cert -CA $Ucert -CAkey $Ukey -extfile $P1conf -extensions v3_proxy >err.ss
114if [ $? != 0 ]; then
115 echo "error using 'x509' to sign a proxy certificate request"
116 exit 1
117fi
118
119cat $Ucert > $P1intermediate
120$verifycmd -CAfile $CAcert -untrusted $P1intermediate $P1cert
121echo
122echo "Certificate details"
123$x509cmd -subject -issuer -startdate -enddate -noout -in $P1cert
124
125echo
126echo "make another proxy certificate request using 'req'"
127$reqcmd -config $P2conf -out $P2req -keyout $P2key $req_new >err.ss
128if [ $? != 0 ]; then
129 echo "error using 'req' to generate another proxy certificate request"
130 exit 1
131fi
132
133echo
134echo "sign second proxy certificate request with the first proxy certificate via 'x509'"
135$x509cmd -CAcreateserial -in $P2req -days 30 -req -out $P2cert -CA $P1cert -CAkey $P1key -extfile $P2conf -extensions v3_proxy >err.ss
136if [ $? != 0 ]; then
137 echo "error using 'x509' to sign a second proxy certificate request"
138 exit 1
139fi
140
141cat $Ucert $P1cert > $P2intermediate
142$verifycmd -CAfile $CAcert -untrusted $P2intermediate $P2cert
143echo
144echo "Certificate details"
145$x509cmd -subject -issuer -startdate -enddate -noout -in $P2cert
146
147echo
148echo The generated CA certificate is $CAcert
149echo The generated CA private key is $CAkey
150
151echo The generated user certificate is $Ucert
152echo The generated user private key is $Ukey
153
154echo The first generated proxy certificate is $P1cert
155echo The first generated proxy private key is $P1key
156
157echo The second generated proxy certificate is $P2cert
158echo The second generated proxy private key is $P2key
159
160/bin/rm err.ss
161#/bin/rm $P1intermediate
162#/bin/rm $P2intermediate
163exit 0
diff --git a/src/lib/libssl/test/testssl b/src/lib/libssl/test/testssl
new file mode 100644
index 0000000000..8ac90ae5ee
--- /dev/null
+++ b/src/lib/libssl/test/testssl
@@ -0,0 +1,145 @@
1#!/bin/sh
2
3if [ "$1" = "" ]; then
4 key=../apps/server.pem
5else
6 key="$1"
7fi
8if [ "$2" = "" ]; then
9 cert=../apps/server.pem
10else
11 cert="$2"
12fi
13ssltest="../util/shlib_wrap.sh ./ssltest -key $key -cert $cert -c_key $key -c_cert $cert"
14
15if ../util/shlib_wrap.sh ../apps/openssl x509 -in $cert -text -noout | fgrep 'DSA Public Key' >/dev/null; then
16 dsa_cert=YES
17else
18 dsa_cert=NO
19fi
20
21if [ "$3" = "" ]; then
22 CA="-CApath ../certs"
23else
24 CA="-CAfile $3"
25fi
26
27if [ "$4" = "" ]; then
28 extra=""
29else
30 extra="$4"
31fi
32
33#############################################################################
34
35echo test sslv2
36$ssltest -ssl2 $extra || exit 1
37
38echo test sslv2 with server authentication
39$ssltest -ssl2 -server_auth $CA $extra || exit 1
40
41if [ $dsa_cert = NO ]; then
42 echo test sslv2 with client authentication
43 $ssltest -ssl2 -client_auth $CA $extra || exit 1
44
45 echo test sslv2 with both client and server authentication
46 $ssltest -ssl2 -server_auth -client_auth $CA $extra || exit 1
47fi
48
49echo test sslv3
50$ssltest -ssl3 $extra || exit 1
51
52echo test sslv3 with server authentication
53$ssltest -ssl3 -server_auth $CA $extra || exit 1
54
55echo test sslv3 with client authentication
56$ssltest -ssl3 -client_auth $CA $extra || exit 1
57
58echo test sslv3 with both client and server authentication
59$ssltest -ssl3 -server_auth -client_auth $CA $extra || exit 1
60
61echo test sslv2/sslv3
62$ssltest $extra || exit 1
63
64echo test sslv2/sslv3 with server authentication
65$ssltest -server_auth $CA $extra || exit 1
66
67echo test sslv2/sslv3 with client authentication
68$ssltest -client_auth $CA $extra || exit 1
69
70echo test sslv2/sslv3 with both client and server authentication
71$ssltest -server_auth -client_auth $CA $extra || exit 1
72
73echo test sslv2 via BIO pair
74$ssltest -bio_pair -ssl2 $extra || exit 1
75
76echo test sslv2 with server authentication via BIO pair
77$ssltest -bio_pair -ssl2 -server_auth $CA $extra || exit 1
78
79if [ $dsa_cert = NO ]; then
80 echo test sslv2 with client authentication via BIO pair
81 $ssltest -bio_pair -ssl2 -client_auth $CA $extra || exit 1
82
83 echo test sslv2 with both client and server authentication via BIO pair
84 $ssltest -bio_pair -ssl2 -server_auth -client_auth $CA $extra || exit 1
85fi
86
87echo test sslv3 via BIO pair
88$ssltest -bio_pair -ssl3 $extra || exit 1
89
90echo test sslv3 with server authentication via BIO pair
91$ssltest -bio_pair -ssl3 -server_auth $CA $extra || exit 1
92
93echo test sslv3 with client authentication via BIO pair
94$ssltest -bio_pair -ssl3 -client_auth $CA $extra || exit 1
95
96echo test sslv3 with both client and server authentication via BIO pair
97$ssltest -bio_pair -ssl3 -server_auth -client_auth $CA $extra || exit 1
98
99echo test sslv2/sslv3 via BIO pair
100$ssltest $extra || exit 1
101
102if [ $dsa_cert = NO ]; then
103 echo test sslv2/sslv3 w/o DHE via BIO pair
104 $ssltest -bio_pair -no_dhe $extra || exit 1
105fi
106
107echo test sslv2/sslv3 with 1024bit DHE via BIO pair
108$ssltest -bio_pair -dhe1024dsa -v $extra || exit 1
109
110echo test sslv2/sslv3 with server authentication
111$ssltest -bio_pair -server_auth $CA $extra || exit 1
112
113echo test sslv2/sslv3 with client authentication via BIO pair
114$ssltest -bio_pair -client_auth $CA $extra || exit 1
115
116echo test sslv2/sslv3 with both client and server authentication via BIO pair
117$ssltest -bio_pair -server_auth -client_auth $CA $extra || exit 1
118
119echo test sslv2/sslv3 with both client and server authentication via BIO pair and app verify
120$ssltest -bio_pair -server_auth -client_auth -app_verify $CA $extra || exit 1
121
122#############################################################################
123
124if ../util/shlib_wrap.sh ../apps/openssl no-dh; then
125 echo skipping anonymous DH tests
126else
127 echo test tls1 with 1024bit anonymous DH, multiple handshakes
128 $ssltest -v -bio_pair -tls1 -cipher ADH -dhe1024dsa -num 10 -f -time $extra || exit 1
129fi
130
131if ../util/shlib_wrap.sh ../apps/openssl no-rsa; then
132 echo skipping RSA tests
133else
134 echo test tls1 with 1024bit RSA, no DHE, multiple handshakes
135 ../util/shlib_wrap.sh ./ssltest -v -bio_pair -tls1 -cert ../apps/server2.pem -no_dhe -num 10 -f -time $extra || exit 1
136
137 if ../util/shlib_wrap.sh ../apps/openssl no-dh; then
138 echo skipping RSA+DHE tests
139 else
140 echo test tls1 with 1024bit RSA, 1024bit DHE, multiple handshakes
141 ../util/shlib_wrap.sh ./ssltest -v -bio_pair -tls1 -cert ../apps/server2.pem -dhe1024dsa -num 10 -f -time $extra || exit 1
142 fi
143fi
144
145exit 0
diff --git a/src/lib/libssl/test/testsslproxy b/src/lib/libssl/test/testsslproxy
new file mode 100644
index 0000000000..58bbda8ab7
--- /dev/null
+++ b/src/lib/libssl/test/testsslproxy
@@ -0,0 +1,10 @@
1#! /bin/sh
2
3echo 'Testing a lot of proxy conditions.'
4echo 'Some of them may turn out being invalid, which is fine.'
5for auth in A B C BC; do
6 for cond in A B C 'A|B&!C'; do
7 sh ./testssl $1 $2 $3 "-proxy -proxy_auth $auth -proxy_cond $cond"
8 if [ $? = 3 ]; then exit 1; fi
9 done
10done
diff --git a/src/lib/libssl/test/testx509.pem b/src/lib/libssl/test/testx509.pem
new file mode 100644
index 0000000000..8a85d14964
--- /dev/null
+++ b/src/lib/libssl/test/testx509.pem
@@ -0,0 +1,10 @@
1-----BEGIN CERTIFICATE-----
2MIIBWzCCAQYCARgwDQYJKoZIhvcNAQEEBQAwODELMAkGA1UEBhMCQVUxDDAKBgNV
3BAgTA1FMRDEbMBkGA1UEAxMSU1NMZWF5L3JzYSB0ZXN0IENBMB4XDTk1MDYxOTIz
4MzMxMloXDTk1MDcxNzIzMzMxMlowOjELMAkGA1UEBhMCQVUxDDAKBgNVBAgTA1FM
5RDEdMBsGA1UEAxMUU1NMZWF5L3JzYSB0ZXN0IGNlcnQwXDANBgkqhkiG9w0BAQEF
6AANLADBIAkEAqtt6qS5GTxVxGZYWa0/4u+IwHf7p2LNZbcPBp9/OfIcYAXBQn8hO
7/Re1uwLKXdCjIoaGs4DLdG88rkzfyK5dPQIDAQABMAwGCCqGSIb3DQIFBQADQQAE
8Wc7EcF8po2/ZO6kNCwK/ICH6DobgLekA5lSLr5EvuioZniZp5lFzAw4+YzPQ7XKJ
9zl9HYIMxATFyqSiD9jsx
10-----END CERTIFICATE-----
diff --git a/src/lib/libssl/test/times b/src/lib/libssl/test/times
new file mode 100644
index 0000000000..738d569b8f
--- /dev/null
+++ b/src/lib/libssl/test/times
@@ -0,0 +1,113 @@
1
2More number for the questions about SSL overheads....
3
4The following numbers were generated on a pentium pro 200, running linux.
5They give an indication of the SSL protocol and encryption overheads.
6
7The program that generated them is an unreleased version of ssl/ssltest.c
8which is the SSLeay ssl protocol testing program. It is a single process that
9talks both sides of the SSL protocol via a non-blocking memory buffer
10interface.
11
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
14number of bytes exchanged bewteen the client and server side of the protocol.
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,
17the data is being encrypted, decrypted, encrypted and then decrypted again.
18It is a round trip of that many bytes. Because the one process performs
19both the client and server sides of the protocol and it sends this many bytes
20each direction, multiply this number by 4 to generate the number
21of bytes encrypted/decrypted/MACed. The first time value is how many seconds
22elapsed doing a full SSL handshake, the second is the cost of one
23full handshake and the rest being session-id reuse.
24
25SSLv2 RC4-MD5 1000 x 1 12.83s 0.70s
26SSLv3 NULL-MD5 1000 x 1 14.35s 1.47s
27SSLv3 RC4-MD5 1000 x 1 14.46s 1.56s
28SSLv3 RC4-MD5 1000 x 1 51.93s 1.62s 1024bit RSA
29SSLv3 RC4-SHA 1000 x 1 14.61s 1.83s
30SSLv3 DES-CBC-SHA 1000 x 1 14.70s 1.89s
31SSLv3 DES-CBC3-SHA 1000 x 1 15.16s 2.16s
32
33SSLv2 RC4-MD5 1000 x 1024 13.72s 1.27s
34SSLv3 NULL-MD5 1000 x 1024 14.79s 1.92s
35SSLv3 RC4-MD5 1000 x 1024 52.58s 2.29s 1024bit RSA
36SSLv3 RC4-SHA 1000 x 1024 15.39s 2.67s
37SSLv3 DES-CBC-SHA 1000 x 1024 16.45s 3.55s
38SSLv3 DES-CBC3-SHA 1000 x 1024 18.21s 5.38s
39
40SSLv2 RC4-MD5 1000 x 10240 18.97s 6.52s
41SSLv3 NULL-MD5 1000 x 10240 17.79s 5.11s
42SSLv3 RC4-MD5 1000 x 10240 20.25s 7.90s
43SSLv3 RC4-MD5 1000 x 10240 58.26s 8.08s 1024bit RSA
44SSLv3 RC4-SHA 1000 x 10240 22.96s 11.44s
45SSLv3 DES-CBC-SHA 1000 x 10240 30.65s 18.41s
46SSLv3 DES-CBC3-SHA 1000 x 10240 47.04s 34.53s
47
48SSLv2 RC4-MD5 1000 x 102400 70.22s 57.74s
49SSLv3 NULL-MD5 1000 x 102400 43.73s 31.03s
50SSLv3 RC4-MD5 1000 x 102400 71.32s 58.83s
51SSLv3 RC4-MD5 1000 x 102400 109.66s 59.20s 1024bit RSA
52SSLv3 RC4-SHA 1000 x 102400 95.88s 82.21s
53SSLv3 DES-CBC-SHA 1000 x 102400 173.22s 160.55s
54SSLv3 DES-CBC3-SHA 1000 x 102400 336.61s 323.82s
55
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,
58a pentium pro 200 running linux can handle the SSLv3 protocol overheads of
59about 49 connections a second. Reality will be quite different :-).
60
61Remeber 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
63would be one public and one private operation, but the protocol/MAC/cipher
64cost would be quite similar in both the client and server.
65
66eric (adding numbers to speculation)
67
68--- Appendix ---
69- The time measured is user time but these number a very rough.
70- Remember this is the cost of both client and server sides of the protocol.
71- The TCP/kernel overhead of connection establishment is normally the
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
74 a loaded server.
75- The TCP round trip latencies, while slowing indervidual connections,
76 would have minimal impact on throughput.
77- Instead of sending one 102400 byte buffer, one 8k buffer is sent until
78- the required number of bytes are processed.
79- The SSLv3 connections were actually SSLv2 compatable SSLv3 headers.
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
82 protocol. This would slow things down very little.
83- The library being used is SSLeay 0.8.x.
84- The normal mesauring system was commands of the form
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
87 SSLeay.
88
89The general cipher performace number for this platform are
90
91SSLeay 0.8.2a 04-Sep-1997
92built on Fri Sep 5 17:37:05 EST 1997
93options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) idea(int) blowfish(ptr2)
94C flags:gcc -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall -Wuninitialized
95The 'numbers' are in 1000s of bytes per second processed.
96type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
97md2 131.02k 368.41k 500.57k 549.21k 566.09k
98mdc2 535.60k 589.10k 595.88k 595.97k 594.54k
99md5 1801.53k 9674.77k 17484.03k 21849.43k 23592.96k
100sha 1261.63k 5533.25k 9285.63k 11187.88k 11913.90k
101sha1 1103.13k 4782.53k 7933.78k 9472.34k 10070.70k
102rc4 10722.53k 14443.93k 15215.79k 15299.24k 15219.59k
103des cbc 3286.57k 3827.73k 3913.39k 3931.82k 3926.70k
104des ede3 1443.50k 1549.08k 1561.17k 1566.38k 1564.67k
105idea cbc 2203.64k 2508.16k 2538.33k 2543.62k 2547.71k
106rc2 cbc 1430.94k 1511.59k 1524.82k 1527.13k 1523.33k
107blowfish cbc 4716.07k 5965.82k 6190.17k 6243.67k 6234.11k
108 sign verify
109rsa 512 bits 0.0100s 0.0011s
110rsa 1024 bits 0.0451s 0.0012s
111rsa 2048 bits 0.2605s 0.0086s
112rsa 4096 bits 1.6883s 0.0302s
113
diff --git a/src/lib/libssl/test/tpkcs7 b/src/lib/libssl/test/tpkcs7
new file mode 100644
index 0000000000..79bb6e0edf
--- /dev/null
+++ b/src/lib/libssl/test/tpkcs7
@@ -0,0 +1,55 @@
1#!/bin/sh
2
3if test "$OSTYPE" = msdosdjgpp; then
4 PATH=../apps\;$PATH
5else
6 PATH=../apps:$PATH
7fi
8export PATH
9
10cmd='../util/shlib_wrap.sh ../apps/openssl pkcs7'
11
12if [ "$1"x != "x" ]; then
13 t=$1
14else
15 t=testp7.pem
16fi
17
18echo testing pkcs7 conversions
19cp $t fff.p
20
21echo "p -> d"
22$cmd -in fff.p -inform p -outform d >f.d
23if [ $? != 0 ]; then exit 1; fi
24echo "p -> p"
25$cmd -in fff.p -inform p -outform p >f.p
26if [ $? != 0 ]; then exit 1; fi
27
28echo "d -> d"
29$cmd -in f.d -inform d -outform d >ff.d1
30if [ $? != 0 ]; then exit 1; fi
31echo "p -> d"
32$cmd -in f.p -inform p -outform d >ff.d3
33if [ $? != 0 ]; then exit 1; fi
34
35echo "d -> p"
36$cmd -in f.d -inform d -outform p >ff.p1
37if [ $? != 0 ]; then exit 1; fi
38echo "p -> p"
39$cmd -in f.p -inform p -outform p >ff.p3
40if [ $? != 0 ]; then exit 1; fi
41
42cmp fff.p f.p
43if [ $? != 0 ]; then exit 1; fi
44cmp fff.p ff.p1
45if [ $? != 0 ]; then exit 1; fi
46cmp fff.p ff.p3
47if [ $? != 0 ]; then exit 1; fi
48
49cmp f.p ff.p1
50if [ $? != 0 ]; then exit 1; fi
51cmp f.p ff.p3
52if [ $? != 0 ]; then exit 1; fi
53
54/bin/rm -f f.* ff.* fff.*
55exit 0
diff --git a/src/lib/libssl/test/tpkcs7d b/src/lib/libssl/test/tpkcs7d
new file mode 100644
index 0000000000..20394b34c4
--- /dev/null
+++ b/src/lib/libssl/test/tpkcs7d
@@ -0,0 +1,48 @@
1#!/bin/sh
2
3if test "$OSTYPE" = msdosdjgpp; then
4 PATH=../apps\;$PATH
5else
6 PATH=../apps:$PATH
7fi
8export PATH
9
10cmd='../util/shlib_wrap.sh ../apps/openssl pkcs7'
11
12if [ "$1"x != "x" ]; then
13 t=$1
14else
15 t=pkcs7-1.pem
16fi
17
18echo "testing pkcs7 conversions (2)"
19cp $t fff.p
20
21echo "p -> d"
22$cmd -in fff.p -inform p -outform d >f.d
23if [ $? != 0 ]; then exit 1; fi
24echo "p -> p"
25$cmd -in fff.p -inform p -outform p >f.p
26if [ $? != 0 ]; then exit 1; fi
27
28echo "d -> d"
29$cmd -in f.d -inform d -outform d >ff.d1
30if [ $? != 0 ]; then exit 1; fi
31echo "p -> d"
32$cmd -in f.p -inform p -outform d >ff.d3
33if [ $? != 0 ]; then exit 1; fi
34
35echo "d -> p"
36$cmd -in f.d -inform d -outform p >ff.p1
37if [ $? != 0 ]; then exit 1; fi
38echo "p -> p"
39$cmd -in f.p -inform p -outform p >ff.p3
40if [ $? != 0 ]; then exit 1; fi
41
42cmp f.p ff.p1
43if [ $? != 0 ]; then exit 1; fi
44cmp f.p ff.p3
45if [ $? != 0 ]; then exit 1; fi
46
47/bin/rm -f f.* ff.* fff.*
48exit 0
diff --git a/src/lib/libssl/test/treq b/src/lib/libssl/test/treq
new file mode 100644
index 0000000000..7e020210a5
--- /dev/null
+++ b/src/lib/libssl/test/treq
@@ -0,0 +1,90 @@
1#!/bin/sh
2
3if test "$OSTYPE" = msdosdjgpp; then
4 PATH=../apps\;$PATH
5else
6 PATH=../apps:$PATH
7fi
8export PATH
9
10cmd='../util/shlib_wrap.sh ../apps/openssl req -config ../apps/openssl.cnf'
11
12if [ "$1"x != "x" ]; then
13 t=$1
14else
15 t=testreq.pem
16fi
17
18if $cmd -in $t -inform p -noout -text | fgrep 'Unknown Public Key'; then
19 echo "skipping req conversion test for $t"
20 exit 0
21fi
22
23echo testing req conversions
24cp $t fff.p
25
26echo "p -> d"
27$cmd -in fff.p -inform p -outform d >f.d
28if [ $? != 0 ]; then exit 1; fi
29#echo "p -> t"
30#$cmd -in fff.p -inform p -outform t >f.t
31#if [ $? != 0 ]; then exit 1; fi
32echo "p -> p"
33$cmd -in fff.p -inform p -outform p >f.p
34if [ $? != 0 ]; then exit 1; fi
35
36echo "d -> d"
37$cmd -verify -in f.d -inform d -outform d >ff.d1
38if [ $? != 0 ]; then exit 1; fi
39#echo "t -> d"
40#$cmd -in f.t -inform t -outform d >ff.d2
41#if [ $? != 0 ]; then exit 1; fi
42echo "p -> d"
43$cmd -verify -in f.p -inform p -outform d >ff.d3
44if [ $? != 0 ]; then exit 1; fi
45
46#echo "d -> t"
47#$cmd -in f.d -inform d -outform t >ff.t1
48#if [ $? != 0 ]; then exit 1; fi
49#echo "t -> t"
50#$cmd -in f.t -inform t -outform t >ff.t2
51#if [ $? != 0 ]; then exit 1; fi
52#echo "p -> t"
53#$cmd -in f.p -inform p -outform t >ff.t3
54#if [ $? != 0 ]; then exit 1; fi
55
56echo "d -> p"
57$cmd -in f.d -inform d -outform p >ff.p1
58if [ $? != 0 ]; then exit 1; fi
59#echo "t -> p"
60#$cmd -in f.t -inform t -outform p >ff.p2
61#if [ $? != 0 ]; then exit 1; fi
62echo "p -> p"
63$cmd -in f.p -inform p -outform p >ff.p3
64if [ $? != 0 ]; then exit 1; fi
65
66cmp fff.p f.p
67if [ $? != 0 ]; then exit 1; fi
68cmp fff.p ff.p1
69if [ $? != 0 ]; then exit 1; fi
70#cmp fff.p ff.p2
71#if [ $? != 0 ]; then exit 1; fi
72cmp fff.p ff.p3
73if [ $? != 0 ]; then exit 1; fi
74
75#cmp f.t ff.t1
76#if [ $? != 0 ]; then exit 1; fi
77#cmp f.t ff.t2
78#if [ $? != 0 ]; then exit 1; fi
79#cmp f.t ff.t3
80#if [ $? != 0 ]; then exit 1; fi
81
82cmp f.p ff.p1
83if [ $? != 0 ]; then exit 1; fi
84#cmp f.p ff.p2
85#if [ $? != 0 ]; then exit 1; fi
86cmp f.p ff.p3
87if [ $? != 0 ]; then exit 1; fi
88
89/bin/rm -f f.* ff.* fff.*
90exit 0
diff --git a/src/lib/libssl/test/trsa b/src/lib/libssl/test/trsa
new file mode 100644
index 0000000000..67b4a98841
--- /dev/null
+++ b/src/lib/libssl/test/trsa
@@ -0,0 +1,90 @@
1#!/bin/sh
2
3if test "$OSTYPE" = msdosdjgpp; then
4 PATH=../apps\;$PATH
5else
6 PATH=../apps:$PATH
7fi
8export PATH
9
10if ../util/shlib_wrap.sh ../apps/openssl no-rsa; then
11 echo skipping rsa conversion test
12 exit 0
13fi
14
15cmd='../util/shlib_wrap.sh ../apps/openssl rsa'
16
17if [ "$1"x != "x" ]; then
18 t=$1
19else
20 t=testrsa.pem
21fi
22
23echo testing rsa conversions
24cp $t fff.p
25
26echo "p -> d"
27$cmd -in fff.p -inform p -outform d >f.d
28if [ $? != 0 ]; then exit 1; fi
29#echo "p -> t"
30#$cmd -in fff.p -inform p -outform t >f.t
31#if [ $? != 0 ]; then exit 1; fi
32echo "p -> p"
33$cmd -in fff.p -inform p -outform p >f.p
34if [ $? != 0 ]; then exit 1; fi
35
36echo "d -> d"
37$cmd -in f.d -inform d -outform d >ff.d1
38if [ $? != 0 ]; then exit 1; fi
39#echo "t -> d"
40#$cmd -in f.t -inform t -outform d >ff.d2
41#if [ $? != 0 ]; then exit 1; fi
42echo "p -> d"
43$cmd -in f.p -inform p -outform d >ff.d3
44if [ $? != 0 ]; then exit 1; fi
45
46#echo "d -> t"
47#$cmd -in f.d -inform d -outform t >ff.t1
48#if [ $? != 0 ]; then exit 1; fi
49#echo "t -> t"
50#$cmd -in f.t -inform t -outform t >ff.t2
51#if [ $? != 0 ]; then exit 1; fi
52#echo "p -> t"
53#$cmd -in f.p -inform p -outform t >ff.t3
54#if [ $? != 0 ]; then exit 1; fi
55
56echo "d -> p"
57$cmd -in f.d -inform d -outform p >ff.p1
58if [ $? != 0 ]; then exit 1; fi
59#echo "t -> p"
60#$cmd -in f.t -inform t -outform p >ff.p2
61#if [ $? != 0 ]; then exit 1; fi
62echo "p -> p"
63$cmd -in f.p -inform p -outform p >ff.p3
64if [ $? != 0 ]; then exit 1; fi
65
66cmp fff.p f.p
67if [ $? != 0 ]; then exit 1; fi
68cmp fff.p ff.p1
69if [ $? != 0 ]; then exit 1; fi
70#cmp fff.p ff.p2
71#if [ $? != 0 ]; then exit 1; fi
72cmp fff.p ff.p3
73if [ $? != 0 ]; then exit 1; fi
74
75#cmp f.t ff.t1
76#if [ $? != 0 ]; then exit 1; fi
77#cmp f.t ff.t2
78#if [ $? != 0 ]; then exit 1; fi
79#cmp f.t ff.t3
80#if [ $? != 0 ]; then exit 1; fi
81
82cmp f.p ff.p1
83if [ $? != 0 ]; then exit 1; fi
84#cmp f.p ff.p2
85#if [ $? != 0 ]; then exit 1; fi
86cmp f.p ff.p3
87if [ $? != 0 ]; then exit 1; fi
88
89/bin/rm -f f.* ff.* fff.*
90exit 0
diff --git a/src/lib/libssl/test/tsid b/src/lib/libssl/test/tsid
new file mode 100644
index 0000000000..fb4a7213b9
--- /dev/null
+++ b/src/lib/libssl/test/tsid
@@ -0,0 +1,85 @@
1#!/bin/sh
2
3if test "$OSTYPE" = msdosdjgpp; then
4 PATH=../apps\;$PATH
5else
6 PATH=../apps:$PATH
7fi
8export PATH
9
10cmd='../util/shlib_wrap.sh ../apps/openssl sess_id'
11
12if [ "$1"x != "x" ]; then
13 t=$1
14else
15 t=testsid.pem
16fi
17
18echo testing session-id conversions
19cp $t fff.p
20
21echo "p -> d"
22$cmd -in fff.p -inform p -outform d >f.d
23if [ $? != 0 ]; then exit 1; fi
24#echo "p -> t"
25#$cmd -in fff.p -inform p -outform t >f.t
26#if [ $? != 0 ]; then exit 1; fi
27echo "p -> p"
28$cmd -in fff.p -inform p -outform p >f.p
29if [ $? != 0 ]; then exit 1; fi
30
31echo "d -> d"
32$cmd -in f.d -inform d -outform d >ff.d1
33if [ $? != 0 ]; then exit 1; fi
34#echo "t -> d"
35#$cmd -in f.t -inform t -outform d >ff.d2
36#if [ $? != 0 ]; then exit 1; fi
37echo "p -> d"
38$cmd -in f.p -inform p -outform d >ff.d3
39if [ $? != 0 ]; then exit 1; fi
40
41#echo "d -> t"
42#$cmd -in f.d -inform d -outform t >ff.t1
43#if [ $? != 0 ]; then exit 1; fi
44#echo "t -> t"
45#$cmd -in f.t -inform t -outform t >ff.t2
46#if [ $? != 0 ]; then exit 1; fi
47#echo "p -> t"
48#$cmd -in f.p -inform p -outform t >ff.t3
49#if [ $? != 0 ]; then exit 1; fi
50
51echo "d -> p"
52$cmd -in f.d -inform d -outform p >ff.p1
53if [ $? != 0 ]; then exit 1; fi
54#echo "t -> p"
55#$cmd -in f.t -inform t -outform p >ff.p2
56#if [ $? != 0 ]; then exit 1; fi
57echo "p -> p"
58$cmd -in f.p -inform p -outform p >ff.p3
59if [ $? != 0 ]; then exit 1; fi
60
61cmp fff.p f.p
62if [ $? != 0 ]; then exit 1; fi
63cmp fff.p ff.p1
64if [ $? != 0 ]; then exit 1; fi
65#cmp fff.p ff.p2
66#if [ $? != 0 ]; then exit 1; fi
67cmp fff.p ff.p3
68if [ $? != 0 ]; then exit 1; fi
69
70#cmp f.t ff.t1
71#if [ $? != 0 ]; then exit 1; fi
72#cmp f.t ff.t2
73#if [ $? != 0 ]; then exit 1; fi
74#cmp f.t ff.t3
75#if [ $? != 0 ]; then exit 1; fi
76
77cmp f.p ff.p1
78if [ $? != 0 ]; then exit 1; fi
79#cmp f.p ff.p2
80#if [ $? != 0 ]; then exit 1; fi
81cmp f.p ff.p3
82if [ $? != 0 ]; then exit 1; fi
83
84/bin/rm -f f.* ff.* fff.*
85exit 0
diff --git a/src/lib/libssl/test/tverify.com b/src/lib/libssl/test/tverify.com
index 021d701d79..2060184d1e 100644
--- a/src/lib/libssl/test/tverify.com
+++ b/src/lib/libssl/test/tverify.com
@@ -8,22 +8,22 @@ $ copy/concatenate [-.certs]*.pem certs.tmp
8$ 8$
9$ old_f := 9$ old_f :=
10$ loop_certs: 10$ loop_certs:
11$ verify := NO 11$ c := NO
12$ more := YES
13$ certs := 12$ certs :=
14$ loop_certs2: 13$ loop_certs2:
15$ f = f$search("[-.certs]*.pem") 14$ f = f$search("[-.certs]*.pem")
16$ if f .nes. "" .and. f .nes. old_f 15$ if f .nes. "" .and. f .nes. old_f
17$ then 16$ then
18$ certs = certs + " [-.certs]" + f$parse(f,,,"NAME") + ".pem" 17$ certs = certs + " [-.certs]" + f$parse(f,,,"NAME") + ".pem"
19$ verify := YES 18$ c := YES
20$ if f$length(certs) .lt. 180 then goto loop_certs2 19$ if f$length(certs) .lt. 180 then goto loop_certs2
21$ else
22$ more := NO
23$ endif 20$ endif
24$ certs = certs - " " 21$ certs = certs - " "
25$ 22$
26$ if verify then mcr 'exe_dir'openssl verify "-CAfile" certs.tmp 'certs' 23$ if c
27$ if more then goto loop_certs 24$ then
25$ mcr 'exe_dir'openssl verify "-CAfile" certs.tmp 'certs'
26$ goto loop_certs
27$ endif
28$ 28$
29$ delete certs.tmp;* 29$ delete certs.tmp;*
diff --git a/src/lib/libssl/test/tx509 b/src/lib/libssl/test/tx509
new file mode 100644
index 0000000000..1b9c8661f3
--- /dev/null
+++ b/src/lib/libssl/test/tx509
@@ -0,0 +1,85 @@
1#!/bin/sh
2
3if test "$OSTYPE" = msdosdjgpp; then
4 PATH=../apps\;$PATH
5else
6 PATH=../apps:$PATH
7fi
8export PATH
9
10cmd='../util/shlib_wrap.sh ../apps/openssl x509'
11
12if [ "$1"x != "x" ]; then
13 t=$1
14else
15 t=testx509.pem
16fi
17
18echo testing X509 conversions
19cp $t fff.p
20
21echo "p -> d"
22$cmd -in fff.p -inform p -outform d >f.d
23if [ $? != 0 ]; then exit 1; fi
24echo "p -> n"
25$cmd -in fff.p -inform p -outform n >f.n
26if [ $? != 0 ]; then exit 1; fi
27echo "p -> p"
28$cmd -in fff.p -inform p -outform p >f.p
29if [ $? != 0 ]; then exit 1; fi
30
31echo "d -> d"
32$cmd -in f.d -inform d -outform d >ff.d1
33if [ $? != 0 ]; then exit 1; fi
34echo "n -> d"
35$cmd -in f.n -inform n -outform d >ff.d2
36if [ $? != 0 ]; then exit 1; fi
37echo "p -> d"
38$cmd -in f.p -inform p -outform d >ff.d3
39if [ $? != 0 ]; then exit 1; fi
40
41echo "d -> n"
42$cmd -in f.d -inform d -outform n >ff.n1
43if [ $? != 0 ]; then exit 1; fi
44echo "n -> n"
45$cmd -in f.n -inform n -outform n >ff.n2
46if [ $? != 0 ]; then exit 1; fi
47echo "p -> n"
48$cmd -in f.p -inform p -outform n >ff.n3
49if [ $? != 0 ]; then exit 1; fi
50
51echo "d -> p"
52$cmd -in f.d -inform d -outform p >ff.p1
53if [ $? != 0 ]; then exit 1; fi
54echo "n -> p"
55$cmd -in f.n -inform n -outform p >ff.p2
56if [ $? != 0 ]; then exit 1; fi
57echo "p -> p"
58$cmd -in f.p -inform p -outform p >ff.p3
59if [ $? != 0 ]; then exit 1; fi
60
61cmp fff.p f.p
62if [ $? != 0 ]; then exit 1; fi
63cmp fff.p ff.p1
64if [ $? != 0 ]; then exit 1; fi
65cmp fff.p ff.p2
66if [ $? != 0 ]; then exit 1; fi
67cmp fff.p ff.p3
68if [ $? != 0 ]; then exit 1; fi
69
70cmp f.n ff.n1
71if [ $? != 0 ]; then exit 1; fi
72cmp f.n ff.n2
73if [ $? != 0 ]; then exit 1; fi
74cmp f.n ff.n3
75if [ $? != 0 ]; then exit 1; fi
76
77cmp f.p ff.p1
78if [ $? != 0 ]; then exit 1; fi
79cmp f.p ff.p2
80if [ $? != 0 ]; then exit 1; fi
81cmp f.p ff.p3
82if [ $? != 0 ]; then exit 1; fi
83
84/bin/rm -f f.* ff.* fff.*
85exit 0
diff --git a/src/lib/libssl/test/v3-cert1.pem b/src/lib/libssl/test/v3-cert1.pem
new file mode 100644
index 0000000000..0da253d5c3
--- /dev/null
+++ b/src/lib/libssl/test/v3-cert1.pem
@@ -0,0 +1,16 @@
1-----BEGIN CERTIFICATE-----
2MIICjTCCAfigAwIBAgIEMaYgRzALBgkqhkiG9w0BAQQwRTELMAkGA1UEBhMCVVMx
3NjA0BgNVBAoTLU5hdGlvbmFsIEFlcm9uYXV0aWNzIGFuZCBTcGFjZSBBZG1pbmlz
4dHJhdGlvbjAmFxE5NjA1MjgxMzQ5MDUrMDgwMBcROTgwNTI4MTM0OTA1KzA4MDAw
5ZzELMAkGA1UEBhMCVVMxNjA0BgNVBAoTLU5hdGlvbmFsIEFlcm9uYXV0aWNzIGFu
6ZCBTcGFjZSBBZG1pbmlzdHJhdGlvbjEgMAkGA1UEBRMCMTYwEwYDVQQDEwxTdGV2
7ZSBTY2hvY2gwWDALBgkqhkiG9w0BAQEDSQAwRgJBALrAwyYdgxmzNP/ts0Uyf6Bp
8miJYktU/w4NG67ULaN4B5CnEz7k57s9o3YY3LecETgQ5iQHmkwlYDTL2fTgVfw0C
9AQOjgaswgagwZAYDVR0ZAQH/BFowWDBWMFQxCzAJBgNVBAYTAlVTMTYwNAYDVQQK
10Ey1OYXRpb25hbCBBZXJvbmF1dGljcyBhbmQgU3BhY2UgQWRtaW5pc3RyYXRpb24x
11DTALBgNVBAMTBENSTDEwFwYDVR0BAQH/BA0wC4AJODMyOTcwODEwMBgGA1UdAgQR
12MA8ECTgzMjk3MDgyM4ACBSAwDQYDVR0KBAYwBAMCBkAwCwYJKoZIhvcNAQEEA4GB
13AH2y1VCEw/A4zaXzSYZJTTUi3uawbbFiS2yxHvgf28+8Js0OHXk1H1w2d6qOHH21
14X82tZXd/0JtG0g1T9usFFBDvYK8O0ebgz/P5ELJnBL2+atObEuJy1ZZ0pBDWINR3
15WkDNLCGiTkCKp0F5EWIrVDwh54NNevkCQRZita+z4IBO
16-----END CERTIFICATE-----
diff --git a/src/lib/libssl/test/v3-cert2.pem b/src/lib/libssl/test/v3-cert2.pem
new file mode 100644
index 0000000000..de0723ff8d
--- /dev/null
+++ b/src/lib/libssl/test/v3-cert2.pem
@@ -0,0 +1,16 @@
1-----BEGIN CERTIFICATE-----
2MIICiTCCAfKgAwIBAgIEMeZfHzANBgkqhkiG9w0BAQQFADB9MQswCQYDVQQGEwJD
3YTEPMA0GA1UEBxMGTmVwZWFuMR4wHAYDVQQLExVObyBMaWFiaWxpdHkgQWNjZXB0
4ZWQxHzAdBgNVBAoTFkZvciBEZW1vIFB1cnBvc2VzIE9ubHkxHDAaBgNVBAMTE0Vu
5dHJ1c3QgRGVtbyBXZWIgQ0EwHhcNOTYwNzEyMTQyMDE1WhcNOTYxMDEyMTQyMDE1
6WjB0MSQwIgYJKoZIhvcNAQkBExVjb29rZUBpc3NsLmF0bC5ocC5jb20xCzAJBgNV
7BAYTAlVTMScwJQYDVQQLEx5IZXdsZXR0IFBhY2thcmQgQ29tcGFueSAoSVNTTCkx
8FjAUBgNVBAMTDVBhdWwgQS4gQ29va2UwXDANBgkqhkiG9w0BAQEFAANLADBIAkEA
96ceSq9a9AU6g+zBwaL/yVmW1/9EE8s5you1mgjHnj0wAILuoB3L6rm6jmFRy7QZT
10G43IhVZdDua4e+5/n1ZslwIDAQABo2MwYTARBglghkgBhvhCAQEEBAMCB4AwTAYJ
11YIZIAYb4QgENBD8WPVRoaXMgY2VydGlmaWNhdGUgaXMgb25seSBpbnRlbmRlZCBm
12b3IgZGVtb25zdHJhdGlvbiBwdXJwb3Nlcy4wDQYJKoZIhvcNAQEEBQADgYEAi8qc
13F3zfFqy1sV8NhjwLVwOKuSfhR/Z8mbIEUeSTlnH3QbYt3HWZQ+vXI8mvtZoBc2Fz
14lexKeIkAZXCesqGbs6z6nCt16P6tmdfbZF3I3AWzLquPcOXjPf4HgstkyvVBn0Ap
15jAFN418KF/Cx4qyHB4cjdvLrRjjQLnb2+ibo7QU=
16-----END CERTIFICATE-----
diff --git a/src/lib/libssl/tls1.h b/src/lib/libssl/tls1.h
new file mode 100644
index 0000000000..38838ea9a5
--- /dev/null
+++ b/src/lib/libssl/tls1.h
@@ -0,0 +1,195 @@
1/* ssl/tls1.h */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#ifndef HEADER_TLS1_H
60#define HEADER_TLS1_H
61
62#include <openssl/buffer.h>
63
64#ifdef __cplusplus
65extern "C" {
66#endif
67
68#define TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES 1
69
70#define TLS1_VERSION 0x0301
71#define TLS1_VERSION_MAJOR 0x03
72#define TLS1_VERSION_MINOR 0x01
73
74#define TLS1_AD_DECRYPTION_FAILED 21
75#define TLS1_AD_RECORD_OVERFLOW 22
76#define TLS1_AD_UNKNOWN_CA 48 /* fatal */
77#define TLS1_AD_ACCESS_DENIED 49 /* fatal */
78#define TLS1_AD_DECODE_ERROR 50 /* fatal */
79#define TLS1_AD_DECRYPT_ERROR 51
80#define TLS1_AD_EXPORT_RESTRICTION 60 /* fatal */
81#define TLS1_AD_PROTOCOL_VERSION 70 /* fatal */
82#define TLS1_AD_INSUFFICIENT_SECURITY 71 /* fatal */
83#define TLS1_AD_INTERNAL_ERROR 80 /* fatal */
84#define TLS1_AD_USER_CANCELLED 90
85#define TLS1_AD_NO_RENEGOTIATION 100
86
87/* Additional TLS ciphersuites from draft-ietf-tls-56-bit-ciphersuites-00.txt
88 * (available if TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES is defined, see
89 * s3_lib.c). We actually treat them like SSL 3.0 ciphers, which we probably
90 * shouldn't. */
91#define TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_MD5 0x03000060
92#define TLS1_CK_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 0x03000061
93#define TLS1_CK_RSA_EXPORT1024_WITH_DES_CBC_SHA 0x03000062
94#define TLS1_CK_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA 0x03000063
95#define TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_SHA 0x03000064
96#define TLS1_CK_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA 0x03000065
97#define TLS1_CK_DHE_DSS_WITH_RC4_128_SHA 0x03000066
98
99/* AES ciphersuites from RFC3268 */
100
101#define TLS1_CK_RSA_WITH_AES_128_SHA 0x0300002F
102#define TLS1_CK_DH_DSS_WITH_AES_128_SHA 0x03000030
103#define TLS1_CK_DH_RSA_WITH_AES_128_SHA 0x03000031
104#define TLS1_CK_DHE_DSS_WITH_AES_128_SHA 0x03000032
105#define TLS1_CK_DHE_RSA_WITH_AES_128_SHA 0x03000033
106#define TLS1_CK_ADH_WITH_AES_128_SHA 0x03000034
107
108#define TLS1_CK_RSA_WITH_AES_256_SHA 0x03000035
109#define TLS1_CK_DH_DSS_WITH_AES_256_SHA 0x03000036
110#define TLS1_CK_DH_RSA_WITH_AES_256_SHA 0x03000037
111#define TLS1_CK_DHE_DSS_WITH_AES_256_SHA 0x03000038
112#define TLS1_CK_DHE_RSA_WITH_AES_256_SHA 0x03000039
113#define TLS1_CK_ADH_WITH_AES_256_SHA 0x0300003A
114
115/* XXX
116 * Inconsistency alert:
117 * The OpenSSL names of ciphers with ephemeral DH here include the string
118 * "DHE", while elsewhere it has always been "EDH".
119 * (The alias for the list of all such ciphers also is "EDH".)
120 * The specifications speak of "EDH"; maybe we should allow both forms
121 * for everything. */
122#define TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_MD5 "EXP1024-RC4-MD5"
123#define TLS1_TXT_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 "EXP1024-RC2-CBC-MD5"
124#define TLS1_TXT_RSA_EXPORT1024_WITH_DES_CBC_SHA "EXP1024-DES-CBC-SHA"
125#define TLS1_TXT_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA "EXP1024-DHE-DSS-DES-CBC-SHA"
126#define TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_SHA "EXP1024-RC4-SHA"
127#define TLS1_TXT_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA "EXP1024-DHE-DSS-RC4-SHA"
128#define TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA "DHE-DSS-RC4-SHA"
129
130/* AES ciphersuites from RFC3268 */
131#define TLS1_TXT_RSA_WITH_AES_128_SHA "AES128-SHA"
132#define TLS1_TXT_DH_DSS_WITH_AES_128_SHA "DH-DSS-AES128-SHA"
133#define TLS1_TXT_DH_RSA_WITH_AES_128_SHA "DH-RSA-AES128-SHA"
134#define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA "DHE-DSS-AES128-SHA"
135#define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA "DHE-RSA-AES128-SHA"
136#define TLS1_TXT_ADH_WITH_AES_128_SHA "ADH-AES128-SHA"
137
138#define TLS1_TXT_RSA_WITH_AES_256_SHA "AES256-SHA"
139#define TLS1_TXT_DH_DSS_WITH_AES_256_SHA "DH-DSS-AES256-SHA"
140#define TLS1_TXT_DH_RSA_WITH_AES_256_SHA "DH-RSA-AES256-SHA"
141#define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA "DHE-DSS-AES256-SHA"
142#define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA "DHE-RSA-AES256-SHA"
143#define TLS1_TXT_ADH_WITH_AES_256_SHA "ADH-AES256-SHA"
144
145
146#define TLS_CT_RSA_SIGN 1
147#define TLS_CT_DSS_SIGN 2
148#define TLS_CT_RSA_FIXED_DH 3
149#define TLS_CT_DSS_FIXED_DH 4
150#define TLS_CT_NUMBER 4
151
152#define TLS1_FINISH_MAC_LENGTH 12
153
154#define TLS_MD_MAX_CONST_SIZE 20
155#define TLS_MD_CLIENT_FINISH_CONST "client finished"
156#define TLS_MD_CLIENT_FINISH_CONST_SIZE 15
157#define TLS_MD_SERVER_FINISH_CONST "server finished"
158#define TLS_MD_SERVER_FINISH_CONST_SIZE 15
159#define TLS_MD_SERVER_WRITE_KEY_CONST "server write key"
160#define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16
161#define TLS_MD_KEY_EXPANSION_CONST "key expansion"
162#define TLS_MD_KEY_EXPANSION_CONST_SIZE 13
163#define TLS_MD_CLIENT_WRITE_KEY_CONST "client write key"
164#define TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE 16
165#define TLS_MD_SERVER_WRITE_KEY_CONST "server write key"
166#define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16
167#define TLS_MD_IV_BLOCK_CONST "IV block"
168#define TLS_MD_IV_BLOCK_CONST_SIZE 8
169#define TLS_MD_MASTER_SECRET_CONST "master secret"
170#define TLS_MD_MASTER_SECRET_CONST_SIZE 13
171
172#ifdef CHARSET_EBCDIC
173#undef TLS_MD_CLIENT_FINISH_CONST
174#define TLS_MD_CLIENT_FINISH_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x66\x69\x6e\x69\x73\x68\x65\x64" /*client finished*/
175#undef TLS_MD_SERVER_FINISH_CONST
176#define TLS_MD_SERVER_FINISH_CONST "\x73\x65\x72\x76\x65\x72\x20\x66\x69\x6e\x69\x73\x68\x65\x64" /*server finished*/
177#undef TLS_MD_SERVER_WRITE_KEY_CONST
178#define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" /*server write key*/
179#undef TLS_MD_KEY_EXPANSION_CONST
180#define TLS_MD_KEY_EXPANSION_CONST "\x6b\x65\x79\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e" /*key expansion*/
181#undef TLS_MD_CLIENT_WRITE_KEY_CONST
182#define TLS_MD_CLIENT_WRITE_KEY_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" /*client write key*/
183#undef TLS_MD_SERVER_WRITE_KEY_CONST
184#define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" /*server write key*/
185#undef TLS_MD_IV_BLOCK_CONST
186#define TLS_MD_IV_BLOCK_CONST "\x49\x56\x20\x62\x6c\x6f\x63\x6b" /*IV block*/
187#undef TLS_MD_MASTER_SECRET_CONST
188#define TLS_MD_MASTER_SECRET_CONST "\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" /*master secret*/
189#endif
190
191#ifdef __cplusplus
192}
193#endif
194#endif
195
diff --git a/src/lib/libssl/x509v3.cnf b/src/lib/libssl/x509v3.cnf
new file mode 100644
index 0000000000..e430088671
--- /dev/null
+++ b/src/lib/libssl/x509v3.cnf
@@ -0,0 +1,26 @@
1# default settings
2CERTPATHLEN = 1
3CERTUSAGE = digitalSignature,keyCertSign
4CERTIP = 0.0.0.0
5CERTFQDN = nohost.nodomain
6
7# This section should be referenced when building an x509v3 CA
8# Certificate.
9# The default path length and the key usage can be overriden
10# modified by setting the CERTPATHLEN and CERTUSAGE environment
11# variables.
12[x509v3_CA]
13basicConstraints=critical,CA:true,pathlen:$ENV::CERTPATHLEN
14keyUsage=$ENV::CERTUSAGE
15
16# This section should be referenced to add an IP Address
17# as an alternate subject name, needed by isakmpd
18# The address must be provided in the CERTIP environment variable
19[x509v3_IPAddr]
20subjectAltName=IP:$ENV::CERTIP
21
22# This section should be referenced to add a FQDN hostname
23# as an alternate subject name, needed by isakmpd
24# The address must be provided in the CERTFQDN environment variable
25[x509v3_FQDN]
26subjectAltName=DNS:$ENV::CERTFQDN